1{ lib, stdenv
2, fetchurl
3, gettext
4, gobject-introspection
5, gtk-doc
6, docbook_xsl
7, docbook_xml_dtd_43
8, pkg-config
9, meson
10, ninja
11, vala
12, glib
13, zlib
14, gnome
15, nixosTests
16}:
17
18stdenv.mkDerivation rec {
19 pname = "gcab";
20 version = "1.6";
21
22 outputs = [ "bin" "out" "dev" "devdoc" "installedTests" ];
23
24 src = fetchurl {
25 url = "mirror://gnome/sources/gcab/${lib.versions.majorMinor version}/gcab-${version}.tar.xz";
26 hash = "sha256-LwyWFVd8QSaQniUfneBibD7noVI3bBW1VE3xD8h+Vgs=";
27 };
28
29 patches = [
30 # allow installing installed tests to a separate output
31 ./installed-tests-path.patch
32 ];
33
34 nativeBuildInputs = [
35 meson
36 ninja
37 pkg-config
38 vala
39 gettext
40 gobject-introspection
41 gtk-doc
42 docbook_xsl
43 docbook_xml_dtd_43
44 ];
45
46 buildInputs = [
47 glib
48 zlib
49 ];
50
51 # required by libgcab-1.0.pc
52 propagatedBuildInputs = [
53 glib
54 ];
55
56 mesonFlags = [
57 "-Dinstalled_tests=true"
58 "-Dinstalled_test_prefix=${placeholder "installedTests"}"
59 ];
60
61 doCheck = true;
62
63 passthru = {
64 updateScript = gnome.updateScript {
65 packageName = pname;
66 versionPolicy = "none";
67 };
68
69 tests = {
70 installedTests = nixosTests.installed-tests.gcab;
71 };
72 };
73
74 meta = with lib; {
75 description = "GObject library to create cabinet files";
76 mainProgram = "gcab";
77 homepage = "https://gitlab.gnome.org/GNOME/gcab";
78 license = licenses.lgpl21Plus;
79 maintainers = teams.gnome.members;
80 platforms = platforms.unix;
81 };
82}