Luke Granger-Brown
57725ef3ec
git-subtree-dir: third_party/nixpkgs git-subtree-split: 76612b17c0ce71689921ca12d9ffdc9c23ce40b2
89 lines
2.6 KiB
Nix
89 lines
2.6 KiB
Nix
{
|
|
lib,
|
|
fetchurl,
|
|
stdenv,
|
|
testers,
|
|
updateAutotoolsGnuConfigScriptsHook,
|
|
}:
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "gdbm";
|
|
version = "1.24";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://gnu/gdbm/gdbm-${finalAttrs.version}.tar.gz";
|
|
hash = "sha256-aV6YJ/33Y1E/EzkQvH5s/bkYeUOk/slD5XRJcj0rjb8=";
|
|
};
|
|
|
|
nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook ];
|
|
|
|
configureFlags = [ (lib.enableFeature true "libgdbm-compat") ];
|
|
|
|
outputs = [
|
|
"out"
|
|
"dev"
|
|
"info"
|
|
"lib"
|
|
"man"
|
|
];
|
|
|
|
doCheck = true;
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
# 1. Linking static stubs on cygwin requires correct ordering. Consider
|
|
# upstreaming this.
|
|
#
|
|
# 2. Disable dbmfetch03.at test because it depends on unlink() failing on a
|
|
# link in a chmod -w directory, which cygwin apparently allows.
|
|
postPatch = lib.optionalString stdenv.buildPlatform.isCygwin ''
|
|
substituteInPlace tests/Makefile.in \
|
|
--replace-fail '_LDADD = ../src/libgdbm.la ../compat/libgdbm_compat.la' \
|
|
'_LDADD = ../compat/libgdbm_compat.la ../src/libgdbm.la'
|
|
substituteInPlace tests/testsuite.at
|
|
--replace-fail 'm4_include([dbmfetch03.at])' ""
|
|
'';
|
|
|
|
# create symlinks for compatibility
|
|
postInstall = ''
|
|
install -dm755 ''${!outputDev}/include/gdbm
|
|
pushd ''${!outputDev}/include/gdbm
|
|
ln -s ../dbm.h dbm.h
|
|
ln -s ../gdbm.h gdbm.h
|
|
ln -s ../ndbm.h ndbm.h
|
|
popd
|
|
'';
|
|
|
|
passthru = {
|
|
tests.version = testers.testVersion {
|
|
package = finalAttrs.finalPackage;
|
|
command = "gdbmtool --version";
|
|
};
|
|
};
|
|
|
|
meta = {
|
|
homepage = "https://www.gnu.org/software/gdbm/";
|
|
description = "GNU dbm key/value database library";
|
|
longDescription = ''
|
|
GNU dbm (or GDBM, for short) is a library of database functions that use
|
|
extensible hashing and work similar to the standard UNIX dbm. These
|
|
routines are provided to a programmer needing to create and manipulate a
|
|
hashed database.
|
|
|
|
The basic use of GDBM is to store key/data pairs in a data file. Each
|
|
key must be unique and each key is paired with only one data item.
|
|
|
|
The library provides primitives for storing key/data pairs, searching and
|
|
retrieving the data by its key and deleting a key along with its data.
|
|
It also support sequential iteration over all key/data pairs in a
|
|
database.
|
|
|
|
For compatibility with programs using old UNIX dbm function, the package
|
|
also provides traditional dbm and ndbm interfaces.
|
|
'';
|
|
license = lib.licenses.gpl3Plus;
|
|
mainProgram = "gdbmtool";
|
|
maintainers = with lib.maintainers; [ AndersonTorres ];
|
|
platforms = lib.platforms.all;
|
|
};
|
|
})
|