summaryrefslogtreecommitdiffstats
path: root/pkgs/development/libraries/xapian/default.nix
blob: 993fb9ea47f4160312b88fc49921df3c30e3bb6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
{
  lib,
  stdenv,
  fetchurl,
  autoreconfHook,
  libuuid,
  zlib,

  # tests
  mu,
  perlPackages,
  python3,
  xapian-omega,
}:

let
  generic =
    version: hash:
    stdenv.mkDerivation {
      pname = "xapian";
      inherit version;
      passthru = { inherit version; };

      src = fetchurl {
        url = "https://oligarchy.co.uk/xapian/${version}/xapian-core-${version}.tar.xz";
        inherit hash;
      };

      outputs = [
        "out"
        "man"
        "doc"
      ];

      buildInputs = [
        libuuid
        zlib
      ];
      nativeBuildInputs = [ autoreconfHook ];

      enableParallelBuilding = true;

      doCheck = true;

      env = {
        AUTOMATED_TESTING = true; # https://trac.xapian.org/changeset/8be35f5e1/git
      }
      // lib.optionalAttrs stdenv.hostPlatform.is32bit {
        NIX_CFLAGS_COMPILE = "-fpermissive";
      };

      # the configure script thinks that Darwin has ___exp10
      # but it’s not available on my systems (or hydra apparently)
      postConfigure = lib.optionalString stdenv.hostPlatform.isDarwin ''
        substituteInPlace config.h \
          --replace "#define HAVE___EXP10 1" "#undef HAVE___EXP10"
      '';

      passthru.tests = {
        inherit mu xapian-omega;
        inherit (perlPackages) Xapian;
        python-xapian = python3.pkgs.xapian;
      };

      meta = {
        description = "Search engine library";
        homepage = "https://xapian.org/";
        changelog = "https://xapian.org/docs/xapian-core-${version}/NEWS";
        license = lib.licenses.gpl2Plus;
        maintainers = with lib.maintainers; [ matthiasbeyer ];
        platforms = lib.platforms.unix;
      };
    };
in
{
  # Don't forget to change the hashes in xapian-omega and
  # python3Packages.xapian. They inherit the version from this package, and
  # should always be built with the equivalent xapian version.
  xapian_1_4 = generic "1.4.31" "sha256-/s9gnqLv3IpkvjaXFarHMzNqEfdICmVFJElkrmvICBE=";
}