[PATCH core-updates] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
M
M
Maxim Cournoyer wrote on 30 Jan 05:26 +0100
[PATCH 1/5] gnu: Add atf.
(address . guix-patches@gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
1eb5ed150b9c8d7bdbcc7fed96d65d7e0507f03d.1706588716.git.maxim.cournoyer@gmail.com
* gnu/packages/check.scm (atf): New variable.
* gnu/packages/patches/atf-execute-with-shell.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.

Change-Id: I37a57069380309382bc0ff24977a1fd165985f5e
---

gnu/local.mk | 3 +-
gnu/packages/check.scm | 40 ++++++++++++++++++-
.../patches/atf-execute-with-shell.patch | 39 ++++++++++++++++++
3 files changed, 80 insertions(+), 2 deletions(-)
create mode 100644 gnu/packages/patches/atf-execute-with-shell.patch

Toggle diff (128 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 8170ba6b83..69bf23c89e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -19,7 +19,7 @@
# Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
# Copyright © 2018, 2019, 2020, 2021, 2022 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2018 Stefan Stefanovi? <stefanx2ovic@gmail.com>
-# Copyright © 2018, 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+# Copyright © 2018, 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
# Copyright © 2019, 2020, 2021, 2022, 2044 Guillaume Le Vaillant <glv@posteo.net>
# Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
# Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
@@ -931,6 +931,7 @@ dist_patch_DATA = \
%D%/packages/patches/asli-use-system-libs.patch \
%D%/packages/patches/aspell-CVE-2019-25051.patch \
%D%/packages/patches/aspell-default-dict-dir.patch \
+ %D%/packages/patches/atf-execute-with-shell.patch \
%D%/packages/patches/ath9k-htc-firmware-binutils.patch \
%D%/packages/patches/ath9k-htc-firmware-gcc.patch \
%D%/packages/patches/ath9k-htc-firmware-gcc-compat.patch \
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 4de5b1c0d4..bc2abf2bc0 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -35,7 +35,7 @@
;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
-;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Hugo Lecomte <hugo.lecomte@inria.fr>
;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022, 2023 David Elsing <david.elsing@posteo.net>
@@ -111,6 +111,44 @@ (define-module (gnu packages check)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
+(define-public atf
+ (package
+ (name "atf")
+ (version "0.21")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/freebsd/atf")
+ (commit (string-append name "-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0jwzz6g9jdi5f8v10y0wf3hq73vxyv5qqhkh832ddsj36gn8rlcz"))
+ (patches (search-patches "atf-execute-with-shell.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:configure-flags
+ #~(list (string-append "ATF_SHELL="
+ #$(this-package-input "bash-minimal")
+ "/bin/sh"))))
+ (native-inputs (list autoconf automake libtool))
+ (inputs (list bash-minimal))
+ (home-page "https://github.com/freebsd/atf")
+ (synopsis "C/C++ Automated Testing Framework libraries")
+ (description "ATF, or Automated Testing Framework, is a collection of
+libraries to write test programs in C, C++ and POSIX shell.
+
+The ATF libraries offer a simple API. The API is orthogonal through the
+various bindings, allowing developers to quickly learn how to write test
+programs in different languages.
+
+ATF-based test programs offer a consistent end-user command-line interface to
+allow both humans and automation to run the tests.
+
+ATF-based test programs rely on an execution engine to be run and this
+execution engine is not shipped with ATF. Kyua is the engine of choice.")
+ (license (list license:bsd-2 license:bsd-3))))
+
(define-public pict
(package
(name "pict")
diff --git a/gnu/packages/patches/atf-execute-with-shell.patch b/gnu/packages/patches/atf-execute-with-shell.patch
new file mode 100644
index 0000000000..bde4fb336a
--- /dev/null
+++ b/gnu/packages/patches/atf-execute-with-shell.patch
@@ -0,0 +1,39 @@
+Submitted here: https://github.com/freebsd/atf/pull/57
+
+From 098b66269b1cf1d944b8b214ceb7ce9febde3682 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Mon, 29 Jan 2024 22:35:49 -0500
+Subject: [PATCH] Fix use after free in execute_with_shell.
+
+The temporary string returned by atf::env::get would be used outside
+its statement, which is invalid and cause undefined behavior. Copy it
+to a local variable to avoid the issue.
+
+Fixes: https://github.com/freebsd/atf/issues/26
+Fixes: https://github.com/freebsd/kyua/issues/223
+
+Reported-by: Ruslan Bukin <br@bsdpad.com>
+---
+ atf-sh/atf-check.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/atf-sh/atf-check.cpp b/atf-sh/atf-check.cpp
+index 41f0b13..9d6f7a8 100644
+--- a/atf-sh/atf-check.cpp
++++ b/atf-sh/atf-check.cpp
+@@ -436,7 +436,9 @@ execute_with_shell(char* const* argv)
+ const std::string cmd = flatten_argv(argv);
+
+ const char* sh_argv[4];
+- sh_argv[0] = atf::env::get("ATF_SHELL", ATF_SHELL).c_str();
++ const std::string shell = atf::env::get("ATF_SHELL", ATF_SHELL);
++
++ sh_argv[0] = shell.c_str();
+ sh_argv[1] = "-c";
+ sh_argv[2] = cmd.c_str();
+ sh_argv[3] = NULL;
+
+base-commit: 18eb8168b70a0f934b4824b6391b55ac0b2f4fdf
+--
+2.41.0
+

base-commit: 6573a72cdadebdf802ec7383253e44b975833895
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 03/20] gnu: Add kyua.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
2fe294e931f31bec87dacd55995a57f58880b829.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/check.scm (kyua): New variable.

Change-Id: Ic3a74a27c05b099bef6acfb4e0c96d2ee3defc31
---

gnu/packages/check.scm | 70 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 70 insertions(+)

Toggle diff (99 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 3920c5dace..a7e8ca7aa1 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -72,8 +72,10 @@ (define-module (gnu packages check)
#:use-module (gnu packages bash)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages gdb)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
+ #:use-module (gnu packages lua)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages golang)
@@ -88,6 +90,7 @@ (define-module (gnu packages check)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-science)
+ #:use-module (gnu packages sqlite)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages time)
#:use-module (gnu packages xml)
@@ -901,6 +904,73 @@ (define-public ftest
"This package provides a simple and limited unit-test framework for C++.")
(license license:boost1.0))))
+(define-public kyua
+ (package
+ (name "kyua")
+ (version "0.13")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/freebsd/kyua")
+ (commit (string-append name "-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1jzdal9smhmivj18683a5gy8jd2p1dbni7kcpaxq4g9jgjdidcrq"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-paths
+ (lambda _
+ (substitute* '("Makefile.am"
+ "utils/process/isolation_test.cpp"
+ "utils/stacktrace_test.cpp"
+ "integration/utils.sh"
+ "integration/cmd_test_test.sh")
+ (("/bin/sh")
+ ;; The 'local-kyua' generated script in Makefile.am is used
+ ;; to run the built kyua binary for tests.
+ (which "sh")))))
+ (add-after 'unpack 'fix-to_absolute-test
+ ;; This test checks for the existence of /bin and /bin/ls.
+ (lambda _
+ (substitute* "utils/fs/path_test.cpp"
+ (("chdir\\(\"/bin\")")
+ (format #f "chdir(~s)" (dirname (which "ls"))))
+ (("\"/bin/ls\"")
+ (string-append "\"" (which "ls") "\"")))))
+ (add-before 'check 'prepare-for-tests
+ (lambda _
+ ;; The test suite expects HOME to be writable.
+ (setenv "HOME" "/tmp")
+ ;; Generate the autom4te-generated testsuite script, which
+ ;; contains a '/bin/sh' shebang.
+ (invoke "make" "bootstrap/testsuite")
+ (substitute* "bootstrap/testsuite"
+ (("/bin/sh")
+ (which "sh")))))
+ (add-after 'unpack 'disable-problematic-tests
+ (lambda _
+ ;; The stacktrace tests expect core files to be dumped to the
+ ;; current directory, which doesn't happen with our kernel
+ ;; configuration (see:
+ ;; https://github.com/freebsd/kyua/issues/214).
+ (substitute* "utils/Kyuafile"
+ ((".*atf_test_program.*stacktrace_test.*")
+ "")))))))
+ (native-inputs (list autoconf automake gdb pkg-config))
+ (inputs (list atf lutok sqlite))
+ (home-page "https://github.com/freebsd/kyua")
+ (synopsis "Testing framework for infrastructure software")
+ (description "Kyua is a testing framework for infrastructure software.
+Kyua is lightweight and simple, and integrates well with various build systems
+and continuous integration frameworks. Kyua features an expressive test suite
+definition language, a safe runtime engine for test suites and a powerful
+report generation engine.")
+ (license license:bsd-3)))
+
(define-public python-gixy
;; The 0.1.20 release is missing some important fixes.
;; XXX: Commit 'e9008dcbd11f43ccac109b0cf2bf98a94e76b449' breaks tests
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 04/20] gnu: pkgconf: Enable test suite.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
9184870ae4465b341f7b4443a86f506275a26628.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/pkg-config.scm (pkgconf) [arguments]: Remove #:tests? argument.
Add a set-HOME phase.
[native-inputs]: Add atf and kyua.

Change-Id: I28410d7486ab45cf1cbc6d306345fb85f0b9d7fc
---

gnu/packages/pkg-config.scm | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

Toggle diff (38 lines)
diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
index 06f0db960f..2f07bdab9d 100644
--- a/gnu/packages/pkg-config.scm
+++ b/gnu/packages/pkg-config.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
-;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
@@ -29,6 +29,7 @@ (define-module (gnu packages pkg-config)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (gnu packages bash)
+ #:use-module (gnu packages check)
#:use-module (guix memoization)
#:export (pkg-config))
@@ -181,7 +182,13 @@ (define-public pkgconf
(base32
"0qbpczwrrsq2981mdv3iil26vq9ac8v1sfi9233jpiaixrhmhv96"))))
(build-system gnu-build-system)
- (arguments (list #:tests? #f)) ;TODO: package kyua
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-HOME
+ (lambda _
+ ;; Kyua requires a writable HOME.
+ (setenv "HOME" "/tmp"))))))
+ (native-inputs (list atf kyua))
(home-page "http://pkgconf.org/")
(synopsis "Package compiler and linker metadata toolkit")
(description "@command{pkgconf} is a program which helps to configure
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 05/20] gnu: Add pkgconf-as-pkg-config.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
5b85c4d9c68640a6db2d39865dbe9d0dffa4238f.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/pkg-config.scm (pkgconf-as-pkg-config): New variable.

Change-Id: Ica85d2c248817fdf4756680cd94b0380e4a2b01f
---

gnu/packages/pkg-config.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (38 lines)
diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
index 2f07bdab9d..a5459dd2a8 100644
--- a/gnu/packages/pkg-config.scm
+++ b/gnu/packages/pkg-config.scm
@@ -198,3 +198,31 @@ (define-public pkgconf
such as compilers and IDEs to discover and use libraries configured by
pkgconf.")
(license isc)))
+
+(define-public pkgconf-as-pkg-config
+ (package/inherit pkgconf
+ (name "pkgconf-as-pkg-config")
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((pkgconf (search-input-file inputs "bin/pkgconf")))
+ (mkdir-p (string-append #$output "/bin"))
+ (symlink pkgconf (string-append #$output "/bin/pkg-config"))
+
+ ;; Also make 'pkg.m4' available, some packages might expect it.
+ (mkdir-p (string-append #$output "/share"))
+ ;; XXX: Using '#$(this-package-input "pkgconf") here would
+ ;; create a cycle.
+ (symlink (string-append (dirname (dirname pkgconf))
+ "/share/aclocal")
+ (string-append #$output "/share/aclocal"))))))))
+ (native-inputs '())
+ (inputs (list pkgconf))
+ (propagated-inputs '())))
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 07/20] gnu: pkgconf: Add support for cross-compilation.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
bcadf838243644f0771ccaae21aa7905336417ae.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/pkg-config.scm: Reorganize module into sections.
(cross-pkg-config): Refactor to accept a TARGET argument.
(pkg-config-for-target): Likewise.
(pkg-config): Apply pkg-config-for-target to the %pkg-config argument.
(pkgconf): New variable, computed via pkg-config-for-target.
(pkgconf-as-pkg-config): Likewise.
(make-pkg-config-for-build): New procedure.
(pkg-config-for-build): Express in terms of the above.
(pkgconf-as-pkg-config-for-build): New variable.
(%pkgconf): New variable, renamed from previous pkgconf.
(%pkgconf-as-pkg-config): New variable, renamed from pkgconf-as-pkg-config.

Change-Id: I932e924949c5129bdc328c279cdd214b383d043d
---

gnu/packages/pkg-config.scm | 238 +++++++++++++++++++++---------------
1 file changed, 142 insertions(+), 96 deletions(-)

Toggle diff (271 lines)
diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
index 64a36b2126..e8d63be3d7 100644
--- a/gnu/packages/pkg-config.scm
+++ b/gnu/packages/pkg-config.scm
@@ -31,11 +31,18 @@ (define-module (gnu packages pkg-config)
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (guix memoization)
- #:export (pkg-config))
+ #:export (pkg-config
+ pkgconf
+ pkgconf-as-pkg-config))
-;; This is the "primitive" pkg-config package. People should use `pkg-config'
-;; (see below) rather than `%pkg-config', but we export `%pkg-config' so that
-;; `fold-packages' finds it.
+
+;;;
+;;; "Primitive" pkg-config packages.
+;;;
+
+;; The %-less variants defined below should be used instead; the %-prefixed
+;; "primitive" packages are exported so that `fold-packages' can find them,
+;; making them available for use via the Guix CLI.
(define-public %pkg-config
(package
(name "pkg-config")
@@ -82,95 +89,7 @@ (define-public %pkg-config
it can be used for defining the location of documentation tools, for
instance.")))
-(define cross-pkg-config
- (mlambda (target)
- "Return a pkg-config for TARGET, essentially just a wrapper called
-`TARGET-pkg-config', as `configure' scripts like it."
- ;; See <http://www.flameeyes.eu/autotools-mythbuster/pkgconfig/cross-compiling.html>
- ;; for details.
- (package
- (inherit %pkg-config)
- (name (string-append (package-name %pkg-config) "-" target))
- (build-system trivial-build-system)
- (arguments
- `(#:modules ((guix build utils))
- #:builder (begin
- (use-modules (guix build utils))
-
- (let* ((in (assoc-ref %build-inputs "pkg-config"))
- (out (assoc-ref %outputs "out"))
- (bin (string-append out "/bin"))
- (prog (string-append ,target "-pkg-config"))
- (native (string-append in "/bin/pkg-config")))
-
- (mkdir-p bin)
-
- ;; Create a `TARGET-pkg-config' -> `pkg-config' symlink.
- ;; This satisfies the pkg.m4 macros, which use
- ;; AC_PROG_TOOL to determine the `pkg-config' program
- ;; name.
- (symlink native (string-append bin "/" prog))
-
- ;; Also make 'pkg.m4' available, some packages might
- ;; expect it.
- (mkdir-p (string-append out "/share"))
- (symlink (string-append in "/share/aclocal")
- (string-append out "/share/aclocal"))
- #t))))
- (native-inputs `(("pkg-config" ,%pkg-config)))
-
- ;; Ignore native inputs, and set `PKG_CONFIG_PATH' for target inputs.
- (native-search-paths '())
- (search-paths (package-native-search-paths %pkg-config)))))
-
-(define (pkg-config-for-target target)
- "Return a pkg-config package for TARGET, which may be either #f for a native
-build, or a GNU triplet."
- (if target
- (cross-pkg-config target)
- %pkg-config))
-
-;; This hack allows us to automatically choose the native or the cross
-;; `pkg-config' depending on whether it's being used in a cross-build
-;; environment or not.
-(define-syntax pkg-config
- (identifier-syntax (pkg-config-for-target (%current-target-system))))
-
-;; This hack allows for using both "pkg-config" and "TARGET-pkg-config"
-;; at the same time. Simply using '%pkg-config' and 'pkg-config' won't
-;; work because they both use the "PKG_CONFIG_PATH" environment variable.
-(define-public pkg-config-for-build
- (package
- (inherit (hidden-package %pkg-config))
- (name "pkg-config-for-build")
- (version "0")
- (source #f)
- (build-system trivial-build-system)
- (inputs
- (list bash-minimal %pkg-config))
- (arguments
- `(#:modules ((guix build utils))
- #:builder
- ,#~(begin
- (use-modules (guix build utils))
- (define where (string-append #$output "/bin/pkg-config"))
- (mkdir-p (dirname where))
- (call-with-output-file where
- (lambda (port)
- (format port "#!~a
-export PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH_FOR_BUILD\"
-exec ~a \"$@\""
- (search-input-file %build-inputs "bin/bash")
- (search-input-file %build-inputs "bin/pkg-config"))))
- (chmod where #o500))))
- (native-search-paths
- (map (lambda (original)
- (search-path-specification
- (inherit original)
- (variable "PKG_CONFIG_PATH_FOR_BUILD")))
- (package-native-search-paths %pkg-config)))))
-
-(define-public pkgconf
+(define-public %pkgconf
(package
(name "pkgconf")
(version "2.1.0")
@@ -200,8 +119,8 @@ (define-public pkgconf
pkgconf.")
(license isc)))
-(define-public pkgconf-as-pkg-config
- (package/inherit pkgconf
+(define-public %pkgconf-as-pkg-config
+ (package/inherit %pkgconf
(name "pkgconf-as-pkg-config")
(build-system gnu-build-system)
(arguments
@@ -225,5 +144,132 @@ (define-public pkgconf-as-pkg-config
"/share/aclocal")
(string-append #$output "/share/aclocal"))))))))
(native-inputs '())
- (inputs (list pkgconf))
+ (inputs (list %pkgconf))
(propagated-inputs '())))
+
+
+;;;
+;;; Tooling for generating pkg-config wrappers for cross-compiling.
+;;;
+
+(define (make-cross-pkg-config pkg-config)
+ (mlambda (target)
+ "Return a procedure that evaluates to a PKG-CONFIG package for TARGET,
+essentially just a wrapper called `TARGET-pkg-config', as `configure' scripts
+like it."
+ ;; See <http://www.flameeyes.eu/autotools-mythbuster/pkgconfig/cross-compiling.html>
+ ;; for details.
+ (package
+ (inherit pkg-config)
+ (name (string-append (package-name pkg-config) "-" target))
+ (build-system trivial-build-system)
+ (arguments
+ (list
+ #:builder (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+
+ (let* ((in #+pkg-config)
+ (out #$output)
+ (bin (string-append out "/bin"))
+ (prog (string-append #$target "-pkg-config"))
+ (native (string-append in "/bin/pkg-config")))
+
+ (mkdir-p bin)
+
+ ;; Create a `TARGET-pkg-config' -> `pkg-config' symlink.
+ ;; This satisfies the pkg.m4 macros, which use
+ ;; AC_PROG_TOOL to determine the `pkg-config' program
+ ;; name.
+ (symlink native (string-append bin "/" prog))
+
+ ;; Also make 'pkg.m4' available, some packages might
+ ;; expect it.
+ (mkdir-p (string-append out "/share"))
+ (symlink (string-append in "/share/aclocal")
+ (string-append out "/share/aclocal")))))))
+
+ ;; Ignore native inputs, and set `PKG_CONFIG_PATH' for target inputs.
+ (native-search-paths '())
+ (search-paths (package-native-search-paths pkg-config)))))
+
+(define (make-pkg-config-for-target pkg-config)
+ "Return a procedure that evaluates to a `pkg-config' package for TARGET
+built from PKG-CONFIG. The target may be either #f for a native build, or a
+GNU triplet."
+ (let ((cross-pkg-config (make-cross-pkg-config pkg-config)))
+ (lambda (target)
+ (if target
+ (cross-pkg-config target)
+ pkg-config))))
+
+(define pkg-config-for-target
+ (make-pkg-config-for-target %pkg-config))
+
+(define pkgconf-for-target
+ (make-pkg-config-for-target %pkgconf))
+
+(define pkgconf-as-pkg-config-for-target
+ (make-pkg-config-for-target %pkgconf-as-pkg-config))
+
+
+;;;
+;;; The final pkg-config package variables to use.
+;;;
+
+;; These are a hacks for automatically choosing the native or the cross
+;; `pkg-config' depending on whether it's being used in a cross-build
+;; environment or not.
+(define-syntax pkg-config
+ (identifier-syntax (pkg-config-for-target (%current-target-system))))
+
+(define-syntax pkgconf
+ (identifier-syntax (pkgconf-for-target (%current-target-system))))
+
+(define-syntax pkgconf-as-pkg-config
+ (identifier-syntax (pkgconf-as-pkg-config-for-target
+ (%current-target-system))))
+
+
+;;;
+;;; pkg-config packages for native use (build-time only).
+;;;
+(define (make-pkg-config-for-build pkg-config)
+ "Return a `pkg-config' package from PKG-CONFIG for use by the builder when
+cross-compiling, that honors a PKG_CONFIG_PATH_FOR_BUILD search path instead
+of PKG_CONFIG_PATH, to avoid conflicting with the target `pkg-config'."
+ (package
+ (inherit (hidden-package pkg-config))
+ (name "pkg-config-for-build")
+ (version "0")
+ (source #f)
+ (build-system trivial-build-system)
+ (inputs (list bash-minimal pkg-config))
+ (arguments
+ (list
+ #:modules '((guix build utils))
+ #:builder
+ #~(begin
+ (use-modules (guix build utils))
+ (define where (string-append #$output "/bin/pkg-config"))
+ (mkdir-p (dirname where))
+ (call-with-output-file where
+ (lambda (port)
+ (format port "#!~a
+export PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH_FOR_BUILD\"
+exec ~a \"$@\""
+ (search-input-file %build-inputs "bin/bash")
+ (search-input-file %build-inputs "bin/pkg-config"))))
+ (chmod where #o500))))
+ (native-search-paths
+ (map (lambda (original)
+ (search-path-specification
+ (inherit original)
+ (variable "PKG_CONFIG_PATH_FOR_BUILD")))
+ (package-native-search-paths pkg-config)))))
+
+(define-public pkg-config-for-build
+ (make-pkg-config-for-build %pkg-config))
+
+(define-public pkgconf-as-pkg-config-for-build
+ (make-pkg-config-for-build %pkgconf-as-pkg-config))
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 08/20] gnu: pkg-config: Alias to pkgconf-as-pkg-config.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
f6f3b6c5b58a2d16b3ccb947bbaffa65cac48b1a.1708618218.git.maxim.cournoyer@gmail.com
This switches the default pkg-config implementation used in Guix to pkgconf.

* gnu/packages/pkg-config.scm (pkg-config): Define as pkgconf-as-pkg-config.
(%pkgconf-with-tests): Renamed from %pkgconf.
(%pkgconf): New minimal variant to avoid circular dependencies for bootstrap
sensitive packages.
(%pkgconf-as-pkg-config): Delete now inherited hidden property.
* gnu/packages/commencement.scm (make-gnu-make-final): Replace %pkg-config
with %pkgconf-as-pkg-config.

Change-Id: Id2b9f40f8f09babae9c6dfc47d1de071ce78e011
---

gnu/packages/commencement.scm | 13 ++++++-------
gnu/packages/pkg-config.scm | 25 +++++++++++++++++++++----
2 files changed, 27 insertions(+), 11 deletions(-)

Toggle diff (105 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 3e5e21ca03..e9474a797e 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3346,13 +3346,13 @@ (define with-boot5 with-boot4)
(define (make-gnu-make-final)
"Compute the final GNU Make, which uses the final Guile."
+ ;; Avoid a circular dependency by creating a new bootstrap pkg-config
+ ;; variant.
(let ((pkg-config (package
- (inherit %pkg-config) ;the native pkg-config
- (inputs `(("guile" ,guile-final)
- ,@(%boot5-inputs)))
- (arguments
- `(#:implicit-inputs? #f
- ,@(package-arguments %pkg-config))))))
+ ;; Refer to %pkgconf-as-pkg-config instead of
+ ;; pkgconf-as-pkg-config to ensure native package is
+ ;; used.
+ (inherit (with-boot5 %pkgconf-as-pkg-config)))))
(package
(inherit (package-with-bootstrap-guile gnu-make))
(inputs `(("guile" ,guile-final)
@@ -3362,7 +3362,6 @@ (define (make-gnu-make-final)
`(#:implicit-inputs? #f
,@(package-arguments gnu-make))))))
-
(define coreutils-final
;; The final Coreutils. Treat them specially because some packages, such as
;; Findutils, keep a reference to the Coreutils they were built with.
diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
index e8d63be3d7..934449aad2 100644
--- a/gnu/packages/pkg-config.scm
+++ b/gnu/packages/pkg-config.scm
@@ -31,7 +31,9 @@ (define-module (gnu packages pkg-config)
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (guix memoization)
- #:export (pkg-config
+ #:use-module (srfi srfi-1)
+ #:export (old-pkg-config ;the original
+ pkg-config ;alias for pkgconf-as-pkg-config
pkgconf
pkgconf-as-pkg-config))
@@ -89,7 +91,9 @@ (define-public %pkg-config
it can be used for defining the location of documentation tools, for
instance.")))
-(define-public %pkgconf
+;;; This is the package exposed to the CLI, to ease updates via 'guix
+;;; refresh'.
+(define-public %pkgconf-with-tests
(package
(name "pkgconf")
(version "2.1.0")
@@ -119,6 +123,13 @@ (define-public %pkgconf
pkgconf.")
(license isc)))
+;;; This is the minimal, untested variant used to avoid circular dependencies.
+(define-public %pkgconf
+ (hidden-package
+ (package/inherit %pkgconf-with-tests
+ (arguments (list #:tests? #f))
+ (native-inputs '()))))
+
(define-public %pkgconf-as-pkg-config
(package/inherit %pkgconf
(name "pkgconf-as-pkg-config")
@@ -145,7 +156,8 @@ (define-public %pkgconf-as-pkg-config
(string-append #$output "/share/aclocal"))))))))
(native-inputs '())
(inputs (list %pkgconf))
- (propagated-inputs '())))
+ (propagated-inputs '())
+ (properties (alist-delete 'hidden? (package-properties %pkgconf)))))
;;;
@@ -220,7 +232,7 @@ (define pkgconf-as-pkg-config-for-target
;; These are a hacks for automatically choosing the native or the cross
;; `pkg-config' depending on whether it's being used in a cross-build
;; environment or not.
-(define-syntax pkg-config
+(define-syntax old-pkg-config
(identifier-syntax (pkg-config-for-target (%current-target-system))))
(define-syntax pkgconf
@@ -230,6 +242,11 @@ (define-syntax pkgconf-as-pkg-config
(identifier-syntax (pkgconf-as-pkg-config-for-target
(%current-target-system))))
+;;; This alias is to ensure we use pkgconf instead of pkg-config across Guix,
+;;; which includes welcome refinements such as proper handling of the
+;;; Requires.private field.
+(define pkg-config pkgconf-as-pkg-config)
+
;;;
;;; pkg-config packages for native use (build-time only).
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 10/20] gnu: autotrace: Update to 0.31.10.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
800c0ecbf4bf3f264967bd0009a67fd7a16b1ef9.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/graphics.scm (autotrace): Update to 0.31.10.
[inputs]: Add pango.

Change-Id: I26abf2ee1a2c031062a2cdfa1ac4c02cd7474614
---

gnu/packages/graphics.scm | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)

Toggle diff (37 lines)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 17a388beea..bc7bdc124c 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -382,7 +382,7 @@ (define-public fox
(define-public autotrace
(package
(name "autotrace")
- (version "0.31.9")
+ (version "0.31.10")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -391,7 +391,7 @@ (define-public autotrace
(file-name (git-file-name name version))
(sha256
(base32
- "0fsg13pg72ac51l3fkzvyf7h9mzbvfxp9vfjfiwkyvx6hbm83apj"))))
+ "0ai91c567c5z560s4zjgjclgca1pm61h8cb8c8q84wg3xvkhmc9x"))))
(build-system gnu-build-system)
(arguments
(list #:configure-flags #~'("--disable-static")
@@ -419,7 +419,11 @@ (define-public autotrace
imagemagick
libjpeg-turbo
libpng
- pstoedit))
+ pstoedit
+ ;; pango is required because of libtool, from the imagemagick
+ ;; library files (.la), which records all its transitive
+ ;; dependencies.
+ pango))
(home-page "https://github.com/autotrace/autotrace")
(synopsis "Bitmap to vector graphics converter")
(description "AutoTrace is a utility for converting bitmap into vector
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 11/20] gnu: autotrace: Remove libtool archives.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
b5f6d4ec7c18dc3e09d00b5b1f3bba5be1d0eafa.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/graphics.scm (autotrace)
[arguments] <phases>: Add remove-libtool-archives phase.

Change-Id: Icd8dcf86592231e958db1ebe723e3ec6f902e0bd
---

gnu/packages/graphics.scm | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index bc7bdc124c..fa33dce747 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -405,7 +405,16 @@ (define-public autotrace
;; or IMAGEMAGICK_; fix that.
(substitute* "autotrace.pc.in"
(("@MAGICK_(LIBS|CFLAGS)@" _ var)
- (string-append "@IMAGEMAGICK_" var "@"))))))))
+ (string-append "@IMAGEMAGICK_" var "@")))))
+ (add-after 'install 'remove-libtool-archives
+ ;; Libtool archives lists the whole transitive dependencies,
+ ;; which is unnecessary unless producing static archives and
+ ;; leads to overlinking, e.g. causing the build of inkscape
+ ;; to fail due to looking for a transitive pstoedit library.
+ (lambda _
+ (for-each delete-file
+ (find-files (string-append #$output "/lib")
+ "\\.la$")))))))
(native-inputs
(list which
autoconf
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 12/20] gnu: autotrace: Fix pkg-config file.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
3e8e430a00b87e5980b15b128a5dec144d16c120.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/patches/autotrace-pkg-config.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/graphics.scm (autotrace) [source]: Apply it.

Change-Id: Id2086a5e1e1faa48d16ee8faae6960aaf7602321
---

gnu/local.mk | 1 +
gnu/packages/graphics.scm | 3 +-
.../patches/autotrace-pkg-config.patch | 123 ++++++++++++++++++
3 files changed, 126 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/autotrace-pkg-config.patch

Toggle diff (157 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 9db2e39c45..c072d5af85 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -956,6 +956,7 @@ dist_patch_DATA = \
%D%/packages/patches/audiofile-hurd.patch \
%D%/packages/patches/audiofile-function-signature.patch \
%D%/packages/patches/automake-skip-amhello-tests.patch \
+ %D%/packages/patches/autotrace-pkg-config.patch \
%D%/packages/patches/avahi-localstatedir.patch \
%D%/packages/patches/avidemux-install-to-lib.patch \
%D%/packages/patches/awesome-reproducible-png.patch \
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index fa33dce747..01cd55f33b 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -391,7 +391,8 @@ (define-public autotrace
(file-name (git-file-name name version))
(sha256
(base32
- "0ai91c567c5z560s4zjgjclgca1pm61h8cb8c8q84wg3xvkhmc9x"))))
+ "0ai91c567c5z560s4zjgjclgca1pm61h8cb8c8q84wg3xvkhmc9x"))
+ (patches (search-patches "autotrace-pkg-config.patch"))))
(build-system gnu-build-system)
(arguments
(list #:configure-flags #~'("--disable-static")
diff --git a/gnu/packages/patches/autotrace-pkg-config.patch b/gnu/packages/patches/autotrace-pkg-config.patch
new file mode 100644
index 0000000000..eef1008bf2
--- /dev/null
+++ b/gnu/packages/patches/autotrace-pkg-config.patch
@@ -0,0 +1,123 @@
+Submitted upstream: https://github.com/autotrace/autotrace/pull/128
+
+diff --git a/Makefile.am b/Makefile.am
+index ea6eadd..cd9de37 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -127,7 +127,18 @@ autotraceinclude_HEADERS=\
+ src/exception.h \
+ src/color.h
+
+-libautotrace_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
++libautotrace_la_LDFLAGS = \
++ -version-info \
++ $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
++ $(GRAPHICSMAGICK_LIBS) \
++ $(IMAGEMAGICK_LIBS) \
++ $(LIBPNG_LIBS) \
++ $(LIBSWF_LIBS) \
++ $(LIBPSTOEDIT_LIBS) \
++ $(GLIB2_LIBS) \
++ $(POPT_LIBS) \
++ $(INTLLIBS) \
++ -lm
+
+ #
+ # noinst_HEADERS: headers shared between lib and bin.
+@@ -143,17 +154,7 @@ autotrace_SOURCES=\
+
+ AM_CPPFLAGS = $(GRAPHICSMAGICK_CFLAGS) $(IMAGEMAGICK_CFLAGS) $(LIBPSTOEDIT_CFLAGS) $(LIBSWF_CFLAGS) $(GLIB2_CFLAGS) -DLOCALEDIR=\""$(datadir)/locale"\"
+
+-autotrace_LDADD = \
+- libautotrace.la \
+- $(GRAPHICSMAGICK_LIBS) \
+- $(IMAGEMAGICK_LIBS) \
+- $(LIBPNG_LIBS) \
+- $(LIBSWF_LIBS) \
+- $(LIBPSTOEDIT_LIBS) \
+- $(GLIB2_LIBS) \
+- $(POPT_LIBS) \
+- $(INTLLIBS) \
+- -lm
++autotrace_LDADD = libautotrace.la
+
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA= autotrace.pc
+diff --git a/autotrace.pc.in b/autotrace.pc.in
+index 4c2e581..c70808e 100644
+--- a/autotrace.pc.in
++++ b/autotrace.pc.in
+@@ -6,6 +6,6 @@ includedir=@includedir@
+ Name: Autotrace
+ Description: a utility that converts bitmap to vector graphics
+ Version: @VERSION@
+-Requires:
+-Libs: -L@libdir@ -lautotrace @LIBPNG_LIBS@ @MAGICK_LIBS@ @LIBSWF_LIBS@ @LIBPSTOEDIT_LIBS@ @GLIB2_LIBS@
+-Cflags: -I@includedir@ @MAGICK_CFLAGS@ @LIBPSTOEDIT_CFLAGS@ @GLIB2_CFLAGS@
++Requires.private: glib-2.0 >= 2.0 gmodule-2.0 >= 2.0 gthread-2.0 >= 2.0 gobject-2.0 >= 2.0 @REQUIRES_PRIVATE@
++Libs: -L@libdir@ -lautotrace
++Cflags: -I@includedir@
+diff --git a/configure.ac b/configure.ac
+index 43b6fea..e6cf262 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -85,7 +85,8 @@ else
+ if test "x${with_magick}" = xGraphicsMagick; then
+ PKG_CHECK_MODULES([GRAPHICSMAGICK],
+ [GraphicsMagick >= 1.3.40],
+- [HAVE_MAGICK=yes
++ [REQUIRES_PRIVATE="${REQUIRES_PRIVATE}GraphicsMagick >= 1.3.40 "
++ HAVE_MAGICK=yes
+ HAVE_GRAPHICSMAGICK=yes
+ MAGICK_LIBRARY=GraphicsMagick
+ AC_DEFINE(HAVE_GRAPHICSMAGICK, 1, [GraphicsMagick library is available.])
+@@ -97,13 +98,15 @@ else
+ if test "x${with_magick}" = xImageMagick; then
+ PKG_CHECK_MODULES([IMAGEMAGICK7],
+ [ImageMagick >= 7.0.1],
+- [HAVE_IMAGEMAGICK7=yes
++ [REQUIRES_PRIVATE="${REQUIRES_PRIVATE}ImageMagick >= 7.0.1 "
++ HAVE_IMAGEMAGICK7=yes
+ AC_DEFINE(HAVE_IMAGEMAGICK7, 1, [ImageMagick version 7 or higher is available.])
+ ],[]
+ )
+ PKG_CHECK_MODULES([IMAGEMAGICK],
+ [ImageMagick >= 5.2.1],
+- [HAVE_MAGICK=yes
++ [REQUIRES_PRIVATE="${REQUIRES_PRIVATE}ImageMagick >= 5.2.1 "
++ HAVE_MAGICK=yes
+ HAVE_IMAGEMAGICK=yes
+ MAGICK_LIBRARY=ImageMagick
+ AC_DEFINE(HAVE_IMAGEMAGICK, 1, [ImageMagick library is available.])
+@@ -140,6 +143,7 @@ HAVE_LIBPNG=no
+ if test "x${with_png}" = xyes; then
+ PKG_CHECK_MODULES([LIBPNG],[libpng],
+ [
++ REQUIRES_PRIVATE="${REQUIRES_PRIVATE}libpng "
+ HAVE_LIBPNG=yes
+ AC_DEFINE(HAVE_LIBPNG,1,[PNG library is available or not])
+ ],
+@@ -165,6 +169,7 @@ if test "${swf_header_found}" = yes ; then
+ PKG_CHECK_MODULES([LIBSWF],
+ [libming],
+ [
++ REQUIRES_PRIVATE="${REQUIRES_PRIVATE}libming "
+ HAVE_LIBSWF=yes
+ AC_DEFINE(HAVE_LIBSWF,1,[SWF library is available or not])
+ ],
+@@ -187,6 +192,7 @@ if test "x${with_pstoedit}" = xyes; then
+ PKG_CHECK_MODULES([LIBPSTOEDIT],
+ [pstoedit >= 3.32.0],
+ [
++ REQUIRES_PRIVATE="${REQUIRES_PRIVATE}pstoedit >= 3.32.0 "
+ HAVE_LIBPSTOEDIT=yes
+ AC_DEFINE(HAVE_LIBPSTOEDIT,1,[pstoedit library is available or not])
+ ],
+@@ -210,6 +216,7 @@ fi
+
+ dnl po/Makefile.in FIXME FIXME FIXME
+ AC_CONFIG_FILES([po/Makefile.in Makefile autotrace.pc])
++AC_SUBST([REQUIRES_PRIVATE])
+ AC_OUTPUT
+
+ echo "
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 13/20] gnu: gd: Update to 2.3.3.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
9fbceb8f7b95fe102ced8ff3793008759bacaad8.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/gd.scm (gd): Update to 2.3.3.
[source]: Remove obsolete gd-Revert-fix-303-gdlib.pc.patch patch.
[arguments] Use gexps.
<phases>: Remove disable-failing-test phase. Add remove-libtool-archives
phase.
* gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): De-register it.

Change-Id: I8cddf29d123ca0b66cc0540666c875039e753482
---

gnu/local.mk | 1 -
gnu/packages/gd.scm | 57 +++---
.../patches/gd-Revert-fix-303-gdlib.pc.patch | 179 ------------------
3 files changed, 28 insertions(+), 209 deletions(-)
delete mode 100644 gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch

Toggle diff (120 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index c072d5af85..94b4620c02 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1294,7 +1294,6 @@ dist_patch_DATA = \
%D%/packages/patches/gcolor3-update-libportal-usage.patch \
%D%/packages/patches/gd-fix-tests-on-i686.patch \
%D%/packages/patches/gd-brect-bounds.patch \
- %D%/packages/patches/gd-Revert-fix-303-gdlib.pc.patch \
%D%/packages/patches/gdm-default-session.patch \
%D%/packages/patches/gdm-elogind-support.patch \
%D%/packages/patches/gdm-remove-hardcoded-xwayland-path.patch \
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index 149b82468c..21ad1579ec 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -43,38 +44,36 @@ (define-public gd
;; Note: With libgd.org now pointing to github.com, genuine old
;; tarballs are no longer available. Notably, versions 2.0.x are
;; missing.
- (version "2.3.2")
+ (version "2.3.3")
(source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/libgd/libgd/releases/download/gd-"
- version "/libgd-" version ".tar.xz"))
- (sha256
- (base32
- "1yypywkh8vphcy4qqpf51kxpb0a3r7rjqk3fc61rpn70hiq092j7"))
- (patches
- (search-patches "gd-fix-tests-on-i686.patch"
- "gd-brect-bounds.patch"
- ;; Drop when
- ;; https://github.com/libgd/libgd/issues/691
- ;; is solved.
- "gd-Revert-fix-303-gdlib.pc.patch"))))
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/libgd/libgd/releases/download/gd-"
+ version "/libgd-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0qas3q9xz3wgw06dm2fj0i189rain6n60z1vyq50d5h7wbn25s1z"))
+ (patches
+ (search-patches "gd-fix-tests-on-i686.patch"
+ "gd-brect-bounds.patch"))))
(build-system gnu-build-system)
(arguments
- ;; As recommended by github.com/libgd/libgd/issues/278 to fix rounding
- ;; issues on aarch64 and other architectures.
- `(#:make-flags '("CFLAGS=-ffp-contract=off")
- #:configure-flags '("--disable-static")
- #:phases
- (modify-phases %standard-phases
- ;; This test is known to fail on most architectures:
- ;; https://github.com/libgd/libgd/issues/359
- ;; TODO Replace this substitution with an upstream bug fix.
- (add-after 'unpack 'disable-failing-test
- (lambda _
- (substitute* "tests/gdimagegrayscale/basic.c"
- (("return gdNumFailures\\(\\)")
- "return 0")))))))
+ ;; As recommended by github.com/libgd/libgd/issues/278 to fix rounding
+ ;; issues on aarch64 and other architectures.
+ (list #:make-flags #~(list "CFLAGS=-ffp-contract=off")
+ #:configure-flags #~(list "--disable-static")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'remove-libtool-archives
+ ;; Libtool archives lists the whole transitive dependencies,
+ ;; which is unnecessary unless producing static archives and
+ ;; leads to overlinking, e.g. causing the configure script of
+ ;; texlive-bin to fail due to looking for a transitive jpeg
+ ;; library.
+ (lambda _
+ (for-each delete-file
+ (find-files (string-append #$output "/lib")
+ "\\.la$")))))))
(native-inputs
(list pkg-config))
(inputs
diff --git a/gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch b/gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch
deleted file mode 100644
index 6329b129d3..0000000000
--- a/gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch
+++ /dev/null
@@ -1,179 +0,0 @@
-From 9b31dfda73ee2d1b56b3f0dcfd3246c2faa592fe Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?L=C3=A9o=20Le=20Bouter?= <lle-bout@zaclys.net>
-Date: Sun, 28 Mar 2021 19:47:25 +0200
-Subject: [PATCH] Revert "fix #303: gdlib.pc: use Requires instead of Libs
- (#537)"
-
-This reverts commit 28ecfe77c817aff8ce56422d3e4e8533a281bc76.
----
- CMakeLists.txt | 12 ------------
- config/gdlib.pc.cmake | 4 +---
- config/gdlib.pc.in | 4 +---
- configure.ac | 11 +----------
- src/CMakeLists.txt | 6 ------
- 5 files changed, 3 insertions(+), 34 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 57cd95d..6bd0c73 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -53,8 +53,6 @@ SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
- "Single Directory for all static libraries."
- )
-
--SET(PKG_REQUIRES_PRIVATES "")
--
- if (USE_EXT_GD)
- message("Using GD at: ${USE_EXT_GD}")
- INCLUDE_DIRECTORIES(BEFORE ${GD_INCLUDE_DIR})
-@@ -170,13 +168,11 @@ else (USE_EXT_GD)
- INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS})
- SET(HAVE_FT2BUILD_H 1)
- SET(HAVE_LIBFREETYPE 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES freetype2)
- ENDIF(FREETYPE_FOUND)
-
- IF(ZLIB_FOUND)
- INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
- SET(HAVE_LIBZ 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES zlib)
- ENDIF(ZLIB_FOUND)
-
- IF(WEBP_FOUND)
-@@ -192,7 +188,6 @@ else (USE_EXT_GD)
- IF(PNG_FOUND)
- INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
- SET(HAVE_LIBPNG 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES libpng)
- ENDIF(PNG_FOUND)
-
- IF(ICONV_FOUND)
-@@ -209,25 +204,21 @@ else (USE_EXT_GD)
- IF(XPM_FOUND)
- INCLUDE_DIRECTORIES(${XPM_INCLUDE_DIR})
- SET(HAVE_LIBXPM 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES xpm)
- ENDIF(XPM_FOUND)
-
- IF(JPEG_FOUND)
- INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR})
- SET(HAVE_LIBJPEG 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES libjpeg)
- ENDIF(JPEG_FOUND)
-
- IF(TIFF_FOUND)
- INCLUDE_DIRECTORIES(${TIFF_INCLUDE_DIR})
- SET(HAVE_LIBTIFF 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES libtiff-4)
- ENDIF(TIFF_FOUND)
-
- IF(FONTCONFIG_FOUND)
- INCLUDE_DIRECTORIES(${FONTCONFIG_INCLUDE_DIR})
- SET(HAVE_LIBFONTCONFIG 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES fontconfig)
- ELSE (FONTCONFIG_FOUND)
- SET(FONTCONFIG_LIBRARY "")
- SET(FONTCONFIG_INCLUDE_DIR "")
-@@ -236,11 +227,8 @@ else (USE_EXT_GD)
-
- IF(RAQM_FOUND)
- INCLUDE_DIRECTORIES(${RAQM_INCLUDE_DIR})
-- SET(HAVE_RAQM 1)
-- LIST(APPEND PKG_REQUIRES_PRIVAES raqm)
- ENDIF(RAQM_FOUND)
-
-- string(REPLACE ";" ", " PKG_REQUIRES_PRIVATES "${PKG_REQUIRES_PRIVATES}")
- SET(HAVE_CONFIG_H 1)
-
- ADD_DEFINITIONS(-DHAVE_CONFIG_H)
-diff --git a/config/gdlib.pc.cmake b/config/gdlib.pc.cmake
-index 5fc8af4..d1a0dda 100644
---- a/config/gdlib.pc.cmake
-+++ b/config/gdlib.pc.cmake
-@@ -6,8 +6,6 @@ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
- Name: gd
- Description: GD graphics library
- Version: @GDLIB_VERSION@
--Requires:
--Requires.private: @PKG_REQUIRES_PRIVATES@
- Cflags: -I${includedir}
--Libs.private: @LIBS_PRIVATES@
-+Libs.private: @LIBGD_DEP_LIBS@
- Libs: -L${libdir} -lgd
-diff --git a/config/gdlib.pc.in b/config/gdlib.pc.in
-index d6bc375..b980a60 100644
---- a/config/gdlib.pc.in
-+++ b/config/gdlib.pc.in
-@@ -6,8 +6,6 @@ includedir=@includedir@
- Name: gd
- Description: GD graphics library
- Version: @VERSION@
--Requires:
--Requires.private: @PKG_REQUIRES_PRIVATES@
- Cflags: -I${includedir}
--Libs.private: @LIBS_PRIVATES@ @LIBICONV@
-+Libs.private: @LIBS@ @LIBICONV@
- Libs: -L${libdir} -lgd
-diff --git a/configure.ac b/configure.ac
-index 535db68..329c99c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -33,9 +33,6 @@ AC_SUBST(GDLIB_LT_CURRENT)
- AC_SUBST(GDLIB_LT_REVISION)
- AC_SUBST(GDLIB_LT_AGE)
-
--AC_SUBST(LIBS_PRIVATES)
--AC_SUBST(PKG_REQUIRES_PRIVATES)
--
- AM_INIT_AUTOMAKE([1.11 foreign dist-xz -Wall -Werror subdir-objects])
- AC_CONFIG_HEADERS([src/config.h:src/config.hin])
-
-@@ -133,7 +130,6 @@ m4_define([GD_LIB_CHECK], [dnl
- AC_MSG_RESULT([$gd_with_lib])
-
- gd_found_lib=no
-- gd_require_pkg_name=""
- if test "$gd_with_lib" != "no"; then
- save_CPPFLAGS=$CPPFLAGS
- save_LDFLAGS=$LDFLAGS
-@@ -165,11 +161,6 @@ m4_define([GD_LIB_CHECK], [dnl
- $1][_CFLAGS="$gd_lib_cflags $][$1][_CFLAGS"
- AS_VAR_APPEND([LIBS], [" $][$1][_LIBS"])
- AS_VAR_APPEND([CPPFLAGS], [" $][$1][_CFLAGS"])
-- if test -z "$gd_require_pkg_name"; then
-- AS_VAR_APPEND([LIBS_PRIVATES], [" $][$1][_LIBS"])
-- else
-- AS_VAR_APPEND([PKG_REQUIRES_PRIVATES], [" $gd_require_pkg_name"])
-- fi
- elif test "$gd_with_lib" = "yes"; then
- AC_MSG_ERROR([$3 requested but not found])
- else
-@@ -189,7 +180,7 @@ dnl $4 - pkg-config module to look for
- dnl $5 - fallback test for the feature
- m4_define([GD_LIB_PKG_CHECK], [dnl
- GD_LIB_CHECK([$1], [$2], [$3], [dnl
-- PKG_CHECK_MODULES([$1], [$4], [gd_found_lib=yes gd_require_pkg_name="$4"], [$5])
-+ PKG_CHECK_MODULES([$1], [$4], [gd_found_lib=yes], [$5])
- ])
- ])
-
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 509c422..49adbd6 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -142,12 +142,6 @@ if (BUILD_STATIC_LIBS)
- target_link_libraries(${GD_LIB_STATIC} ${LIBGD_DEP_LIBS})
- endif()
-
--SET(LIBS_PRIVATES
-- ${ICONV_LIBRARIES}
-- ${LIQ_LIBRARIES}
-- ${WEBP_LIBRARIES}
--)
--
- set(GD_PROGRAMS gdcmpgif)
-
- if (PNG_FOUND)
---
-2.31.1
-
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 14/20] gnu: lib2geom: Update to 1.3.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
8e60efd2ad00fc0dc4b441eb3e8ad565a4745d53.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/graphics.scm (lib2geom): Update to 1.3.

Change-Id: Icac0c5674e39709ac85880ad7b22149b8fe30806
---

gnu/packages/graphics.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 01cd55f33b..003a24d65b 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -895,7 +895,7 @@ (define-public ilmbase
(define-public lib2geom
(package
(name "lib2geom")
- (version "1.2")
+ (version "1.3")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -904,7 +904,7 @@ (define-public lib2geom
(file-name (git-file-name name version))
(sha256
(base32
- "0dq981g894hmvhd6rmfl1w32mksg9hpvpjs1qvfxrnz87rhkknj8"))))
+ "1ypcn0yxk9ny7qg8s8h3px2wpimhfgkwk7x1548ky12iqmdjjmcn"))))
(build-system cmake-build-system)
(arguments
`(#:imported-modules ((guix build python-build-system)
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 15/20] gnu: inkscape: Truly enable ImageMagic support.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
f0167a7ca79e8d992b44180f6ceb5cae5d53128b.1708618218.git.maxim.cournoyer@gmail.com
This was commented out for testing and erroneously committed in commit
b4a6b1ba93844d7373c58237cb0b742352dec954 ("gnu: inkscape/stable: Build stable
variant without imagemagick support.").

* gnu/packages/inkscape.scm (inkscape)
[configure-flags]: Delete inherited "-DWITH_IMAGE_MAGICK=OFF" flag.

Change-Id: I6d616a5bfc40c9ebef65aceb711c6541a523bad8
---

gnu/packages/inkscape.scm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

Toggle diff (19 lines)
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index bf87ebc8a2..db871dc904 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -305,9 +305,9 @@ (define-public inkscape
(build-system cmake-build-system)
(arguments
(substitute-keyword-arguments (package-arguments inkscape/stable)
- ;; ((#:configure-flags flags ''())
- ;; ;; Enable ImageMagick support.
- ;; #~(delete "-DWITH_IMAGE_MAGICK=OFF" #$flags))
+ ((#:configure-flags flags ''())
+ ;; Enable ImageMagick support.
+ #~(delete "-DWITH_IMAGE_MAGICK=OFF" #$flags))
((#:phases phases)
#~(modify-phases #$phases
(replace 'wrap-program
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 16/20] gnu: lib2geom: Use gexps and remove input labels.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
1c789f89d47494d62e828652d286adff19299e1c.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/graphics.scm (lib2geom) [arguments]: Use gexps.
Add #:modules argument.
[native-inputs, inputs, propagated-inputs]: Remove labels.

Change-Id: Ia61ff5e8aa1f64231c98b1fb7f31a49513ede7f8
---

gnu/packages/graphics.scm | 75 +++++++++++++++++----------------------
1 file changed, 33 insertions(+), 42 deletions(-)

Toggle diff (89 lines)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 003a24d65b..a565000180 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -907,49 +907,40 @@ (define-public lib2geom
"1ypcn0yxk9ny7qg8s8h3px2wpimhfgkwk7x1548ky12iqmdjjmcn"))))
(build-system cmake-build-system)
(arguments
- `(#:imported-modules ((guix build python-build-system)
+ (list
+ #:imported-modules `((guix build python-build-system)
,@%cmake-build-system-modules)
- #:configure-flags '("-D2GEOM_BUILD_SHARED=ON"
- "-D2GEOM_BOOST_PYTHON=ON"
- ;; Compiling the Cython bindings fail (see:
- ;; https://gitlab.com/inkscape/lib2geom/issues/21).
- "-D2GEOM_CYTHON_BINDINGS=OFF")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-python-lib-install-path
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((python-version (@ (guix build python-build-system)
- python-version))
- (python-maj-min-version (python-version
- (assoc-ref inputs "python")))
- (site-package (string-append
- (assoc-ref outputs "out")
- "/lib/python" python-maj-min-version
- "/site-packages")))
- (substitute* '("src/cython/CMakeLists.txt"
- "src/py2geom/CMakeLists.txt")
- (("PYTHON_LIB_INSTALL \"[^\"]*\"")
- (format #f "PYTHON_LIB_INSTALL ~s" site-package))))))
- ,@(if (target-x86-32?)
- `((add-after 'unpack 'skip-faulty-test
- (lambda _
- ;; This test fails on i686 when comparing floating point
- ;; values, probably due to excess precision. However,
- ;; '-fexcess-precision' is not implemented for C++ in
- ;; GCC 10 so just skip it.
- (substitute* "tests/CMakeLists.txt"
- (("bezier-test") "")))))
- '()))))
- (native-inputs `(("python" ,python-wrapper)
- ("googletest" ,googletest)
- ("pkg-config" ,pkg-config)))
- (inputs `(("cairo" ,cairo)
- ("pycairo" ,python-pycairo)
- ("double-conversion" ,double-conversion)
- ("glib" ,glib)
- ("gsl" ,gsl)))
- (propagated-inputs
- (list boost)) ;referred to in 2geom/pathvector.h.
+ #:modules '((guix build cmake-build-system)
+ (guix build utils)
+ ((guix build python-build-system) #:prefix python:))
+ #:configure-flags
+ #~(list "-D2GEOM_BUILD_SHARED=ON"
+ "-D2GEOM_BOOST_PYTHON=ON"
+ ;; Compiling the Cython bindings fail (see:
+ ;; https://gitlab.com/inkscape/lib2geom/issues/21).
+ "-D2GEOM_CYTHON_BINDINGS=OFF")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-python-lib-install-path
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* '("src/cython/CMakeLists.txt"
+ "src/py2geom/CMakeLists.txt")
+ (("PYTHON_LIB_INSTALL \"[^\"]*\"")
+ (format #f "PYTHON_LIB_INSTALL ~s"
+ (python:site-packages inputs outputs))))))
+ #$@(if (target-x86-32?)
+ #~((add-after 'unpack 'skip-faulty-test
+ (lambda _
+ ;; This test fails on i686 when comparing floating point
+ ;; values, probably due to excess precision. However,
+ ;; '-fexcess-precision' is not implemented for C++ in
+ ;; GCC 10 so just skip it.
+ (substitute* "tests/CMakeLists.txt"
+ (("bezier-test") "")))))
+ #~()))))
+ (native-inputs (list python-wrapper googletest pkg-config))
+ (inputs (list cairo python-pycairo double-conversion glib gsl))
+ (propagated-inputs (list boost)) ;included in 2geom/pathvector.h
(home-page "https://gitlab.com/inkscape/lib2geom/")
(synopsis "C++ 2D graphics library")
(description "2geom is a C++ library of mathematics for paths, curves,
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 17/20] gnu: inkscape: Update to 1.3.2.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
62f3e2a9e18e12ddeca121cc7c1c29cca2609624.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/inkscape.scm (inkscape/stable): Update to 1.3.2. Remove
patches.
[configure-flags]: Add CMAKE_CXX_FLAGS flag.
[phases] Remove obsolete patch-icon-cache-generator,
disable-latex-export-tests and disable-vertical-glyph-tests phases. Add
disable-problematic-tests phase. Override check phase to disable a few test
failures caused by the lack of imagemagick.
[inputs]: Add gspell and readline. Remove aspell and gtkspell3.
(inkscape): Update to 1.3.2.
[phases]: Reset the check phase to the original.
* gnu/packages/patches/inkscape-poppler-compat.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): De-register it.

Change-Id: I391fb42db8d93a9cdc83e6fd62ca90f7458b5c49
---

gnu/local.mk | 1 -
gnu/packages/inkscape.scm | 94 +++++++++++--------
.../patches/inkscape-poppler-compat.patch | 45 ---------
3 files changed, 55 insertions(+), 85 deletions(-)
delete mode 100644 gnu/packages/patches/inkscape-poppler-compat.patch

Toggle diff (251 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 94b4620c02..28dd075f37 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1475,7 +1475,6 @@ dist_patch_DATA = \
%D%/packages/patches/idris-test-ffi008.patch \
%D%/packages/patches/igraph-fix-varargs-integer-size.patch \
%D%/packages/patches/ilmbase-fix-tests.patch \
- %D%/packages/patches/inkscape-poppler-compat.patch \
%D%/packages/patches/instead-use-games-path.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
%D%/packages/patches/irrlicht-use-system-libs.patch \
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index db871dc904..1e674add9e 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -32,7 +32,7 @@ (define-module (gnu packages inkscape)
#:use-module (guix utils)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
- #:use-module (gnu packages aspell)
+ #:use-module (gnu packages algebra)
#:use-module (gnu packages bash)
#:use-module (gnu packages bdw-gc)
#:use-module (gnu packages boost)
@@ -51,6 +51,7 @@ (define-module (gnu packages inkscape)
#:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages readline)
#:use-module (gnu packages xml)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages fontutils)
@@ -65,16 +66,15 @@ (define-public inkscape/stable
(hidden-package
(package
(name "inkscape")
- (version "1.2.1")
+ (version "1.3.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://media.inkscape.org/dl/"
"resources/file/"
"inkscape-" version ".tar.xz"))
- (patches (search-patches "inkscape-poppler-compat.patch"))
(sha256
- (base32 "06scilds4p4bw337ss22nfdxy2kynv5yjw6vq6nlpjm7xfh7vkj6"))
+ (base32 "0sq81smxwypgnp7r3wgza8w25dsz9qa8ga79sc85xzj3qi6q9lfv"))
(modules '((guix build utils)
(ice-9 format)))
(snippet
@@ -168,38 +168,18 @@ (define-public inkscape/stable
(guix build utils))
;; Disable imagemagick support in the stable variant, to reduce the
;; number of dependents of the 'imagemagick' package.
- #:configure-flags #~(list "-DWITH_IMAGE_MAGICK=OFF")
+ #:configure-flags
+ #~(list "-DWITH_IMAGE_MAGICK=OFF"
+ ;; TODO: Remove after next release, since the problematic
+ ;; libsoup/soup.h include is no longer used.
+ (string-append "-DCMAKE_CXX_FLAGS=-I"
+ (search-input-directory %build-inputs
+ "/include/libsoup-2.4")))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
(assoc-ref glib-or-gtk:%standard-phases
'generate-gdk-pixbuf-loaders-cache-file))
- (add-after 'unpack 'patch-icon-cache-generator
- (lambda _
- (substitute* "share/icons/application/CMakeLists.txt"
- (("gtk-update-icon-cache") "true"))))
- (add-after 'unpack 'disable-latex-export-tests
- ;; FIXME: For some reason the test.pdf_tex file generated by the
- ;; "--export-latex" lacks "some text" in its content when run in
- ;; the build environment. Skip the related tests.
- (lambda _
- (substitute* "testfiles/cli_tests/CMakeLists.txt"
- (("add_cli_test\\(export-latex")
- "message(TEST_DISABLED: export-latex"))))
- (add-after 'unpack 'disable-vertical-glyph-tests
- (lambda _
- ;; FIXME: These tests fail with newer Pango and Harfbuzz:
- ;; https://gitlab.com/inkscape/inkscape/-/issues/2917
- ;; https://gitlab.com/inkscape/inkscape/-/issues/3554
- ;; Simply providing older versions don't work, as we need
- ;; the full GTK stack; we could use package-input-rewriting
- ;; but then have to also downgrade pangomm and disable tests
- ;; in librsvg and GTK+. Just ignore for now.
- (substitute* "testfiles/rendering_tests/CMakeLists.txt"
- (("test-glyph-y-pos") "")
- (("text-glyphs-combining") "")
- (("text-glyphs-vertical") "")
- (("test-rtl-vertical") ""))))
#$@(if (or (target-aarch64?)
(target-ppc64le?)
(target-riscv64?))
@@ -227,7 +207,38 @@ (define-public inkscape/stable
;; as the "share/inkscape/ui/units.xml" file.
(delete 'check)
(add-after 'install 'check
- (assoc-ref %standard-phases 'check))
+ ;; Use ctest directly so that we can easily exclude problematic
+ ;; tests.
+ (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
+ (when tests?
+ ;; The following tests fails, perhaps due to building without
+ ;; ImageMagick (see:
+ ;; https://gitlab.com/inkscape/inbox/-/issues/10005).
+ (let ((job-count (if parallel-tests?
+ (number->string (parallel-job-count))
+ "1"))
+ (skipped-tests
+ (list "cli_export-type-caseinsensitive_check_output"
+ "cli_export-type_xaml_check_output"
+ "cli_export-height_export-use-hints_check_output"
+ "cli_export-plain-svg_check_output"
+ "cli_export-use-hints_export-id_check_output"
+ "cli_export-extension_svg_check_output"
+ "cli_export-extension_ps_check_output"
+ "cli_export-extension_eps_check_output"
+ "cli_export-extension_pdf_check_output"
+ "cli_export-plain-extension-svg_check_output"
+ ;; These fail non-deterministically (see:
+ ;; https://gitlab.com/inkscape/inbox/-/issues/10005).
+ "cli_export-ps-level_3_check_output"
+ "cli_export-ps-level_3_content_check_output"
+ "cli_export-ps-level_2_content_check_output"
+ "cli_export-ps-level_2_check_output")))
+ (invoke "make" "-j" job-count "tests")
+ (invoke "ctest" "-j" job-count
+ "--output-on-error"
+ "-E" (string-append
+ "(" (string-join skipped-tests "|") ")"))))))
(add-after 'install 'glib-or-gtk-compile-schemas
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
(add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
@@ -243,14 +254,13 @@ (define-public inkscape/stable
`("GDK_PIXBUF_MODULE_FILE" =
(,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))
(inputs
- (list aspell
- autotrace
+ (list autotrace
bash-minimal
gdl-minimal
gtkmm-3
gtk+
- gtkspell3
gsl
+ gspell
poppler
lib2geom
libjpeg-turbo
@@ -273,9 +283,11 @@ (define-public inkscape/stable
python-scour
python-pyserial
python-numpy
- python-lxml))
+ python-lxml
+ readline))
(native-inputs
- (list gettext-minimal
+ (list bc
+ gettext-minimal
imagemagick/stable ;for tests
`(,glib "bin")
googletest
@@ -292,7 +304,7 @@ (define-public inkscape
(package
(inherit inkscape/stable)
(name "inkscape")
- (version "1.2.1")
+ (version "1.3.2")
(source
(origin
(inherit (package-source inkscape/stable))
@@ -301,7 +313,7 @@ (define-public inkscape
"resources/file/"
"inkscape-" version ".tar.xz"))
(sha256
- (base32 "06scilds4p4bw337ss22nfdxy2kynv5yjw6vq6nlpjm7xfh7vkj6"))))
+ (base32 "0sq81smxwypgnp7r3wgza8w25dsz9qa8ga79sc85xzj3qi6q9lfv"))))
(build-system cmake-build-system)
(arguments
(substitute-keyword-arguments (package-arguments inkscape/stable)
@@ -310,6 +322,10 @@ (define-public inkscape
#~(delete "-DWITH_IMAGE_MAGICK=OFF" #$flags))
((#:phases phases)
#~(modify-phases #$phases
+ (replace 'check
+ ;; Re-instate the tests disabled in inskcape/stable, now that
+ ;; their ImageMagick requirement is satisfied.
+ (assoc-ref %standard-phases 'check))
(replace 'wrap-program
;; Ensure Python is available at runtime.
(lambda _
diff --git a/gnu/packages/patches/inkscape-poppler-compat.patch b/gnu/packages/patches/inkscape-poppler-compat.patch
deleted file mode 100644
index cb7d1c8eb3..0000000000
--- a/gnu/packages/patches/inkscape-poppler-compat.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Fix build with Poppler 22.9.0.
-
-Taken from upstream:
-
- https://gitlab.com/inkscape/inkscape/-/commit/fb00794923d19cfbb2ca4adca3ae8971553a06be
-
-diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
-index cca1e840966c7940a1af472025535042b07e3e0f..80d64c9b866d5d3dd095636a9a02571b89061af1 100644
---- a/src/extension/internal/pdfinput/pdf-parser.cpp
-+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
-@@ -697,7 +697,11 @@ void PdfParser::opSetDash(Object args[], int /*numArgs*/)
- _POPPLER_FREE(obj);
- }
- }
-+#if POPPLER_CHECK_VERSION(22, 9, 0)
-+ state->setLineDash(std::vector<double> (dash, dash + length), args[1].getNum());
-+#else
- state->setLineDash(dash, length, args[1].getNum());
-+#endif
- builder->updateStyle(state);
- }
-
-diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp
-index 12f71dd9214b95dbad6fdf7642a96cdd57f2c64a..9fc56fe63c2feee986ad1ff5018e679a0bacb665 100644
---- a/src/extension/internal/pdfinput/svg-builder.cpp
-+++ b/src/extension/internal/pdfinput/svg-builder.cpp
-@@ -389,10 +389,17 @@ void SvgBuilder::_setStrokeStyle(SPCSSAttr *css, GfxState *state) {
- sp_repr_css_set_property(css, "stroke-miterlimit", os_ml.str().c_str());
-
- // Line dash
-- double *dash_pattern;
- int dash_length;
- double dash_start;
-+#if POPPLER_CHECK_VERSION(22, 9, 0)
-+ const double *dash_pattern;
-+ const std::vector<double> &dash = state->getLineDash(&dash_start);
-+ dash_pattern = dash.data();
-+ dash_length = dash.size();
-+#else
-+ double *dash_pattern;
- state->getLineDash(&dash_pattern, &dash_length, &dash_start);
-+#endif
- if ( dash_length > 0 ) {
- Inkscape::CSSOStringStream os_array;
- for ( int i = 0 ; i < dash_length ; i++ ) {
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 19/20] gnu: inkscape: Fix Python support.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
1d93033bebd313b0962552127b226a246e5b2149.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/inkscape.scm (inkscape/stable)
[phases]: Wrap with PATH and GI_TYPELIB_PATH.
[inputs]: Sort inputs. Add python-appdirs, python-cssselect, python-pygobject
and python-requests.
(inkscape) [inputs]: Do not append python-cssselect.

Change-Id: I90a39a04a35dbcafe413726107d100c78d173fd0
---

gnu/packages/inkscape.scm | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)

Toggle diff (55 lines)
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index 5449bf8d92..aa33a0a4a3 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -245,14 +245,19 @@ (define-public inkscape/stable
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
(add-after 'install 'wrap-program
;; Ensure Python is available at runtime.
- (lambda _
+ (lambda* (#:key inputs #:allow-other-keys)
(wrap-program (string-append #$output "/bin/inkscape")
+ `("PATH" prefix
+ (,(dirname (search-input-file inputs "bin/python"))))
`("GUIX_PYTHONPATH" prefix
(,(getenv "GUIX_PYTHONPATH")))
;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
;; its own icons in pure environments.
`("GDK_PIXBUF_MODULE_FILE" =
- (,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))
+ (,(getenv "GDK_PIXBUF_MODULE_FILE")))
+ ;; Ensure GObject Introspection typelibs are found.
+ `("GI_TYPELIB_PATH" ":" prefix
+ (,(getenv "GI_TYPELIB_PATH")))))))))
(inputs
(list (librsvg-for-system) ;for the pixbuf loader
autotrace
@@ -279,9 +284,16 @@ (define-public inkscape/stable
poppler
popt
potrace
+ ;; These Python dependencies are used by the Inkscape extension
+ ;; management system. To verify that it is working, visit the
+ ;; Extensions -> Manage Extensions... menu.
+ python-appdirs
+ python-cssselect
python-lxml
python-numpy
+ python-pygobject
python-pyserial
+ python-requests
python-scour
python-wrapper
readline))
@@ -337,8 +349,7 @@ (define-public inkscape
`("GDK_PIXBUF_MODULE_FILE" =
(,(getenv "GDK_PIXBUF_MODULE_FILE"))))))))))
(inputs (modify-inputs (package-inputs inkscape/stable)
- (append imagemagick ;for libMagickCore and libMagickWand
- python-cssselect))) ;to render qrcode
+ (append imagemagick))) ;for libMagickCore and libMagickWand
(native-inputs
(modify-inputs (package-native-inputs inkscape/stable)
;; Only use 1 imagemagick across the package build.
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:09 +0100
[core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
cover.1708618218.git.maxim.cournoyer@gmail.com
As demonstrated in this series, pkgconf's improved behavior for private fields
mean we do not need to propagate them in the usual case (shared linking),
which in turn means we can reduce the number of propagated inputs.

This series also explores removing libtool archives (.la) files, as these also
introduce the need to propagate libraries. Moreover, they cause overlinking
in the context of ELF shared libraries. A future series could explore moving
these to the "static" output, when it exists, along .a file and pkg-config
files.

Maxim Cournoyer (20):
gnu: Add atf.
gnu: Add lutok.
gnu: Add kyua.
gnu: pkgconf: Enable test suite.
gnu: Add pkgconf-as-pkg-config.
gnu: pkgconf: Add $PKG_CONFIG_PATH search path.
gnu: pkgconf: Add support for cross-compilation.
gnu: pkg-config: Alias to pkgconf-as-pkg-config.
gnu: pstoedit: Update to 4.00.
gnu: autotrace: Update to 0.31.10.
gnu: autotrace: Remove libtool archives.
gnu: autotrace: Fix pkg-config file.
gnu: gd: Update to 2.3.3.
gnu: lib2geom: Update to 1.3.
gnu: inkscape: Truly enable ImageMagic support.
gnu: lib2geom: Use gexps and remove input labels.
gnu: inkscape: Update to 1.3.2.
gnu: inkscape: Sort inputs.
gnu: inkscape: Fix Python support.
Revert "gnu: mpv: Propagate most libraries."

gnu/local.mk | 7 +-
gnu/packages/check.scm | 110 ++++++-
gnu/packages/commencement.scm | 13 +-
gnu/packages/gd.scm | 57 ++--
gnu/packages/graphics.scm | 132 +++++----
gnu/packages/inkscape.scm | 149 ++++++----
gnu/packages/lua.scm | 41 +++
.../patches/atf-execute-with-shell.patch | 39 +++
.../patches/autotrace-pkg-config.patch | 123 ++++++++
.../patches/gd-Revert-fix-303-gdlib.pc.patch | 179 ------------
.../patches/inkscape-poppler-compat.patch | 45 ---
gnu/packages/patches/pstoedit-fix-gcc12.patch | 12 +
.../patches/pstoedit-fix-plainC.patch | 47 +++
gnu/packages/patches/pstoedit-pkglibdir.patch | 19 ++
gnu/packages/pkg-config.scm | 271 ++++++++++++------
gnu/packages/video.scm | 33 +--
16 files changed, 791 insertions(+), 486 deletions(-)
create mode 100644 gnu/packages/patches/atf-execute-with-shell.patch
create mode 100644 gnu/packages/patches/autotrace-pkg-config.patch
delete mode 100644 gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch
delete mode 100644 gnu/packages/patches/inkscape-poppler-compat.patch
create mode 100644 gnu/packages/patches/pstoedit-fix-gcc12.patch
create mode 100644 gnu/packages/patches/pstoedit-fix-plainC.patch
create mode 100644 gnu/packages/patches/pstoedit-pkglibdir.patch


base-commit: a0fd71f7b44ea9ef0eed7417cff604b3ada4032d
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 02/20] gnu: Add lutok.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87acb345dd391c487368583bd6fa2a47cefb40df.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/lua.scm (lutok): New variable.

Change-Id: I595b26c601c8ca8c997c86e8f8eb17fbe363a038
---

gnu/packages/lua.scm | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)

Toggle diff (71 lines)
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index 1cde6bd66c..07c803d27e 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -20,6 +20,7 @@
;;; Copyright © 2022 Leo Nikkilä <hello@lnikki.la>
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
;;; Copyright © 2023 Valter Nazianzeno <manipuladordedados@gmail.com>
+;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -48,9 +49,11 @@ (define-module (gnu packages lua)
#:use-module (guix build-system meson)
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages bash)
#:use-module (gnu packages boost)
#:use-module (gnu packages build-tools)
+ #:use-module (gnu packages check)
#:use-module (gnu packages gcc)
#:use-module (gnu packages glib)
#:use-module (gnu packages gperf)
@@ -898,6 +901,44 @@ (define-public lua5.2-bitop
(define-public lua5.1-bitop
(make-lua-bitop "lua5.1-bitop" lua-5.1))
+(define-public lutok
+ (package
+ (name "lutok")
+ (version "0.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/freebsd/lutok")
+ (commit (string-append name "-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0a2vc2wy5hasw69h1mz768ywx6c4ccl9jzzd4ixddwba3z3ha03b"))))
+ (build-system gnu-build-system)
+ ;; Disable the test suite to avoid a circular dependency on kyua.
+ (arguments (list #:tests? #f))
+ (native-inputs (list autoconf automake libtool pkg-config))
+ (inputs (list atf))
+ (propagated-inputs (list lua-5.2)) ;included in c_gate.hpp
+ (home-page "https://github.com/freebsd/lutok")
+ (synopsis "Lightweight C++ API for Lua")
+ (description "Lutok is a lightweight C++ API library for Lua.
+
+Lutok provides thin C++ wrappers around the Lua C API to ease the interaction
+between C++ and Lua. These wrappers make intensive use of @acronym{RAII,
+Resource Acquisition is Initialization} to prevent resource leakage, expose
+C++-friendly data types, report errors by means of exceptions and ensure that
+the Lua stack is always left untouched in the face of errors. The library
+also provides a small subset of miscellaneous utility functions built on top
+of the wrappers.
+
+Lutok focuses on providing a clean and safe C++ interface; the drawback is
+that it is not suitable for performance-critical environments. In order to
+implement error-safe C++ wrappers on top of a Lua C binary library, Lutok adds
+several layers or abstraction and error checking that go against the original
+spirit of the Lua C API and thus degrade performance.")
+ (license license:bsd-3)))
+
(define-public selene
(package
(name "selene")
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 20/20] Revert "gnu: mpv: Propagate most libraries."
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
f3af34287b41cecf06819630151dbe7673f0986e.1708618218.git.maxim.cournoyer@gmail.com
This reverts commit f3fdb4e041cb5740ba0b38b9ad017571f8414d33. This is made
possible by having replaced pkg-config with pkgconf, which more strictly
interprets the private fields as purely for static compilation.

Change-Id: I1c06623a4501bbcddfb80aa3cfd79a08409a08ae
---

gnu/packages/video.scm | 33 +++++++++++++--------------------
1 file changed, 13 insertions(+), 20 deletions(-)

Toggle diff (74 lines)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index c70646eccd..0746413ed8 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -2641,43 +2641,31 @@ (define-public mpv
"-Ddvdnav=enabled"
"-Dbuild-date=false")))
(native-inputs
- (list perl ;for zsh completion file
- pkg-config
- python-docutils
- python-wrapper))
+ (list perl ; for zsh completion file
+ pkg-config python-docutils python-wrapper))
;; Missing features: libguess, V4L2.
(inputs
- (list enca
- ladspa
- lcms
- libbs2b
- mpg123
- rsound
- vulkan-headers
- vulkan-loader
- yt-dlp))
- ;; XXX: These are propagated for the mpv pkg-config package, as they are
- ;; listed in Requires.private and would break 'pkg-config --exists mpv' if
- ;; unavailable.
- (propagated-inputs
(list alsa-lib
+ enca
ffmpeg
jack-1
+ ladspa
+ lcms
libass
libbluray
libcaca
+ libbs2b
libcdio-paranoia
- libdrm
- libdvdnav
libdvdread
+ libdvdnav
libjpeg-turbo
libplacebo
libva
libvdpau
libx11
libxext
- libxinerama
libxkbcommon
+ libxinerama
libxpresent
libxrandr
libxscrnsaver
@@ -2685,10 +2673,15 @@ (define-public mpv
;; XXX: lua > 5.2 is not currently supported; see meson.build
lua-5.2
mesa
+ mpg123
pulseaudio
+ rsound
shaderc
+ vulkan-headers
+ vulkan-loader
wayland
wayland-protocols
+ yt-dlp
zimg
zlib))
(home-page "https://mpv.io/")
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:29 +0100
[core-updates PATCH 01/20] gnu: Add atf.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
704c6dbd83706ec0c978998cd3853e1969246573.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/check.scm (atf): New variable.
* gnu/packages/patches/atf-execute-with-shell.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.

Change-Id: I37a57069380309382bc0ff24977a1fd165985f5e
---

gnu/local.mk | 1 +
gnu/packages/check.scm | 40 ++++++++++++++++++-
.../patches/atf-execute-with-shell.patch | 39 ++++++++++++++++++
3 files changed, 79 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/atf-execute-with-shell.patch

Toggle diff (117 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 62368f3511..34cdf6564d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -935,6 +935,7 @@ dist_patch_DATA = \
%D%/packages/patches/asli-use-system-libs.patch \
%D%/packages/patches/aspell-CVE-2019-25051.patch \
%D%/packages/patches/aspell-default-dict-dir.patch \
+ %D%/packages/patches/atf-execute-with-shell.patch \
%D%/packages/patches/ath9k-htc-firmware-binutils.patch \
%D%/packages/patches/ath9k-htc-firmware-gcc.patch \
%D%/packages/patches/ath9k-htc-firmware-gcc-compat.patch \
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 4f593cde8d..3920c5dace 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -35,7 +35,7 @@
;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
-;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Hugo Lecomte <hugo.lecomte@inria.fr>
;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022, 2023 David Elsing <david.elsing@posteo.net>
@@ -111,6 +111,44 @@ (define-module (gnu packages check)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
+(define-public atf
+ (package
+ (name "atf")
+ (version "0.21")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/freebsd/atf")
+ (commit (string-append name "-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0jwzz6g9jdi5f8v10y0wf3hq73vxyv5qqhkh832ddsj36gn8rlcz"))
+ (patches (search-patches "atf-execute-with-shell.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:configure-flags
+ #~(list (string-append "ATF_SHELL="
+ #$(this-package-input "bash-minimal")
+ "/bin/sh"))))
+ (native-inputs (list autoconf automake libtool))
+ (inputs (list bash-minimal))
+ (home-page "https://github.com/freebsd/atf")
+ (synopsis "C/C++ Automated Testing Framework libraries")
+ (description "ATF, or Automated Testing Framework, is a collection of
+libraries to write test programs in C, C++ and POSIX shell.
+
+The ATF libraries offer a simple API. The API is orthogonal through the
+various bindings, allowing developers to quickly learn how to write test
+programs in different languages.
+
+ATF-based test programs offer a consistent end-user command-line interface to
+allow both humans and automation to run the tests.
+
+ATF-based test programs rely on an execution engine to be run and this
+execution engine is not shipped with ATF. Kyua is the engine of choice.")
+ (license (list license:bsd-2 license:bsd-3))))
+
(define-public pict
(package
(name "pict")
diff --git a/gnu/packages/patches/atf-execute-with-shell.patch b/gnu/packages/patches/atf-execute-with-shell.patch
new file mode 100644
index 0000000000..bde4fb336a
--- /dev/null
+++ b/gnu/packages/patches/atf-execute-with-shell.patch
@@ -0,0 +1,39 @@
+Submitted here: https://github.com/freebsd/atf/pull/57
+
+From 098b66269b1cf1d944b8b214ceb7ce9febde3682 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Mon, 29 Jan 2024 22:35:49 -0500
+Subject: [PATCH] Fix use after free in execute_with_shell.
+
+The temporary string returned by atf::env::get would be used outside
+its statement, which is invalid and cause undefined behavior. Copy it
+to a local variable to avoid the issue.
+
+Fixes: https://github.com/freebsd/atf/issues/26
+Fixes: https://github.com/freebsd/kyua/issues/223
+
+Reported-by: Ruslan Bukin <br@bsdpad.com>
+---
+ atf-sh/atf-check.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/atf-sh/atf-check.cpp b/atf-sh/atf-check.cpp
+index 41f0b13..9d6f7a8 100644
+--- a/atf-sh/atf-check.cpp
++++ b/atf-sh/atf-check.cpp
+@@ -436,7 +436,9 @@ execute_with_shell(char* const* argv)
+ const std::string cmd = flatten_argv(argv);
+
+ const char* sh_argv[4];
+- sh_argv[0] = atf::env::get("ATF_SHELL", ATF_SHELL).c_str();
++ const std::string shell = atf::env::get("ATF_SHELL", ATF_SHELL);
++
++ sh_argv[0] = shell.c_str();
+ sh_argv[1] = "-c";
+ sh_argv[2] = cmd.c_str();
+ sh_argv[3] = NULL;
+
+base-commit: 18eb8168b70a0f934b4824b6391b55ac0b2f4fdf
+--
+2.41.0
+
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:31 +0100
control message for bug #68813
(address . control@debbugs.gnu.org)
87zfvspijx.fsf@gmail.com
retitle 68813 [PATCH core-updates] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates
quit
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 09/20] gnu: pstoedit: Update to 4.00.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
0bd56daf4bc6f8dfb9616dad8b18f5e3a9f4f689.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/graphics.scm (pstoedit): Update to 4.00.
[source]: Apply patches.
[arguments]: New field.
[inputs]: Remove labels. Add glib and pango.
* gnu/packages/patches/pstoedit-fix-gcc12.patch: New file.
* gnu/packages/patches/pstoedit-fix-plainC.patch: Likewise.
* gnu/packages/patches/pstoedit-pkglibdir.patch: Likewise.
* gnu/local.mk (dist_patch_DATA): Register them.

Change-Id: Ia17dae0ebc3e08b573b02431b10cc689a72a07dd
---

gnu/local.mk | 3 ++
gnu/packages/graphics.scm | 31 ++++++++----
gnu/packages/patches/pstoedit-fix-gcc12.patch | 12 +++++
.../patches/pstoedit-fix-plainC.patch | 47 +++++++++++++++++++
gnu/packages/patches/pstoedit-pkglibdir.patch | 19 ++++++++
5 files changed, 104 insertions(+), 8 deletions(-)
create mode 100644 gnu/packages/patches/pstoedit-fix-gcc12.patch
create mode 100644 gnu/packages/patches/pstoedit-fix-plainC.patch
create mode 100644 gnu/packages/patches/pstoedit-pkglibdir.patch

Toggle diff (171 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 34cdf6564d..9db2e39c45 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1908,6 +1908,9 @@ dist_patch_DATA = \
%D%/packages/patches/psm-disable-memory-stats.patch \
%D%/packages/patches/psm-ldflags.patch \
%D%/packages/patches/psm-repro.patch \
+ %D%/packages/patches/pstoedit-fix-gcc12.patch \
+ %D%/packages/patches/pstoedit-fix-plainC.patch \
+ %D%/packages/patches/pstoedit-pkglibdir.patch \
%D%/packages/patches/pulseaudio-fix-mult-test.patch \
%D%/packages/patches/pulseaudio-longer-test-timeout.patch \
%D%/packages/patches/pulseview-qt515-compat.patch \
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index e04834670d..17a388beea 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -21,7 +21,7 @@
;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
-;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Gabriel Arazas <foo.dogsquared@gmail.com>
;;; Copyright © 2021 Antoine Côté <antoine.cote@posteo.net>
;;; Copyright © 2021 Andy Tai <atai@atai.org>
@@ -976,23 +976,38 @@ (define-public python-booleanoperations
(define-public pstoedit
(package
(name "pstoedit")
- (version "3.77")
+ ;; Do not yet upgrade to 4.0.0, as its include file fails to compile for C
+ ;; project (see: https://github.com/reviczky/pstoedit/issues/2).
+ (version "4.00")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/pstoedit/pstoedit/"
version "/pstoedit-" version ".tar.gz"))
(sha256
(base32
- "02av76j75g5sq3bg353yl6dlllda9ihmmk4c8hvgiscix816nv4s"))))
+ "1sk2mhrjgnlz4a1650p3qxrv6av6qc66ibmy48ckspx7mfp7snh7"))
+ (patches
+ (search-patches "pstoedit-fix-gcc12.patch"
+ "pstoedit-fix-plainC.patch"
+ "pstoedit-pkglibdir.patch"))))
(build-system gnu-build-system)
+ (arguments
+ ;; Avoid keeping extraneous references to libtool exhaustively listed
+ ;; dependencies.
+ (list #:configure-flags #~(list "LDFLAGS=-Wl,--as-needed")))
(native-inputs
(list pkg-config))
(inputs
- `(("ghostscript" ,ghostscript)
- ("imagemagick" ,imagemagick)
- ("libplot" ,plotutils)
- ("libjpeg" ,libjpeg-turbo)
- ("zlib" ,zlib))) ;else libp2edrvmagick++.so fails to link
+ (list ghostscript
+ imagemagick
+ plotutils
+ libjpeg-turbo
+ libzip
+ ;; The following inputs are pulled in by libtool, from the
+ ;; imagemagick library files (.la), which records all its
+ ;; transitive dependencies.
+ glib
+ pango))
(home-page "http://www.pstoedit.net/")
(synopsis "Converter for PostScript and PDF graphics")
(description "The @code{pstoedit} utility allows translating graphics
diff --git a/gnu/packages/patches/pstoedit-fix-gcc12.patch b/gnu/packages/patches/pstoedit-fix-gcc12.patch
new file mode 100644
index 0000000000..4aeeaff818
--- /dev/null
+++ b/gnu/packages/patches/pstoedit-fix-gcc12.patch
@@ -0,0 +1,12 @@
+Retrieved from Fedora: https://src.fedoraproject.org/rpms/pstoedit/tree
+
+--- a/src/drvpptx.orig.cpp 2021-08-29 16:25:45.000000000 +0200
++++ b/src/drvpptx.cpp 2022-01-28 11:57:44.765756339 +0100
+@@ -65,6 +65,7 @@
+ #define ZIP_EXTERN extern
+
+ #include <zip.h>
++#include <memory>
+
+ #ifdef _MSC_VER
+ // MS VC++ Windows
diff --git a/gnu/packages/patches/pstoedit-fix-plainC.patch b/gnu/packages/patches/pstoedit-fix-plainC.patch
new file mode 100644
index 0000000000..684c5043be
--- /dev/null
+++ b/gnu/packages/patches/pstoedit-fix-plainC.patch
@@ -0,0 +1,47 @@
+Retrieved from Fedora: https://src.fedoraproject.org/rpms/pstoedit/tree
+
+diff --git a/src/pstoedit.cpp b/src/pstoedit.cpp
+index a718f37..ac0df37 100755
+--- a/src/pstoedit.cpp
++++ b/src/pstoedit.cpp
+@@ -327,6 +327,11 @@ extern FILE *yyin; // used by lexer
+ // otherwise we could declare it locally where it is used
+
+
++extern "C" DLLEXPORT void loadpstoeditplugins_plainC(const char *progname, int verbose)
++{
++ return loadpstoeditplugins(progname, cerr, (bool) verbose);
++}
++
+ static void usage(ostream & outstream, bool forTeX, bool withdetails, bool withcategories )
+ {
+ if (withcategories) {
+diff --git a/src/pstoedit.h b/src/pstoedit.h
+index 294b3c2..74ebf2a 100755
+--- a/src/pstoedit.h
++++ b/src/pstoedit.h
+@@ -100,8 +100,13 @@ void clearPstoeditDriverInfo_plainC(struct DriverDescription_S * ptr);
+
+ #ifdef __cplusplus
+ extern "C" DLLEXPORT
+-#endif
+ void loadpstoeditplugins(const char* progname, std::ostream & errstream, bool verbose);
++#endif
++
++#ifdef __cplusplus
++extern "C" DLLEXPORT
++#endif
++void loadpstoeditplugins_plainC(const char* progname, int verbose);
+
+ #ifdef __cplusplus
+ extern "C" DLLEXPORT
+--- a/src/pstoedit.orig.h 2023-07-22 19:27:43.691166652 +0200
++++ b/src/pstoedit.h 2023-07-22 19:31:18.897952130 +0200
+@@ -37,6 +37,7 @@
+ #endif
+
+ #include "pstoedll.h"
++#include <stdbool.h>
+
+ typedef int (*execute_interpreter_function)(int argc, const char * const argv[]);
+
diff --git a/gnu/packages/patches/pstoedit-pkglibdir.patch b/gnu/packages/patches/pstoedit-pkglibdir.patch
new file mode 100644
index 0000000000..0734913593
--- /dev/null
+++ b/gnu/packages/patches/pstoedit-pkglibdir.patch
@@ -0,0 +1,19 @@
+Retrieved from Fedora: https://src.fedoraproject.org/rpms/pstoedit/tree
+
+--- a/config/pstoedit.pc.orig.in 2018-04-16 14:26:28.000000000 +0200
++++ b/config/pstoedit.pc.in 2020-10-05 14:37:16.750980762 +0200
+@@ -1,7 +1,7 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+ libdir=@libdir@
+-includedir=@includedir@
++includedir=@includedir@/pstoedit
+
+ Name: pstoedit
+ Description: converts PostScript(TM) and PDF files to other vector graphic formats
+@@ -8,4 +8,4 @@
+ Version: @VERSION@.0
+ Requires:
+ Libs: -L@libdir@ -lpstoedit @CXX_STD_LIB@ @CXX_RUNTIME_LIB@ @LIBLD_LDFLAGS@
+-Cflags: -I@includedir@
++Cflags: -I@includedir@/pstoedit
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 06/20] gnu: pkgconf: Add $PKG_CONFIG_PATH search path.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
9f64af1ce96941910a837e4367440e528336bf5c.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/pkg-config.scm (%pkgconf)
[native-search-paths]: Add $PKG_CONFIG_PATH.

Change-Id: I6c5c20ca26a3cf21c16eb24747c250ba432a276d
---

gnu/packages/pkg-config.scm | 1 +
1 file changed, 1 insertion(+)

Toggle diff (14 lines)
diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
index a5459dd2a8..64a36b2126 100644
--- a/gnu/packages/pkg-config.scm
+++ b/gnu/packages/pkg-config.scm
@@ -189,6 +189,7 @@ (define-public pkgconf
;; Kyua requires a writable HOME.
(setenv "HOME" "/tmp"))))))
(native-inputs (list atf kyua))
+ (native-search-paths (list $PKG_CONFIG_PATH))
(home-page "http://pkgconf.org/")
(synopsis "Package compiler and linker metadata toolkit")
(description "@command{pkgconf} is a program which helps to configure
--
2.41.0
M
M
Maxim Cournoyer wrote on 22 Feb 17:10 +0100
[core-updates PATCH 18/20] gnu: inkscape: Sort inputs.
(address . 68813@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
c64f4aa58c7b6fd385f0ab3c01fee2db0343d08a.1708618218.git.maxim.cournoyer@gmail.com
* gnu/packages/inkscape.scm (inkscape/stable) [inputs]: Sort.
[native-inputs]: Likewise.

Change-Id: I64253e52bf157013e6c55361f7633cbd01dcb020
---

gnu/packages/inkscape.scm | 38 +++++++++++++++++++-------------------
1 file changed, 19 insertions(+), 19 deletions(-)

Toggle diff (69 lines)
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index 1e674add9e..5449bf8d92 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -254,43 +254,43 @@ (define-public inkscape/stable
`("GDK_PIXBUF_MODULE_FILE" =
(,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))
(inputs
- (list autotrace
+ (list (librsvg-for-system) ;for the pixbuf loader
+ autotrace
bash-minimal
+ boost
+ freetype
gdl-minimal
- gtkmm-3
- gtk+
gsl
gspell
- poppler
+ gtk+
+ gtkmm-3
+ lcms
lib2geom
+ libcdr
+ libgc
libjpeg-turbo
libpng
- libxml2
- libxslt
- libgc
- (librsvg-for-system) ;for the pixbuf loader
libsoup-minimal-2
- libcdr
libvisio
libwpd
libwpg
- freetype
+ libxml2
+ libxslt
+ poppler
popt
potrace
- lcms
- boost
- python-wrapper
- python-scour
- python-pyserial
- python-numpy
python-lxml
+ python-numpy
+ python-pyserial
+ python-scour
+ python-wrapper
readline))
(native-inputs
- (list bc
+ (list `(,glib "bin")
+ bc
gettext-minimal
- imagemagick/stable ;for tests
- `(,glib "bin")
googletest
+ imagemagick/stable ;for tests
perl
pkg-config))
(home-page "https://inkscape.org/")
--
2.41.0
L
L
Ludovic Courtès wrote on 24 Feb 12:41 +0100
Re: [bug#68813] [core-updates PATCH 08/20] gnu: pkg-config: Alias to pkgconf-as-pkg-config.
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87y1baay2p.fsf@gnu.org
Hi!

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

Toggle quote (2 lines)
> This switches the default pkg-config implementation used in Guix to pkgconf.

I didn’t follow discussions and I learned about ‘pkgconf’ only recently.
I’m afraid that adding this to ‘core-updates’ would further postpone its
merger, which was already being discussed beginning of January.

Should it instead be done on a separate branch?

(Aside: where should I read about the rationale of the pkg-config ->
pkgconf move?)

Ludo’.
M
M
Maxim Cournoyer wrote on 24 Feb 21:34 +0100
(name . Ludovic Courtès)(address . ludo@gnu.org)
87r0h1mwiw.fsf@gmail.com
Hi Ludovic,

Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (10 lines)
> Hi!
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> This switches the default pkg-config implementation used in Guix to pkgconf.
>
> I didn’t follow discussions and I learned about ‘pkgconf’ only recently.
> I’m afraid that adding this to ‘core-updates’ would further postpone its
> merger, which was already being discussed beginning of January.

Was it in a good shape to be merged back then? It seems to me we are
still ironing things fairly low in the tree such as a glibc upgrade by
jpoiret (for security reasons), which leaves the opportunity to tackle
well tested changes to it, which this one is.

Toggle quote (2 lines)
> Should it instead be done on a separate branch?

I've manually rebuilt a good chunk of the world (mpv and plasmatube)
using pkgconf, and haven't seen any breakage caused by it. You can try
do build these patches on top of current core-updates on the
hydra-guix-129 machine, which should still have it in its store.

Toggle quote (3 lines)
> (Aside: where should I read about the rationale of the pkg-config ->
> pkgconf move?)

It all started with f3fdb4e041cb5740ba0b38b9ad017571f8414d33 ("gnu: mpv:
Propagate most libraries."), which was probably triggered by mpv newly
using Requires.static fields in their pkg-config files (Meson knows to
do that). Looking for nicer alternatives to propagating these, pkgconf
picked my interested as it's supposed to fix some of the pkg-config long
time "bugs" that upstream is not too keen to fix (for backward
compatibility, I think), such as this Requires.static behavior:

Current guix, with above f3fdb4e041cb5740ba0b38b9ad017571f8414d33 commit
reverted:

Toggle snippet (7 lines)
$ ./pre-inst-env guix shell --pure pkg-config mpv \
-- pkg-config --print-errors --short-errors --exists mpv
Package 'wayland-client', required by 'mpv', not found
$ echo $?
1

Compare with:

Toggle snippet (6 lines)
$ ./pre-inst-env guix shell --pure pkg-config pkgconf mpv \
-- pkgconf --print-errors --short-errors --exists mpv
$ echo $?
0

The above demonstrates that pkgconf's behavior is to consider *.private
fields only when provided the --static option, which is what we want.

I hope this helps understanding the rationale.

--
Thanks,
Maxim
L
L
Ludovic Courtès wrote on 24 Feb 23:33 +0100
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
874jdx5w7q.fsf@gnu.org
Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

Toggle quote (14 lines)
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> Hi!
>>
>> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>>
>>> This switches the default pkg-config implementation used in Guix to pkgconf.
>>
>> I didn’t follow discussions and I learned about ‘pkgconf’ only recently.
>> I’m afraid that adding this to ‘core-updates’ would further postpone its
>> merger, which was already being discussed beginning of January.
>
> Was it in a good shape to be merged back then?

No, it wasn’t:
But a lot of work has gone into the branch since that time that goes way
beyond “fixing problems”.

[...]

Toggle quote (5 lines)
> I've manually rebuilt a good chunk of the world (mpv and plasmatube)
> using pkgconf, and haven't seen any breakage caused by it. You can try
> do build these patches on top of current core-updates on the
> hydra-guix-129 machine, which should still have it in its store.

I won’t try, I’m just saying from experience that the “just one last
tiny change” strategy never converges. :-)

Toggle quote (3 lines)
>> (Aside: where should I read about the rationale of the pkg-config ->
>> pkgconf move?)

[...]

Toggle quote (5 lines)
> The above demonstrates that pkgconf's behavior is to consider *.private
> fields only when provided the --static option, which is what we want.
>
> I hope this helps understanding the rationale.

It does, and it looks like a nice improvement. Thanks for explaining!

Ludo’.
M
M
Maxim Cournoyer wrote on 9 Mar 19:32 +0100
Re: bug#68813: [PATCH core-updates] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates
(name . Ludovic Courtès)(address . ludo@gnu.org)
87o7bndzn7.fsf_-_@gmail.com
Hello,

Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (20 lines)
>> I've manually rebuilt a good chunk of the world (mpv and plasmatube)
>> using pkgconf, and haven't seen any breakage caused by it. You can try
>> do build these patches on top of current core-updates on the
>> hydra-guix-129 machine, which should still have it in its store.
>
> I won’t try, I’m just saying from experience that the “just one last
> tiny change” strategy never converges. :-)
>
>>> (Aside: where should I read about the rationale of the pkg-config ->
>>> pkgconf move?)
>
> [...]
>
>> The above demonstrates that pkgconf's behavior is to consider *.private
>> fields only when provided the --static option, which is what we want.
>>
>> I hope this helps understanding the rationale.
>
> It does, and it looks like a nice improvement. Thanks for explaining!

Great! I've now merged this series in core-updates, after consulting
with Josselin, since we are going to need a world rebuild anyway.

--
Thanks,
Maxim
Closed
?
Your comment

This issue is archived.

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

To respond to this issue using the mumi CLI, first switch to it
mumi current 68813
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