python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / development / libraries / gpgme / default.nix
blob8470c62a8906531675ff0141253e1f3b1f4e559d
1 { lib
2 , stdenv
3 , fetchurl
4 , fetchpatch
5 , autoreconfHook
6 , libgpg-error
7 , gnupg
8 , pkg-config
9 , glib
10 , pth
11 , libassuan
12 , file
13 , which
14 , ncurses
15 , texinfo
16 , buildPackages
17 , qtbase ? null
18 , pythonSupport ? false
19 , swig2 ? null
20 , python ? null
21 # only for passthru.tests
22 , libsForQt5
23 , python3
25 let
26   inherit (stdenv.hostPlatform) system;
28 stdenv.mkDerivation rec {
29   pname = "gpgme";
30   version = "1.18.0";
32   src = fetchurl {
33     url = "mirror://gnupg/gpgme/${pname}-${version}.tar.bz2";
34     hash = "sha256-Nh1OrkfOkl26DqVpr0DntSxkXEri5l5WIb8bbN2LDp4=";
35   };
37   patches = [
38     # Fix compilation on i686, would not be needed after 1.18.1 releases, https://dev.gnupg.org/T5522
39     ./t-addexistingsubkey-i686.patch
40     # https://dev.gnupg.org/rMc4cf527ea227edb468a84bf9b8ce996807bd6992
41     ./fix_gpg_list_keys.diff
42     # https://lists.gnupg.org/pipermail/gnupg-devel/2020-April/034591.html
43     (fetchpatch {
44       name = "0001-Fix-python-tests-on-non-Linux.patch";
45       url = "https://lists.gnupg.org/pipermail/gnupg-devel/attachments/20200415/f7be62d1/attachment.obj";
46       sha256 = "00d4sxq63601lzdp2ha1i8fvybh7dzih4531jh8bx07fab3sw65g";
47     })
48     # Support Python 3.10 version detection without distutils, https://dev.gnupg.org/D545
49     ./python-310-detection-without-distutils.patch
50     # Find correct version string for Python >= 3.10, https://dev.gnupg.org/D546
51     ./python-find-version-string-above-310.patch
52     # Fix a test after disallowing compressed signatures in gpg (PR #180336)
53     ./test_t-verify_double-plaintext.patch
55     # Disable python tests on Darwin as they use gpg (see configureFlags below)
56   ] ++ lib.optional stdenv.isDarwin ./disable-python-tests.patch
57   # Fix _AC_UNDECLARED_WARNING for autoconf>=2.70
58   # See https://lists.gnupg.org/pipermail/gnupg-devel/2020-November/034643.html
59   ++ lib.optional stdenv.cc.isClang ./fix-clang-autoconf-undeclared-warning.patch;
61   outputs = [ "out" "dev" "info" ];
63   outputBin = "dev"; # gpgme-config; not so sure about gpgme-tool
65   nativeBuildInputs = [
66     autoreconfHook
67     gnupg
68     pkg-config
69     texinfo
70   ] ++ lib.optionals pythonSupport [
71     ncurses
72     python
73     swig2
74     which
75   ];
77   propagatedBuildInputs = [
78     glib
79     libassuan
80     libgpg-error
81     pth
82   ] ++ lib.optionals (qtbase != null) [
83     qtbase
84   ];
86   checkInputs = [
87     which
88   ];
90   depsBuildBuild = [
91     buildPackages.stdenv.cc
92   ];
94   dontWrapQtApps = true;
96   configureFlags = [
97     "--enable-fixed-path=${gnupg}/bin"
98     "--with-libgpg-error-prefix=${libgpg-error.dev}"
99     "--with-libassuan-prefix=${libassuan.dev}"
100   ] ++ lib.optional pythonSupport "--enable-languages=python"
101   # Tests will try to communicate with gpg-agent instance via a UNIX socket
102   # which has a path length limit. Nix on darwin is using a build directory
103   # that already has quite a long path and the resulting socket path doesn't
104   # fit in the limit. https://github.com/NixOS/nix/pull/1085
105   ++ lib.optionals stdenv.isDarwin [ "--disable-gpg-test" ];
107   NIX_CFLAGS_COMPILE = toString (
108     # qgpgme uses Q_ASSERT which retains build inputs at runtime unless
109     # debugging is disabled
110     lib.optional (qtbase != null) "-DQT_NO_DEBUG"
111     # https://www.gnupg.org/documentation/manuals/gpgme/Largefile-Support-_0028LFS_0029.html
112     ++ lib.optional stdenv.hostPlatform.is32bit "-D_FILE_OFFSET_BITS=64"
113   );
115   # prevent tests from being run during the buildPhase
116   makeFlags = [ "tests=" ];
118   doCheck = true;
120   checkFlags = [ "-C" "tests" ];
122   passthru.tests = {
123     python = python3.pkgs.gpgme;
124     qt = libsForQt5.qgpgme;
125   };
127   meta = with lib; {
128     homepage = "https://gnupg.org/software/gpgme/index.html";
129     changelog = "https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;f=NEWS;hb=gpgme-${version}";
130     description = "Library for making GnuPG easier to use";
131     longDescription = ''
132       GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
133       easier for applications. It provides a High-Level Crypto API for
134       encryption, decryption, signing, signature verification and key
135       management.
136     '';
137     license = with licenses; [ lgpl21Plus gpl3Plus ];
138     platforms = platforms.unix;
139     maintainers = with maintainers; [ dotlambda ];
140   };