Merge pull request #329823 from ExpidusOS/fix/pkgsllvm/elfutils
[NixPkgs.git] / pkgs / by-name / ay / ayatana-indicator-messages / package.nix
blob5810ccd89d41fae1c32f1062878ff400aa0623e8
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , gitUpdater
5 , nixosTests
6 , testers
7 , accountsservice
8 , cmake
9 , dbus-test-runner
10 , withDocumentation ? true
11 , docbook_xsl
12 , docbook_xml_dtd_45
13 , glib
14 , gobject-introspection
15 , gtest
16 , gtk-doc
17 , intltool
18 , lomiri
19 , pkg-config
20 , python3
21 , systemd
22 , vala
23 , wrapGAppsHook3
26 stdenv.mkDerivation (finalAttrs: {
27   pname = "ayatana-indicator-messages";
28   version = "24.5.0";
30   src = fetchFromGitHub {
31     owner = "AyatanaIndicators";
32     repo = "ayatana-indicator-messages";
33     rev = finalAttrs.version;
34     hash = "sha256-D1181eD2mAVXEa7RLXXC4b2tVGrxbh0WWgtbC1anHH0=";
35   };
37   outputs = [
38     "out"
39     "dev"
40   ] ++ lib.optionals withDocumentation [
41     "devdoc"
42   ];
44   postPatch = ''
45     # Uses pkg_get_variable, cannot substitute prefix with that
46     substituteInPlace data/CMakeLists.txt \
47       --replace "\''${SYSTEMD_USER_DIR}" "$out/lib/systemd/user"
49     # Bad concatenation
50     substituteInPlace libmessaging-menu/messaging-menu.pc.in \
51       --replace "\''${exec_prefix}/@CMAKE_INSTALL_LIBDIR@" '@CMAKE_INSTALL_FULL_LIBDIR@' \
52       --replace "\''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@" '@CMAKE_INSTALL_FULL_INCLUDEDIR@'
54     # Fix tests with gobject-introspection 1.80 not installing GLib introspection data
55     substituteInPlace tests/CMakeLists.txt \
56       --replace-fail 'GI_TYPELIB_PATH=\"' 'GI_TYPELIB_PATH=\"$GI_TYPELIB_PATH$\{GI_TYPELIB_PATH\:+\:\}'
57   '' + lib.optionalString (!withDocumentation) ''
58     sed -i CMakeLists.txt \
59       '/add_subdirectory(doc)/d'
60   '';
62   strictDeps = true;
64   nativeBuildInputs = [
65     cmake
66     glib # For glib-compile-schemas
67     intltool
68     pkg-config
69     vala
70     wrapGAppsHook3
71   ] ++ lib.optionals withDocumentation [
72     docbook_xsl
73     docbook_xml_dtd_45
74     gtk-doc
75   ];
77   buildInputs = [
78     accountsservice
79     lomiri.cmake-extras
80     glib
81     gobject-introspection
82     systemd
83   ];
85   nativeCheckInputs = [
86     (python3.withPackages (ps: with ps; [
87       pygobject3
88       python-dbusmock
89     ]))
90   ];
92   checkInputs = [
93     dbus-test-runner
94     gtest
95   ];
97   cmakeFlags = [
98     "-DENABLE_TESTS=${lib.boolToString finalAttrs.doCheck}"
99     "-DGSETTINGS_LOCALINSTALL=ON"
100     "-DGSETTINGS_COMPILE=ON"
101   ];
103   makeFlags = lib.optionals withDocumentation [
104     # gtk-doc doesn't call ld with the correct arguments
105     # ld: ...: undefined reference to symbol 'strncpy@@GLIBC_2.2.5', 'qsort@@GLIBC_2.2.5'
106     "LD=${stdenv.cc.targetPrefix}cc"
107   ];
109   doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
111   preCheck = ''
112     # test-client imports gir, whose solib entry points to final store location
113     install -Dm644 libmessaging-menu/libmessaging-menu.so.0.0.0 $out/lib/libmessaging-menu.so.0
114   '';
116   postCheck = ''
117     # remove the above solib-installation, let it be done properly
118     rm -r $out
119   '';
121   preInstall = lib.optionalString withDocumentation ''
122     # installing regenerates docs, generated files are created without write permissions, errors out while trying to overwrite them
123     chmod +w doc/reference/html/*
124   '';
126   # Indicators that talk to it may issue requests to parse desktop files, which needs binaries in Exec on PATH
127   # messaging_menu_app_set_desktop_id -> g_desktop_app_info_new -...-> g_desktop_app_info_load_from_keyfile -> g_find_program_for_path
128   # When launched via systemd, PATH is very narrow
129   preFixup = ''
130     gappsWrapperArgs+=(
131       --suffix PATH : '/run/current-system/sw/bin'
132     )
133   '';
135   passthru = {
136     ayatana-indicators = [
137       "ayatana-indicator-messages"
138     ];
139     tests = {
140       pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
141       vm = nixosTests.ayatana-indicators;
142     };
143     updateScript = gitUpdater { };
144   };
146   meta = with lib; {
147     description = "Ayatana Indicator Messages Applet";
148     longDescription = ''
149       The -messages Ayatana System Indicator is the messages menu indicator for Unity7, MATE and Lomiri (optionally for
150       others, e.g. XFCE, LXDE).
151     '';
152     homepage = "https://github.com/AyatanaIndicators/ayatana-indicator-messages";
153     license = licenses.gpl3Only;
154     platforms = platforms.linux;
155     maintainers = with maintainers; [ OPNA2608 ];
156     pkgConfigModules = [
157       "messaging-menu"
158     ];
159   };