1{ fetchFromGitLab
2, lib
3, stdenv
4, autoreconfHook
5, gtk-doc
6, pkg-config
7, intltool
8, gettext
9, glib
10, libxml2
11, zlib
12, bzip2
13, perl
14, gdk-pixbuf
15, libiconv
16, libintl
17, gnome
18}:
19
20stdenv.mkDerivation rec {
21 pname = "libgsf";
22 version = "1.14.50";
23
24 outputs = [ "out" "dev" ];
25
26 src = fetchFromGitLab {
27 domain = "gitlab.gnome.org";
28 owner = "GNOME";
29 repo = "libgsf";
30 rev = "LIBGSF_${lib.replaceStrings ["."] ["_"] version}";
31 hash = "sha256-6RP2DJWcDQ8dkKtcPxAkRsS7jSvvLoDNZHXiDJwR8Eg=";
32 };
33
34 postPatch = ''
35 # Fix cross-compilation
36 substituteInPlace configure.ac \
37 --replace "AC_PATH_PROG(PKG_CONFIG, pkg-config, no)" \
38 "PKG_PROG_PKG_CONFIG"
39 '';
40
41 strictDeps = true;
42
43 nativeBuildInputs = [
44 autoreconfHook
45 gtk-doc
46 pkg-config
47 intltool
48 libintl
49 ];
50
51 buildInputs = [
52 gettext
53 bzip2
54 zlib
55 ];
56
57 nativeCheckInputs = [
58 perl
59 ];
60
61 propagatedBuildInputs = [
62 libxml2
63 glib
64 gdk-pixbuf
65 libiconv
66 ];
67
68 doCheck = true;
69
70 preCheck = ''
71 patchShebangs ./tests/
72 '';
73
74 # checking pkg-config is at least version 0.9.0... ./configure: line 15213: no: command not found
75 # configure: error: in `/build/libgsf-1.14.50':
76 # configure: error: The pkg-config script could not be found or is too old. Make sure it
77 # is in your PATH or set the PKG_CONFIG environment variable to the full
78 preConfigure = ''
79 export PKG_CONFIG="$(command -v "$PKG_CONFIG")"
80 '';
81
82 passthru = {
83 updateScript = gnome.updateScript {
84 packageName = pname;
85 versionPolicy = "odd-unstable";
86 };
87 };
88
89 meta = with lib; {
90 description = "GNOME's Structured File Library";
91 homepage = "https://www.gnome.org/projects/libgsf";
92 license = licenses.lgpl2Plus;
93 maintainers = with maintainers; [ lovek323 ];
94 platforms = lib.platforms.unix;
95
96 longDescription = ''
97 Libgsf aims to provide an efficient extensible I/O abstraction for
98 dealing with different structured file formats.
99 '';
100 };
101}