evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / gn / gnome-builder / package.nix
blob8a3c7ac09d7af5b43b6ad94717d69142fbf1a7b9
1 { stdenv
2 , lib
3 , ctags
4 , cmark
5 , desktop-file-utils
6 , editorconfig-core-c
7 , fetchurl
8 , flatpak
9 , gnome
10 , libgit2-glib
11 , gi-docgen
12 , gobject-introspection
13 , gom
14 , gtk4
15 , gtksourceview5
16 , json-glib
17 , jsonrpc-glib
18 , libadwaita
19 , libdex
20 , libpanel
21 , libpeas2
22 , libportal-gtk4
23 , libspelling
24 , libsysprof-capture
25 , libxml2
26 , meson
27 , ninja
28 , ostree
29 , pcre2
30 , pkg-config
31 , python3
32 , sysprof
33 , template-glib
34 , vala
35 , vte-gtk4
36 , webkitgtk_6_0
37 , wrapGAppsHook4
38 , dbus
39 , xvfb-run
42 stdenv.mkDerivation (finalAttrs: {
43   pname = "gnome-builder";
44   version = "47.2";
46   outputs = [ "out" "devdoc" ];
48   src = fetchurl {
49     url = "mirror://gnome/sources/gnome-builder/${lib.versions.major finalAttrs.version}/gnome-builder-${finalAttrs.version}.tar.xz";
50     hash = "sha256-Roe5PEfNHjNmWi3FA3kLYhPugnhy/ABNl40UvL+ptJU=";
51   };
53   patches = [
54     # The test environment hardcodes `GI_TYPELIB_PATH` environment variable to direct dependencies of libide & co.
55     # https://gitlab.gnome.org/GNOME/gnome-builder/-/commit/2ce510b0ec0518c29427a29b386bb2ac1a121edf
56     # https://gitlab.gnome.org/GNOME/gnome-builder/-/commit/2964f7c2a0729f2f456cdca29a0f5b7525baf7c1
57     #
58     # But Nix does not have a fallback path for typelibs like /usr/lib on FHS distros and relies solely
59     # on `GI_TYPELIB_PATH` environment variable. So, when Ide started to depend on Vte, which
60     # depends on Pango, among others, GIrepository was unable to find these indirect dependencies
61     # and crashed with:
62     #
63     #     Typelib file for namespace 'Pango', version '1.0' not found (g-irepository-error-quark, 0)
64     ./fix-finding-test-typelibs.patch
65   ];
67   nativeBuildInputs = [
68     desktop-file-utils
69     gi-docgen
70     gobject-introspection
71     meson
72     ninja
73     pkg-config
74     python3
75     wrapGAppsHook4
76   ];
78   buildInputs = [
79     ctags
80     cmark
81     editorconfig-core-c
82     flatpak
83     libgit2-glib
84     libpeas2
85     libportal-gtk4
86     vte-gtk4
87     gom
88     gtk4
89     gtksourceview5
90     json-glib
91     jsonrpc-glib
92     libadwaita
93     libdex
94     libpanel
95     libspelling
96     libsysprof-capture
97     libxml2
98     ostree
99     pcre2
100     python3
101     template-glib
102     vala
103     webkitgtk_6_0
104   ];
106   nativeCheckInputs = [
107     dbus
108     xvfb-run
109   ];
111   mesonFlags = [
112     "-Ddocs=true"
114     # Making the build system correctly detect clang header and library paths
115     # is difficult. Somebody should look into fixing this.
116     "-Dplugin_clang=false"
118     # Do not try to check if appstream images exist
119     "-Dnetwork_tests=false"
120   ];
122   doCheck = true;
124   postPatch = ''
125     patchShebangs build-aux/meson/post_install.py
126     substituteInPlace build-aux/meson/post_install.py \
127       --replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
128   '';
130   checkPhase = ''
131     GTK_A11Y=none \
132     xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
133       --config-file=${dbus}/share/dbus-1/session.conf \
134       meson test --print-errorlogs
135   '';
137   preFixup = ''
138     gappsWrapperArgs+=(
139       # For sysprof-agent
140       --prefix PATH : "${sysprof}/bin"
141     )
143     # Ensure that all plugins get their interpreter paths fixed up.
144     find $out/lib -name \*.py -type f -print0 | while read -d "" f; do
145       chmod a+x "$f"
146     done
147   '';
149   postFixup = ''
150     # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
151     moveToOutput share/doc/libide "$devdoc"
152   '';
154   passthru.updateScript = gnome.updateScript {
155     packageName = "gnome-builder";
156   };
158   meta = with lib; {
159     description = "IDE for writing GNOME-based software";
160     longDescription = ''
161       Global search, auto-completion, source code map, documentation
162       reference, and other features expected in an IDE, but with a focus
163       on streamlining GNOME-based development projects.
165       This package does not pull in the dependencies needed for every
166       plugin. If you find that a plugin you wish to use doesn't work, we
167       currently recommend running gnome-builder inside a nix-shell with
168       appropriate dependencies loaded.
169     '';
170     homepage = "https://apps.gnome.org/Builder/";
171     license = licenses.gpl3Plus;
172     maintainers = teams.gnome.members;
173     platforms = platforms.linux;
174     mainProgram = "gnome-builder";
175   };