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.master
parent
2fc08ccde4
commit
5a1ddd146b
|
@ -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 New Issue