mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-19 12:14:10 +00:00
9bb3fccb5b
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.
138 lines
3.4 KiB
Nix
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;
|
|
};
|
|
}
|