GNU bug report logs - #74421
[PATCH] gnu: zstd: Fix cross-building to mingw32.

Previous Next

Package: guix-patches;

Reported by: Efraim Flashner <efraim <at> flashner.co.il>

Date: Mon, 18 Nov 2024 18:41:01 UTC

Severity: normal

Tags: patch

Done: Efraim Flashner <efraim <at> flashner.co.il>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Efraim Flashner <efraim <at> flashner.co.il>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#74421: closed ([PATCH] gnu: zstd: Fix cross-building to mingw32.)
Date: Mon, 02 Dec 2024 11:58:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Mon, 2 Dec 2024 13:56:35 +0200
with message-id <Z02gc8kJBRW0MpV2 <at> 3900XT>
and subject line Re: bug#74421: Acknowledgement ([PATCH] gnu: zstd: Fix cross-building to mingw32.)
has caused the debbugs.gnu.org bug report #74421,
regarding [PATCH] gnu: zstd: Fix cross-building to mingw32.
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
74421: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=74421
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Efraim Flashner <efraim <at> flashner.co.il>
To: guix-patches <at> gnu.org
Cc: Efraim Flashner <efraim <at> flashner.co.il>
Subject: [PATCH] gnu: zstd: Fix cross-building to mingw32.
Date: Mon, 18 Nov 2024 20:39:59 +0200
* gnu/packages/compression.scm (zstd)[arguments]: Adjust the custom
'adjust-library-locations phase to have separate logic for targeting
mingw32.  Adjust the make-flags to add some extra flags when targeting
mingw32.

Change-Id: Ifd32a6bd9157af93c7338dacc96467e2756b9314
---

I tested this to the best of my ability by using it as an input for
ncdu <at> 2.6 on the wip-zig-bootstrap branch and by comparing the outputs to
the pre-compiled release tarball for win64 on Github.


 gnu/packages/compression.scm | 45 ++++++++++++++++++++++++++----------
 1 file changed, 33 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index b3eca16191c..fcde956c4f9 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021, 2022, 2024 Ricardo Wurmus <rekado <at> elephly.net>
 ;;; Copyright © 2015, 2017, 2018 Leo Famulari <leo <at> famulari.name>
 ;;; Copyright © 2015 Jeff Mickey <j <at> codemac.net>
-;;; Copyright © 2015-2023 Efraim Flashner <efraim <at> flashner.co.il>
+;;; Copyright © 2015-2024 Efraim Flashner <efraim <at> flashner.co.il>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben <at> gmail.com>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym <at> scratchpost.org>
 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me <at> tobias.gr>
@@ -1779,24 +1779,45 @@ (define-public zstd
                     (static (assoc-ref outputs "static"))
                     (shared-libs (string-append lib "/lib"))
                     (static-libs (string-append static "/lib")))
-               ;; Move the static library to its own output to save ~1MiB.
                (mkdir-p static-libs)
-               (for-each (lambda (ar)
-                           (link ar (string-append static-libs "/"
-                                                   (basename ar)))
-                           (delete-file ar))
-                         (find-files shared-libs "\\.a$"))
+               ;; This is based on the win64 release zip file from zstd.
+               ,@(if (target-mingw?)
+                     `((for-each delete-file (find-files out "\\.so"))
+                       (for-each delete-file (find-files shared-libs "\\.so"))
+                       (rename-file (string-append shared-libs "/libzstd.a")
+                                    (string-append static-libs "/libzstd_static.lib"))
+                       (delete-file-recursively
+                         (string-append shared-libs "/pkgconfig"))
+                       ;; no binary for interpreter `sh' found in $PATH
+                       (delete-file (string-append out "/bin/zstdgrep"))
+                       (delete-file (string-append out "/bin/zstdless"))
+                       (delete-file (string-append out "/share/man/man1/zstdgrep.1"))
+                       (delete-file (string-append out "/share/man/man1/zstdless.1")))
+                     `(;; Move the static library to its own output to save ~1MiB.
+                       (for-each (lambda (ar)
+                                   (link ar (string-append static-libs "/"
+                                                           (basename ar)))
+                                   (delete-file ar))
+                                 (find-files shared-libs "\\.a$"))
 
-               ;; Make sure the pkg-config file refers to the right output.
-               (substitute* (string-append shared-libs "/pkgconfig/libzstd.pc")
-                 (("^prefix=.*")
-                  ;; Note: The .pc file expects a trailing slash for 'prefix'.
-                  (string-append "prefix=" lib "/\n")))))))
+                       ;; Make sure the pkg-config file refers to the right output.
+                       (substitute* (string-append shared-libs "/pkgconfig/libzstd.pc")
+                         (("^prefix=.*")
+                          ;; Note: The .pc file expects a trailing slash for 'prefix'.
+                          (string-append "prefix=" lib "/\n")))))))))
        #:make-flags
        (list ,(string-append "CC=" (cc-for-target))
              (string-append "prefix=" (assoc-ref %outputs "out"))
              (string-append "libdir=" (assoc-ref %outputs "lib") "/lib")
              (string-append "includedir=" (assoc-ref %outputs "lib") "/include")
+             ,@(if (target-mingw?)
+                   `(;; See the note in the Makefile.
+                     "TARGET_SYSTEM=Windows"
+                     ;; Don't try to link with pthread.
+                     "THREAD_LD="
+                     ;; This isn't picked up correctly in the Makefiles.
+                     "EXT=.exe")
+                   '())
              ;; Auto-detection is over-engineered and buggy.
              "PCLIBDIR=lib"
              "PCINCDIR=include"

base-commit: 1affd2b5aa7f5467a44cf757c4fc0c6956d3f3c9
-- 
Efraim Flashner   <efraim <at> flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted



[Message part 3 (message/rfc822, inline)]
From: Efraim Flashner <efraim <at> flashner.co.il>
To: 74421-done <at> debbugs.gnu.org
Subject: Re: bug#74421: Acknowledgement ([PATCH] gnu: zstd: Fix
 cross-building to mingw32.)
Date: Mon, 2 Dec 2024 13:56:35 +0200
[Message part 4 (text/plain, inline)]
Patch pushed!

-- 
Efraim Flashner   <efraim <at> flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[signature.asc (application/pgp-signature, inline)]

This bug report was last modified 227 days ago.

Previous Next


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