From e78b820bebd556e7fbc27c8e31e2eddff3f6164d Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau Date: Wed, 28 Jun 2017 22:11:56 -0400 Subject: [PATCH] gambit: 4.8.6 -> 4.8.8-f3ffeb6 Using a yet unreleased development version of gambit, so as to be able to build a recent gerbil. Update the way gambit is bootstrapped, which involves building a release version of gambit (which for a development gambit, is not the same version as the current version of gambit). --- .../compilers/gambit/bootstrap.nix | 41 ++++++++++ pkgs/development/compilers/gambit/default.nix | 76 +++++++++++++++---- 2 files changed, 101 insertions(+), 16 deletions(-) create mode 100644 pkgs/development/compilers/gambit/bootstrap.nix diff --git a/pkgs/development/compilers/gambit/bootstrap.nix b/pkgs/development/compilers/gambit/bootstrap.nix new file mode 100644 index 000000000000..65fb20aa2603 --- /dev/null +++ b/pkgs/development/compilers/gambit/bootstrap.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, autoconf, ... }: + +stdenv.mkDerivation rec { + name = "gambit-bootstrap-${version}"; + version = "4.8.8"; + tarball_version = "v4_8_8"; + + src = fetchurl { + url = "http://www.iro.umontreal.ca/~gambit/download/gambit/v4.8/source/gambit-${tarball_version}-devel.tgz"; + sha256 = "075k2z04d6svxqf9paj3xvp0mm0xzy0vbma1y61s0lkywdim8xjz"; + }; + + buildInputs = [ autoconf ]; + + configurePhase = '' + ./configure --prefix=$out --enable-single-host + ''; + + buildPhase = '' + # Copy the (configured) sources now, not later, so we don't have to filter out + # all the intermediate build products. + mkdir -p $out ; cp -rp . $out/ + + # build the gsc-boot* compiler + make bootstrap + ''; + + installPhase = '' + cp -fa ./ $out/ + ''; + + forceShare = [ "info" ]; + + meta = { + description = "Optimizing Scheme to C compiler, bootstrap step"; + homepage = "http://gambitscheme.org"; + license = stdenv.lib.licenses.lgpl2; + platforms = stdenv.lib.platforms.linux; + maintainers = with stdenv.lib.maintainers; [ thoughtpolice raskin fare ]; + }; +} diff --git a/pkgs/development/compilers/gambit/default.nix b/pkgs/development/compilers/gambit/default.nix index 7e17cee9abde..58b08ebd4fb7 100644 --- a/pkgs/development/compilers/gambit/default.nix +++ b/pkgs/development/compilers/gambit/default.nix @@ -1,31 +1,75 @@ -{ stdenv, fetchurl, openssl }: +{ stdenv, fetchurl, fetchgit, git, openssl, autoconf, pkgs }: stdenv.mkDerivation rec { name = "gambit-${version}"; - version = "4.8.6"; - devver = "4_8_6"; + version = "4.8.8-f3ffeb6"; + bootstrap = import ./bootstrap.nix ( pkgs ); - src = fetchurl { - url = "http://www.iro.umontreal.ca/~gambit/download/gambit/v4.8/source/gambit-v${devver}-devel.tgz"; - sha256 = "0j3ka76cfb007rlcc3nv5p1s6vh31cwp87hwwabawf16vs1jb7bl"; +# devver = "4_8_8"; +# src = fetchurl { +# url = "http://www.iro.umontreal.ca/~gambit/download/gambit/v4.8/source/gambit-v${version}-devel.tgz"; +# sha256 = "0j3ka76cfb007rlcc3nv5p1s6vh31cwp87hwwabawf16vs1jb7bl"; +# }; + src = fetchgit { + url = "https://github.com/feeley/gambit.git"; + rev = "f3ffeb695aeea80c18c1b9ef276b57898c780dca"; + sha256 = "1lqixsrgk9z2gj6z1nkys0pfd3m5zjxrp3gvqn2wpr9h7hjb8x06"; }; - configureFlags = [ - "--enable-single-host" - "--enable-shared" - "--enable-absolute-shared-libs" - "--enable-c-opt=-O6" "--enable-gcc-opts" "--enable-inline-jumps" - "--enable-thread-system=posix" "--enable-dynamic-tls" - "--enable-openssl" - ]; + buildInputs = [ openssl git autoconf bootstrap ]; - buildInputs = [ openssl ]; + configurePhase = '' + options=( + --prefix=$out + --enable-single-host + --enable-c-opt=-O2 + --enable-gcc-opts + --enable-shared + --enable-absolute-shared-libs # Yes, NixOS will want an absolute path, and fix it. + --enable-poll + --enable-openssl + + #--enable-multiple-versions # Nope, NixOS already does version multiplexing + #--enable-guide + #--enable-track-scheme + #--enable-high-res-timing + #--enable-max-processors=4 + #--enable-multiple-vms + #--enable-dynamic-tls + #--enable-multiple-vms + #--enable-multiple-threaded-vms ## when SMP branch is merged in + #--enable-thread-system=posix ## default when --enable-multiple-vms is on. + #--enable-profile + #--enable-coverage + #--enable-inline-jumps + #--enable-char-size=1" ; default is 4 + ) + ./configure ''${options[@]} + ''; + + buildPhase = '' + # Make bootstrap compiler, from release bootstrap + mkdir -p boot/wip-compiler && + cp -rp ${bootstrap}/. boot/wip-compiler/. && + chmod -R u+w boot && + cd boot/wip-compiler && \ + cp ../../gsc/makefile.in ../../gsc/*.scm gsc && \ + (cd gsc && make bootclean ) && + make bootstrap && + cd ../.. && + cp boot/wip-compiler/gsc/gsc gsc-boot && + + # Now use the bootstrap compiler to build the real thing! + make -j2 from-scratch + ''; + + doCheck = true; meta = { description = "Optimizing Scheme to C compiler"; homepage = "http://gambitscheme.org"; license = stdenv.lib.licenses.lgpl2; platforms = stdenv.lib.platforms.linux; - maintainers = with stdenv.lib.maintainers; [ thoughtpolice raskin ]; + maintainers = with stdenv.lib.maintainers; [ thoughtpolice raskin fare ]; }; }