Merge pull request #97386 from KAction/tinycdb-static

tinycdb: add support for static build
This commit is contained in:
Ryan Mulligan
2020-10-08 21:22:57 -07:00
committed by GitHub
+27 -8
View File
@@ -1,18 +1,37 @@
{ stdenv, lib, fetchurl }: { stdenv, lib, fetchurl }:
let
isCross = stdenv.buildPlatform != stdenv.hostPlatform;
cross = "${stdenv.hostPlatform.config}";
static = stdenv.hostPlatform.isStatic;
stdenv.mkDerivation rec { cc = if !isCross then "cc" else "${cross}-cc";
ar = if !isCross then "ar" else "${cross}-ar";
ranlib = if !isCross then "ranlib" else "${cross}-ranlib";
in stdenv.mkDerivation rec {
postPatch = ''
sed -i 's,set --, set -x; set --,' Makefile
'';
pname = "tinycdb"; pname = "tinycdb";
version = "0.78"; version = "0.78";
outputs = [ "out" "dev" "lib" "man" ]; # In general, static library (.a) goes to "dev", shared (.so) to
# "lib". In case of static build, there is no .so library, so "lib"
# output is useless and empty.
outputs = [ "out" "dev" "man" ] ++ lib.optional (!static) "lib";
separateDebugInfo = true; separateDebugInfo = true;
makeFlags = [ "prefix=$(out)" "staticlib" "sharedlib" "cdb-shared" ]; makeFlags =
[ "prefix=$(out)" "CC=${cc}" "AR=${ar}" "RANLIB=${ranlib}" "static"
] ++ lib.optional (!static) "shared";
postInstall = '' postInstall = ''
mkdir -p $lib/lib $dev/lib $out/bin mkdir -p $dev/lib $out/bin
cp libcdb.so* $lib/lib
cp cdb-shared $out/bin/cdb
mv $out/lib/libcdb.a $dev/lib mv $out/lib/libcdb.a $dev/lib
rmdir $out/lib rmdir $out/lib
''; '' + (if static then ''
cp cdb $out/bin/cdb
'' else ''
mkdir -p $lib/lib
cp libcdb.so* $lib/lib
cp cdb-shared $out/bin/cdb
'');
src = fetchurl { src = fetchurl {
url = "http://www.corpit.ru/mjt/tinycdb/${pname}-${version}.tar.gz"; url = "http://www.corpit.ru/mjt/tinycdb/${pname}-${version}.tar.gz";
@@ -27,7 +46,7 @@ stdenv.mkDerivation rec {
tinycdb is a small, fast and reliable utility and subroutine tinycdb is a small, fast and reliable utility and subroutine
library for creating and reading constant databases. The database library for creating and reading constant databases. The database
structure is tuned for fast reading. structure is tuned for fast reading.
''; '';
homepage = "https://www.corpit.ru/mjt/tinycdb.html"; homepage = "https://www.corpit.ru/mjt/tinycdb.html";
license = licenses.publicDomain; license = licenses.publicDomain;