5d39d988dc
The build was complaining: meson.build:660: WARNING: Your libc does not have the C.UTF-8 locale and no other suitable UTF-8 fallback locale could be found. You can still build GJS, but some tests will fail. The tests do not actually seem to be affected but still.
137 lines
3.4 KiB
Nix
137 lines
3.4 KiB
Nix
{ fetchurl
|
|
, fetchpatch
|
|
, stdenv
|
|
, meson
|
|
, ninja
|
|
, pkgconfig
|
|
, gnome3
|
|
, gtk3
|
|
, atk
|
|
, gobject-introspection
|
|
, spidermonkey_68
|
|
, 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.64.3";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://gnome/sources/gjs/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
|
sha256 = "1rl524rmdbpmp5xdkm8dx3znq47l7dgvh192x80zjf8wc1af35lx";
|
|
};
|
|
|
|
outputs = [ "out" "dev" "installedTests" ];
|
|
|
|
nativeBuildInputs = [
|
|
meson
|
|
ninja
|
|
pkgconfig
|
|
makeWrapper
|
|
which # for locale detection
|
|
libxml2 # for xml-stripblanks
|
|
];
|
|
|
|
buildInputs = [
|
|
gobject-introspection
|
|
cairo
|
|
readline
|
|
spidermonkey_68
|
|
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/gjs/installed-tests
|
|
ln -s $PWD/libgjs.so.0 $out/lib/libgjs.so.0
|
|
ln -s $PWD/installed-tests/js/libgimarshallingtests.so $installedTests/libexec/gjs/installed-tests/libgimarshallingtests.so
|
|
ln -s $PWD/installed-tests/js/libregress.so $installedTests/libexec/gjs/installed-tests/libregress.so
|
|
ln -s $PWD/installed-tests/js/libwarnlib.so $installedTests/libexec/gjs/installed-tests/libwarnlib.so
|
|
'';
|
|
|
|
postInstall = ''
|
|
# TODO: make the glib setup hook handle this
|
|
installedTestsSchemaDatadir="$installedTests/share/gsettings-schemas/${pname}-${version}"
|
|
mkdir -p "$installedTestsSchemaDatadir"
|
|
mv "$installedTests/share/glib-2.0" "$installedTestsSchemaDatadir"
|
|
'';
|
|
|
|
postFixup = ''
|
|
wrapProgram "$installedTests/libexec/gjs/installed-tests/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;
|
|
};
|
|
}
|