diff options
author | Dmitry Kalinkin <dmitry.kalinkin@gmail.com> | 2019-02-22 02:29:41 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-22 02:29:41 -0500 |
commit | f96d4d555ba9fba3e0f341b7a8ff04e85ddc2216 (patch) | |
tree | 568c8b9f6574efa9d417279922612c95f8c2214b /pkgs | |
parent | 4ba49d3d6cbd393efc7d377e0cf2ac3efcc0c341 (diff) | |
parent | 0e88d17fb1eca54ec7464a8194cd1314db3f7f7e (diff) | |
download | nixlib-f96d4d555ba9fba3e0f341b7a8ff04e85ddc2216.tar nixlib-f96d4d555ba9fba3e0f341b7a8ff04e85ddc2216.tar.gz nixlib-f96d4d555ba9fba3e0f341b7a8ff04e85ddc2216.tar.bz2 nixlib-f96d4d555ba9fba3e0f341b7a8ff04e85ddc2216.tar.lz nixlib-f96d4d555ba9fba3e0f341b7a8ff04e85ddc2216.tar.xz nixlib-f96d4d555ba9fba3e0f341b7a8ff04e85ddc2216.tar.zst nixlib-f96d4d555ba9fba3e0f341b7a8ff04e85ddc2216.zip |
Merge pull request #55998 from ThomasMader/dlang-update
Dlang update
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/development/compilers/dmd/default.nix | 328 | ||||
-rw-r--r-- | pkgs/development/compilers/ldc/default.nix | 288 | ||||
-rw-r--r-- | pkgs/development/tools/build-managers/dub/default.nix | 151 | ||||
-rw-r--r-- | pkgs/development/tools/dtools/default.nix | 6 |
4 files changed, 328 insertions, 445 deletions
diff --git a/pkgs/development/compilers/dmd/default.nix b/pkgs/development/compilers/dmd/default.nix index 3ab25c3a830b..6130608062d0 100644 --- a/pkgs/development/compilers/dmd/default.nix +++ b/pkgs/development/compilers/dmd/default.nix @@ -1,199 +1,165 @@ -{ stdenv, fetchFromGitHub -, makeWrapper, unzip, which +{ stdenv, lib, fetchFromGitHub, fetchpatch +, makeWrapper, unzip, which, writeTextFile , curl, tzdata, gdb, darwin, git , callPackage, targetPackages, ldc -, version ? "2.084.0" -, dmdSha256 ? "1v61spdamncl8c1bzjc19b03p4jl0ih5zq9b7cqsy9ix7qaxmikf" -, druntimeSha256 ? "0vp414j6s11l9s54v81np49mv60ywmd7nnk41idkbwrq0nz4sfrq" -, phobosSha256 ? "1wp7z1x299b0w9ny1ah2wrfhrs05vc4bk51csgw9774l3dqcnv53" +, version ? "2.084.1" +, dmdSha256 ? "10ll5072rkv3ln7i5l88h2f9mzda567kw2jwh6466vm6ylzl4jms" +, druntimeSha256 ? "0i0g2cnzh097pmvb86gvyj79canaxppw33hp7ylqnd11q4kqc8pb" +, phobosSha256 ? "1hxpismj9gy5n1bc9kl9ykgd4lfmkq9i8xgrq09j0fybfwn9j1gc" }: let - dmdBuild = stdenv.mkDerivation rec { - name = "dmdBuild-${version}"; - inherit version; + dmdConfFile = writeTextFile { + name = "dmd.conf"; + text = (lib.generators.toINI {} { + "Environment" = { + DFLAGS = ''-I$@out@/include/d2 -L-L$@out@/lib -fPIC ${stdenv.lib.optionalString (!targetPackages.stdenv.cc.isClang) "-L--export-dynamic"}''; + }; + }); + }; - enableParallelBuilding = true; +in - 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"; +stdenv.mkDerivation rec { + name = "dmd-${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"; + }) + ]; + + patches = [ + (fetchpatch { + name = "fix-loader-import.patch"; + url = "https://github.com/dlang/dmd/commit/e7790436c4af1910b8c079dac9bb69627d7dea4b.patch"; + sha256 = "0w69hajx8agywc7m2hph5m27g2yclz8ml0gjjyjk9k6ii3jv45kx"; }) - ]; - - sourceRoot = "."; - - # https://issues.dlang.org/show_bug.cgi?id=19553 - hardeningDisable = [ "fortify" ]; - - postUnpack = '' - patchShebangs . - ''; - - postPatch = '' - substituteInPlace dmd/test/compilable/extra-files/ddocYear.html \ - --replace "2018" "__YEAR__" - - substituteInPlace dmd/test/runnable/test16096.sh \ - --replace "{EXT}" "{EXE}" - ''; - - nativeBuildInputs = [ ldc makeWrapper unzip which gdb git ] - - ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [ - Foundation - ]); - - 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 = "${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 BUILD=release ENABLE_RELEASE=1 PIC=1 HOST_DMD=ldmd2 - cd ../druntime - make -j$NIX_BUILD_CORES -f posix.mak BUILD=release ENABLE_RELEASE=1 PIC=1 INSTALL_DIR=$out DMD=${pathToDmd} - cd ../phobos - echo ${tzdata}/share/zoneinfo/ > TZDatabaseDirFile - echo ${curl.out}/lib/libcurl.so > LibcurlPathFile - make -j$NIX_BUILD_CORES -f posix.mak BUILD=release ENABLE_RELEASE=1 PIC=1 INSTALL_DIR=$out DMD=${pathToDmd} DFLAGS="-version=TZDatabaseDir -version=LibcurlPath -J$(pwd)" - cd .. - ''; - - # Disable tests on Darwin for now because of - # https://github.com/NixOS/nixpkgs/issues/41099 - doCheck = true; - - checkPhase = '' - cd dmd - make -j$NIX_BUILD_CORES -C test -f Makefile PIC=1 CC=$CXX 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 .. - ''; - - dontStrip = true; - - 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.* $out/lib - - cp -r std $out/include/d2 - cp -r etc $out/include/d2 - - wrapProgram $out/bin/dmd \ - --prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \ - --set-default CC "${targetPackages.stdenv.cc}/bin/cc" - - cd $out/bin - tee dmd.conf << EOF - [Environment] - DFLAGS=-I$out/include/d2 -L-L$out/lib ${stdenv.lib.optionalString (!targetPackages.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" ]; - }; - }; + ]; + + patchFlags = [ "--directory=dmd" "-p1" ]; + + sourceRoot = "."; + + # https://issues.dlang.org/show_bug.cgi?id=19553 + hardeningDisable = [ "fortify" ]; + + postUnpack = '' + patchShebangs . + ''; + + postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isLinux '' + substituteInPlace phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" "" + '' + + + stdenv.lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)" + ''; + + nativeBuildInputs = [ ldc makeWrapper unzip which gdb git ] - # Need to test Phobos in a fixed-output derivation, otherwise the - # network stuff in Phobos would fail if sandbox mode is enabled. - # - # Disable tests on Darwin for now because of - # https://github.com/NixOS/nixpkgs/issues/41099 - phobosUnittests = if !stdenv.hostPlatform.isDarwin then - 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 = "."; - - nativeBuildInputs = dmdBuild.nativeBuildInputs; - buildInputs = dmdBuild.buildInputs; - - buildPhase = '' - cd phobos - echo ${tzdata}/share/zoneinfo/ > TZDatabaseDirFile - echo ${curl.out}/lib/libcurl.so > LibcurlPathFile - make -j$NIX_BUILD_CORES -f posix.mak unittest BUILD=release ENABLE_RELEASE=1 PIC=1 DMD=${dmdBuild}/bin/dmd DFLAGS="-version=TZDatabaseDir -version=LibcurlPath -J$(pwd)" - ''; - - installPhase = '' - echo -n $inputString > $out - ''; - } + ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [ + Foundation + ]); + + 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 = "${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 BUILD=release ENABLE_RELEASE=1 PIC=1 HOST_DMD=ldmd2 + cd ../druntime + make -j$NIX_BUILD_CORES -f posix.mak BUILD=release ENABLE_RELEASE=1 PIC=1 INSTALL_DIR=$out DMD=${pathToDmd} + cd ../phobos + echo ${tzdata}/share/zoneinfo/ > TZDatabaseDirFile + echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > LibcurlPathFile + make -j$NIX_BUILD_CORES -f posix.mak BUILD=release ENABLE_RELEASE=1 PIC=1 INSTALL_DIR=$out DMD=${pathToDmd} DFLAGS="-version=TZDatabaseDir -version=LibcurlPath -J$(pwd)" + cd .. + ''; -in + doCheck = true; + + checkPhase = '' + cd dmd + # https://github.com/NixOS/nixpkgs/pull/55998#issuecomment-465871846 + #make -j$NIX_BUILD_CORES -C test -f Makefile PIC=1 CC=$CXX DMD=${pathToDmd} BUILD=release SHELL=$SHELL + cd ../druntime + make -j$NIX_BUILD_CORES -f posix.mak unittest PIC=1 DMD=${pathToDmd} BUILD=release + cd ../phobos + make -j$NIX_BUILD_CORES -f posix.mak unittest BUILD=release ENABLE_RELEASE=1 PIC=1 DMD=${pathToDmd} DFLAGS="-version=TZDatabaseDir -version=LibcurlPath -J$(pwd)" + cd .. + ''; -stdenv.mkDerivation rec { - inherit phobosUnittests; - name = "dmd-${version}"; - phases = "installPhase"; - buildInputs = dmdBuild.buildInputs; + dontStrip = true; installPhase = '' - mkdir $out - cp -r --symbolic-link ${dmdBuild}/* $out/ + 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.* $out/lib + + cp -r std $out/include/d2 + cp -r etc $out/include/d2 + + wrapProgram $out/bin/dmd \ + --prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \ + --set-default CC "${targetPackages.stdenv.cc}/bin/cc" + + substitute ${dmdConfFile} "$out/bin/dmd.conf" --subst-var out ''; - meta = dmdBuild.meta; + + 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" ]; + }; } diff --git a/pkgs/development/compilers/ldc/default.nix b/pkgs/development/compilers/ldc/default.nix index 80ccb0dbbd30..a290d2b6cfe6 100644 --- a/pkgs/development/compilers/ldc/default.nix +++ b/pkgs/development/compilers/ldc/default.nix @@ -2,8 +2,8 @@ , python, libconfig, lit, gdb, unzip, darwin, bash , callPackage, makeWrapper, targetPackages , bootstrapVersion ? false -, version ? "1.12.0" -, ldcSha256 ? "1fdma1w8j37wkr0pqdar11slkk36qymamxnk6d9k8ybhjmxaaawm" +, version ? "1.14.0" +, ldcSha256 ? "147vlzzzjx2n6zyz9wj54gj046i1mw5p5wixwzi5wkllgxghyy9c" }: let @@ -18,208 +18,156 @@ let else ""; - ldcBuild = stdenv.mkDerivation rec { - name = "ldcBuild-${version}"; +in - enableParallelBuilding = true; +stdenv.mkDerivation rec { + name = "ldc-${version}"; - src = fetchurl { - url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz"; - sha256 = ldcSha256; - }; + enableParallelBuilding = true; - postUnpack = '' - patchShebangs . - '' + src = fetchurl { + url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz"; + sha256 = ldcSha256; + }; - + stdenv.lib.optionalString (!bootstrapVersion && stdenv.hostPlatform.isDarwin) '' - # http://forum.dlang.org/thread/xtbbqthxutdoyhnxjhxl@forum.dlang.org - rm -r ldc-${version}-src/tests/dynamiccompile + # https://issues.dlang.org/show_bug.cgi?id=19553 + hardeningDisable = [ "fortify" ]; - # https://github.com/NixOS/nixpkgs/issues/34817 - rm -r ldc-${version}-src/tests/plugins/addFuncEntryCall + postUnpack = '' + patchShebangs . + '' - # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818 - rm -r ldc-${version}-src/tests/debuginfo/classtypes_gdb.d - rm -r ldc-${version}-src/tests/debuginfo/nested_gdb.d + + stdenv.lib.optionalString (!bootstrapVersion && stdenv.hostPlatform.isDarwin) '' + # https://github.com/NixOS/nixpkgs/issues/34817 + rm -r ldc-${version}-src/tests/plugins/addFuncEntryCall + '' - rm ldc-${version}-src/tests/d2/dmd-testsuite/runnable/test16096.sh - rm ldc-${version}-src/tests/d2/dmd-testsuite/compilable/ldc_output_filenames.sh - rm ldc-${version}-src/tests/d2/dmd-testsuite/compilable/crlf.sh - rm ldc-${version}-src/tests/d2/dmd-testsuite/compilable/issue15574.sh - rm ldc-${version}-src/tests/d2/dmd-testsuite/compilable/test6461.sh - '' + + stdenv.lib.optionalString (!bootstrapVersion) '' + echo ${tzdata}/share/zoneinfo/ > ldc-${version}-src/TZDatabaseDirFile - + stdenv.lib.optionalString (!bootstrapVersion) '' - echo ${tzdata}/share/zoneinfo/ > ldc-${version}-src/TZDatabaseDirFile + echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > ldc-${version}-src/LibcurlPathFile + ''; - # Remove cppa test for now because it doesn't work. - rm ldc-${version}-src/tests/d2/dmd-testsuite/runnable/cppa.d - rm ldc-${version}-src/tests/d2/dmd-testsuite/runnable/extra-files/cppb.cpp - ''; + postPatch = '' + # Setting SHELL=$SHELL when dmd testsuite is run doesn't work on Linux somehow + substituteInPlace tests/d2/dmd-testsuite/Makefile --replace "SHELL=/bin/bash" "SHELL=${bash}/bin/bash" + '' - datetimePath = if bootstrapVersion then - "phobos/std/datetime.d" - else - "phobos/std/datetime/timezone.d"; + + stdenv.lib.optionalString (!bootstrapVersion && stdenv.hostPlatform.isLinux) '' + substituteInPlace runtime/phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" "" + '' - postPatch = '' - # https://issues.dlang.org/show_bug.cgi?id=15391 - substituteInPlace runtime/phobos/std/net/curl.d \ - --replace libcurl.so ${curl.out}/lib/libcurl.so + + stdenv.lib.optionalString (!bootstrapVersion && stdenv.hostPlatform.isDarwin) '' + substituteInPlace runtime/phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)" + '' - substituteInPlace tests/d2/dmd-testsuite/Makefile \ - --replace "SHELL=/bin/bash" "SHELL=${bash}/bin/bash" - '' + + stdenv.lib.optionalString (bootstrapVersion && stdenv.hostPlatform.isDarwin) '' + # Was not able to compile on darwin due to "__inline_isnanl" + # being undefined. + # TODO Remove with version > 0.17.6 + substituteInPlace dmd2/root/port.c --replace __inline_isnanl __inline_isnan + ''; - + stdenv.lib.optionalString (bootstrapVersion && stdenv.hostPlatform.isDarwin) '' - # Was not able to compile on darwin due to "__inline_isnanl" - # being undefined. - substituteInPlace dmd2/root/port.c --replace __inline_isnanl __inline_isnan - ''; - - nativeBuildInputs = [ cmake makeWrapper 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 ]; - - #"-DINCLUDE_INSTALL_DIR=$out/include/dlang/ldc" - # Xcode 9.0.1 fixes that bug according to ldc release notes - #"-DRT_ARCHIVE_WITH_LDC=OFF" - #"-DD_FLAGS=TZ_DATABASE_DIR=${tzdata}/share/zoneinfo/" - #"-DCMAKE_BUILD_TYPE=Release" - #"-DCMAKE_SKIP_RPATH=ON" - - #-DINCLUDE_INSTALL_DIR=$out/include/dlang/ldc - # - cmakeFlagsString = stdenv.lib.optionalString (!bootstrapVersion) '' - "-DD_FLAGS=-d-version=TZDatabaseDir;-J$PWD" - ''; - - preConfigure = stdenv.lib.optionalString (!bootstrapVersion) '' - cmakeFlagsArray=( - ${cmakeFlagsString} - ) - ''; - - postConfigure = '' - export DMD=$PWD/bin/ldmd2 - ''; - - makeFlags = [ "DMD=$DMD" ]; - - doCheck = !bootstrapVersion; - - 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" - ''; - - postInstall = '' - wrapProgram $out/bin/ldc2 \ - --prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \ - --set-default CC "${targetPackages.stdenv.cc}/bin/cc" - ''; - - 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" ]; - }; - }; + nativeBuildInputs = [ cmake makeWrapper llvm unzip ] - # Need to test Phobos in a fixed-output derivation, otherwise the - # network stuff in Phobos would fail if sandbox mode is enabled. - # - # Disable tests on Darwin for now because of - # https://github.com/NixOS/nixpkgs/issues/41099 - # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818 - ldcUnittests = if (!bootstrapVersion && !stdenv.hostPlatform.isDarwin) then - stdenv.mkDerivation rec { - name = "ldcUnittests-${version}"; + ++ stdenv.lib.optional (!bootstrapVersion) [ + bootstrapLdc python lit + ] - enableParallelBuilding = ldcBuild.enableParallelBuilding; - preferLocalBuild = true; - inputString = ldcBuild.outPath; - outputHashAlgo = "sha256"; - outputHash = builtins.hashString "sha256" inputString; + ++ stdenv.lib.optional (!bootstrapVersion && !stdenv.hostPlatform.isDarwin) [ + # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818 + gdb + ] - src = ldcBuild.src; + ++ stdenv.lib.optional (bootstrapVersion) [ + libconfig + ] - postUnpack = ldcBuild.postUnpack; + ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [ + Foundation + ]); - postPatch = ldcBuild.postPatch; - nativeBuildInputs = ldcBuild.nativeBuildInputs + buildInputs = [ curl tzdata ]; - ++ [ - ldcBuild - ]; + cmakeFlagsString = stdenv.lib.optionalString (!bootstrapVersion) '' + "-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J$PWD" + "-DCMAKE_BUILD_TYPE=Release" + ''; - buildInputs = ldcBuild.buildInputs; + preConfigure = stdenv.lib.optionalString (!bootstrapVersion) '' + cmakeFlagsArray=( + ${cmakeFlagsString} + ) + ''; - preConfigure = '' - cmakeFlagsArray=( - ${ldcBuild.cmakeFlagsString} - "-DD_COMPILER=${ldcBuild.out}/bin/ldmd2" - ) - ''; + postConfigure = '' + export DMD=$PWD/bin/ldmd2 + ''; - postConfigure = ldcBuild.postConfigure; + makeFlags = [ "DMD=$DMD" ]; - makeFlags = ldcBuild.makeFlags; + fixNames = if stdenv.hostPlatform.isDarwin then '' + fixDarwinDylibNames() { + local flags=() - buildCmd = if bootstrapVersion then - "ctest -V -R \"build-druntime-ldc-unittest|build-phobos2-ldc-unittest\"" - else - "make -j$NIX_BUILD_CORES DMD=${ldcBuild.out}/bin/ldc2 phobos2-test-runner phobos2-test-runner-debug"; + for fn in "$@"; do + flags+=(-change "$(basename "$fn")" "$fn") + done - 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\""; + for fn in "$@"; do + if [ -L "$fn" ]; then continue; fi + echo "$fn: fixing dylib" + install_name_tool -id "$fn" "''${flags[@]}" "$fn" + done + } - buildPhase = '' - ${buildCmd} - ln -s ${ldcBuild.out}/bin/ldmd2 $PWD/bin/ldmd2 - ${testCmd} - ''; + fixDarwinDylibNames $(find "$(pwd)/lib" -name "*.dylib") + '' + else + ""; - installPhase = '' - echo -n $inputString > $out - ''; - } + # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746 + additionalExceptions = if stdenv.hostPlatform.isDarwin then + "|druntime-test-shared" else ""; -in + doCheck = !bootstrapVersion; -stdenv.mkDerivation rec { - inherit ldcUnittests; - name = "ldc-${version}"; - phases = "installPhase"; - buildInputs = ldcBuild.buildInputs; + checkPhase = stdenv.lib.optionalString doCheck '' + # Build default lib test runners + make -j$NIX_BUILD_CORES all-test-runners + + ${fixNames} + + # Run dmd testsuite + export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD CC=$CXX" + ctest -V -R "dmd-testsuite" - installPhase = '' - mkdir $out - cp -r --symbolic-link ${ldcBuild}/* $out/ + # Build and run LDC D unittests. + ctest --output-on-failure -R "ldc2-unittest" + + # Run LIT testsuite. + ctest -V -R "lit-tests" + + # Run default lib unittests + ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${additionalExceptions}" ''; - meta = ldcBuild.meta; + postInstall = '' + wrapProgram $out/bin/ldc2 \ + --prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \ + --set-default CC "${targetPackages.stdenv.cc}/bin/cc" + ''; + + 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" ]; + }; } diff --git a/pkgs/development/tools/build-managers/dub/default.nix b/pkgs/development/tools/build-managers/dub/default.nix index 18c6eff76e1f..024c57201e12 100644 --- a/pkgs/development/tools/build-managers/dub/default.nix +++ b/pkgs/development/tools/build-managers/dub/default.nix @@ -1,109 +1,76 @@ { stdenv, fetchFromGitHub, curl, dmd, libevent, rsync }: -let - - dubBuild = stdenv.mkDerivation rec { - name = "dubBuild-${version}"; - version = "1.13.0"; - - enableParallelBuilding = true; - - src = fetchFromGitHub { - owner = "dlang"; - repo = "dub"; - rev = "v${version}"; - sha256 = "1wd5pdnbaafj33bbg188w0iz28ps4cyjangb12g2s9dyic29zjqv"; - }; - - postUnpack = '' - patchShebangs . - ''; - - # Can be removed with https://github.com/dlang/dub/pull/1368 - dubvar = "\\$DUB"; - postPatch = '' - substituteInPlace test/fetchzip.sh \ - --replace "dub remove" "\"${dubvar}\" remove" - ''; - - nativeBuildInputs = [ dmd libevent rsync ]; - buildInputs = [ curl ]; - - buildPhase = '' - export DMD=${dmd.out}/bin/dmd - ./build.sh - ''; +stdenv.mkDerivation rec { + name = "dub-${version}"; + version = "1.13.0"; - installPhase = '' - mkdir $out - mkdir $out/bin - cp bin/dub $out/bin - ''; + enableParallelBuilding = true; - 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" ]; - }; + src = fetchFromGitHub { + owner = "dlang"; + repo = "dub"; + rev = "v${version}"; + sha256 = "1wd5pdnbaafj33bbg188w0iz28ps4cyjangb12g2s9dyic29zjqv"; }; - # Need to test in a fixed-output derivation, otherwise the - # network tests would fail if sandbox mode is enabled. - # Disable tests on Darwin for now because they don't work - # reliably there. - dubUnittests = if !stdenv.hostPlatform.isDarwin then - 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; - - postUnpack = dubBuild.postUnpack; - postPatch = dubBuild.postPatch; - - nativeBuildInputs = dubBuild.nativeBuildInputs; - buildInputs = dubBuild.buildInputs; + postUnpack = '' + patchShebangs . + ''; - 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 PATH=$PATH:$NIX_BUILD_TOP/source/bin/ - export DC=${dmd.out}/bin/dmd - export HOME=$TMP - ./test/run-unittest.sh - ''; + # Can be removed with https://github.com/dlang/dub/pull/1368 + dubvar = "\\$DUB"; + postPatch = '' + substituteInPlace test/fetchzip.sh \ + --replace "dub remove" "\"${dubvar}\" remove" + ''; - installPhase = '' - echo -n $inputString > $out - ''; - } - else - ""; + nativeBuildInputs = [ dmd libevent rsync ]; + buildInputs = [ curl ]; -in + buildPhase = '' + export DMD=${dmd.out}/bin/dmd + ./build.sh + ''; -stdenv.mkDerivation rec { - inherit dubUnittests; - name = "dub-${dubBuild.version}"; - phases = "installPhase"; - buildInputs = dubBuild.buildInputs; + doCheck = true; + + checkPhase = '' + export DUB=$NIX_BUILD_TOP/source/bin/dub + export PATH=$PATH:$NIX_BUILD_TOP/source/bin/ + export DC=${dmd.out}/bin/dmd + export HOME=$TMP + + rm -rf test/issue502-root-import + rm test/issue990-download-optional-selected.sh + rm test/timeout.sh + rm test/issue674-concurrent-dub.sh + rm test/issue672-upgrade-optional.sh + rm test/issue1574-addcommand.sh + rm test/issue1524-maven-upgrade-dependency-tree.sh + rm test/issue1416-maven-repo-pkg-supplier.sh + rm test/issue1037-better-dependency-messages.sh + rm test/interactive-remove.sh + rm test/fetchzip.sh + rm test/feat663-search.sh + rm test/ddox.sh + rm test/0-init-multi.sh + rm test/0-init-multi-json.sh + + ./test/run-unittest.sh + ''; installPhase = '' mkdir $out - cp -r --symbolic-link ${dubBuild}/* $out/ + mkdir $out/bin + cp bin/dub $out/bin ''; - meta = dubBuild.meta; + 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" ]; + }; } diff --git a/pkgs/development/tools/dtools/default.nix b/pkgs/development/tools/dtools/default.nix index ccfcfaace014..593287dbf21a 100644 --- a/pkgs/development/tools/dtools/default.nix +++ b/pkgs/development/tools/dtools/default.nix @@ -2,14 +2,14 @@ stdenv.mkDerivation rec { name = "dtools-${version}"; - version = "2.084.0"; + version = "2.084.1"; srcs = [ (fetchFromGitHub { owner = "dlang"; repo = "dmd"; rev = "v${version}"; - sha256 = "1v61spdamncl8c1bzjc19b03p4jl0ih5zq9b7cqsy9ix7qaxmikf"; + sha256 = "10ll5072rkv3ln7i5l88h2f9mzda567kw2jwh6466vm6ylzl4jms"; name = "dmd"; }) (fetchFromGitHub { @@ -26,6 +26,8 @@ stdenv.mkDerivation rec { postUnpack = '' mv dmd dtools cd dtools + + substituteInPlace posix.mak --replace "\$(DMD) \$(DFLAGS) -unittest -main -run rdmd.d" "" ''; nativeBuildInputs = [ dmd ]; |