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
commit 8af4f1f3ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

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;