[PATCHSET] Various D fixes

  • Done
  • quality assurance status badge
Details
3 participants
  • Maxime Devos
  • Tobias Geerinckx-Rice
  • (
Owner
unassigned
Submitted by
(
Severity
normal
(
(
[PATCH 2/2] gnu: packages: Update dub to v1.23.0.
(address . 55999@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220615185350.19863-2-paren@disroot.org
* gnu/packages/dlang.scm (dub): Update to version 1.23.0.

This also fixes Dub's build, which was previously failing because of how
ancient it was.
---
gnu/packages/dlang.scm | 40 ++++++++++++++++++++++------------------
1 file changed, 22 insertions(+), 18 deletions(-)

Toggle diff (63 lines)
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index e0ded5c3c8..2341f1769e 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -436,7 +436,7 @@ (define (gnu-triplet->clang-arch system)
(define-public dub
(package
(name "dub")
- (version "1.7.2")
+ (version "1.23.0")
(source
(origin
(method git-fetch)
@@ -445,26 +445,30 @@ (define-public dub
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "073ibvgm1gphcqs1yjrav9ryp677nh3b194nxmvicwgvdc0sb6w9"))))
+ (base32 "06a4whsl1m600k096nwif83n7za3vr7pj1xwapncy5fcad1gmady"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; it would have tested itself by installing some packages (vibe etc)
- #:phases
- (modify-phases %standard-phases
- (delete 'configure) ; no configure script
- (replace 'build
- (lambda _
- (invoke "./build.sh")))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin")))
- (install-file "bin/dub" bin)
- #t))))))
- (inputs
- (list curl))
+ (list #:tests? #f ; it would have tested itself by installing some packages (vibe etc)
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure) ; no configure script
+ (replace 'build
+ (lambda* (#:key native-inputs #:allow-other-keys)
+ (setenv "CC" #$(cc-for-target))
+ (setenv "LD" #$(ld-for-target))
+ (invoke "./build.d")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (install-file "bin/dub" bin)))))))
+ (inputs (list curl))
(native-inputs
- (list ldc))
+ (list ldc
+ d-tools
+ (module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'ld-gold-wrapper)))
(home-page "https://code.dlang.org/getting_started")
(synopsis "Package and build manager for D projects")
(description
--
2.36.1
(
[PATCH 1/2] gnu: packages: Replace rdmd with d-tools.
(address . 55999@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220615185350.19863-1-paren@disroot.org
* gnu/packages/dlang.scm (rdmd): Remove variable.
* gnu/packages/dlang.scm (d-tools): New variable.

This fixes the build of rdmd and updates it to the latest version, along
with running rdmd_test.d, building dustmite along with rdmd, and
renaming the package to d-tools to reflect that change.
---
gnu/packages/dlang.scm | 76 +++++++++++++++++++++++++-----------------
1 file changed, 45 insertions(+), 31 deletions(-)

Toggle diff (108 lines)
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index 403fcbbd6b..e0ded5c3c8 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -27,6 +28,7 @@ (define-module (gnu packages dlang)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module ((guix build utils) #:hide (delete which))
@@ -48,42 +50,54 @@ (define-module (gnu packages dlang)
#:use-module (gnu packages xorg)
#:use-module (srfi srfi-1))
-(define-public rdmd
+(define-public d-tools
(package
- (name "rdmd")
- (version "2.077.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/dlang/tools/archive/v" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "0c8w373rv6iz3xfid94w40ncv2lr2ncxi662qsr4lda4aghczmq7"))))
+ (name "d-tools")
+ (version "2.100.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dlang/tools")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1jbn0hyskv4ykcckw0iganpyrm0bq2lggswspw21r4hgnxkmjbyw"))))
(build-system gnu-build-system)
(arguments
- '(#:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (delete 'check) ; There is no Makefile, so there's no 'make check'.
- (replace
- 'build
- (lambda _
- (invoke "ldc2" "rdmd.d")))
- (replace
- 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
- (install-file "rdmd" bin)))))))
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (mkdir-p "bin")
+ (setenv "CC" #$(cc-for-target))
+ (setenv "LD" #$(ld-for-target))
+ (invoke "ldc2" "rdmd.d" "--of" "bin/rdmd")
+ (apply invoke "ldc2" "--of=bin/dustmite"
+ (find-files "DustMite" ".*\\.d"))))
+ (replace 'check
+ (lambda _
+ (invoke "bin/rdmd" "rdmd_test.d" "bin/rdmd"
+ "--rdmd-default-compiler" "ldmd2")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (man (string-append out "/man")))
+ (copy-recursively "bin" bin)
+ (copy-recursively "man" man)))))))
(native-inputs
- (list ldc))
- (home-page "https://github.com/D-Programming-Language/tools/")
- (synopsis "Specialized equivalent to 'make' for the D language")
+ (list ldc
+ (module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'ld-gold-wrapper)))
+ (home-page "https://github.com/dlang/tools")
+ (synopsis "Useful D-related tools")
(description
- "rdmd is a companion to the dmd compiler that simplifies the typical
-edit-compile-link-run or edit-make-run cycle to a rapid edit-run cycle. Like
-make and other tools, rdmd uses the relative dates of the files involved to
-minimize the amount of work necessary. Unlike make, rdmd tracks dependencies
-and freshness without requiring additional information from the user.")
+ "@code{d-tools} provides two useful tools for the D language: @code{rdmd},
+which runs D source files as scripts, and @code{dustmite}, which reduces D code
+to a minimal test case.")
(license license:boost1.0)))
;;; The 0.17.6 version is the last release to support being bootstrapped
--
2.36.1
M
M
Maxime Devos wrote on 17 Jun 2022 08:16
2fe0a4ab659765d5d0411e6c864150becb688506.camel@telenet.be
( via Guix-patches via schreef op wo 15-06-2022 om 19:53 [+0100]:
Toggle quote (5 lines)
> +               (replace 'check
> +                 (lambda _
> +                   (invoke "bin/rdmd" "rdmd_test.d" "bin/rdmd"
> +                           "--rdmd-default-compiler" "ldmd2")))

Run "./pre-inst guix lint d-tools", it will have a remark.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYqwcSRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7r10AQDm8M2I4bgJIQTb2ZI/9g8UO5rP
BF2WDN3bihzVZQjrGQEA83Q9Pr+p9iHdn5ZXSNBIM5jUdMyo/G/2C2QntnkJNg0=
=AU2u
-----END PGP SIGNATURE-----


(
CKSIW7XJMDVU.1J9YV852J07CO@guix-aspire
On Fri Jun 17, 2022 at 7:16 AM BST, Maxime Devos wrote:
Toggle quote (2 lines)
> Run "./pre-inst guix lint d-tools", it will have a remark.

thanks; sending new patch in a moment :)
(
[PATCH v2 1/2] gnu: packages: Replace rdmd with d-tools.
(address . 55999@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220617172023.16359-1-paren@disroot.org
* gnu/packages/dlang.scm (rdmd): Remove variable.
* gnu/packages/dlang.scm (d-tools): New variable.

This fixes the build of rdmd and updates it to the latest version, along
with running rdmd_test.d, building dustmite along with rdmd, and
renaming the package to d-tools to reflect that change.
---
gnu/packages/dlang.scm | 75 +++++++++++++++++++++++++-----------------
1 file changed, 45 insertions(+), 30 deletions(-)

Toggle diff (108 lines)
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index 403fcbbd6b..7010994d2c 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -27,6 +28,7 @@ (define-module (gnu packages dlang)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module ((guix build utils) #:hide (delete which))
@@ -48,42 +50,55 @@ (define-module (gnu packages dlang)
#:use-module (gnu packages xorg)
#:use-module (srfi srfi-1))
-(define-public rdmd
+(define-public d-tools
(package
- (name "rdmd")
- (version "2.077.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/dlang/tools/archive/v" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (name "d-tools")
+ (version "2.100.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dlang/tools")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "0c8w373rv6iz3xfid94w40ncv2lr2ncxi662qsr4lda4aghczmq7"))))
+ (base32 "1jbn0hyskv4ykcckw0iganpyrm0bq2lggswspw21r4hgnxkmjbyw"))))
(build-system gnu-build-system)
(arguments
- '(#:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (delete 'check) ; There is no Makefile, so there's no 'make check'.
- (replace
- 'build
- (lambda _
- (invoke "ldc2" "rdmd.d")))
- (replace
- 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
- (install-file "rdmd" bin)))))))
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (mkdir-p "bin")
+ (setenv "CC" #$(cc-for-target))
+ (setenv "LD" #$(ld-for-target))
+ (invoke "ldc2" "rdmd.d" "--of" "bin/rdmd")
+ (apply invoke "ldc2" "--of=bin/dustmite"
+ (find-files "DustMite" ".*\\.d"))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "bin/rdmd" "rdmd_test.d" "bin/rdmd"
+ "--rdmd-default-compiler" "ldmd2"))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (man (string-append out "/man")))
+ (copy-recursively "bin" bin)
+ (copy-recursively "man" man)))))))
(native-inputs
- (list ldc))
- (home-page "https://github.com/D-Programming-Language/tools/")
- (synopsis "Specialized equivalent to 'make' for the D language")
+ (list ldc
+ (module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'ld-gold-wrapper)))
+ (home-page "https://github.com/dlang/tools")
+ (synopsis "Useful D-related tools")
(description
- "rdmd is a companion to the dmd compiler that simplifies the typical
-edit-compile-link-run or edit-make-run cycle to a rapid edit-run cycle. Like
-make and other tools, rdmd uses the relative dates of the files involved to
-minimize the amount of work necessary. Unlike make, rdmd tracks dependencies
-and freshness without requiring additional information from the user.")
+ "@code{d-tools} provides two useful tools for the D language: @code{rdmd},
+which runs D source files as scripts, and @code{dustmite}, which reduces D code
+to a minimal test case.")
(license license:boost1.0)))
;;; The 0.17.6 version is the last release to support being bootstrapped
--
2.36.1
(
[PATCH v2 2/2] gnu: packages: Update dub to v1.23.0.
(address . 55999@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220617172023.16359-2-paren@disroot.org
* gnu/packages/dlang.scm (dub): Update to version 1.23.0.

This also fixes Dub's build, which was previously failing because of how
ancient it was.
---
gnu/packages/dlang.scm | 52 +++++++++++++++++++++++-------------------
1 file changed, 28 insertions(+), 24 deletions(-)

Toggle diff (70 lines)
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index 7010994d2c..34486f212c 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -437,35 +437,39 @@ (define (gnu-triplet->clang-arch system)
(define-public dub
(package
(name "dub")
- (version "1.7.2")
+ (version "1.23.0")
(source
(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/dlang/dub")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "073ibvgm1gphcqs1yjrav9ryp677nh3b194nxmvicwgvdc0sb6w9"))))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dlang/dub")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "06a4whsl1m600k096nwif83n7za3vr7pj1xwapncy5fcad1gmady"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; it would have tested itself by installing some packages (vibe etc)
- #:phases
- (modify-phases %standard-phases
- (delete 'configure) ; no configure script
- (replace 'build
- (lambda _
- (invoke "./build.sh")))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin")))
- (install-file "bin/dub" bin)
- #t))))))
- (inputs
- (list curl))
+ (list #:tests? #f ; Tests try to install various packages.
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (setenv "CC" #$(cc-for-target))
+ (setenv "LD" #$(ld-for-target))
+ (invoke "./build.d")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (install-file "bin/dub" bin)))))))
+ (inputs (list curl))
(native-inputs
- (list ldc))
+ (list ldc
+ d-tools
+ (module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'ld-gold-wrapper)))
(home-page "https://code.dlang.org/getting_started")
(synopsis "Package and build manager for D projects")
(description
--
2.36.1
(
[PATCH v3 1/3] gnu: packages: Replace rdmd with d-tools.
(address . 55999@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220624175628.7877-1-paren@disroot.org
* gnu/packages/dlang.scm (rdmd): Remove variable.
* gnu/packages/dlang.scm (d-tools): New variable.

This fixes the build of rdmd and updates it to the latest version, along
with running rdmd_test.d, building dustmite along with rdmd, and
renaming the package to d-tools to reflect that change.
---
gnu/packages/dlang.scm | 75 +++++++++++++++++++++++++-----------------
1 file changed, 45 insertions(+), 30 deletions(-)

Toggle diff (108 lines)
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index 403fcbbd6b..7010994d2c 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -27,6 +28,7 @@ (define-module (gnu packages dlang)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module ((guix build utils) #:hide (delete which))
@@ -48,42 +50,55 @@ (define-module (gnu packages dlang)
#:use-module (gnu packages xorg)
#:use-module (srfi srfi-1))
-(define-public rdmd
+(define-public d-tools
(package
- (name "rdmd")
- (version "2.077.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/dlang/tools/archive/v" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (name "d-tools")
+ (version "2.100.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dlang/tools")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "0c8w373rv6iz3xfid94w40ncv2lr2ncxi662qsr4lda4aghczmq7"))))
+ (base32 "1jbn0hyskv4ykcckw0iganpyrm0bq2lggswspw21r4hgnxkmjbyw"))))
(build-system gnu-build-system)
(arguments
- '(#:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (delete 'check) ; There is no Makefile, so there's no 'make check'.
- (replace
- 'build
- (lambda _
- (invoke "ldc2" "rdmd.d")))
- (replace
- 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
- (install-file "rdmd" bin)))))))
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (mkdir-p "bin")
+ (setenv "CC" #$(cc-for-target))
+ (setenv "LD" #$(ld-for-target))
+ (invoke "ldc2" "rdmd.d" "--of" "bin/rdmd")
+ (apply invoke "ldc2" "--of=bin/dustmite"
+ (find-files "DustMite" ".*\\.d"))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "bin/rdmd" "rdmd_test.d" "bin/rdmd"
+ "--rdmd-default-compiler" "ldmd2"))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (man (string-append out "/man")))
+ (copy-recursively "bin" bin)
+ (copy-recursively "man" man)))))))
(native-inputs
- (list ldc))
- (home-page "https://github.com/D-Programming-Language/tools/")
- (synopsis "Specialized equivalent to 'make' for the D language")
+ (list ldc
+ (module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'ld-gold-wrapper)))
+ (home-page "https://github.com/dlang/tools")
+ (synopsis "Useful D-related tools")
(description
- "rdmd is a companion to the dmd compiler that simplifies the typical
-edit-compile-link-run or edit-make-run cycle to a rapid edit-run cycle. Like
-make and other tools, rdmd uses the relative dates of the files involved to
-minimize the amount of work necessary. Unlike make, rdmd tracks dependencies
-and freshness without requiring additional information from the user.")
+ "@code{d-tools} provides two useful tools for the D language: @code{rdmd},
+which runs D source files as scripts, and @code{dustmite}, which reduces D code
+to a minimal test case.")
(license license:boost1.0)))
;;; The 0.17.6 version is the last release to support being bootstrapped
--
2.36.1
(
[PATCH v3 2/3] gnu: packages: Update dub to v1.23.0.
(address . 55999@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220624175628.7877-2-paren@disroot.org
* gnu/packages/dlang.scm (dub): Update to version 1.23.0.

This also fixes Dub's build, which was previously failing because of how
ancient it was.
---
gnu/packages/dlang.scm | 52 +++++++++++++++++++++++-------------------
1 file changed, 28 insertions(+), 24 deletions(-)

Toggle diff (70 lines)
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index 7010994d2c..34486f212c 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -437,35 +437,39 @@ (define (gnu-triplet->clang-arch system)
(define-public dub
(package
(name "dub")
- (version "1.7.2")
+ (version "1.23.0")
(source
(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/dlang/dub")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "073ibvgm1gphcqs1yjrav9ryp677nh3b194nxmvicwgvdc0sb6w9"))))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dlang/dub")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "06a4whsl1m600k096nwif83n7za3vr7pj1xwapncy5fcad1gmady"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; it would have tested itself by installing some packages (vibe etc)
- #:phases
- (modify-phases %standard-phases
- (delete 'configure) ; no configure script
- (replace 'build
- (lambda _
- (invoke "./build.sh")))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin")))
- (install-file "bin/dub" bin)
- #t))))))
- (inputs
- (list curl))
+ (list #:tests? #f ; Tests try to install various packages.
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (setenv "CC" #$(cc-for-target))
+ (setenv "LD" #$(ld-for-target))
+ (invoke "./build.d")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (install-file "bin/dub" bin)))))))
+ (inputs (list curl))
(native-inputs
- (list ldc))
+ (list ldc
+ d-tools
+ (module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'ld-gold-wrapper)))
(home-page "https://code.dlang.org/getting_started")
(synopsis "Package and build manager for D projects")
(description
--
2.36.1
(
[PATCH v3 3/3] guix: Modernize dub-build-system somewhat.
(address . 55999@debbugs.gnu.org)(name . ()(address . paren@disroot.org)
20220624175628.7877-3-paren@disroot.org
* guix/build-system/dub.scm (default-ld-gold-wrapper): New variable.
(lower): Add keyed argument ld-gold-wrapper.
[bag]<build-inputs>: Add ld-gold-wrapper.
* guix/build/dub-build-system.scm (configure): Remove trailing #t, and
fix docstring formatting.
(build): Remove trailing #t, and avoid substituting ".dub/dub.json" as
Dub no longer produces it.
(check): Same as (build).
(install): Remove trailing #t.
---
guix/build-system/dub.scm | 8 ++++++++
guix/build/dub-build-system.scm | 26 ++++++++------------------
2 files changed, 16 insertions(+), 18 deletions(-)

Toggle diff (96 lines)
diff --git a/guix/build-system/dub.scm b/guix/build-system/dub.scm
index 55ad7decb8..1577f4a0c7 100644
--- a/guix/build-system/dub.scm
+++ b/guix/build-system/dub.scm
@@ -51,6 +51,12 @@ (define (default-pkg-config)
(let ((pkg-config (resolve-interface '(gnu packages pkg-config))))
(module-ref pkg-config 'pkg-config)))
+;; LDC doesn't work with the bfd linker.
+(define (default-ld-gold-wrapper)
+ "Return the default ld-gold-wrapper package."
+ (let ((commencement (resolve-interface '(gnu packages commencement))))
+ (module-ref commencement 'ld-gold-wrapper)))
+
(define %dub-build-system-modules
;; Build-side modules imported by default.
`((guix build dub-build-system)
@@ -100,6 +106,7 @@ (define* (lower name
(ldc (default-ldc))
(dub (default-dub))
(pkg-config (default-pkg-config))
+ (ld-gold-wrapper (default (default-ld-gold-wrapper)))
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME."
@@ -121,6 +128,7 @@ (define private-keywords
,@(standard-packages)))
(build-inputs `(("ldc" ,ldc)
("dub" ,dub)
+ ("ld-gold-wrapper" ,ld-gold-wrapper)
,@native-inputs))
(outputs outputs)
(build dub-build)
diff --git a/guix/build/dub-build-system.scm b/guix/build/dub-build-system.scm
index 3ab50733de..9ee0433ffd 100644
--- a/guix/build/dub-build-system.scm
+++ b/guix/build/dub-build-system.scm
@@ -48,10 +48,10 @@ (define (package-name->d-package-name name)
(_ #f)))
(define* (configure #:key inputs #:allow-other-keys)
- "Prepare one new directory with all the required dependencies.
- It's necessary to do this (instead of just using /gnu/store as the
- directory) because we want to hide the libraries in subdirectories
- lib/dub/... instead of polluting the user's profile root."
+ "Prepare one new directory with all the required dependencies. It's necessary
+to do this (instead of just using /gnu/store as the directory) because we want
+to hide the libraries in subdirectories lib/dub/... instead of polluting the
+user's profile root."
(let* ((dir (mkdtemp! "/tmp/dub.XXXXXX"))
(vendor-dir (string-append dir "/vendor")))
(setenv "HOME" dir)
@@ -67,8 +67,7 @@ (define* (configure #:key inputs #:allow-other-keys)
(symlink (string-append path "/lib/dub/" d-basename)
(string-append vendor-dir "/" d-basename))))))))
inputs)
- (invoke "dub" "add-path" vendor-dir)
- #t))
+ (invoke "dub" "add-path" vendor-dir)))
(define (grep string file-name)
"Find the first occurrence of STRING in the file named FILE-NAME.
@@ -92,19 +91,11 @@ (define* (build #:key (dub-build-flags '())
(unless (or (grep* "sourceLibrary" "package.json")
(grep* "sourceLibrary" "dub.sdl") ; note: format is different!
(grep* "sourceLibrary" "dub.json"))
- (apply invoke `("dub" "build" ,@dub-build-flags))
- (substitute* ".dub/dub.json"
- (("\"lastUpgrade\": \"[^\"]*\"")
- "\"lastUpgrade\": \"1970-01-01T00:00:00.0000000\"")))
- #t)
+ (apply invoke `("dub" "build" ,@dub-build-flags))))
(define* (check #:key tests? #:allow-other-keys)
(when tests?
- (invoke "dub" "test")
- (substitute* ".dub/dub.json"
- (("\"lastUpgrade\": \"[^\"]*\"")
- "\"lastUpgrade\": \"1970-01-01T00:00:00.0000000\"")))
- #t)
+ (invoke "dub" "test")))
(define* (install #:key inputs outputs #:allow-other-keys)
"Install a given DUB package."
@@ -115,8 +106,7 @@ (define* (install #:key inputs outputs #:allow-other-keys)
;; TODO remove "-test-application"
(copy-recursively "bin" outbin)
(mkdir-p outlib)
- (copy-recursively "." (string-append outlib))
- #t))
+ (copy-recursively "." (string-append outlib))))
(define %standard-phases
(modify-phases gnu:%standard-phases
--
2.36.1
T
T
Tobias Geerinckx-Rice wrote on 25 Jun 2022 23:37
(name . ()(address . paren@disroot.org)
874k085ska@nckx
Hi ),

I split these patches up into more atomic parts, made a few minor
tweaks I deemed fit, and pushed them to master in two stages as
4c63796545ce2a1f7cd556a831bb92c7b3166358 et al and
30edb241a9ba50fefbd08438b5ffba25b10c6e61 et al.

Thanks!

T G-R
-----BEGIN PGP SIGNATURE-----

iIMEARYKACsWIQT12iAyS4c9C3o4dnINsP+IT1VteQUCYreBJQ0cbWVAdG9iaWFz
LmdyAAoJEA2w/4hPVW15+jUBAI2Ds35Sj8yLZUM8jGcX/5+FB0kTEk6TU05dv6lm
36ztAQDKV0g5mxEoLK6V5t1sC3NxA+wKFejJxQHnwVv2nWPvAA==
=9vbJ
-----END PGP SIGNATURE-----

Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 55999@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 55999
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch