me
/
guix
Archived
1
0
Fork 0

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
Maxim Cournoyer 2021-09-14 20:45:41 -04:00
parent 2fc08ccde4
commit 5a1ddd146b
No known key found for this signature in database
GPG Key ID: 1260E46482E63562
4 changed files with 324 additions and 310 deletions

View File

@ -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 \

View File

@ -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

View File

@ -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);
// }
});
+ */
}

View File

@ -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;