mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-01 02:23:54 +00:00
33afbf39f6
checkInputs used to be added to nativeBuildInputs. Now we have nativeCheckInputs to do that instead. Doing this treewide change allows to keep hashes identical to before the introduction of nativeCheckInputs.
150 lines
4.0 KiB
Nix
150 lines
4.0 KiB
Nix
{ fetchurl
|
|
, lib
|
|
, stdenv
|
|
, meson
|
|
, mesonEmulatorHook
|
|
, ninja
|
|
, pkg-config
|
|
, gnome
|
|
, gtk3
|
|
, atk
|
|
, gobject-introspection
|
|
, spidermonkey_102
|
|
, pango
|
|
, cairo
|
|
, readline
|
|
, libsysprof-capture
|
|
, glib
|
|
, libxml2
|
|
, dbus
|
|
, gdk-pixbuf
|
|
, harfbuzz
|
|
, makeWrapper
|
|
, which
|
|
, xvfb-run
|
|
, nixosTests
|
|
}:
|
|
|
|
let
|
|
testDeps = [
|
|
gobject-introspection # for Gio and cairo typelibs
|
|
gtk3 atk pango.out gdk-pixbuf harfbuzz
|
|
];
|
|
in stdenv.mkDerivation rec {
|
|
pname = "gjs";
|
|
version = "1.74.1";
|
|
|
|
outputs = [ "out" "dev" "installedTests" ];
|
|
|
|
src = fetchurl {
|
|
url = "mirror://gnome/sources/gjs/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
|
sha256 = "sha256-8h+c0zN6ZypEx+ZL+ajYrXfBuIuVKythhMevmx8+9Fk=";
|
|
};
|
|
|
|
patches = [
|
|
# Hard-code various paths
|
|
./fix-paths.patch
|
|
|
|
# Allow installing installed tests to a separate output.
|
|
./installed-tests-path.patch
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
meson
|
|
ninja
|
|
pkg-config
|
|
makeWrapper
|
|
which # for locale detection
|
|
libxml2 # for xml-stripblanks
|
|
dbus # for dbus-run-session
|
|
gobject-introspection
|
|
] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
|
|
mesonEmulatorHook
|
|
];
|
|
|
|
buildInputs = [
|
|
cairo
|
|
readline
|
|
libsysprof-capture
|
|
spidermonkey_102
|
|
];
|
|
|
|
nativeCheckInputs = [
|
|
xvfb-run
|
|
] ++ testDeps;
|
|
|
|
propagatedBuildInputs = [
|
|
glib
|
|
];
|
|
|
|
mesonFlags = [
|
|
"-Dinstalled_test_prefix=${placeholder "installedTests"}"
|
|
] ++ lib.optionals (!stdenv.isLinux || stdenv.hostPlatform.isMusl) [
|
|
"-Dprofiler=disabled"
|
|
];
|
|
|
|
doCheck = !stdenv.isDarwin;
|
|
|
|
postPatch = ''
|
|
patchShebangs build/choose-tests-locale.sh
|
|
substituteInPlace installed-tests/debugger-test.sh --subst-var-by gjsConsole $out/bin/gjs-console
|
|
'' + lib.optionalString stdenv.hostPlatform.isMusl ''
|
|
substituteInPlace installed-tests/js/meson.build \
|
|
--replace "'Encoding'," "#'Encoding',"
|
|
'';
|
|
|
|
preCheck = ''
|
|
# Our gobject-introspection patches make the shared library paths absolute
|
|
# in the GIR files. When running tests, the library is not yet installed,
|
|
# though, so we need to replace the absolute path with a local one during build.
|
|
# We are using a symlink that will be overridden during installation.
|
|
mkdir -p $out/lib $installedTests/libexec/installed-tests/gjs
|
|
ln -s $PWD/libgjs.so.0 $out/lib/libgjs.so.0
|
|
ln -s $PWD/installed-tests/js/libgimarshallingtests.so $installedTests/libexec/installed-tests/gjs/libgimarshallingtests.so
|
|
ln -s $PWD/installed-tests/js/libgjstesttools/libgjstesttools.so $installedTests/libexec/installed-tests/gjs/libgjstesttools.so
|
|
ln -s $PWD/installed-tests/js/libregress.so $installedTests/libexec/installed-tests/gjs/libregress.so
|
|
ln -s $PWD/installed-tests/js/libwarnlib.so $installedTests/libexec/installed-tests/gjs/libwarnlib.so
|
|
'';
|
|
|
|
postInstall = ''
|
|
# TODO: make the glib setup hook handle moving the schemas in other outputs.
|
|
installedTestsSchemaDatadir="$installedTests/share/gsettings-schemas/${pname}-${version}"
|
|
mkdir -p "$installedTestsSchemaDatadir"
|
|
mv "$installedTests/share/glib-2.0" "$installedTestsSchemaDatadir"
|
|
'';
|
|
|
|
postFixup = ''
|
|
wrapProgram "$installedTests/libexec/installed-tests/gjs/minijasmine" \
|
|
--prefix XDG_DATA_DIRS : "$installedTestsSchemaDatadir" \
|
|
--prefix GI_TYPELIB_PATH : "${lib.makeSearchPath "lib/girepository-1.0" testDeps}"
|
|
'';
|
|
|
|
checkPhase = ''
|
|
runHook preCheck
|
|
xvfb-run -s '-screen 0 800x600x24' \
|
|
meson test --print-errorlogs
|
|
runHook postCheck
|
|
'';
|
|
|
|
separateDebugInfo = stdenv.isLinux;
|
|
|
|
passthru = {
|
|
tests = {
|
|
installed-tests = nixosTests.installed-tests.gjs;
|
|
};
|
|
|
|
updateScript = gnome.updateScript {
|
|
packageName = "gjs";
|
|
versionPolicy = "odd-unstable";
|
|
};
|
|
};
|
|
|
|
meta = with lib; {
|
|
description = "JavaScript bindings for GNOME";
|
|
homepage = "https://gitlab.gnome.org/GNOME/gjs/blob/master/doc/Home.md";
|
|
license = licenses.lgpl2Plus;
|
|
maintainers = teams.gnome.members;
|
|
platforms = platforms.unix;
|
|
};
|
|
}
|