coreclr: 8c70800 -> 1.0.4

This commit is contained in:
obadz 2016-10-02 16:43:06 +01:00
parent 24c551a99d
commit 540e3e8935

@ -7,18 +7,24 @@
, libunwind
, gettext
, openssl
, python2
, icu
, lttng-ust
, liburcu
, libuuid
, ed
, debug ? false
}:
stdenv.mkDerivation rec {
name = "coreclr-${version}";
version = "git-" + (builtins.substring 0 10 rev);
rev = "8c70800b5e8dc5535c379dec4a6fb32f7ab5e878";
version = "1.0.4";
src = fetchFromGitHub {
owner = "dotnet";
repo = "coreclr";
inherit rev;
sha256 = "1galskbnr9kdjjxpx5qywh49400swchhq5f54i16kxyr9k4mvq1f";
owner = "dotnet";
repo = "coreclr";
rev = "v${version}";
sha256 = "1wpig71q0kh2yrq162d32x00zlwrrs1wymkgijh49cqkn4cwkh91";
};
buildInputs = [
@ -30,31 +36,61 @@ stdenv.mkDerivation rec {
libunwind
gettext
openssl
python2
icu
lttng-ust
liburcu
libuuid
ed
];
configurePhase = ''
# Prevent clang-3.5 (rather than just clang) from being selected as the compiler as that's
# not wrapped
substituteInPlace src/pal/tools/gen-buildsys-clang.sh --replace "which \"clang-" "which \"clang-DoNotFindThisOne"
# Prevent the -nostdinc++ flag to be passed to clang, which causes a compilation error
substituteInPlace src/CMakeLists.txt --replace "if(NOT CLR_CMAKE_PLATFORM_DARWIN)" "if(FALSE)"
substituteInPlace src/pal/tools/gen-buildsys-clang.sh --replace "which \"clang-\$" "which \"clang-DoNotFindThisOne\$"
patchShebangs build.sh
patchShebangs src/pal/tools/gen-buildsys-clang.sh
# See https://github.com/dotnet/coreclr/issues/7573#issuecomment-253081323
ed -v ./src/pal/src/include/pal/palinternal.h << EOF
/^#undef memcpy
-1
d
+1
d
w
EOF
'';
buildPhase = "./build.sh";
BuildArch = if stdenv.is64bit then "x64" else "x86";
BuildType = if debug then "Debug" else "Release";
hardeningDisable = [ "strictoverflow" "format" ];
NIX_CFLAGS_COMPILE = [ "-Wno-error=unused-result" ];
buildPhase = ''
./build.sh $BuildArch $BuildType
# Try to make some sensible hierarchy out of the output
pushd bin/Product/Linux.$BuildArch.$BuildType
mkdir lib2
mv *.so *.so.dbg lib2
mv bin lib3
mkdir lib4
mv Loader lib4
mv inc include
mv gcinfo include
mkdir bin
mkdir -p share/doc
mv sosdocsunix.txt share/doc
for f in * ; do test -f $f && mv -v $f bin; done
popd
'';
installPhase = ''
pushd bin/Product/Linux.x64.Debug/
mkdir -v -p $out/bin
cp -v coreconsole corerun crossgen $out/bin
cp -rv lib $out
cp -v *.so $out/lib
cp -rv inc $out/include
cp -rv gcinfo $out/include
popd
mkdir -p $out
cp -rv bin/Product/Linux.$BuildArch.$BuildType/* $out
'';
meta = {