tinycdb: add support for static build

This commit is contained in:
Dmitry Bogatov 2020-09-07 15:06:00 -04:00
parent 77cdb1f64f
commit 88b0840f73

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;