diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/librsvg/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/librsvg/default.nix | 98 |
1 files changed, 69 insertions, 29 deletions
diff --git a/nixpkgs/pkgs/development/libraries/librsvg/default.nix b/nixpkgs/pkgs/development/libraries/librsvg/default.nix index 91e0033cd274..57ed620fbf8d 100644 --- a/nixpkgs/pkgs/development/libraries/librsvg/default.nix +++ b/nixpkgs/pkgs/development/libraries/librsvg/default.nix @@ -15,30 +15,41 @@ , rustPlatform , rustc , rust -, cargo +, cargo-auditable-cargo-wrapper , gi-docgen , python3Packages , gnome , vala -, withIntrospection ? stdenv.hostPlatform == stdenv.buildPlatform +, writeScript +, withIntrospection ? stdenv.hostPlatform.emulatorAvailable buildPackages +, buildPackages , gobject-introspection -, nixosTests +, _experimental-update-script-combinators +, common-updater-scripts +, jq +, nix }: stdenv.mkDerivation rec { pname = "librsvg"; - version = "2.54.4"; + version = "2.55.1"; - outputs = [ "out" "dev" "installedTests" ] ++ lib.optionals withIntrospection [ + outputs = [ "out" "dev" ] ++ lib.optionals withIntrospection [ "devdoc" ]; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "6hUqJD9qQ8DgNqKMcN4/y83qVmTGgRx4WSvCKezCSDM="; + sha256 = "a69IqdOlb9E7v7ufH3Z1myQLcKH6Ig/SOEdNZqkm+Yw="; }; - cargoVendorDir = "vendor"; + cargoDeps = rustPlatform.fetchCargoTarball { + inherit src; + name = "${pname}-${version}"; + hash = "sha256-nRmOB9Jo+mmB0+wXrQvoII4e0ucV7bNCDeuk6CbcPdk="; + # TODO: move this to fetchCargoTarball + dontConfigure = true; + }; strictDeps = true; @@ -48,7 +59,7 @@ stdenv.mkDerivation rec { gdk-pixbuf pkg-config rustc - cargo + cargo-auditable-cargo-wrapper python3Packages.docutils vala rustPlatform.cargoSetupHook @@ -62,8 +73,7 @@ stdenv.mkDerivation rec { bzip2 pango libintl - ] ++ lib.optionals withIntrospection [ - gobject-introspection + vala # for share/vala/Makefile.vapigen ] ++ lib.optionals stdenv.isDarwin [ ApplicationServices Foundation @@ -78,23 +88,23 @@ stdenv.mkDerivation rec { configureFlags = [ (lib.enableFeature withIntrospection "introspection") + (lib.enableFeature withIntrospection "vala") - # Vapi does not build on MacOS. - # https://github.com/NixOS/nixpkgs/pull/117081#issuecomment-827782004 - (lib.enableFeature (withIntrospection && !stdenv.isDarwin) "vala") - - "--enable-installed-tests" "--enable-always-build-tests" ] ++ lib.optional stdenv.isDarwin "--disable-Bsymbolic" ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "RUST_TARGET=${rust.toRustTarget stdenv.hostPlatform}"; - makeFlags = [ - "installed_test_metadir=${placeholder "installedTests"}/share/installed-tests/RSVG" - "installed_testdir=${placeholder "installedTests"}/libexec/installed-tests/RSVG" - ]; - doCheck = false; # all tests fail on libtool-generated rsvg-convert not being able to find coreutils + GDK_PIXBUF_QUERYLOADERS = writeScript "gdk-pixbuf-loader-loaders-wrapped" '' + ${lib.optionalString (stdenv.hostPlatform.emulatorAvailable buildPackages) (stdenv.hostPlatform.emulator buildPackages)} ${lib.getDev gdk-pixbuf}/bin/gdk-pixbuf-query-loaders + ''; + + preConfigure = '' + PKG_CONFIG_VAPIGEN_VAPIGEN="$(type -p vapigen)" + export PKG_CONFIG_VAPIGEN_VAPIGEN + ''; + # It wants to add loaders and update the loaders.cache in gdk-pixbuf # Patching the Makefiles to it creates rsvg specific loaders and the # relevant loader.cache here. @@ -116,10 +126,14 @@ stdenv.mkDerivation rec { # 'error: linker `cc` not found' when cross-compiling export RUSTFLAGS="-Clinker=$CC" + '' + lib.optionalString ((stdenv.buildPlatform != stdenv.hostPlatform) && (stdenv.hostPlatform.emulatorAvailable buildPackages)) '' + # the replacement is the native conditional + substituteInPlace gdk-pixbuf-loader/Makefile \ + --replace 'RUN_QUERY_LOADER_TEST = false' 'RUN_QUERY_LOADER_TEST = test -z "$(DESTDIR)"' \ ''; # Not generated when cross compiling. - postInstall = lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) '' + postInstall = lib.optionalString (stdenv.hostPlatform.emulatorAvailable buildPackages) '' # Merge gdkpixbuf and librsvg loaders cat ${lib.getLib gdk-pixbuf}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache $GDK_PIXBUF/loaders.cache > $GDK_PIXBUF/loaders.cache.tmp mv $GDK_PIXBUF/loaders.cache.tmp $GDK_PIXBUF/loaders.cache @@ -131,14 +145,40 @@ stdenv.mkDerivation rec { ''; passthru = { - updateScript = gnome.updateScript { - packageName = pname; - versionPolicy = "odd-unstable"; - }; - - tests = { - installedTests = nixosTests.installed-tests.librsvg; - }; + updateScript = + let + updateSource = gnome.updateScript { + packageName = "librsvg"; + }; + + updateLockfile = { + command = [ + "sh" + "-c" + '' + PATH=${lib.makeBinPath [ + common-updater-scripts + jq + nix + ]} + # update-source-version does not allow updating to the same version so we need to clear it temporarily. + # Get the current version so that we can restore it later. + latestVersion=$(nix-instantiate --eval -A librsvg.version | jq --raw-output) + # Clear the version. Provide hash so that we do not need to do pointless TOFU. + # Needs to be a fake SRI hash that is non-zero, since u-s-v uses zero as a placeholder. + # Also cannot be here verbatim or u-s-v would be confused what to replace. + update-source-version librsvg 0 "sha256-${lib.fixedWidthString 44 "B" "="}" --source-key=cargoDeps > /dev/null + update-source-version librsvg "$latestVersion" --source-key=cargoDeps > /dev/null + '' + ]; + # Experimental feature: do not copy! + supportedFeatures = [ "silent" ]; + }; + in + _experimental-update-script-combinators.sequence [ + updateSource + updateLockfile + ]; }; meta = with lib; { |