nixpkgs/pkgs/development/libraries/gjs/default.nix
Jonathan Ringer 9bb3fccb5b treewide: pkgs.pkgconfig -> pkgs.pkg-config, move pkgconfig to alias.nix
continuation of #109595

pkgconfig was aliased in 2018, however, it remained in
all-packages.nix due to its wide usage. This cleans
up the remaining references to pkgs.pkgsconfig and
moves the entry to aliases.nix.

python3Packages.pkgconfig remained unchanged because
it's the canonical name of the upstream package
on pypi.
2021-01-19 01:16:25 -08:00

138 lines
3.4 KiB
Nix

{ fetchurl
, fetchpatch
, stdenv
, meson
, ninja
, pkg-config
, gnome3
, gtk3
, atk
, gobject-introspection
, spidermonkey_78
, pango
, cairo
, readline
, glib
, libxml2
, dbus
, gdk-pixbuf
, makeWrapper
, which
, xvfb_run
, nixosTests
}:
let
testDeps = [
gobject-introspection # for Gio and cairo typelibs
gtk3 atk pango.out gdk-pixbuf
];
in stdenv.mkDerivation rec {
pname = "gjs";
version = "1.66.1";
src = fetchurl {
url = "mirror://gnome/sources/gjs/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0k1ld2bc4c3zbyjpfgx15v5n02iywdvm106rys5jqr7zbr2l0hld";
};
outputs = [ "out" "dev" "installedTests" ];
nativeBuildInputs = [
meson
ninja
pkg-config
makeWrapper
which # for locale detection
libxml2 # for xml-stripblanks
];
buildInputs = [
gobject-introspection
cairo
readline
spidermonkey_78
dbus # for dbus-run-session
];
checkInputs = [
xvfb_run
] ++ testDeps;
propagatedBuildInputs = [
glib
];
mesonFlags = [
"-Dprofiler=disabled"
"-Dinstalled_test_prefix=${placeholder "installedTests"}"
];
patches = [
# Hard-code various paths
./fix-paths.patch
# Allow installing installed tests to a separate output.
./installed-tests-path.patch
];
doCheck = true;
postPatch = ''
patchShebangs build/choose-tests-locale.sh
substituteInPlace installed-tests/debugger-test.sh --subst-var-by gjsConsole $out/bin/gjs-console
'';
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/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 : "${stdenv.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 = gnome3.updateScript {
packageName = "gjs";
};
};
meta = with stdenv.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.linux;
};
}