uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
110
pkgs/development/compilers/gerbil/build.nix
Normal file
110
pkgs/development/compilers/gerbil/build.nix
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
{ pkgs, gccStdenv, lib, coreutils,
|
||||
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;
|
||||
|
||||
# disable stackprotector on aarch64-darwin for now
|
||||
# build error:
|
||||
# ```
|
||||
# /private/tmp/nix-build-gerbil-unstable-2020-11-05.drv-0/ccjyhWKi.s:326:15: error: index must be an integer in range [-256, 255].
|
||||
# ldr x2, [x2, ___stack_chk_guard];momd
|
||||
# ^
|
||||
# ```
|
||||
hardeningDisable = lib.optionals (gccStdenv.isAarch64 && gccStdenv.isDarwin) [ "stackprotector" ];
|
||||
|
||||
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 ];
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue