dmd: 2.084.0 -> 2.084.1

This commit is contained in:
Thomas Mader 2019-02-16 18:56:46 +01:00
parent 98c6d9d799
commit 64c958e9a4

View File

@ -1,17 +1,28 @@
{ 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}";
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"}'';
};
});
};
in
stdenv.mkDerivation rec {
name = "dmd-${version}";
inherit version;
enableParallelBuilding = true;
@ -40,6 +51,16 @@ let
})
];
patches = [
(fetchpatch {
name = "fix-loader-import.patch";
url = "https://github.com/dlang/dmd/commit/e7790436c4af1910b8c079dac9bb69627d7dea4b.patch";
sha256 = "0w69hajx8agywc7m2hph5m27g2yclz8ml0gjjyjk9k6ii3jv45kx";
})
];
patchFlags = [ "--directory=dmd" "-p1" ];
sourceRoot = ".";
# https://issues.dlang.org/show_bug.cgi?id=19553
@ -49,12 +70,12 @@ let
patchShebangs .
'';
postPatch = ''
substituteInPlace dmd/test/compilable/extra-files/ddocYear.html \
--replace "2018" "__YEAR__"
postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isLinux ''
substituteInPlace phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" ""
''
substituteInPlace dmd/test/runnable/test16096.sh \
--replace "{EXT}" "{EXE}"
+ 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 ]
@ -81,20 +102,21 @@ let
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
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 ..
'';
# 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
# 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 ..
'';
@ -127,11 +149,7 @@ let
--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
substitute ${dmdConfFile} "$out/bin/dmd.conf" --subst-var out
'';
meta = with stdenv.lib; {
@ -143,57 +161,5 @@ let
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.
#
# 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
'';
}
else
"";
in
stdenv.mkDerivation rec {
inherit phobosUnittests;
name = "dmd-${version}";
phases = "installPhase";
buildInputs = dmdBuild.buildInputs;
installPhase = ''
mkdir $out
cp -r --symbolic-link ${dmdBuild}/* $out/
'';
meta = dmdBuild.meta;
}