gnu: ldc: Update to 1.27.1.
* gnu/packages/dlang.scm (ldc-bootstrap): Rename to...
(ldc-bootstrap-0.17): ... this.  Fix indentation.  Disable tests.
[phases]: Remove test related patching.
{patch-phobos}: Rename to ...
{patch-paths}: ... this.
[inputs]: Remove llvm-6, which is propagated by clang-6.
(ldc-bootstrap-1.12): New variable, based on the previous ldc.
[source]: Use the official release tarball.
[build-type]: Set the build type to Release.
[configure-flags]: Pass the -GNinja configure flag.
[phases]{patch-paths}: Override to adjust for changed paths.
{build, install}: Override to use ninja.
[native-inputs]: Add ld-gold-wrapper.  Update llvm to version 11 and use
ldc-bootstrap-0.17 as the bootstrapping D compiler.  Add ninja.  Remove the
phobos-src, druntime-src and dmd-testsuite-src source inputs, now included in
the official release.
(ldc-bootstrap-1.24): Other intermediate variant for bootstrapping purposes.
(ldc): Update to 1.27.1.
[make-flags]: New argument.
[configure-flags]: Adjust.
[phases]{fix-compiler-rt-library-discovery}: New phase.
{patch-paths-in-tests}: Likewise.
{disable-problematic-tests}: Likewise.  Compared to before, many GDB tests are
reinstated.
{set-cc-and-cxx-to-use-clang}: New phase.
{tests}: Override.
[inputs]: Update clang to version 11. Bootstrap from a stage 1 version of
itself.
* gnu/packages/patches/ldc-bootstrap-disable-tests.patch: Delete file.
* gnu/packages/patches/ldc-disable-phobos-tests.patch: Likewise.
* gnu/local.mk: De-register them.
			
			
This commit is contained in:
		
							parent
							
								
									2fc08ccde4
								
							
						
					
					
						commit
						5a1ddd146b
					
				
					 4 changed files with 324 additions and 310 deletions
				
			
		|  | @ -1350,8 +1350,6 @@ dist_patch_DATA =						\ | |||
|   %D%/packages/patches/lcalc-default-parameters-2.patch		\
 | ||||
|   %D%/packages/patches/lcalc-lcommon-h.patch    		\
 | ||||
|   %D%/packages/patches/lcalc-using-namespace-std.patch 		\
 | ||||
|   %D%/packages/patches/ldc-bootstrap-disable-tests.patch	\
 | ||||
|   %D%/packages/patches/ldc-disable-phobos-tests.patch		\
 | ||||
|   %D%/packages/patches/ldns-drill-examples.patch		\
 | ||||
|   %D%/packages/patches/leela-zero-gtest.patch			\
 | ||||
|   %D%/packages/patches/less-hurd-path-max.patch			\
 | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ | |||
| ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr> | ||||
| ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org> | ||||
| ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il> | ||||
| ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -27,6 +28,8 @@ | |||
|   #:use-module (guix packages) | ||||
|   #:use-module (guix download) | ||||
|   #:use-module (guix git-download) | ||||
|   #:use-module (guix utils) | ||||
|   #:use-module ((guix build utils) #:hide (delete which)) | ||||
|   #:use-module (guix build-system gnu) | ||||
|   #:use-module (guix build-system cmake) | ||||
|   #:use-module (gnu packages) | ||||
|  | @ -37,11 +40,13 @@ | |||
|   #:use-module (gnu packages gdb) | ||||
|   #:use-module (gnu packages libedit) | ||||
|   #:use-module (gnu packages llvm) | ||||
|   #:use-module (gnu packages ninja) | ||||
|   #:use-module (gnu packages pkg-config) | ||||
|   #:use-module (gnu packages python) | ||||
|   #:use-module (gnu packages python-xyz) | ||||
|   #:use-module (gnu packages textutils) | ||||
|   #:use-module (gnu packages xorg)) | ||||
|   #:use-module (gnu packages xorg) | ||||
|   #:use-module (srfi srfi-1)) | ||||
| 
 | ||||
| (define-public rdmd | ||||
|   (package | ||||
|  | @ -81,233 +86,338 @@ minimize the amount of work necessary.  Unlike make, rdmd tracks dependencies | |||
| and freshness without requiring additional information from the user.") | ||||
|     (license license:boost1.0))) | ||||
| 
 | ||||
| (define-public ldc-bootstrap | ||||
|     (package | ||||
|       (name "ldc") | ||||
|       (version "0.17.6") | ||||
|       (source | ||||
|        (origin | ||||
|          (method git-fetch) | ||||
|          (uri (git-reference | ||||
|                (url "https://github.com/ldc-developers/ldc") | ||||
|                (commit (string-append "v" version)))) | ||||
|          (file-name (git-file-name name version)) | ||||
|          (sha256 | ||||
|           (base32 "1q6hm4fkrcwys83x0p4kfg9xrc1b9g2qicqif2zy5z4nsfsb5vgs")))) | ||||
|       (build-system cmake-build-system) | ||||
|       (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux")) | ||||
|       (properties | ||||
|        ;; Some of the tests take a very long time on ARMv7.  See | ||||
|        ;; <https://lists.gnu.org/archive/html/guix-devel/2018-02/msg00312.html>. | ||||
|        `((max-silent-time . ,(* 3600 3)))) | ||||
|       (arguments | ||||
|        `(#:phases | ||||
|          (modify-phases %standard-phases | ||||
|            (add-after 'unpack 'unpack-submodule-sources | ||||
|              (lambda* (#:key inputs #:allow-other-keys) | ||||
|                (let ((unpack (lambda (input target) | ||||
|                                (let ((source (assoc-ref inputs input))) | ||||
|                                  ;; Git checkouts are directories as long as | ||||
|                                  ;; there are no patches; tarballs otherwise. | ||||
|                                  (if (file-is-directory? source) | ||||
|                                      (copy-recursively source target) | ||||
|                                      (with-directory-excursion target | ||||
|                                        (invoke "tar" "xvf" source | ||||
|                                                "--strip-components=1"))))))) | ||||
|                  (unpack "phobos-src" "runtime/phobos") | ||||
|                  (unpack "druntime-src" "runtime/druntime") | ||||
|                  (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite") | ||||
|                  #t))) | ||||
|            (add-after 'unpack-submodule-sources 'patch-phobos | ||||
|              (lambda* (#:key inputs #:allow-other-keys) | ||||
|                (substitute* "runtime/phobos/std/process.d" | ||||
|                  (("/bin/sh") (which "sh")) | ||||
|                  (("echo") (which "echo"))) | ||||
|                (substitute* "runtime/phobos/std/datetime.d" | ||||
|                  (("/usr/share/zoneinfo/") | ||||
|                   (search-input-directory inputs "share/zoneinfo")) | ||||
|                  (("tzName == \"[+]VERSION\"") | ||||
|                   "(tzName == \"+VERSION\" || std.algorithm.endsWith(tzName, \"/leapseconds\"))")) | ||||
|                (substitute* "tests/d2/dmd-testsuite/Makefile" | ||||
|                  (("/bin/bash") (which "bash"))) | ||||
|                ;; the following two tests fail on i686 | ||||
|                (for-each delete-file '("tests/ir/attributes.d" "tests/ir/align.d"))))))) | ||||
|       (inputs | ||||
|        `(("libconfig" ,libconfig) | ||||
|          ("libedit" ,libedit) | ||||
|          ("tzdata" ,tzdata) | ||||
|          ("zlib" ,zlib))) | ||||
|       (native-inputs | ||||
|        `(("llvm" ,llvm-6) | ||||
|          ("clang" ,clang-6) | ||||
|          ("python-lit" ,python-lit) | ||||
|          ("python-wrapper" ,python-wrapper) | ||||
|          ("unzip" ,unzip) | ||||
|          ("phobos-src" | ||||
|           ,(origin | ||||
|              (method git-fetch) | ||||
|              (uri (git-reference | ||||
|                    (url "https://github.com/ldc-developers/phobos") | ||||
|                    (commit (string-append "ldc-v" version)))) | ||||
|              (file-name (git-file-name "phobos" version)) | ||||
|              (sha256 | ||||
|               (base32 "15jzs38wanks2jfp2izzl7zqrp4c8ai54ppsgm8ws86p3sbbkmj8")) | ||||
|              (patches (search-patches "ldc-bootstrap-disable-tests.patch")))) | ||||
|          ("druntime-src" | ||||
|           ,(origin | ||||
|              (method git-fetch) | ||||
|              (uri (git-reference | ||||
|                    (url "https://github.com/ldc-developers/druntime") | ||||
|                    (commit (string-append "ldc-v" version)))) | ||||
|              (file-name (git-file-name "druntime" version)) | ||||
|              (sha256 | ||||
|               (base32 "00wr2kiggwnd8h7by51fhj1xc65hv1ysip5gbgdbkfar58p2d0bb")))) | ||||
|          ("dmd-testsuite-src" | ||||
|           ,(origin | ||||
|              (method git-fetch) | ||||
|              (uri (git-reference | ||||
|                    (url "https://github.com/ldc-developers/dmd-testsuite") | ||||
|                    (commit (string-append "ldc-v" version)))) | ||||
|              (file-name (git-file-name "dmd-testsuite" version)) | ||||
|              (sha256 | ||||
|               (base32 "1d1c0979wbippldrkjf7szyj4n87hxz8dwqg1r5b3aai37g9kcky")))))) | ||||
|       (home-page "http://wiki.dlang.org/LDC") | ||||
|       (synopsis "LLVM-based compiler for the D programming language") | ||||
|       (description | ||||
|        "LDC is an LLVM compiler for the D programming language.  It is based on | ||||
| ;;; The 0.17.6 version is the last release to support being bootstrapped | ||||
| ;;; without a D compiler (requiring only a C++ compiler). | ||||
| ;;; TODO: Bootstrap ldc from GDC (the D frontend for GCC). | ||||
| (define ldc-bootstrap-0.17 | ||||
|   (package | ||||
|     (name "ldc") | ||||
|     (version "0.17.6") | ||||
|     (source | ||||
|      (origin | ||||
|        (method git-fetch) | ||||
|        (uri (git-reference | ||||
|              (url "https://github.com/ldc-developers/ldc") | ||||
|              (commit (string-append "v" version)))) | ||||
|        (file-name (git-file-name name version)) | ||||
|        (sha256 | ||||
|         (base32 "1q6hm4fkrcwys83x0p4kfg9xrc1b9g2qicqif2zy5z4nsfsb5vgs")))) | ||||
|     (build-system cmake-build-system) | ||||
|     (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux")) | ||||
|     (properties | ||||
|      ;; Some of the tests take a very long time on ARMv7.  See | ||||
|      ;; <https://lists.gnu.org/archive/html/guix-devel/2018-02/msg00312.html>. | ||||
|      `((max-silent-time . ,(* 3600 3)))) | ||||
|     (arguments | ||||
|      `(#:tests? #f               ;requires obsolete python-lit test dependency | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'unpack 'unpack-submodule-sources | ||||
|            (lambda* (#:key inputs #:allow-other-keys) | ||||
|              (let ((unpack (lambda (input target) | ||||
|                              (let ((source (assoc-ref inputs input))) | ||||
|                                ;; Git checkouts are directories as long as | ||||
|                                ;; there are no patches; tarballs otherwise. | ||||
|                                (if (file-is-directory? source) | ||||
|                                    (copy-recursively source target) | ||||
|                                    (with-directory-excursion target | ||||
|                                      (invoke "tar" "xvf" source | ||||
|                                              "--strip-components=1"))))))) | ||||
|                (unpack "phobos-src" "runtime/phobos") | ||||
|                (unpack "druntime-src" "runtime/druntime") | ||||
|                (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")))) | ||||
|          (add-after 'unpack-submodule-sources 'patch-paths | ||||
|            (lambda* (#:key inputs #:allow-other-keys) | ||||
|              (substitute* "runtime/phobos/std/process.d" | ||||
|                (("/bin/sh") (which "sh")) | ||||
|                (("echo") (which "echo"))) | ||||
|              (substitute* "runtime/phobos/std/datetime.d" | ||||
|                (("/usr/share/zoneinfo/") | ||||
|                 (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")) | ||||
|                (("tzName == \"[+]VERSION\"") | ||||
|                 "(tzName == \"+VERSION\" || \ | ||||
| std.algorithm.endsWith(tzName, \"/leapseconds\"))"))))))) | ||||
|     (inputs | ||||
|      `(("libconfig" ,libconfig) | ||||
|        ("libedit" ,libedit) | ||||
|        ("tzdata" ,tzdata) | ||||
|        ("zlib" ,zlib))) | ||||
|     (native-inputs | ||||
|      `(("llvm" ,llvm-6) | ||||
|        ("python-wrapper" ,python-wrapper) | ||||
|        ("unzip" ,unzip) | ||||
|        ("phobos-src" | ||||
|         ,(origin | ||||
|            (method git-fetch) | ||||
|            (uri (git-reference | ||||
|                  (url "https://github.com/ldc-developers/phobos") | ||||
|                  (commit (string-append "ldc-v" version)))) | ||||
|            (file-name (git-file-name "phobos" version)) | ||||
|            (sha256 | ||||
|             (base32 "15jzs38wanks2jfp2izzl7zqrp4c8ai54ppsgm8ws86p3sbbkmj8")))) | ||||
|        ("druntime-src" | ||||
|         ,(origin | ||||
|            (method git-fetch) | ||||
|            (uri (git-reference | ||||
|                  (url "https://github.com/ldc-developers/druntime") | ||||
|                  (commit (string-append "ldc-v" version)))) | ||||
|            (file-name (git-file-name "druntime" version)) | ||||
|            (sha256 | ||||
|             (base32 "00wr2kiggwnd8h7by51fhj1xc65hv1ysip5gbgdbkfar58p2d0bb")))) | ||||
|        ("dmd-testsuite-src" | ||||
|         ,(origin | ||||
|            (method git-fetch) | ||||
|            (uri (git-reference | ||||
|                  (url "https://github.com/ldc-developers/dmd-testsuite") | ||||
|                  (commit (string-append "ldc-v" version)))) | ||||
|            (file-name (git-file-name "dmd-testsuite" version)) | ||||
|            (sha256 | ||||
|             (base32 "1d1c0979wbippldrkjf7szyj4n87hxz8dwqg1r5b3aai37g9kcky")))))) | ||||
|     (home-page "http://wiki.dlang.org/LDC") | ||||
|     (synopsis "LLVM-based compiler for the D programming language") | ||||
|     (description | ||||
|      "LDC is an LLVM compiler for the D programming language.  It is based on | ||||
| the latest DMD compiler that was written in C and is used for | ||||
| bootstrapping more recent compilers written in D.") | ||||
|       ;; Most of the code is released under BSD-3, except for code originally | ||||
|       ;; written for GDC, which is released under GPLv2+, and the DMD frontend, | ||||
|       ;; which is released under the "Boost Software License version 1.0". | ||||
|       (license (list license:bsd-3 | ||||
|                      license:gpl2+ | ||||
|                      license:boost1.0)))) | ||||
|     ;; Most of the code is released under BSD-3, except for code originally | ||||
|     ;; written for GDC, which is released under GPLv2+, and the DMD frontend, | ||||
|     ;; which is released under the "Boost Software License version 1.0". | ||||
|     (license (list license:bsd-3 | ||||
|                    license:gpl2+ | ||||
|                    license:boost1.0)))) | ||||
| 
 | ||||
| ;;; This is the last version that supports being built with 32 bit machines | ||||
| ;;; from 0.17. | ||||
| (define ldc-bootstrap-1.12 | ||||
|   (package | ||||
|     (inherit ldc-bootstrap-0.17) | ||||
|     (version "1.12.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        ;; The official release include the matching source code releases of | ||||
|        ;; phobos, druntime and dmd-testsuite. | ||||
|        (uri (string-append "https://github.com/ldc-developers/ldc/releases" | ||||
|                            "/download/v" version "/ldc-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 "1fdma1w8j37wkr0pqdar11slkk36qymamxnk6d9k8ybhjmxaaawm")))) | ||||
|     (arguments | ||||
|      (substitute-keyword-arguments (package-arguments ldc-bootstrap-0.17) | ||||
|        ((#:build-type _ #f) "Release") | ||||
|        ((#:configure-flags _ #f) | ||||
|         `(list "-GNinja")) | ||||
|        ((#:make-flags _ #f)             ;used as build targets | ||||
|         `(list "all")) | ||||
|        ((#:tests? _) #f) | ||||
|        ((#:phases phases) | ||||
|         `(modify-phases ,phases | ||||
|            (delete 'unpack-submodule-sources) | ||||
|            (replace 'patch-paths | ||||
|              (lambda* (#:key inputs #:allow-other-keys) | ||||
|                (substitute* '("runtime/phobos/std/process.d") | ||||
|                  (("/bin/sh") (which "sh")) | ||||
|                  (("echo") (which "echo"))))) | ||||
|            (replace 'build | ||||
|              ;; Building with Make would result in "make: *** [Makefile:166: | ||||
|              ;; all] Error 2". | ||||
|              (lambda* (#:key make-flags parallel-tests? #:allow-other-keys) | ||||
|                (let ((job-count (number->string (or (and parallel-tests? | ||||
|                                                          (parallel-job-count)) | ||||
|                                                     1)))) | ||||
|                  (apply invoke "cmake" "--build" "." "-j" job-count | ||||
|                         "--target" make-flags)))) | ||||
|            (replace 'install | ||||
|              (lambda _ | ||||
|                (invoke "cmake" "--install" "."))))))) | ||||
|     (native-inputs | ||||
|      ;; Importing (gnu packages commencement) would introduce a cycle. | ||||
|      `(("ld-gold-wrapper" ,(module-ref (resolve-interface | ||||
|                                         '(gnu packages commencement)) | ||||
|                                        'ld-gold-wrapper)) | ||||
|        ("llvm" ,llvm-6) | ||||
|        ("ldc" ,ldc-bootstrap-0.17) | ||||
|        ("ninja" ,ninja) | ||||
|        ("python-wrapper" ,python-wrapper) | ||||
|        ("unzip" ,unzip))))) | ||||
| 
 | ||||
| ;;; For 32 bits systems, 1.12 cannot build 1.27 directly, so we need another | ||||
| ;;; hop. | ||||
| (define ldc-bootstrap-1.24 | ||||
|   (package | ||||
|     (inherit ldc-bootstrap-1.12) | ||||
|     (version "1.24.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://github.com/ldc-developers/ldc/releases" | ||||
|                            "/download/v" version "/ldc-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 "0g5svf55i0kq55q49awmwqj9qi1n907cyrn1vjdjgs8nx6nn35gx")))) | ||||
|     (native-inputs | ||||
|      (fold alist-replace | ||||
|            (package-native-inputs ldc-bootstrap-1.12) | ||||
|            '("ldc" "llvm") | ||||
|            `((,ldc-bootstrap-1.12) (,llvm-11)))))) | ||||
| 
 | ||||
| (define ldc-bootstrap-1.27 | ||||
|   (package | ||||
|     (inherit ldc-bootstrap-1.24) | ||||
|     (version "1.27.1") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://github.com/ldc-developers/ldc/releases" | ||||
|                            "/download/v" version "/ldc-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 "1775001ba6n8w46ln530kb5r66vs935ingnppgddq8wqnc0gbj4k")))) | ||||
|     (native-inputs | ||||
|      (fold alist-replace | ||||
|            (package-native-inputs ldc-bootstrap-1.24) | ||||
|            '("ldc" "llvm") | ||||
|            `((,ldc-bootstrap-1.24) (,llvm-11)))))) | ||||
| 
 | ||||
| (define-public ldc | ||||
|   ;; Phobos, druntime and dmd-testsuite library dependencies do | ||||
|   ;; not always have a newer release than the compiler, hence we | ||||
|   ;; retain this variable. | ||||
|   (let ((older-version "1.10.0")) ;; retain this because sometimes the libs are older | ||||
|     (package | ||||
|       (inherit ldc-bootstrap) | ||||
|       (name "ldc") | ||||
|       (version "1.10.0") | ||||
|       (source | ||||
|        (origin | ||||
|          (method git-fetch) | ||||
|          (uri (git-reference | ||||
|                (url "https://github.com/ldc-developers/ldc") | ||||
|                (commit (string-append "v" version)))) | ||||
|          (file-name (git-file-name name version)) | ||||
|          (sha256 | ||||
|           (base32 "0qcb2rn01wql7y8qp31blbv3hwmnh3zjgzi2n7k168cxr6rrdhlp")))) | ||||
|       (arguments | ||||
|        `(#:phases | ||||
|          (modify-phases %standard-phases | ||||
|            (add-after 'unpack 'unpack-submodule-sources | ||||
|   (package | ||||
|     (inherit ldc-bootstrap-1.27) | ||||
|     (arguments | ||||
|      (substitute-keyword-arguments (package-arguments ldc-bootstrap-1.27) | ||||
|        ((#:make-flags _ #f) | ||||
|         '(list "all" | ||||
|                ;; Also build the test runner binaries. | ||||
|                "ldc2-unittest" "all-test-runners")) | ||||
|        ((#:configure-flags flags) | ||||
|         `(,@flags "-DBUILD_SHARED_LIBS=ON" | ||||
|                   "-DLDC_LINK_MANUALLY=OFF")) | ||||
|        ((#:tests? _) #t) | ||||
|        ((#:phases phases) | ||||
|         `(modify-phases ,phases | ||||
|            (add-after 'unpack 'fix-compiler-rt-library-discovery | ||||
|              (lambda* (#:key inputs #:allow-other-keys) | ||||
|                (let ((unpack (lambda (input target) | ||||
|                                (let ((source (assoc-ref inputs input))) | ||||
|                                  ;; Git checkouts are directories as long as | ||||
|                                  ;; there are no patches; tarballs otherwise. | ||||
|                                  (if (file-is-directory? source) | ||||
|                                      (copy-recursively source target) | ||||
|                                      (with-directory-excursion target | ||||
|                                        (invoke "tar" "xvf" source | ||||
|                                                "--strip-components=1"))))))) | ||||
|                  (unpack "phobos-src" "runtime/phobos") | ||||
|                  (unpack "druntime-src" "runtime/druntime") | ||||
|                  (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite") | ||||
|                  #t))) | ||||
|            (add-after 'unpack-submodule-sources 'patch-phobos | ||||
|              (lambda* (#:key inputs #:allow-other-keys) | ||||
|                (substitute* '("runtime/phobos/std/process.d" | ||||
|                               "tests/linking/linker_switches.d") | ||||
|                  (("/bin/sh") (which "sh")) | ||||
|                  (("echo") (which "echo"))) | ||||
|                (let ((clang-runtime (assoc-ref inputs "clang-runtime")) | ||||
|                      (system ,(or (%current-target-system) | ||||
|                                   (%current-system)))) | ||||
|                  (define (gnu-triplet->clang-arch system) | ||||
|                    (letrec-syntax | ||||
|                        ((matches (syntax-rules (=>) | ||||
|                                    ((_ (system-prefix => target) rest ...) | ||||
|                                     (if (string-prefix? system-prefix system) | ||||
|                                         target | ||||
|                                         (matches rest ...))) | ||||
|                                    ((_) | ||||
|                                     (error "Clang target for system is unknown" | ||||
|                                            system))))) | ||||
|                      (matches ("x86_64"      => "x86_64") | ||||
|                               ("i686"        => "i386") | ||||
|                               ("armhf"       => "armhf")))) | ||||
|                  ;; Coax LLVM into agreeing with Clang about system target | ||||
|                  ;; naming. | ||||
|                  (substitute* "driver/linker-gcc.cpp" | ||||
|                    (("triple.getArchName\\(\\)") | ||||
|                     (format #f "~s" (gnu-triplet->clang-arch system)))) | ||||
|                  ;; Augment the configuration of the ldc2 binaries so they can | ||||
|                  ;; find the compiler-rt libraries they need to be linked with | ||||
|                  ;; for the tests. | ||||
|                  (substitute* (find-files "." "^ldc2.*\\.conf\\.in$") | ||||
|                    ((".*lib-dirs = \\[\n" all) | ||||
|                     (string-append all | ||||
|                                    "        \"" clang-runtime | ||||
|                                    "/lib/linux\",\n")))))) | ||||
|            (add-after 'unpack 'patch-paths-in-tests | ||||
|              (lambda _ | ||||
|                (substitute* "tests/d2/dmd-testsuite/Makefile" | ||||
|                  (("/bin/bash") (which "bash"))) | ||||
|                ;; disable unittests in the following files. We are discussing with | ||||
|                ;; upstream | ||||
|                (substitute* "tests/linking/linker_switches.d" | ||||
|                  (("echo") (which "echo"))) | ||||
|                (substitute* "tests/d2/dmd-testsuite/dshell/test6952.d" | ||||
|                  (("/usr/bin/env bash") | ||||
|                   (which "bash"))))) | ||||
|            (add-after 'unpack 'disable-problematic-tests | ||||
|              (lambda* (#:key inputs #:allow-other-keys) | ||||
|                ;; Disable unittests in the following files. | ||||
|                (substitute* '("runtime/phobos/std/net/curl.d" | ||||
|                               "runtime/phobos/std/datetime/systime.d" | ||||
|                               "runtime/phobos/std/datetime/timezone.d" | ||||
|                               ) | ||||
|                               "runtime/phobos/std/datetime/timezone.d") | ||||
|                  (("version(unittest)") "version(skipunittest)") | ||||
|                  ((" unittest") " version(skipunittest) unittest")) | ||||
|                ;; the following tests require a more recent LLVM | ||||
|                (delete-file "tests/compilable/ctfe_math.d") | ||||
|                (delete-file "tests/debuginfo/nested_gdb.d") | ||||
|                (delete-file "tests/debuginfo/classtypes_gdb.d") | ||||
|                ;; for the following tests ptrace fails with EPERM | ||||
|                ;; (see <https://issues.guix.gnu.org/48541>): | ||||
|                (delete-file "tests/d2/dmd-testsuite/runnable/b18504.d") | ||||
|                (delete-file "tests/d2/dmd-testsuite/runnable/gdb14225.d") | ||||
|                (delete-file "tests/d2/dmd-testsuite/runnable/gdb14276.d") | ||||
|                (delete-file "tests/d2/dmd-testsuite/runnable/gdb14313.d") | ||||
|                (delete-file "tests/d2/dmd-testsuite/runnable/gdb14330.d") | ||||
|                (delete-file "tests/d2/dmd-testsuite/runnable/gdb1.d") | ||||
|                (delete-file "tests/d2/dmd-testsuite/runnable/gdb4149.d") | ||||
|                (delete-file "tests/d2/dmd-testsuite/runnable/gdb4181.d") | ||||
|                (delete-file "tests/d2/dmd-testsuite/runnable/gdb15729.sh") | ||||
|                ;; the following tests plugins we don't have. | ||||
|                ;; The following tests plugins we don't have. | ||||
|                (delete-file "tests/plugins/addFuncEntryCall/testPlugin.d") | ||||
|                ;; the following tests requires AVX instruction set in the CPU. | ||||
|                (substitute* "tests/d2/dmd-testsuite/runnable/test_cdvecfill.d" | ||||
|                ;; The following tests requires AVX instruction set in the CPU. | ||||
|                (substitute* "tests/d2/dmd-testsuite/runnable/cdvecfill.sh" | ||||
|                  (("^// DISABLED: ") "^// DISABLED: linux64 ")) | ||||
|                #t)) | ||||
|                ;; This unit test requires networking, fails with | ||||
|                ;; "core.exception.RangeError@std/socket.d(778): Range | ||||
|                ;; violation". | ||||
|                (substitute* "runtime/phobos/std/socket.d" | ||||
|                  (("assert\\(ih.addrList\\[0\\] == 0x7F_00_00_01\\);.*") | ||||
|                   "")) | ||||
|                ;; The GDB tests suite fails; there are a few bug reports about | ||||
|                ;; it upstream. | ||||
|                (for-each delete-file (find-files "tests" "gdb.*\\.(d|sh)$")) | ||||
|                (delete-file "tests/d2/dmd-testsuite/runnable/debug_info.d") | ||||
|                (delete-file "tests/d2/dmd-testsuite/runnable/b18504.d") | ||||
|                (substitute* "runtime/druntime/test/exceptions/Makefile" | ||||
|                  ((".*TESTS\\+=rt_trap_exceptions_drt_gdb.*") | ||||
|                   "")) | ||||
|                ;; The following tests fail on the supported 32 bit systems, | ||||
|                ;; which are not tested upstream. | ||||
|                (with-directory-excursion "tests" | ||||
|                  (let ((system ,(or (%current-target-system) | ||||
|                                     (%current-system)))) | ||||
|                    (when (or (string-prefix? "armhf" system ) | ||||
|                              (string-prefix? "i686" system )) | ||||
|                      (for-each delete-file | ||||
|                                '("PGO/profile_rt_calls.d" | ||||
|                                  "codegen/mangling.d" | ||||
|                                  "debuginfo/print_gdb.d" | ||||
|                                  "dynamiccompile/bind.d" | ||||
|                                  "dynamiccompile/bind_bool.d" | ||||
|                                  "dynamiccompile/bind_func_opt.d" | ||||
|                                  "dynamiccompile/bind_nested_opt.d" | ||||
|                                  "dynamiccompile/bind_opt.d" | ||||
|                                  "dynamiccompile/compiler_context.d" | ||||
|                                  "dynamiccompile/compiler_context_parallel.d" | ||||
|                                  "instrument/xray_check_pipeline.d" | ||||
|                                  "instrument/xray_link.d" | ||||
|                                  "instrument/xray_simple_execution.d" | ||||
|                                  "sanitizers/msan_noerror.d" | ||||
|                                  "sanitizers/msan_uninitialized.d" | ||||
|                                  "d2/dmd-testsuite/runnable_cxx/cppa.d"))))))) | ||||
|            (add-before 'configure 'set-cc-and-cxx-to-use-clang | ||||
|              ;; The tests require to be built with Clang; build everything | ||||
|              ;; with it, for simplicity. | ||||
|              (lambda _ | ||||
|                (setenv "CC" (which "clang")) | ||||
|                (setenv "CXX" (which "clang++")))) | ||||
|            (replace 'check | ||||
|              (lambda* (#:key inputs outputs #:allow-other-keys) | ||||
|                ;; some tests call into gdb binary which needs SHELL and CC set | ||||
|                (setenv "SHELL" (which "sh")) | ||||
|                (setenv "CC" (search-input-file inputs "/bin/gcc")) | ||||
|                (invoke "make" "test" "-j" (number->string (parallel-job-count)))))))) | ||||
|       (native-inputs | ||||
|        `(("llvm" ,llvm-6) | ||||
|          ("clang" ,clang-6) | ||||
|          ("ldc" ,ldc-bootstrap) | ||||
|          ("python-lit" ,python-lit) | ||||
|          ("python-wrapper" ,python-wrapper) | ||||
|          ("unzip" ,unzip) | ||||
|          ("gdb" ,gdb) | ||||
|          ("phobos-src" | ||||
|           ,(origin | ||||
|              (method git-fetch) | ||||
|              (uri (git-reference | ||||
|                    (url "https://github.com/ldc-developers/phobos") | ||||
|                    (commit (string-append "ldc-v" older-version)))) | ||||
|              (file-name (git-file-name "phobos" older-version)) | ||||
|              (sha256 | ||||
|               (base32 "1gmlwnjdcf6s5aahadxsif9l5nyaj0rrn379g6fmhcvdk64kf509")) | ||||
|              ;; This patch deactivates some tests that depend on network access | ||||
|              ;; to pass.  It also deactivates some tests that have some reliance | ||||
|              ;; on timezone. | ||||
|              ;; | ||||
|              ;; For the network tests, there's an effort to get a version flag | ||||
|              ;; added to deactivate these tests for distribution packagers | ||||
|              ;; that is being pursued at | ||||
|              ;; <https://forum.dlang.org/post/zmdbdgnzrxyvtpqafvyg@forum.dlang.org>. | ||||
|              ;; It also deactivates a test that requires /root | ||||
|              (patches (search-patches "ldc-disable-phobos-tests.patch")))) | ||||
|          ("druntime-src" | ||||
|           ,(origin | ||||
|              (method git-fetch) | ||||
|              (uri (git-reference | ||||
|                    (url "https://github.com/ldc-developers/druntime") | ||||
|                    (commit (string-append "ldc-v" older-version)))) | ||||
|              (file-name (git-file-name "druntime" older-version)) | ||||
|              (sha256 | ||||
|               (base32 "0a3yyjcnpvm5fbdczf76fx08kl154w17w06hlxf0j3p1p4jc85aj")))) | ||||
|          ("dmd-testsuite-src" | ||||
|           ,(origin | ||||
|              (method git-fetch) | ||||
|              (uri (git-reference | ||||
|                    (url "https://github.com/ldc-developers/dmd-testsuite") | ||||
|                    (commit (string-append "ldc-v" older-version)))) | ||||
|              (file-name (git-file-name "dmd-testsuite" older-version)) | ||||
|              (sha256 | ||||
|               (base32 "0mm3rliki1nqiqfaha7ssvm156aa398vpvf4v6895m7nn1mz7rss"))))))))) | ||||
|              (lambda* (#:key tests? parallel-tests? #:allow-other-keys) | ||||
|                (when tests? | ||||
|                  (let ((job-count (number->string | ||||
|                                    (or (and parallel-tests? | ||||
|                                             (parallel-job-count)) | ||||
|                                        1)))) | ||||
|                    ;; The test targets are tested separately to provide | ||||
|                    ;; finer-grained diagnostics (see: | ||||
|                    ;; https://raw.githubusercontent.com/ldc-developers/ | ||||
|                    ;; ldc/master/.azure-pipelines/3-posix-test.yml) | ||||
|                    (display "running the ldc2 unit tests...\n") | ||||
|                    (invoke "ctest" "--output-on-failure" "-j" job-count | ||||
|                            "-R" "ldc2-unittest") | ||||
|                    (display "running the lit test suite...\n") | ||||
|                    (invoke "ctest" "--output-on-failure" "-j" job-count | ||||
|                            "-R" "lit-tests") | ||||
|                    (display "running the dmd test suite...\n") | ||||
|                    (invoke "ctest" "--output-on-failure" "-j" job-count | ||||
|                            "-R" "dmd-testsuite") | ||||
|                    (display "running the defaultlib unit tests and druntime \ | ||||
| integration tests...\n") | ||||
|                    (invoke "ctest" "--output-on-failure" "-j" job-count | ||||
|                            "-E" "dmd-testsuite|lit-tests|ldc2-unittest"))))))))) | ||||
|     (native-inputs | ||||
|      (append (delete "llvm" | ||||
|                      (alist-replace "ldc" (list ldc-bootstrap-1.27) | ||||
|                                     (package-native-inputs ldc-bootstrap-1.27))) | ||||
|          `(("clang" ,clang-11)          ;propagates llvm and clang-runtime | ||||
|            ("python-lit" ,python-lit)))))) | ||||
| 
 | ||||
| (define-public dub | ||||
|   (package | ||||
|  |  | |||
|  | @ -1,72 +0,0 @@ | |||
| This patch fixes a failing unit test by feeding buildNormalizedPath to the | ||||
| tzdata properly.  Three other tests are disabled, one assumes /root and the | ||||
| two others use networking.  Not bad out of almost 700 tests! | ||||
| 
 | ||||
| by Pjotr Prins <pjotr.guix@thebird.nl> | ||||
| 
 | ||||
| --- a/std/datetime.d.orig      2016-11-24 01:13:52.584495545 +0100
 | ||||
| +++ b/std/datetime.d   2016-11-24 01:17:09.655306728 +0100
 | ||||
| @@ -28081,22 +28081,24 @@
 | ||||
|          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))); | ||||
| 
 | ||||
|          version(Android) | ||||
|          { | ||||
| +            name = strip(name);
 | ||||
|              auto tzfileOffset = name in tzdataIndex(tzDatabaseDir); | ||||
|              enforce(tzfileOffset, new DateTimeException(format("The time zone %s is not listed.", name))); | ||||
|              string tzFilename = separate_index ? "zoneinfo.dat" : "tzdata"; | ||||
|              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.exists(), new DateTimeException(format("File %s does not exist in %s.", file, tzDatabaseDir)));
 | ||||
|          enforce(file.isFile, new DateTimeException(format("%s is not a file.", file))); | ||||
| 
 | ||||
|          auto tzFile = File(file); | ||||
| diff --git a/std/path.d b/std/path.d
 | ||||
| index 254d8f0..b0fc04d 100644
 | ||||
| --- a/std/path.d
 | ||||
| +++ b/std/path.d
 | ||||
| @@ -3080,8 +3080,11 @@ unittest
 | ||||
|          } | ||||
|          else | ||||
|          { | ||||
| +            pragma(msg, "test disabled on GNU Guix");
 | ||||
| +/*
 | ||||
|              assert(expandTilde("~root") == "/root", expandTilde("~root")); | ||||
|              assert(expandTilde("~root/") == "/root/", expandTilde("~root/")); | ||||
| +*/
 | ||||
|          } | ||||
|          assert(expandTilde("~Idontexist/hey") == "~Idontexist/hey"); | ||||
|      } | ||||
| diff --git a/std/socket.d b/std/socket.d
 | ||||
| index b85d1c9..7fbf346 100644
 | ||||
| --- a/std/socket.d
 | ||||
| +++ b/std/socket.d
 | ||||
| @@ -859,6 +862,8 @@ class InternetHost
 | ||||
| 
 | ||||
|  unittest | ||||
|  { | ||||
| +    pragma(msg, "test disabled on GNU Guix");
 | ||||
| +    /*
 | ||||
|      InternetHost ih = new InternetHost; | ||||
| 
 | ||||
|      ih.getHostByAddr(0x7F_00_00_01); | ||||
| @@ -889,6 +894,7 @@ unittest
 | ||||
|          //      writefln("aliases[%d] = %s", i, s); | ||||
|          // } | ||||
|      }); | ||||
| +    */
 | ||||
|  } | ||||
|  | @ -1,22 +0,0 @@ | |||
| diff --git a/std/socket.d b/std/socket.d
 | ||||
| index 111cd17..6d23da9 100644
 | ||||
| --- a/std/socket.d
 | ||||
| +++ b/std/socket.d
 | ||||
| @@ -448,7 +448,7 @@ class Protocol
 | ||||
|  // Skip this test on Android because getprotobyname/number are | ||||
|  // unimplemented in bionic. | ||||
|  version(CRuntime_Bionic) {} else | ||||
| -@safe unittest
 | ||||
| +@safe version(hasNetwork) unittest
 | ||||
|  { | ||||
|      // import std.stdio : writefln; | ||||
|      softUnittest({ | ||||
| @@ -770,7 +770,7 @@ class InternetHost
 | ||||
|  } | ||||
|   | ||||
|  /// | ||||
| -@safe unittest
 | ||||
| +@safe version(hasNetwork) unittest
 | ||||
|  { | ||||
|      InternetHost ih = new InternetHost; | ||||
|   | ||||
		Reference in a new issue