Re: [PATCH v4 3/3] gnu: Update ldc to 0.17.1.
Sigh. Yeah, I've researched a bit why that happens. The story is this: glibc wanted to have isinf work with double AND float etc without conversion. Therefore, there is a special gcc construct where you can find out what type a parameter is IN A MACRO. Therefore, in C, isnan is a macro and so is isinf. The include file defining it is However, in C++ there's a include file . This one provides normal functions in the namespace "std" (since overloads are possible in C++). dmd2 undefs isinf which is why the C version doesn't work anymore (that's stupid, really. What were they thinking?). But then they dont use the namespace std so it won't use that one either. "::isinf" is DEFINITELY wrong - no idea how that ever worked. It won't find the macro that way AND it won't find the function in namespace std either (since :: definitely says you want the one without namespace). Some LLVM versions include somewhere in their header files - so dmd2 is forced to use cmath rather than math.h even though they *want* to use math.h and the source code says so. Therefore, I now use the C++ std::isinf - I hope LLVM won't change their mind again because then it will break again.
Re: [PATCH v4 3/3] gnu: Update ldc to 0.17.1.
https://wiki.dlang.org/LDC https://github.com/ldc-developers/ldc/releases/tag/v0.17.1 After 0.17.1 is working on guix *someone* should change the supported platforms to include arm. Based on the wiki it sounds like maybe we should try building it on mips also. -- Efraim Flashner אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted signature.asc Description: PGP signature
Re: [PATCH v4 3/3] gnu: Update ldc to 0.17.1.
On Tue, Sep 13, 2016 at 12:30:42PM +0200, Danny Milosavljevic wrote: > * gnu/packages/ldc.scm (ldc): Update to 0.17.1. With this patch, LDC fails to build on my x86_64 machine with the familiar errors about isnan and isinf: [ 11%] Building CXX object CMakeFiles/LDCShared.dir/dmd2/scope.c.o /gnu/store/frrj3bfbmg5vrd0flh9cf8j64h7cr2v4-gcc-4.9.3/bin/c++ -DDMDV2 -DHAVE_SC_ARG_MAX -DIN_LLVM -DLDC_INSTALL_PREFIX=\"/gnu/store/4p7hh4a7dyp2wg7zd08lvlxafayrjznx-ldc-0.17.1\" -DLDC_LLVM_VER=307 -DLLVM_INTRINSIC_TD_PATH=\"/gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include\" -DOPAQUE_VTBLS -D__LITTLE_ENDIAN__ -I/tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/. -I/tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2 -I/tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root -I/tmp/guix-build-ldc-0.17.1.drv-0/build/dmd2 -I/tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1 -isystem /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include -isystem /gnu/store/1v4anv1dwvskkav1zj08gicwaibachr1-libconfig-1.5/include -O2 -g -DNDEBUG -I/gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wno-comment -std=c++11 -ffunction-sections -fdata-sections -O3 -DNDEBUG -fno-exceptions -fno-rtti -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -w -DPOSIX -DLDC_POSIX -o CMakeFiles/LDCShared.dir/dmd2/scope.c.o -c /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/scope.c /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root/port.c: In static member function ‘static int Port::isNan(double)’: /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root/port.c:773:19: error: ‘isnan’ was not declared in this scope return isnan(r); ^ /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root/port.c:773:19: note: suggested alternative: In file included from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/Support/DataTypes.h:35:0, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/Support/SwapByteOrder.h:19, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/Support/MathExtras.h:18, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/ADT/SmallVector.h:20, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/ADT/ArrayRef.h:14, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/ADT/APInt.h:19, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/ADT/APFloat.h:20, from /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root/port.c:677: /gnu/store/frrj3bfbmg5vrd0flh9cf8j64h7cr2v4-gcc-4.9.3/include/c++/cmath:632:5: note: ‘std::isnan’ isnan(_Tp __x) ^ /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root/port.c: In static member function ‘static int Port::isNan(longdouble)’: /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root/port.c:789:19: error: ‘isnan’ was not declared in this scope return isnan(r); ^ /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root/port.c:789:19: note: suggested alternative: In file included from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/Support/DataTypes.h:35:0, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/Support/SwapByteOrder.h:19, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/Support/MathExtras.h:18, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/ADT/SmallVector.h:20, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/ADT/ArrayRef.h:14, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/ADT/APInt.h:19, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/ADT/APFloat.h:20, from /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root/port.c:677: /gnu/store/frrj3bfbmg5vrd0flh9cf8j64h7cr2v4-gcc-4.9.3/include/c++/cmath:632:5: note: ‘std::isnan’ isnan(_Tp __x) ^ /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root/port.c: In static member function ‘static int Port::isInfinity(double)’: /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root/port.c:817:19: error: ‘isinf’ was not declared in this scope return isinf(r); ^ /tmp/guix-build-ldc-0.17.1.drv-0/ldc-0.17.1/dmd2/root/port.c:817:19: note: suggested alternative: In file included from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/Support/DataTypes.h:35:0, from /gnu/store/vy5wrh1igqlcswxi6bmfdl16frpjw7nf-llvm-3.7.1/include/llvm/Support/SwapByte
[PATCH v4 3/3] gnu: Update ldc to 0.17.1.
* gnu/packages/ldc.scm (ldc): Update to 0.17.1. --- gnu/packages/ldc.scm | 15 ++- .../patches/ldc-0.17.1-disable-tests.patch | 147 + 2 files changed, 156 insertions(+), 6 deletions(-) create mode 100644 gnu/packages/patches/ldc-0.17.1-disable-tests.patch diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm index 560fa49..70b2c5e 100644 --- a/gnu/packages/ldc.scm +++ b/gnu/packages/ldc.scm @@ -29,6 +29,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages libedit) #:use-module (gnu packages llvm) + #:use-module (gnu packages python) #:use-module (gnu packages textutils) #:use-module (gnu packages zip)) @@ -76,7 +77,7 @@ and freshness without requiring additional information from the user.") (define-public ldc (package (name "ldc") -(version "0.16.1") +(version "0.17.1") (source (origin (method url-fetch) (uri (string-append @@ -85,7 +86,7 @@ and freshness without requiring additional information from the user.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 -"1jvilxx0rpqmkbja4m69fhd5g09697xq7vyqp2hz4hvxmmmv4j40" +"0rwggnbr60jbajfdw11kx058llmwljiss8rrv8df07vaygiv845i" (build-system cmake-build-system) ;; LDC currently only supports the x86_64 and i686 architectures. (supported-systems '("x86_64-linux" "i686-linux")) @@ -130,6 +131,8 @@ and freshness without requiring additional information from the user.") `(("llvm" ,llvm-3.7) ("clang" ,clang-3.7) ("unzip" ,unzip) + ("python-wrapper" ,python-wrapper) ; Needed for running tests + ("python-lit" ,python-lit) ; Needed for running tests ("phobos-src" ,(origin (method url-fetch) @@ -138,8 +141,8 @@ and freshness without requiring additional information from the user.") version ".tar.gz")) (sha256 (base32 - "0sgdj0536c4nb118yiw1f8lqy5d3g3lpg9l99l165lk9xy45l9z4")) - (patches (search-patches "ldc-disable-tests.patch" + "17nb1yvqblqj3q42c8nlnwvy823fw6kna28n2b48j4m6kd2w0nan")) + (patches (search-patches "ldc-0.17.1-disable-tests.patch" ("druntime-src" ,(origin (method url-fetch) @@ -148,7 +151,7 @@ and freshness without requiring additional information from the user.") version ".tar.gz")) (sha256 (base32 - "0z4mkyddx6c4sy1vqgqvavz55083dsxws681qkh93jh1rpby9yg6" + "129j7mfd0vnzaw7i6hr5waxm5cb0qcm8gyawy2xy5avlv8hrw5m4" ("dmd-testsuite-src" ,(origin (method url-fetch) @@ -157,7 +160,7 @@ and freshness without requiring additional information from the user.") version ".tar.gz")) (sha256 (base32 - "0yc6miidzgl9k33ygk7xcppmfd6kivqj02cvv4fmkbs3qz4yy3z1")) + "18h16lwwmr3k9dh7mcip17il72mz680wnygv9d0mdnivczn80zyv")) (home-page "http://wiki.dlang.org/LDC";) (synopsis "LLVM compiler for the D programming language") (description diff --git a/gnu/packages/patches/ldc-0.17.1-disable-tests.patch b/gnu/packages/patches/ldc-0.17.1-disable-tests.patch new file mode 100644 index 000..ee73077 --- /dev/null +++ b/gnu/packages/patches/ldc-0.17.1-disable-tests.patch @@ -0,0 +1,147 @@ +Only in b/std: algorithm +Only in b/std: array.d +Only in b/std: ascii.d +Only in b/std: base64.d +Only in b/std: bigint.d +Only in b/std: bitmanip.d +Only in b/std: c +Only in b/std: compiler.d +Only in b/std: complex.d +Only in b/std: concurrency.d +Only in b/std: container +Only in b/std: conv.d +Only in b/std: cstream.d +Only in b/std: csv.d +diff -ru a/std/datetime.d b/std/datetime.d +--- a/std/datetime.d 2016-08-02 23:56:13.969292202 +0200 b/std/datetime.d 2016-08-02 23:57:39.078408313 +0200 +@@ -28080,9 +28080,6 @@ + import std.algorithm : sort; + import std.range : retro; + import std.format : format; +- +-name = strip(name); +- + enforce(tzDatabaseDir.exists(), new DateTimeException(format("Directory %s does not exist.", tzDatabaseDir))); + enforce(tzDatabaseDir.isDir, new DateTimeException(format("%s is not a directory.", tzDatabaseDir))); + +@@ -28094,7 +28091,10 @@ + immutable file = buildNormalizedPath(tzDatabaseDir, tzFilename); + } + else +-immutable file = buildNormalizedPath(tzDatabaseDir, name); ++{ ++auto filename = "./" ~ strip(name); // make sure the prefix is not stripped ++immutable file = buildNormalizedPath(tzDatabaseDir, filename); ++} + + enforce(file.exists(), new DateTimeException(format("File %s does not exist.", file))); + enforce(file.isFile, new DateTimeException(format("%s is