forked from mirrors/nixpkgs
0d0f475f27
Now that v0.16 was released at last, make the configurePhase and instalPhase the same again for default and unstable.
102 lines
3.5 KiB
Nix
102 lines
3.5 KiB
Nix
{ pkgs, gccStdenv, lib, coreutils, bash, # makeStaticLibraries,
|
|
openssl, zlib, sqlite, libxml2, libyaml, libmysqlclient, lmdb, leveldb, postgresql,
|
|
version, git-version,
|
|
gambit-support,
|
|
gambit ? pkgs.gambit, gambit-params ? pkgs.gambit-support.stable-params, src }:
|
|
|
|
# We use Gambit, that works 10x better with GCC than Clang. See ../gambit/build.nix
|
|
let stdenv = gccStdenv; in
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "gerbil";
|
|
inherit version;
|
|
inherit src;
|
|
|
|
buildInputs_libraries = [ openssl zlib sqlite libxml2 libyaml libmysqlclient lmdb leveldb postgresql ];
|
|
|
|
# TODO: either fix all of Gerbil's dependencies to provide static libraries,
|
|
# or give up and delete all tentative support for static libraries.
|
|
#buildInputs_staticLibraries = map makeStaticLibraries buildInputs_libraries;
|
|
|
|
buildInputs = [ gambit ]
|
|
++ buildInputs_libraries; # ++ buildInputs_staticLibraries;
|
|
|
|
NIX_CFLAGS_COMPILE = "-I${libmysqlclient}/include/mysql -L${libmysqlclient}/lib/mysql";
|
|
|
|
postPatch = ''
|
|
echo '(define (gerbil-version-string) "v${git-version}")' > src/gerbil/runtime/gx-version.scm ;
|
|
patchShebangs . ;
|
|
grep -Fl '#!/usr/bin/env' `find . -type f -executable` | while read f ; do
|
|
substituteInPlace "$f" --replace '#!/usr/bin/env' '#!${coreutils}/bin/env' ;
|
|
done ;
|
|
'';
|
|
|
|
## TODO: make static compilation work.
|
|
## For that, get all the packages below to somehow expose static libraries,
|
|
## so we can offer users the option to statically link them into Gambit and/or Gerbil.
|
|
## Then add the following to the postPatch script above:
|
|
# cat > etc/gerbil_static_libraries.sh <<EOF
|
|
# OPENSSL_LIBCRYPTO=${makeStaticLibraries openssl}/lib/libcrypto.a # MISSING!
|
|
# OPENSSL_LIBSSL=${makeStaticLibraries openssl}/lib/libssl.a # MISSING!
|
|
# ZLIB=${makeStaticLibraries zlib}/lib/libz.a
|
|
# SQLITE=${makeStaticLibraries sqlite}/lib/sqlite.a # MISSING!
|
|
# LIBXML2=${makeStaticLibraries libxml2}/lib/libxml2.a # MISSING!
|
|
# YAML=${makeStaticLibraries libyaml}/lib/libyaml.a # MISSING!
|
|
# MYSQL=${makeStaticLibraries libmysqlclient}/lib/mariadb/libmariadb.a
|
|
# LMDB=${makeStaticLibraries lmdb}/lib/mysql/libmysqlclient_r.a # MISSING!
|
|
# LEVELDB=${makeStaticLibraries leveldb}/lib/libleveldb.a
|
|
# EOF
|
|
|
|
configurePhase = ''
|
|
(cd src && ./configure \
|
|
--prefix=$out/gerbil \
|
|
--with-gambit=${gambit}/gambit \
|
|
--enable-libxml \
|
|
--enable-libyaml \
|
|
--enable-zlib \
|
|
--enable-sqlite \
|
|
--enable-mysql \
|
|
--enable-lmdb \
|
|
--enable-leveldb)
|
|
'';
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
# gxprof testing uses $HOME/.cache/gerbil/gxc
|
|
export HOME=$PWD
|
|
export GERBIL_BUILD_CORES=$NIX_BUILD_CORES
|
|
export GERBIL_GXC=$PWD/bin/gxc
|
|
export GERBIL_BASE=$PWD
|
|
export GERBIL_HOME=$PWD
|
|
export GERBIL_PATH=$PWD/lib
|
|
export PATH=$PWD/bin:$PATH
|
|
${gambit-support.export-gambopt gambit-params}
|
|
|
|
# Build, replacing make by build.sh
|
|
( cd src && sh build.sh )
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mkdir -p $out/gerbil $out/bin
|
|
(cd src; ./install)
|
|
(cd $out/bin ; ln -s ../gerbil/bin/* .)
|
|
runHook postInstall
|
|
'';
|
|
|
|
dontStrip = true;
|
|
|
|
meta = {
|
|
description = "Gerbil Scheme";
|
|
homepage = "https://github.com/vyzo/gerbil";
|
|
license = lib.licenses.lgpl21; # also asl20, like Gambit
|
|
# NB regarding platforms: regularly tested on Linux, only occasionally on macOS.
|
|
# Please report success and/or failure to fare.
|
|
platforms = lib.platforms.unix;
|
|
maintainers = with lib.maintainers; [ fare ];
|
|
};
|
|
}
|