GNU bug report logs - #60754
[PATCH 1/2] gnu: Add mold.

Previous Next

Package: guix-patches;

Reported by: Zhu Zihao <all_but_last <at> 163.com>

Date: Thu, 12 Jan 2023 14:20:02 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 60754 in the body.
You can then email your comments to 60754 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#60754; Package guix-patches. (Thu, 12 Jan 2023 14:20:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Zhu Zihao <all_but_last <at> 163.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Thu, 12 Jan 2023 14:20:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Zhu Zihao <all_but_last <at> 163.com>
To: guix-patches <at> gnu.org
Cc: Zhu Zihao <all_but_last <at> 163.com>
Subject: [PATCH 1/2] gnu: Add mold.
Date: Thu, 12 Jan 2023 22:18:30 +0800
* gnu/local.mk (GNU_SYSTEM_MODULES): Add new file.
* gnu/packages/mold.scm: New file.
* gnu/packages/mold.scm (mold): New variable.
---
 gnu/local.mk          |  1 +
 gnu/packages/mold.scm | 82 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 83 insertions(+)
 create mode 100644 gnu/packages/mold.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 184f43e753..1e80dab53f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -426,6 +426,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/mingw.scm			\
   %D%/packages/microcom.scm			\
   %D%/packages/moe.scm				\
+  %D%/packages/mold.scm				\
   %D%/packages/motti.scm			\
   %D%/packages/monitoring.scm			\
   %D%/packages/moreutils.scm			\
diff --git a/gnu/packages/mold.scm b/gnu/packages/mold.scm
new file mode 100644
index 0000000000..9338499b2b
--- /dev/null
+++ b/gnu/packages/mold.scm
@@ -0,0 +1,82 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Zhu Zihao <all_but_last <at> 163.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages mold)
+  #:use-module (guix gexp)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages c)
+  #:use-module (gnu packages digest)
+  #:use-module (gnu packages tbb)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages compression)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public mold
+  (package
+    (name "mold")
+    (version "1.9.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rui314/mold")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "03qkl9qw5l5kg1awij40hcrfxq6jj70mvq4iscdy9dsn8qw8r3wb"))
+       (modules '((guix build utils)))
+       (snippet
+        #~(begin
+            (for-each
+             (lambda (x)
+               (delete-file-recursively (string-append "third-party/" x)))
+             '("mimalloc" "tbb" "xxhash" "zlib" "zstd"))))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DMOLD_USE_SYSTEM_MIMALLOC=ON"
+                                "-DMOLD_USE_SYSTEM_TBB=ON")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'force-system-xxhash
+            (lambda _
+              (substitute* "mold.h"
+                (("#include \"third-party/xxhash/xxhash.h\"")
+                 "#include <xxhash.h>"))))
+          (add-before 'configure 'fix-compiler-name-in-test
+            (lambda _
+              (substitute* "test/elf/common.inc"
+                (("CC=\"\\$\\{TEST_CC:-cc\\}\"") "CC=gcc")
+                (("CXX=\"\\$\\{TEST_CXX:-c\\+\\+\\}\"")
+                 "CXX=g++"))))
+          (add-before 'configure 'disable-rpath-test
+            (lambda _
+              ;; This test fails because mold expect the RUNPATH as-is,
+              ;; but compiler in Guix will insert the path of gcc-lib and
+              ;; glibc into the output binary.
+              (delete-file "test/elf/rpath.sh"))))))
+    (inputs (list mimalloc openssl tbb xxhash zlib `(,zstd "lib")))
+    (home-page "https://github.com/rui314/mold")
+    (synopsis "Faster drop-in replacement for Unix linkers")
+    (description
+     "Mold is a faster drop-in replacement for existing Unix linkers.
+It is designed to increase developer productivity by reducing build time,
+especially in rapid debug-edit-rebuild cycles.")
+    (license license:agpl3+)))
-- 
2.38.1





Information forwarded to guix-patches <at> gnu.org:
bug#60754; Package guix-patches. (Thu, 12 Jan 2023 14:23:02 GMT) Full text and rfc822 format available.

Message #8 received at 60754 <at> debbugs.gnu.org (full text, mbox):

From: Zhu Zihao <all_but_last <at> 163.com>
To: 60754 <at> debbugs.gnu.org
Cc: Zhu Zihao <all_but_last <at> 163.com>
Subject: [PATCH 1/2] gnu: Add mold.
Date: Thu, 12 Jan 2023 22:22:28 +0800
* gnu/local.mk (GNU_SYSTEM_MODULES): Add new file.
* gnu/packages/mold.scm: New file.
* gnu/packages/mold.scm (mold): New variable.
---
 gnu/local.mk          |  1 +
 gnu/packages/mold.scm | 82 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 83 insertions(+)
 create mode 100644 gnu/packages/mold.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 184f43e753..1e80dab53f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -426,6 +426,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/mingw.scm			\
   %D%/packages/microcom.scm			\
   %D%/packages/moe.scm				\
+  %D%/packages/mold.scm				\
   %D%/packages/motti.scm			\
   %D%/packages/monitoring.scm			\
   %D%/packages/moreutils.scm			\
diff --git a/gnu/packages/mold.scm b/gnu/packages/mold.scm
new file mode 100644
index 0000000000..9338499b2b
--- /dev/null
+++ b/gnu/packages/mold.scm
@@ -0,0 +1,82 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Zhu Zihao <all_but_last <at> 163.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages mold)
+  #:use-module (guix gexp)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages c)
+  #:use-module (gnu packages digest)
+  #:use-module (gnu packages tbb)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages compression)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define-public mold
+  (package
+    (name "mold")
+    (version "1.9.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rui314/mold")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "03qkl9qw5l5kg1awij40hcrfxq6jj70mvq4iscdy9dsn8qw8r3wb"))
+       (modules '((guix build utils)))
+       (snippet
+        #~(begin
+            (for-each
+             (lambda (x)
+               (delete-file-recursively (string-append "third-party/" x)))
+             '("mimalloc" "tbb" "xxhash" "zlib" "zstd"))))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DMOLD_USE_SYSTEM_MIMALLOC=ON"
+                                "-DMOLD_USE_SYSTEM_TBB=ON")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'force-system-xxhash
+            (lambda _
+              (substitute* "mold.h"
+                (("#include \"third-party/xxhash/xxhash.h\"")
+                 "#include <xxhash.h>"))))
+          (add-before 'configure 'fix-compiler-name-in-test
+            (lambda _
+              (substitute* "test/elf/common.inc"
+                (("CC=\"\\$\\{TEST_CC:-cc\\}\"") "CC=gcc")
+                (("CXX=\"\\$\\{TEST_CXX:-c\\+\\+\\}\"")
+                 "CXX=g++"))))
+          (add-before 'configure 'disable-rpath-test
+            (lambda _
+              ;; This test fails because mold expect the RUNPATH as-is,
+              ;; but compiler in Guix will insert the path of gcc-lib and
+              ;; glibc into the output binary.
+              (delete-file "test/elf/rpath.sh"))))))
+    (inputs (list mimalloc openssl tbb xxhash zlib `(,zstd "lib")))
+    (home-page "https://github.com/rui314/mold")
+    (synopsis "Faster drop-in replacement for Unix linkers")
+    (description
+     "Mold is a faster drop-in replacement for existing Unix linkers.
+It is designed to increase developer productivity by reducing build time,
+especially in rapid debug-edit-rebuild cycles.")
+    (license license:agpl3+)))
-- 
2.38.1





Information forwarded to guix-patches <at> gnu.org:
bug#60754; Package guix-patches. (Thu, 12 Jan 2023 14:25:01 GMT) Full text and rfc822 format available.

Message #11 received at 60754 <at> debbugs.gnu.org (full text, mbox):

From: Zhu Zihao <all_but_last <at> 163.com>
To: 60754 <at> debbugs.gnu.org
Cc: Zhu Zihao <all_but_last <at> 163.com>
Subject: [PATCH 2/2] gnu: Add mold-wrapper.
Date: Thu, 12 Jan 2023 22:23:35 +0800
* gnu/packages/mold.scm(make-mold-wrapper): New variable.
(mold-wrapper): New variable.
(mold-as-ld-wrapper): New variable.
---
 gnu/packages/mold.scm | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/mold.scm b/gnu/packages/mold.scm
index 9338499b2b..2a02000d04 100644
--- a/gnu/packages/mold.scm
+++ b/gnu/packages/mold.scm
@@ -22,6 +22,8 @@ (define-module (gnu packages mold)
   #:use-module (guix utils)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system trivial)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages c)
   #:use-module (gnu packages digest)
   #:use-module (gnu packages tbb)
@@ -80,3 +82,41 @@ (define-public mold
 It is designed to increase developer productivity by reducing build time,
 especially in rapid debug-edit-rebuild cycles.")
     (license license:agpl3+)))
+
+(define* (make-mold-wrapper mold #:key mold-as-ld?)
+  "Return a MOLD wrapper.  When MOLD-AS-LD? is true, create a 'ld' symlink that
+points to 'mold'."
+  (package
+    (inherit mold)
+    (name (if mold-as-ld? "mold-as-ld-wrapper" "mold-wrapper"))
+    (source #f)
+    (native-inputs '())
+    (inputs (list (make-ld-wrapper "ld.mold-wrapper" #:binutils mold
+                                   #:linker "ld.mold")
+                  (make-ld-wrapper "mold-wrapper" #:binutils mold #:linker
+                                   "mold")))
+    (propagated-inputs '())
+    (build-system trivial-build-system)
+    (arguments
+     (list #:builder
+           #~(let ((ld.mold (string-append #$(this-package-input
+                                              "ld.mold-wrapper")
+                                           "/bin/ld.mold"))
+                   (mold (string-append #$(this-package-input "mold-wrapper")
+                                        "/bin/mold")))
+               (mkdir #$output)
+               (mkdir (string-append #$output "/bin"))
+               (symlink ld.mold (string-append #$output "/bin/ld.mold"))
+               (symlink mold (string-append #$output "/bin/mold"))
+               (when #$mold-as-ld?
+                 (symlink ld.mold (string-append #$output "/bin/ld"))))))
+    (synopsis "Mold linker wrapper")
+    (description "This is a linker wrapper for Mold; like @code{ld-wrapper}, it
+wraps the linker to add any missing @code{-rpath} flags, and to detect any
+misuse of libraries outside of the store.")))
+
+(define-public mold-wrapper
+  (make-mold-wrapper mold))
+
+(define-public mold-as-ld-wrapper
+  (make-mold-wrapper mold #:mold-as-ld? #t))
-- 
2.38.1





Information forwarded to guix-patches <at> gnu.org:
bug#60754; Package guix-patches. (Thu, 12 Jan 2023 14:32:02 GMT) Full text and rfc822 format available.

Message #14 received at 60754 <at> debbugs.gnu.org (full text, mbox):

From: Zhu Zihao <all_but_last <at> 163.com>
To: 60754 <at> debbugs.gnu.org
Subject: Re: bug#60754: Acknowledgement ([PATCH 1/2] gnu: Add mold.)
Date: Thu, 12 Jan 2023 22:28:57 +0800
[Message part 1 (text/plain, inline)]
I see there're similar works on packaging mold. (See
https://issues.guix.gnu.org/53601 & https://issues.guix.gnu.org/53327 )

But they're ignored by maintainers.

-- 
Retrieve my PGP public key:

  gpg --recv-keys B3EBC086AB0EBC0F45E0B4D433DB374BCEE4D9DC

Zihao
[signature.asc (application/pgp-signature, inline)]

Reply sent to Ludovic Courtès <ludo <at> gnu.org>:
You have taken responsibility. (Sun, 12 Feb 2023 00:48:03 GMT) Full text and rfc822 format available.

Notification sent to Zhu Zihao <all_but_last <at> 163.com>:
bug acknowledged by developer. (Sun, 12 Feb 2023 00:48:03 GMT) Full text and rfc822 format available.

Message #19 received at 60754-done <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Zhu Zihao <all_but_last <at> 163.com>
Cc: 60754-done <at> debbugs.gnu.org, 53601-done <at> debbugs.gnu.org,
 53327-done <at> debbugs.gnu.org
Subject: Re: bug#60754: [PATCH 1/2] gnu: Add mold.
Date: Sun, 12 Feb 2023 01:47:18 +0100
[Message part 1 (text/plain, inline)]
Hi,

Zhu Zihao <all_but_last <at> 163.com> skribis:

> * gnu/local.mk (GNU_SYSTEM_MODULES): Add new file.
> * gnu/packages/mold.scm: New file.
> * gnu/packages/mold.scm (mold): New variable.

[...]

> * gnu/packages/mold.scm(make-mold-wrapper): New variable.
> (mold-wrapper): New variable.
> (mold-as-ld-wrapper): New variable.

Applied both with minor changes (see below), thanks.

I’m also closing the two other issues you mentioned that were adding
mold.  Please let us know if there’s something to borrow from them!

Ludo’.

[Message part 2 (text/x-patch, inline)]
diff --git a/gnu/packages/mold.scm b/gnu/packages/mold.scm
index 6514bd3b90..dfc452a329 100644
--- a/gnu/packages/mold.scm
+++ b/gnu/packages/mold.scm
@@ -77,12 +77,12 @@ (define-public mold
               (delete-file "test/elf/rpath.sh"))))))
     (inputs (list mimalloc openssl tbb xxhash zlib `(,zstd "lib")))
     (home-page "https://github.com/rui314/mold")
-    (synopsis "Faster drop-in replacement for Unix linkers")
+    (synopsis "Fast linker")
     (description
-     "Mold is a faster drop-in replacement for existing Unix linkers.
+     "Mold is a faster drop-in replacement for existing linkers.
 It is designed to increase developer productivity by reducing build time,
 especially in rapid debug-edit-rebuild cycles.")
-    (license license:agpl3+)))
+    (license license:agpl3)))
 
 (define* (make-mold-wrapper mold #:key mold-as-ld?)
   "Return a MOLD wrapper.  When MOLD-AS-LD? is true, create a 'ld' symlink that

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 12 Mar 2023 11:24:13 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 17 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.