diff options
Diffstat (limited to 'pkgs/development')
-rw-r--r-- | pkgs/development/compilers/dmd/2.067.1.nix | 167 | ||||
-rw-r--r-- | pkgs/development/compilers/dmd/default.nix | 422 | ||||
-rw-r--r-- | pkgs/development/compilers/ldc/default.nix | 331 | ||||
-rw-r--r-- | pkgs/development/libraries/libp11/default.nix | 4 | ||||
-rw-r--r-- | pkgs/development/libraries/v8/default.nix | 14 | ||||
-rw-r--r-- | pkgs/development/tools/build-managers/dub/default.nix | 121 |
6 files changed, 596 insertions, 463 deletions
diff --git a/pkgs/development/compilers/dmd/2.067.1.nix b/pkgs/development/compilers/dmd/2.067.1.nix deleted file mode 100644 index 29a8618dc7b9..000000000000 --- a/pkgs/development/compilers/dmd/2.067.1.nix +++ /dev/null @@ -1,167 +0,0 @@ -{ stdenv, fetchFromGitHub -, makeWrapper, unzip, which -, curl, tzdata -}: - -stdenv.mkDerivation rec { - name = "dmd-${version}"; - # This is the last version of dmd which is buildable without a D compiler. - # So we use this as a bootstrap version. - # The DMD frontend has been ported to D in 2.069.0 but idgen was already - # ported in 2.068.0. - version = "2.067.1"; - - srcs = [ - (fetchFromGitHub { - owner = "dlang"; - repo = "dmd"; - rev = "v${version}"; - sha256 = "0fm29lg8axfmzdaj0y6vg70lhwb5d9rv4aavnvdd15xjschinlcz"; - name = "dmd-v${version}-src"; - }) - (fetchFromGitHub { - owner = "dlang"; - repo = "druntime"; - rev = "v${version}"; - sha256 = "1n2qfw9kmnql0fk2nxikispqs7vh85nhvyyr00fk227n9lgnqf02"; - name = "druntime-v${version}-src"; - }) - (fetchFromGitHub { - owner = "dlang"; - repo = "phobos"; - rev = "v${version}"; - sha256 = "0fywgds9xvjcgnqxmpwr67p3wi2m535619pvj159cgwv5y0nr3p1"; - name = "phobos-v${version}-src"; - }) - ]; - - sourceRoot = "."; - - postUnpack = '' - mv dmd-v${version}-src dmd - mv druntime-v${version}-src druntime - mv phobos-v${version}-src phobos - ''; - - # Compile with PIC to prevent colliding modules with binutils 2.28. - # https://issues.dlang.org/show_bug.cgi?id=17375 - usePIC = "-fPIC"; - ROOT_HOME_DIR = "$(echo ~root)"; - - postPatch = '' - # Ugly hack so the dlopen call has a chance to succeed. - # https://issues.dlang.org/show_bug.cgi?id=15391 - substituteInPlace phobos/std/net/curl.d \ - --replace libcurl.so ${curl.out}/lib/libcurl.so - - # Ugly hack to fix the hardcoded path to zoneinfo in the source file. - # https://issues.dlang.org/show_bug.cgi?id=15391 - substituteInPlace phobos/std/datetime.d \ - --replace /usr/share/zoneinfo/ ${tzdata}/share/zoneinfo/ - - substituteInPlace druntime/test/shared/Makefile \ - --replace "DFLAGS:=" "DFLAGS:=${usePIC} " - - # phobos uses curl, so we need to patch the path to the lib. - substituteInPlace phobos/posix.mak \ - --replace "-soname=libcurl.so.4" "-soname=${curl.out}/lib/libcurl.so.4" - - # Use proper C++ compiler - substituteInPlace dmd/src/posix.mak \ - --replace g++ $CXX - '' - - + stdenv.lib.optionalString stdenv.hostPlatform.isLinux '' - substituteInPlace dmd/src/root/port.c \ - --replace "#include <bits/mathdef.h>" "#include <complex.h>" - - # See https://github.com/NixOS/nixpkgs/issues/29443 - substituteInPlace phobos/std/path.d \ - --replace "\"/root" "\"${ROOT_HOME_DIR}" - '' - - + stdenv.lib.optionalString stdenv.hostPlatform.isDarwin '' - substituteInPlace dmd/src/posix.mak \ - --replace MACOSX_DEPLOYMENT_TARGET MACOSX_DEPLOYMENT_TARGET_ - - # Was not able to compile on darwin due to "__inline_isnanl" - # being undefined. - substituteInPlace dmd/src/root/port.c --replace __inline_isnanl __inline_isnan - ''; - - nativeBuildInputs = [ makeWrapper unzip which ]; - buildInputs = [ curl tzdata ]; - - # Buid and install are based on http://wiki.dlang.org/Building_DMD - buildPhase = '' - cd dmd - make -f posix.mak INSTALL_DIR=$out - export DMD=$PWD/src/dmd - cd ../druntime - make -f posix.mak PIC=${usePIC} INSTALL_DIR=$out DMD=$DMD - cd ../phobos - make -f posix.mak PIC=${usePIC} INSTALL_DIR=$out DMD=$DMD - cd .. - ''; - - # disable check phase because some tests are not working with sandboxing - doCheck = false; - - checkPhase = '' - cd dmd - export DMD=$PWD/src/dmd - cd ../druntime - make -f posix.mak unittest PIC=${usePIC} DMD=$DMD BUILD=release - cd ../phobos - make -f posix.mak unittest PIC=${usePIC} DMD=$DMD BUILD=release - cd .. - ''; - - installPhase = '' - cd dmd - mkdir $out - mkdir $out/bin - cp $PWD/src/dmd $out/bin - mkdir -p $out/share/man/man1 - mkdir -p $out/share/man/man5 - cp -r docs/man/man1/* $out/share/man/man1/ - cp -r docs/man/man5/* $out/share/man/man5/ - - cd ../druntime - mkdir $out/include - mkdir $out/include/d2 - cp -r import/* $out/include/d2 - - cd ../phobos - mkdir $out/lib - ${ - let bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; - osname = if stdenv.hostPlatform.isDarwin then "osx" else stdenv.hostPlatform.parsed.kernel.name; - extension = if stdenv.hostPlatform.isDarwin then "a" else "{a,so}"; in - "cp generated/${osname}/release/${bits}/libphobos2.${extension} $out/lib" - } - - cp -r std $out/include/d2 - cp -r etc $out/include/d2 - - wrapProgram $out/bin/dmd \ - --prefix PATH ":" "${stdenv.cc}/bin" \ - --set-default CC "$CC" - - cd $out/bin - tee dmd.conf << EOF - [Environment] - DFLAGS=-I$out/include/d2 -L-L$out/lib ${stdenv.lib.optionalString (!stdenv.cc.isClang) "-L--export-dynamic"} -fPIC - EOF - ''; - - meta = with stdenv.lib; { - description = "Official reference compiler for the D language"; - homepage = http://dlang.org/; - # Everything is now Boost licensed, even the backend. - # https://github.com/dlang/dmd/pull/6680 - license = licenses.boost; - platforms = platforms.unix; - }; -} - diff --git a/pkgs/development/compilers/dmd/default.nix b/pkgs/development/compilers/dmd/default.nix index ff19a5b872cc..d20d2a7e8ed9 100644 --- a/pkgs/development/compilers/dmd/default.nix +++ b/pkgs/development/compilers/dmd/default.nix @@ -1,173 +1,287 @@ -{ stdenv, fetchFromGitHub +{ stdenv, fetchFromGitHub, overrideCC, gcc5 , makeWrapper, unzip, which , curl, tzdata, gdb, darwin -# Versions 2.070.2 and up require a working dmd compiler to build: -, bootstrapDmd }: +, callPackage +, bootstrapVersion ? false +, version ? "2.075.1" +, dmdSha256 ? "0kq6r8rcghvzk5jcphg89l85rg734s29bssd2rcw3fygx0k9a9k5" +, druntimeSha256 ? "0idn2v1lmp7hl637g3i7pdfj9mjk4sclkz4cm77nl8873k2fhk8j" +, phobosSha256 ? "1a7q5fd15yspgs5plxgx54jyrcwgzlyw3rahmz04jd2s5h56dj04" +}: -stdenv.mkDerivation rec { - name = "dmd-${version}"; - version = "2.075.1"; - - srcs = [ - (fetchFromGitHub { - owner = "dlang"; - repo = "dmd"; - rev = "v${version}"; - sha256 = "0kq6r8rcghvzk5jcphg89l85rg734s29bssd2rcw3fygx0k9a9k5"; - name = "dmd-v${version}-src"; - }) - (fetchFromGitHub { - owner = "dlang"; - repo = "druntime"; - rev = "v${version}"; - sha256 = "0idn2v1lmp7hl637g3i7pdfj9mjk4sclkz4cm77nl8873k2fhk8j"; - name = "druntime-v${version}-src"; - }) - (fetchFromGitHub { - owner = "dlang"; - repo = "phobos"; - rev = "v${version}"; - sha256 = "1a7q5fd15yspgs5plxgx54jyrcwgzlyw3rahmz04jd2s5h56dj04"; - name = "phobos-v${version}-src"; - }) - ]; - - sourceRoot = "."; - - postUnpack = '' - mv dmd-v${version}-src dmd - mv druntime-v${version}-src druntime - mv phobos-v${version}-src phobos - - # Remove cppa test for now because it doesn't work. - rm dmd/test/runnable/cppa.d - rm dmd/test/runnable/extra-files/cppb.cpp - ''; +let + + bootstrapDmd = if !bootstrapVersion then + # Versions 2.070.2 and up require a working dmd compiler to build so we just + # use the last dmd without any D code to bootstrap the actual build. + callPackage ./default.nix { + stdenv = if stdenv.hostPlatform.isDarwin then + stdenv + else + # Doesn't build with gcc6 on linux + overrideCC stdenv gcc5; + bootstrapVersion = true; + version = "2.067.1"; + dmdSha256 = "0fm29lg8axfmzdaj0y6vg70lhwb5d9rv4aavnvdd15xjschinlcz"; + druntimeSha256 = "1n2qfw9kmnql0fk2nxikispqs7vh85nhvyyr00fk227n9lgnqf02"; + phobosSha256 = "0fywgds9xvjcgnqxmpwr67p3wi2m535619pvj159cgwv5y0nr3p1"; + } + else + ""; + + dmdBuild = stdenv.mkDerivation rec { + name = "dmdBuild-${version}"; + inherit version; + + enableParallelBuilding = true; + + srcs = [ + (fetchFromGitHub { + owner = "dlang"; + repo = "dmd"; + rev = "v${version}"; + sha256 = dmdSha256; + name = "dmd"; + }) + (fetchFromGitHub { + owner = "dlang"; + repo = "druntime"; + rev = "v${version}"; + sha256 = druntimeSha256; + name = "druntime"; + }) + (fetchFromGitHub { + owner = "dlang"; + repo = "phobos"; + rev = "v${version}"; + sha256 = phobosSha256; + name = "phobos"; + }) + ]; + + sourceRoot = "."; - # Compile with PIC to prevent colliding modules with binutils 2.28. - # https://issues.dlang.org/show_bug.cgi?id=17375 - usePIC = "-fPIC"; + postUnpack = '' + patchShebangs . - postPatch = '' - # Ugly hack so the dlopen call has a chance to succeed. - # https://issues.dlang.org/show_bug.cgi?id=15391 - substituteInPlace phobos/std/net/curl.d \ - --replace libcurl.so ${curl.out}/lib/libcurl.so + # Remove cppa test for now because it doesn't work. + rm dmd/test/runnable/cppa.d + rm dmd/test/runnable/extra-files/cppb.cpp + ''; + + # Compile with PIC to prevent colliding modules with binutils 2.28. + # https://issues.dlang.org/show_bug.cgi?id=17375 + usePIC = "-fPIC"; + ROOT_HOME_DIR = "$(echo ~root)"; + + datetimePath = if bootstrapVersion then + "phobos/std/datetime.d" + else + "phobos/std/datetime/timezone.d"; + + phobosPatches = '' + substituteInPlace ${datetimePath} \ + --replace "import core.time;" "import core.time;import std.path;" - # Ugly hack to fix the hardcoded path to zoneinfo in the source file. - # https://issues.dlang.org/show_bug.cgi?id=15391 - substituteInPlace phobos/std/datetime/timezone.d \ - --replace /usr/share/zoneinfo/ ${tzdata}/share/zoneinfo/ + substituteInPlace ${datetimePath} \ + --replace "tzName == \"leapseconds\"" "baseName(tzName) == \"leapseconds\"" - substituteInPlace druntime/test/common.mak \ - --replace "DFLAGS:=" "DFLAGS:=${usePIC} " + # Ugly hack to fix the hardcoded path to zoneinfo in the source file. + # https://issues.dlang.org/show_bug.cgi?id=15391 + substituteInPlace ${datetimePath} \ + --replace /usr/share/zoneinfo/ ${tzdata}/share/zoneinfo/ - # phobos uses curl, so we need to patch the path to the lib. - substituteInPlace phobos/posix.mak \ - --replace "-soname=libcurl.so.4" "-soname=${curl.out}/lib/libcurl.so.4" + # Ugly hack so the dlopen call has a chance to succeed. + # https://issues.dlang.org/show_bug.cgi?id=15391 + substituteInPlace phobos/std/net/curl.d \ + --replace libcurl.so ${curl.out}/lib/libcurl.so - # Use proper C++ compiler - substituteInPlace dmd/posix.mak \ - --replace g++ $CXX - '' + # phobos uses curl, so we need to patch the path to the lib. + substituteInPlace phobos/posix.mak \ + --replace "-soname=libcurl.so.4" "-soname=${curl.out}/lib/libcurl.so.4" + + '' + + + stdenv.lib.optionalString (bootstrapVersion) '' + substituteInPlace ${datetimePath} \ + --replace "import std.traits;" "import std.traits;import std.path;" + + substituteInPlace ${datetimePath} \ + --replace "tzName == \"+VERSION\"" "baseName(tzName) == \"leapseconds\" || tzName == \"+VERSION\"" + '' + + + stdenv.lib.optionalString stdenv.hostPlatform.isLinux '' + # See https://github.com/NixOS/nixpkgs/issues/29443 + substituteInPlace phobos/std/path.d \ + --replace "\"/root" "\"${ROOT_HOME_DIR}" + ''; + + dmdPath = if bootstrapVersion then + "dmd/src" + else + "dmd"; + + postPatch = '' + # Use proper C++ compiler + substituteInPlace ${dmdPath}/posix.mak \ + --replace g++ $CXX + + # TODO + substituteInPlace druntime/src/core/memory.d \ + --replace "assert(z is null);" "//assert(z is null);" + '' + + + stdenv.lib.optionalString (!bootstrapVersion) '' + substituteInPlace druntime/test/common.mak \ + --replace "DFLAGS:=" "DFLAGS:=${usePIC} " + '' + + + phobosPatches + + + stdenv.lib.optionalString (stdenv.hostPlatform.isLinux && bootstrapVersion) '' + substituteInPlace ${dmdPath}/root/port.c \ + --replace "#include <bits/mathdef.h>" "#include <complex.h>" + '' + stdenv.lib.optionalString stdenv.hostPlatform.isDarwin '' - substituteInPlace dmd/posix.mak \ + substituteInPlace ${dmdPath}/posix.mak \ --replace MACOSX_DEPLOYMENT_TARGET MACOSX_DEPLOYMENT_TARGET_ + '' + + + stdenv.lib.optionalString (stdenv.hostPlatform.isDarwin && bootstrapVersion) '' + # Was not able to compile on darwin due to "__inline_isnanl" + # being undefined. + substituteInPlace ${dmdPath}/root/port.c --replace __inline_isnanl __inline_isnan ''; - nativeBuildInputs = [ bootstrapDmd makeWrapper unzip which gdb ] - - ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [ - Foundation - ]); - - buildInputs = [ curl tzdata ]; - - # Buid and install are based on http://wiki.dlang.org/Building_DMD - buildPhase = '' - cd dmd - make -j$NIX_BUILD_CORES -f posix.mak INSTALL_DIR=$out - ${ - let bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; - osname = if stdenv.hostPlatform.isDarwin then "osx" else stdenv.hostPlatform.parsed.kernel.name; in - "export DMD=$PWD/generated/${osname}/release/${bits}/dmd" - } - cd ../druntime - make -j$NIX_BUILD_CORES -f posix.mak PIC=${usePIC} INSTALL_DIR=$out DMD=$DMD - cd ../phobos - make -j$NIX_BUILD_CORES -f posix.mak PIC=${usePIC} INSTALL_DIR=$out DMD=$DMD - cd .. - ''; + nativeBuildInputs = [ bootstrapDmd makeWrapper unzip which gdb ] - # disable check phase because some tests are not working with sandboxing - doCheck = false; - - checkPhase = '' - cd dmd - ${ - let bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; - osname = if stdenv.hostPlatform.isDarwin then "osx" else stdenv.hostPlatform.parsed.kernel.name; in - "export DMD=$PWD/generated/${osname}/release/${bits}/dmd" - } - make -j$NIX_BUILD_CORES -C test -f Makefile PIC=${usePIC} DMD=$DMD BUILD=release SHARED=0 - cd ../druntime - make -j$NIX_BUILD_CORES -f posix.mak unittest PIC=${usePIC} DMD=$DMD BUILD=release - cd ../phobos - make -j$NIX_BUILD_CORES -f posix.mak unittest PIC=${usePIC} DMD=$DMD BUILD=release - cd .. - ''; + ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [ + Foundation + ]); - installPhase = '' - cd dmd - mkdir $out - mkdir $out/bin - ${ - let bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; - osname = if stdenv.hostPlatform.isDarwin then "osx" else stdenv.hostPlatform.parsed.kernel.name; in - "cp $PWD/generated/${osname}/release/${bits}/dmd $out/bin" - } - - mkdir -p $out/share/man/man1 - mkdir -p $out/share/man/man5 - cp -r docs/man/man1/* $out/share/man/man1/ - cp -r docs/man/man5/* $out/share/man/man5/ - - cd ../druntime - mkdir $out/include - mkdir $out/include/d2 - cp -r import/* $out/include/d2 - - cd ../phobos - mkdir $out/lib - ${ - let bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; - osname = if stdenv.hostPlatform.isDarwin then "osx" else stdenv.hostPlatform.parsed.kernel.name; - extension = if stdenv.hostPlatform.isDarwin then "a" else "{a,so}"; in - "cp generated/${osname}/release/${bits}/libphobos2.${extension} $out/lib" - } - - cp -r std $out/include/d2 - cp -r etc $out/include/d2 - - wrapProgram $out/bin/dmd \ - --prefix PATH ":" "${stdenv.cc}/bin" \ - --set-default CC "$CC" - - cd $out/bin - tee dmd.conf << EOF - [Environment] - DFLAGS=-I$out/include/d2 -L-L$out/lib ${stdenv.lib.optionalString (!stdenv.cc.isClang) "-L--export-dynamic"} -fPIC - EOF - ''; + buildInputs = [ curl tzdata ]; + + bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; + osname = if stdenv.hostPlatform.isDarwin then + "osx" + else + stdenv.hostPlatform.parsed.kernel.name; + top = "$(echo $NIX_BUILD_TOP)"; + pathToDmd = if bootstrapVersion then + "${top}/dmd/src/dmd" + else + "${top}/dmd/generated/${osname}/release/${bits}/dmd"; + + # Buid and install are based on http://wiki.dlang.org/Building_DMD + buildPhase = '' + cd dmd + make -j$NIX_BUILD_CORES -f posix.mak INSTALL_DIR=$out + cd ../druntime + make -j$NIX_BUILD_CORES -f posix.mak PIC=1 INSTALL_DIR=$out DMD=${pathToDmd} + cd ../phobos + make -j$NIX_BUILD_CORES -f posix.mak PIC=1 INSTALL_DIR=$out DMD=${pathToDmd} + cd .. + ''; - meta = with stdenv.lib; { - description = "Official reference compiler for the D language"; - homepage = http://dlang.org/; - # Everything is now Boost licensed, even the backend. - # https://github.com/dlang/dmd/pull/6680 - license = licenses.boost; - maintainers = with maintainers; [ ThomasMader ]; - platforms = platforms.unix; + doCheck = !bootstrapVersion; + + checkPhase = '' + cd dmd + make -j$NIX_BUILD_CORES -C test -f Makefile PIC=1 DMD=${pathToDmd} BUILD=release SHARED=0 SHELL=$SHELL + cd ../druntime + make -j$NIX_BUILD_CORES -f posix.mak unittest PIC=1 DMD=${pathToDmd} BUILD=release + cd .. + ''; + + extension = if stdenv.hostPlatform.isDarwin then "a" else "{a,so}"; + + installPhase = '' + cd dmd + mkdir $out + mkdir $out/bin + cp ${pathToDmd} $out/bin + + mkdir -p $out/share/man/man1 + mkdir -p $out/share/man/man5 + cp -r docs/man/man1/* $out/share/man/man1/ + cp -r docs/man/man5/* $out/share/man/man5/ + + cd ../druntime + mkdir $out/include + mkdir $out/include/d2 + cp -r import/* $out/include/d2 + + cd ../phobos + mkdir $out/lib + cp generated/${osname}/release/${bits}/libphobos2.${extension} $out/lib + + cp -r std $out/include/d2 + cp -r etc $out/include/d2 + + wrapProgram $out/bin/dmd \ + --prefix PATH ":" "${stdenv.cc}/bin" \ + --set-default CC "$CC" + + cd $out/bin + tee dmd.conf << EOF + [Environment] + DFLAGS=-I$out/include/d2 -L-L$out/lib ${stdenv.lib.optionalString (!stdenv.cc.isClang) "-L--export-dynamic"} -fPIC + EOF + ''; + + meta = with stdenv.lib; { + description = "Official reference compiler for the D language"; + homepage = http://dlang.org/; + # Everything is now Boost licensed, even the backend. + # https://github.com/dlang/dmd/pull/6680 + license = licenses.boost; + maintainers = with maintainers; [ ThomasMader ]; + platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; + }; + }; + + # Need to test Phobos in a fixed-output derivation, otherwise the + # network stuff in Phobos would fail if sandbox mode is enabled. + phobosUnittests = stdenv.mkDerivation rec { + name = "phobosUnittests-${version}"; + version = dmdBuild.version; + + enableParallelBuilding = dmdBuild.enableParallelBuilding; + preferLocalBuild = true; + inputString = dmdBuild.outPath; + outputHashAlgo = "sha256"; + outputHash = builtins.hashString "sha256" inputString; + + srcs = dmdBuild.srcs; + + sourceRoot = "."; + + postPatch = dmdBuild.phobosPatches; + + nativeBuildInputs = dmdBuild.nativeBuildInputs; + buildInputs = dmdBuild.buildInputs; + + buildPhase = '' + cd phobos + make -j$NIX_BUILD_CORES -f posix.mak unittest PIC=1 DMD=${dmdBuild}/bin/dmd BUILD=release + ''; + + installPhase = '' + echo -n $inputString > $out + ''; }; + +in + +stdenv.mkDerivation rec { + inherit phobosUnittests; + name = "dmd-${version}"; + phases = "installPhase"; + + installPhase = '' + mkdir $out + cp -r --symbolic-link ${dmdBuild}/* $out/ + ''; } + diff --git a/pkgs/development/compilers/ldc/default.nix b/pkgs/development/compilers/ldc/default.nix index 5c283dd4380c..154da0707f67 100644 --- a/pkgs/development/compilers/ldc/default.nix +++ b/pkgs/development/compilers/ldc/default.nix @@ -1,103 +1,258 @@ -{ stdenv, fetchFromGitHub, cmake, llvm, dmd, curl, tzdata, python, - lit, gdb, unzip, darwin }: +{ stdenv, fetchgit, fetchurl, cmake, llvm, curl, tzdata +, python, libconfig, lit, gdb, unzip, darwin, bash +, callPackage +, bootstrapVersion ? false +, version ? "1.5.0" +, ldcSha256 ? "1150sgns03vplni2wd4afk3rgw3rap8rsiipspw0rzxgki5rlr83" +}: -stdenv.mkDerivation rec { - name = "ldc-${version}"; - version = "1.3.0"; - - srcs = [ - (fetchFromGitHub { - owner = "ldc-developers"; - repo = "ldc"; - rev = "v${version}"; - sha256 = "1ac3j4cwwgjpayhijxx4d6478bc3iqksjxkd7xp7byx7k8w1ppdl"; - name = "ldc-v${version}-src"; - }) - (fetchFromGitHub { - owner = "ldc-developers"; - repo = "druntime"; - rev = "ldc-v${version}"; - sha256 = "1m13370wnj3sizqk3sdpzi9am5d24srf27d613qblhqa9n8vwz30"; - name = "druntime-ldc-v${version}-src"; - }) - (fetchFromGitHub { - owner = "ldc-developers"; - repo = "phobos"; - rev = "ldc-v${version}"; - sha256 = "0fhcdfi7a00plwj27ysfyv783nhk0kspq7hawf6vbsl3s1nyvn8g"; - name = "phobos-ldc-v${version}-src"; - }) - (fetchFromGitHub { - owner = "ldc-developers"; - repo = "dmd-testsuite"; - rev = "ldc-v${version}"; - sha256 = "0dmdkp220gqhxjrmrjfkf0vsvylwfaj70hswavq4q3v4dg17pzmj"; - name = "dmd-testsuite-ldc-v${version}-src"; - }) - ]; - - sourceRoot = "."; - - postUnpack = '' - mv ldc-v${version}-src/* . - - mv druntime-ldc-v${version}-src/* runtime/druntime - - mv phobos-ldc-v${version}-src/* runtime/phobos - - mv dmd-testsuite-ldc-v${version}-src/* tests/d2/dmd-testsuite - - # Remove cppa test for now because it doesn't work. - rm tests/d2/dmd-testsuite/runnable/cppa.d - rm tests/d2/dmd-testsuite/runnable/extra-files/cppb.cpp - ''; +let - postPatch = '' - substituteInPlace runtime/phobos/std/net/curl.d \ - --replace libcurl.so ${curl.out}/lib/libcurl.so + bootstrapLdc = if !bootstrapVersion then + # LDC 0.17.x is the last version which doesn't need a working D compiler to + # build so we use that version to bootstrap the actual build. + callPackage ./default.nix { + bootstrapVersion = true; + version = "0.17.5"; + ldcSha256 = "0200r5y8hs5yv2cx24csgyh00dlg18877b9cfblixypr6nhl19bs"; + } + else + ""; - # Ugly hack to fix the hardcoded path to zoneinfo in the source file. - # https://issues.dlang.org/show_bug.cgi?id=15391 - substituteInPlace runtime/phobos/std/datetime.d \ - --replace /usr/share/zoneinfo/ ${tzdata}/share/zoneinfo/ - '' + ldcBuild = stdenv.mkDerivation rec { + name = "ldcBuild-${version}"; - + stdenv.lib.optionalString stdenv.hostPlatform.isDarwin '' - substituteInPlace driver/tool.cpp \ - --replace "gcc" "clang" - ''; + enableParallelBuilding = true; - nativeBuildInputs = [ cmake llvm dmd python lit gdb unzip ] + src = fetchurl { + url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz"; + sha256 = ldcSha256; + }; - ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [ - Foundation - ]); + sourceRoot = "."; - buildInputs = [ curl tzdata stdenv.cc ]; + postUnpack = '' + cd ldc-${version}-src/ - preConfigure = '' - cmakeFlagsArray=("-DINCLUDE_INSTALL_DIR=$out/include/dlang/ldc") - ''; + patchShebangs . - postConfigure = '' - export DMD=$PWD/bin/ldc2 - ''; + # Remove cppa test for now because it doesn't work. + rm tests/d2/dmd-testsuite/runnable/cppa.d + rm tests/d2/dmd-testsuite/runnable/extra-files/cppb.cpp + '' - makeFlags = [ "DMD=$DMD" ]; + + stdenv.lib.optionalString (bootstrapVersion) '' + # ... runnable/variadic.d () + #Test failed. The logged output: + #/tmp/nix-build-ldcBuild-0.17.5.drv-0/ldc-0.17.5-src/build/bin/ldmd2 -conf= -m64 -Irunnable -od/tmp/nix-build-ldcBuild-0.17.5.drv-0/ldc-0.17.5-src/build/dmd-testsuite/runnable -of/tmp/nix-build-ldcBuild-0.17.5.drv-0/ldc-0.17.5-src/build/dmd-testsuite/runnable/variadic_0 runnable/variadic.d + #Error: integer constant expression expected instead of <cant> + #Error: integer constant expression expected instead of <cant> + #Error: integer constant expression expected instead of <cant> + #Error: integer constant expression expected instead of <cant> + #Error: integer constant expression expected instead of <cant> + #runnable/variadic.d(84): Error: template instance variadic.Foo3!(int, int, int) error instantiating + # + # + #============================== + #Test failed: expected rc == 0, exited with rc == 1 + rm tests/d2/dmd-testsuite/runnable/variadic.d + '' - # disable check phase because some tests are not working with sandboxing - doCheck = false; + + stdenv.lib.optionalString (!bootstrapVersion) '' + # https://github.com/NixOS/nixpkgs/issues/29611 + rm tests/sanitizers/asan_* + ''; + + ROOT_HOME_DIR = "$(echo ~root)"; + + datetimePath = if bootstrapVersion then + "phobos/std/datetime.d" + else + "phobos/std/datetime/timezone.d"; + + postPatch = '' + substituteInPlace cmake/Modules/FindLLVM.cmake \ + --replace "llvm_set(LIBRARY_DIRS" "#llvm_set(LIBRARY_DIRS" + + substituteInPlace runtime/${datetimePath} \ + --replace "import core.time;" "import core.time;import std.path;" + + substituteInPlace runtime/${datetimePath} \ + --replace "tzName == \"leapseconds\"" "baseName(tzName) == \"leapseconds\"" + + substituteInPlace runtime/phobos/std/net/curl.d \ + --replace libcurl.so ${curl.out}/lib/libcurl.so + + # Ugly hack to fix the hardcoded path to zoneinfo in the source file. + # https://issues.dlang.org/show_bug.cgi?id=15391 + substituteInPlace runtime/${datetimePath} \ + --replace /usr/share/zoneinfo/ ${tzdata}/share/zoneinfo/ + + substituteInPlace tests/d2/dmd-testsuite/Makefile \ + --replace "SHELL=/bin/bash" "SHELL=${bash}/bin/bash" + '' + + + stdenv.lib.optionalString stdenv.hostPlatform.isLinux '' + # See https://github.com/NixOS/nixpkgs/issues/29443 + substituteInPlace runtime/phobos/std/path.d \ + --replace "\"/root" "\"${ROOT_HOME_DIR}" + + # TODO + substituteInPlace runtime/druntime/src/core/memory.d \ + --replace "assert(z is null);" "//assert(z is null);" + '' + + + stdenv.lib.optionalString (bootstrapVersion && stdenv.hostPlatform.isDarwin) '' + # https://github.com/ldc-developers/ldc/pull/2306 + # Can be removed on bootstrap version > 0.17.5 + substituteInPlace gen/programs.cpp \ + --replace "gcc" "clang" + + # Was not able to compile on darwin due to "__inline_isnanl" + # being undefined. + substituteInPlace dmd2/root/port.c --replace __inline_isnanl __inline_isnan + '' + + + stdenv.lib.optionalString (stdenv.hostPlatform.isLinux && bootstrapVersion) '' + substituteInPlace dmd2/root/port.c \ + --replace "#include <bits/mathdef.h>" "#include <complex.h>" + '' + + + stdenv.lib.optionalString (bootstrapVersion) '' + substituteInPlace runtime/${datetimePath} \ + --replace "import std.traits;" "import std.traits;import std.path;" + + substituteInPlace runtime/${datetimePath} \ + --replace "tzName == \"+VERSION\"" "baseName(tzName) == \"leapseconds\" || tzName == \"+VERSION\"" + ''; + + nativeBuildInputs = [ cmake llvm bootstrapLdc python lit gdb unzip ] + + ++ stdenv.lib.optional (bootstrapVersion) [ + libconfig + ] + + ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [ + Foundation + ]); + + + buildInputs = [ curl tzdata stdenv.cc ]; + + preConfigure = '' + cmakeFlagsArray=("-DINCLUDE_INSTALL_DIR=$out/include/dlang/ldc" + "-DCMAKE_BUILD_TYPE=Release" + "-DCMAKE_SKIP_RPATH=ON" + "-DBUILD_SHARED_LIBS=OFF" + "-DLDC_WITH_LLD=OFF" + # Xcode 9.0.1 fixes that bug according to ldc release notes + "-DRT_ARCHIVE_WITH_LDC=OFF" + "-DLLVM_LIBRARY_DIRS=${llvm}/lib" + ) + ''; - checkPhase = '' - ctest -j $NIX_BUILD_CORES -V DMD=$DMD - ''; - meta = with stdenv.lib; { - description = "The LLVM-based D compiler"; - homepage = https://github.com/ldc-developers/ldc; - # from https://github.com/ldc-developers/ldc/blob/master/LICENSE - license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; - maintainers = with maintainers; [ ThomasMader ]; - platforms = platforms.unix; + postConfigure = '' + export DMD=$PWD/bin/ldmd2 + ''; + + makeFlags = [ "DMD=$DMD" ]; + + doCheck = true; + + checkPhase = '' + # Build and run LDC D unittests. + ctest --output-on-failure -R "ldc2-unittest" + # Run LIT testsuite. + ctest -V -R "lit-tests" + # Run DMD testsuite. + DMD_TESTSUITE_MAKE_ARGS=-j$NIX_BUILD_CORES ctest -V -R "dmd-testsuite" + ''; + + meta = with stdenv.lib; { + description = "The LLVM-based D compiler"; + homepage = https://github.com/ldc-developers/ldc; + # from https://github.com/ldc-developers/ldc/blob/master/LICENSE + license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; + maintainers = with maintainers; [ ThomasMader ]; + platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; + }; + }; + + # Need to test Phobos in a fixed-output derivation, otherwise the + # network stuff in Phobos would fail if sandbox mode is enabled. + ldcUnittests = stdenv.mkDerivation rec { + name = "ldcUnittests-${version}"; + + enableParallelBuilding = ldcBuild.enableParallelBuilding; + preferLocalBuild = true; + inputString = ldcBuild.outPath; + outputHashAlgo = "sha256"; + outputHash = builtins.hashString "sha256" inputString; + + src = ldcBuild.src; + + sourceRoot = "."; + + postUnpack = ldcBuild.postUnpack; + + postPatch = ldcBuild.postPatch; + + nativeBuildInputs = ldcBuild.nativeBuildInputs + + ++ [ + ldcBuild + ]; + + buildInputs = ldcBuild.buildInputs; + + preConfigure = '' + cmakeFlagsArray=( "-DINCLUDE_INSTALL_DIR=$out/include/dlang/ldc" + "-DCMAKE_BUILD_TYPE=Release" + "-DCMAKE_SKIP_RPATH=ON" + "-DBUILD_SHARED_LIBS=OFF" + "-DLDC_WITH_LLD=OFF" + # Xcode 9.0.1 fixes that bug according to ldc release notes + "-DRT_ARCHIVE_WITH_LDC=OFF" + "-DLLVM_LIBRARY_DIRS=${llvm}/lib" + "-DD_COMPILER=${ldcBuild}/bin/ldmd2" + ) + ''; + + postConfigure = ldcBuild.postConfigure; + + makeFlags = ldcBuild.makeFlags; + + buildCmd = if bootstrapVersion then + "ctest -V -R \"build-druntime-ldc-unittest|build-phobos2-ldc-unittest\"" + else + "make -j$NIX_BUILD_CORES DMD=${ldcBuild}/bin/ldc2 druntime-test-runner druntime-test-runner-debug phobos2-test-runner phobos2-test-runner-debug"; + + testCmd = if bootstrapVersion then + "ctest -j$NIX_BUILD_CORES --output-on-failure -E \"dmd-testsuite|lit-tests|ldc2-unittest|llvm-ir-testsuite\"" + else + "ctest -j$NIX_BUILD_CORES --output-on-failure -E \"dmd-testsuite|lit-tests|ldc2-unittest\""; + + buildPhase = '' + ${buildCmd} + ${testCmd} + ''; + + installPhase = '' + echo -n $inputString > $out + ''; }; + +in + +stdenv.mkDerivation rec { + inherit ldcUnittests; + name = "ldc-${version}"; + phases = "installPhase"; + + installPhase = '' + mkdir $out + cp -r --symbolic-link ${ldcBuild}/* $out/ + ''; } + diff --git a/pkgs/development/libraries/libp11/default.nix b/pkgs/development/libraries/libp11/default.nix index 26e754317df0..54e2616e782f 100644 --- a/pkgs/development/libraries/libp11/default.nix +++ b/pkgs/development/libraries/libp11/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "libp11-${version}"; - version = "0.4.4"; + version = "0.4.7"; src = fetchFromGitHub { owner = "OpenSC"; repo = "libp11"; rev = name; - sha256 = "1jnpnwipmw3skw112qff36w046nyz5amiil228rn5divpkvx4axa"; + sha256 = "0n1i0pxj6l0vdq8gpdwfp5p9qd7wkymg0lpy6a17ix8hpqsljlhr"; }; makeFlags = [ "DESTDIR=$(out)" "PREFIX=" ]; diff --git a/pkgs/development/libraries/v8/default.nix b/pkgs/development/libraries/v8/default.nix index c2cd5a015168..4d49fdce3a92 100644 --- a/pkgs/development/libraries/v8/default.nix +++ b/pkgs/development/libraries/v8/default.nix @@ -7,13 +7,11 @@ assert readline != null; let - arch = if stdenv.isArm - then if stdenv.is64bit - then"arm64" - else "arm" - else if stdenv.is64bit - then"x64" - else "ia32"; + arch = if stdenv.isx86_64 then "x64" + else if stdenv.isi686 then "ia32" + else if stdenv.isAarch64 then "arm64" + else if stdenv.isArm then "arm" + else throw "Unknown architecture for v8"; git_url = "https://chromium.googlesource.com"; clangFlag = if stdenv.isDarwin then "1" else "0"; sharedFlag = if static then "static_library" else "shared_library"; @@ -172,6 +170,8 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; + dontUpdateAutotoolsGnuConfigScripts = if stdenv.isAarch64 then true else null; + # the `libv8_libplatform` target is _only_ built as a static library, # and is expected to be statically linked in when needed. # see the following link for further commentary: diff --git a/pkgs/development/tools/build-managers/dub/default.nix b/pkgs/development/tools/build-managers/dub/default.nix index 007ce5b07cde..89996b3d30dc 100644 --- a/pkgs/development/tools/build-managers/dub/default.nix +++ b/pkgs/development/tools/build-managers/dub/default.nix @@ -1,65 +1,96 @@ { stdenv, fetchFromGitHub, curl, dmd, libevent, rsync }: -stdenv.mkDerivation rec { - name = "dub-${version}"; - version = "1.5.0"; - - src = fetchFromGitHub { - owner = "dlang"; - repo = "dub"; - rev = "v${version}"; - sha256 = "0kmirx4ijhzirjwdqmnwqhngg38zdaydpvny2p0yj3afqgkj6vq5"; - }; +let - postPatch = '' - # Avoid that the version file is overwritten - substituteInPlace build.sh \ - --replace source/dub/version_.d /dev/null + dubBuild = stdenv.mkDerivation rec { + name = "dubBuild-${version}"; + version = "1.6.0"; - substituteInPlace build.sh \ - --replace MACOSX_DEPLOYMENT_TARGET MACOSX_DEPLOYMENT_TARGET_ + enableParallelBuilding = true; - patchShebangs build.sh - patchShebangs test + src = fetchFromGitHub { + owner = "dlang"; + repo = "dub"; + rev = "v${version}"; + sha256 = "1xjr5pp263lbcd4harxy1ybh7q0kzj9iyy63ji6pn66fizrgm7zk"; + }; - # Remove unittest which is not working for now (upstream already fixed: https://github.com/dlang/dub/issues/1224) - rm test/interactive-remove.sh + postPatch = '' + # Avoid that the version file is overwritten + substituteInPlace build.sh \ + --replace source/dub/version_.d /dev/null - # Fix test as long as there is no upstream solution. (see https://github.com/dlang/dub/pull/1227) - substituteInPlace test/issue884-init-defer-file-creation.sh \ - --replace "< /dev/stdin" "<(while :; do sleep 1; done)" \ - --replace "sleep 1" "" - ''; + patchShebangs . + ''; - nativeBuildInputs = [ dmd libevent rsync ]; - buildInputs = [ curl ]; + nativeBuildInputs = [ dmd libevent rsync ]; + buildInputs = [ curl ]; - buildPhase = '' - export DMD=${dmd.out}/bin/dmd - ./build.sh - ''; + buildPhase = '' + export DMD=${dmd.out}/bin/dmd + ./build.sh + ''; + + installPhase = '' + mkdir $out + mkdir $out/bin + cp bin/dub $out/bin + ''; + + meta = with stdenv.lib; { + description = "Package and build manager for D applications and libraries"; + homepage = http://code.dlang.org/; + license = licenses.mit; + maintainers = with maintainers; [ ThomasMader ]; + platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; + }; + }; + + # Need to test in a fixed-output derivation, otherwise the + # network tests would fail if sandbox mode is enabled. + dubUnittests = stdenv.mkDerivation rec { + name = "dubUnittests-${version}"; + version = dubBuild.version; + + enableParallelBuilding = dubBuild.enableParallelBuilding; + preferLocalBuild = true; + inputString = dubBuild.outPath; + outputHashAlgo = "sha256"; + outputHash = builtins.hashString "sha256" inputString; + + src = dubBuild.src; - doCheck = false; + postPatch = dubBuild.postPatch; - checkPhase = '' - export DUB=$PWD/bin/dub + nativeBuildInputs = dubBuild.nativeBuildInputs; + buildInputs = dubBuild.buildInputs; + + buildPhase = '' + # Can't use dub from dubBuild directly because one unittest + # (issue895-local-configuration) needs to generate a config + # file under ../etc relative to the dub location. + cp ${dubBuild}/bin/dub bin/ + export DUB=$NIX_BUILD_TOP/source/bin/dub export DC=${dmd.out}/bin/dmd export HOME=$TMP ./test/run-unittest.sh - ''; + ''; + + installPhase = '' + echo -n $inputString > $out + ''; + }; + +in + +stdenv.mkDerivation rec { + inherit dubUnittests; + name = "dub-${dubBuild.version}"; + phases = "installPhase"; installPhase = '' mkdir $out - mkdir $out/bin - cp bin/dub $out/bin + cp -r --symbolic-link ${dubBuild}/* $out/ ''; - - meta = with stdenv.lib; { - description = "Package and build manager for D applications and libraries"; - homepage = http://code.dlang.org/; - license = licenses.mit; - maintainers = with maintainers; [ ThomasMader ]; - platforms = platforms.unix; - }; } |