Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / libraries / db / generic.nix
blobd715c1ffc8b1968f6ede6242cdb96875d0348b0a
1 { lib, stdenv, fetchurl, autoreconfHook
2 , cxxSupport ? true
3 , compat185 ? true
4 , dbmSupport ? false
6 # Options from inherited versions
7 , version, sha256
8 , extraPatches ? [ ]
9 , license ? lib.licenses.sleepycat
10 , drvArgs ? {}
13 stdenv.mkDerivation (rec {
14   pname = "db";
15   inherit version;
17   src = fetchurl {
18     url = "https://download.oracle.com/berkeley-db/${pname}-${version}.tar.gz";
19     sha256 = sha256;
20   };
22   # The provided configure script features `main` returning implicit `int`, which causes
23   # configure checks to work incorrectly with clang 16.
24   nativeBuildInputs = [ autoreconfHook ];
26   patches = extraPatches;
28   outputs = [ "bin" "out" "dev" ];
30   # Required when regenerated the configure script to make sure the vendored macros are found.
31   autoreconfFlags = [ "-fi" "-Iaclocal" "-Iaclocal_java" ];
33   preAutoreconf = ''
34     pushd dist
35     # Upstream’s `dist/s_config` cats everything into `aclocal.m4`, but that doesn’t work with
36     # autoreconfHook, so cat `config.m4` to another file. Otherwise, it won’t be found by `aclocal`.
37     cat aclocal/config.m4 >> aclocal/options.m4
38   '';
40   # This isn’t pretty. The version information is kept separate from the configure script.
41   # After the configure script is regenerated, the version information has to be replaced with the
42   # contents of `dist/RELEASE`.
43   postAutoreconf = ''
44     (
45       declare -a vars=(
46         "DB_VERSION_FAMILY"
47         "DB_VERSION_RELEASE"
48         "DB_VERSION_MAJOR"
49         "DB_VERSION_MINOR"
50         "DB_VERSION_PATCH"
51         "DB_VERSION_STRING"
52         "DB_VERSION_FULL_STRING"
53         "DB_VERSION_UNIQUE_NAME"
54         "DB_VERSION"
55       )
56       source RELEASE
57       for var in "''${vars[@]}"; do
58         sed -e "s/__EDIT_''${var}__/''${!var}/g" -i configure
59       done
60     )
61     popd
62   '';
64   configureFlags =
65     [
66       (if cxxSupport then "--enable-cxx" else "--disable-cxx")
67       (if compat185 then "--enable-compat185" else "--disable-compat185")
68     ]
69     ++ lib.optional dbmSupport "--enable-dbm"
70     ++ lib.optional stdenv.isFreeBSD "--with-pic";
72   preConfigure = ''
73     cd build_unix
74     configureScript=../dist/configure
75   '';
77   postInstall = ''
78     rm -rf $out/docs
79   '';
81   enableParallelBuilding = true;
83   doCheck = true;
85   checkPhase = ''
86     make examples_c examples_cxx
87   '';
89   meta = with lib; {
90     homepage = "https://www.oracle.com/database/technologies/related/berkeleydb.html";
91     description = "Berkeley DB";
92     license = license;
93     platforms = platforms.unix;
94   };
95 } // drvArgs)