* [bug#68813] [PATCH 1/5] gnu: Add atf.
@ 2024-01-30 4:26 Maxim Cournoyer
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
0 siblings, 1 reply; 26+ messages in thread
From: Maxim Cournoyer @ 2024-01-30 4:26 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates
2024-01-30 4:26 [bug#68813] [PATCH 1/5] gnu: Add atf Maxim Cournoyer
@ 2024-02-22 16:09 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 02/20] gnu: Add lutok Maxim Cournoyer
` (19 more replies)
0 siblings, 20 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:09 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
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
^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 02/20] gnu: Add lutok.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 03/20] gnu: Add kyua Maxim Cournoyer
` (18 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* gnu/packages/lua.scm (lutok): New variable.
Change-Id: I595b26c601c8ca8c997c86e8f8eb17fbe363a038
---
gnu/packages/lua.scm | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 03/20] gnu: Add kyua.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 02/20] gnu: Add lutok Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 04/20] gnu: pkgconf: Enable test suite Maxim Cournoyer
` (17 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* gnu/packages/check.scm (kyua): New variable.
Change-Id: Ic3a74a27c05b099bef6acfb4e0c96d2ee3defc31
---
gnu/packages/check.scm | 70 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 70 insertions(+)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 04/20] gnu: pkgconf: Enable test suite.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 02/20] gnu: Add lutok Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 03/20] gnu: Add kyua Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 05/20] gnu: Add pkgconf-as-pkg-config Maxim Cournoyer
` (16 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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(-)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 05/20] gnu: Add pkgconf-as-pkg-config.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (2 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 04/20] gnu: pkgconf: Enable test suite Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 06/20] gnu: pkgconf: Add $PKG_CONFIG_PATH search path Maxim Cournoyer
` (15 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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(+)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 06/20] gnu: pkgconf: Add $PKG_CONFIG_PATH search path.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (3 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 05/20] gnu: Add pkgconf-as-pkg-config Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 07/20] gnu: pkgconf: Add support for cross-compilation Maxim Cournoyer
` (14 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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(+)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 07/20] gnu: pkgconf: Add support for cross-compilation.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (4 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 06/20] gnu: pkgconf: Add $PKG_CONFIG_PATH search path Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 08/20] gnu: pkg-config: Alias to pkgconf-as-pkg-config Maxim Cournoyer
` (13 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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(-)
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.
+\f
+;;;
+;;; "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 '())))
+
+\f
+;;;
+;;; 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))
+
+\f
+;;;
+;;; 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))))
+
+\f
+;;;
+;;; 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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 08/20] gnu: pkg-config: Alias to pkgconf-as-pkg-config.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (5 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 07/20] gnu: pkgconf: Add support for cross-compilation Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-24 11:41 ` Ludovic Courtès
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 09/20] gnu: pstoedit: Update to 4.00 Maxim Cournoyer
` (12 subsequent siblings)
19 siblings, 1 reply; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813
Cc: Maxim Cournoyer, Efraim Flashner, Ekaitz Zarraga,
Ludovic Courtès
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(-)
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)))))
\f
;;;
@@ -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)
+
\f
;;;
;;; pkg-config packages for native use (build-time only).
--
2.41.0
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 09/20] gnu: pstoedit: Update to 4.00.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (6 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 08/20] gnu: pkg-config: Alias to pkgconf-as-pkg-config Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 10/20] gnu: autotrace: Update to 0.31.10 Maxim Cournoyer
` (11 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 10/20] gnu: autotrace: Update to 0.31.10.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (7 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 09/20] gnu: pstoedit: Update to 4.00 Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 11/20] gnu: autotrace: Remove libtool archives Maxim Cournoyer
` (10 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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(-)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 11/20] gnu: autotrace: Remove libtool archives.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (8 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 10/20] gnu: autotrace: Update to 0.31.10 Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 12/20] gnu: autotrace: Fix pkg-config file Maxim Cournoyer
` (9 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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(-)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 12/20] gnu: autotrace: Fix pkg-config file.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (9 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 11/20] gnu: autotrace: Remove libtool archives Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 13/20] gnu: gd: Update to 2.3.3 Maxim Cournoyer
` (8 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 13/20] gnu: gd: Update to 2.3.3.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (10 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 12/20] gnu: autotrace: Fix pkg-config file Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 14/20] gnu: lib2geom: Update to 1.3 Maxim Cournoyer
` (7 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 14/20] gnu: lib2geom: Update to 1.3.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (11 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 13/20] gnu: gd: Update to 2.3.3 Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 15/20] gnu: inkscape: Truly enable ImageMagic support Maxim Cournoyer
` (6 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* gnu/packages/graphics.scm (lib2geom): Update to 1.3.
Change-Id: Icac0c5674e39709ac85880ad7b22149b8fe30806
---
gnu/packages/graphics.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 15/20] gnu: inkscape: Truly enable ImageMagic support.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (12 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 14/20] gnu: lib2geom: Update to 1.3 Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 16/20] gnu: lib2geom: Use gexps and remove input labels Maxim Cournoyer
` (5 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
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(-)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 16/20] gnu: lib2geom: Use gexps and remove input labels.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (13 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 15/20] gnu: inkscape: Truly enable ImageMagic support Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 17/20] gnu: inkscape: Update to 1.3.2 Maxim Cournoyer
` (4 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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(-)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 17/20] gnu: inkscape: Update to 1.3.2.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (14 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 16/20] gnu: lib2geom: Use gexps and remove input labels Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 18/20] gnu: inkscape: Sort inputs Maxim Cournoyer
` (3 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 18/20] gnu: inkscape: Sort inputs.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (15 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 17/20] gnu: inkscape: Update to 1.3.2 Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 19/20] gnu: inkscape: Fix Python support Maxim Cournoyer
` (2 subsequent siblings)
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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(-)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 19/20] gnu: inkscape: Fix Python support.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (16 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 18/20] gnu: inkscape: Sort inputs Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 20/20] Revert "gnu: mpv: Propagate most libraries." Maxim Cournoyer
2024-02-22 16:29 ` [bug#68813] [core-updates PATCH 01/20] gnu: Add atf Maxim Cournoyer
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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.
Fixes: https://issues.guix.gnu.org/63938
Change-Id: I90a39a04a35dbcafe413726107d100c78d173fd0
---
gnu/packages/inkscape.scm | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 20/20] Revert "gnu: mpv: Propagate most libraries."
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (17 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 19/20] gnu: inkscape: Fix Python support Maxim Cournoyer
@ 2024-02-22 16:10 ` Maxim Cournoyer
2024-02-22 16:29 ` [bug#68813] [core-updates PATCH 01/20] gnu: Add atf Maxim Cournoyer
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:10 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
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(-)
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 01/20] gnu: Add atf.
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
` (18 preceding siblings ...)
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 20/20] Revert "gnu: mpv: Propagate most libraries." Maxim Cournoyer
@ 2024-02-22 16:29 ` Maxim Cournoyer
19 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-22 16:29 UTC (permalink / raw)
To: 68813; +Cc: Maxim Cournoyer
* 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
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
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 08/20] gnu: pkg-config: Alias to pkgconf-as-pkg-config.
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 08/20] gnu: pkg-config: Alias to pkgconf-as-pkg-config Maxim Cournoyer
@ 2024-02-24 11:41 ` Ludovic Courtès
2024-02-24 20:34 ` Maxim Cournoyer
0 siblings, 1 reply; 26+ messages in thread
From: Ludovic Courtès @ 2024-02-24 11:41 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: 68813, Ekaitz Zarraga, Efraim Flashner
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.
Should it instead be done on a separate branch?
(Aside: where should I read about the rationale of the pkg-config ->
pkgconf move?)
Ludo’.
^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 08/20] gnu: pkg-config: Alias to pkgconf-as-pkg-config.
2024-02-24 11:41 ` Ludovic Courtès
@ 2024-02-24 20:34 ` Maxim Cournoyer
2024-02-24 22:33 ` Ludovic Courtès
0 siblings, 1 reply; 26+ messages in thread
From: Maxim Cournoyer @ 2024-02-24 20:34 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 68813, Ekaitz Zarraga, Efraim Flashner
Hi Ludovic,
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? 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.
> 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.
> (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:
--8<---------------cut here---------------start------------->8---
$ ./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
--8<---------------cut here---------------end--------------->8---
Compare with:
--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix shell --pure pkg-config pkgconf mpv \
-- pkgconf --print-errors --short-errors --exists mpv
$ echo $?
0
--8<---------------cut here---------------end--------------->8---
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
^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#68813] [core-updates PATCH 08/20] gnu: pkg-config: Alias to pkgconf-as-pkg-config.
2024-02-24 20:34 ` Maxim Cournoyer
@ 2024-02-24 22:33 ` Ludovic Courtès
2024-03-09 18:32 ` bug#68813: [PATCH core-updates] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
0 siblings, 1 reply; 26+ messages in thread
From: Ludovic Courtès @ 2024-02-24 22:33 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: 68813, Ekaitz Zarraga, Efraim Flashner
Hi,
Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
> 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:
<https://lists.gnu.org/archive/html/guix-devel/2024-01/msg00096.html>.
But a lot of work has gone into the branch since that time that goes way
beyond “fixing problems”.
[...]
> 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!
Ludo’.
^ permalink raw reply [flat|nested] 26+ messages in thread
* bug#68813: [PATCH core-updates] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates
2024-02-24 22:33 ` Ludovic Courtès
@ 2024-03-09 18:32 ` Maxim Cournoyer
0 siblings, 0 replies; 26+ messages in thread
From: Maxim Cournoyer @ 2024-03-09 18:32 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: Efraim Flashner, Ekaitz Zarraga, 68813-done
Hello,
Ludovic Courtès <ludo@gnu.org> writes:
>> 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
^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2024-03-09 18:34 UTC | newest]
Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-30 4:26 [bug#68813] [PATCH 1/5] gnu: Add atf Maxim Cournoyer
2024-02-22 16:09 ` [bug#68813] [core-updates PATCH 00/20] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 02/20] gnu: Add lutok Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 03/20] gnu: Add kyua Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 04/20] gnu: pkgconf: Enable test suite Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 05/20] gnu: Add pkgconf-as-pkg-config Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 06/20] gnu: pkgconf: Add $PKG_CONFIG_PATH search path Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 07/20] gnu: pkgconf: Add support for cross-compilation Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 08/20] gnu: pkg-config: Alias to pkgconf-as-pkg-config Maxim Cournoyer
2024-02-24 11:41 ` Ludovic Courtès
2024-02-24 20:34 ` Maxim Cournoyer
2024-02-24 22:33 ` Ludovic Courtès
2024-03-09 18:32 ` bug#68813: [PATCH core-updates] Replace pkg-config with pkgconf to reduce propagation / Inkscape updates Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 09/20] gnu: pstoedit: Update to 4.00 Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 10/20] gnu: autotrace: Update to 0.31.10 Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 11/20] gnu: autotrace: Remove libtool archives Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 12/20] gnu: autotrace: Fix pkg-config file Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 13/20] gnu: gd: Update to 2.3.3 Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 14/20] gnu: lib2geom: Update to 1.3 Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 15/20] gnu: inkscape: Truly enable ImageMagic support Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 16/20] gnu: lib2geom: Use gexps and remove input labels Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 17/20] gnu: inkscape: Update to 1.3.2 Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 18/20] gnu: inkscape: Sort inputs Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 19/20] gnu: inkscape: Fix Python support Maxim Cournoyer
2024-02-22 16:10 ` [bug#68813] [core-updates PATCH 20/20] Revert "gnu: mpv: Propagate most libraries." Maxim Cournoyer
2024-02-22 16:29 ` [bug#68813] [core-updates PATCH 01/20] gnu: Add atf Maxim Cournoyer
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).