From: Nicolas Graves via Guix-patches via <guix-patches@gnu.org>
To: 74517@debbugs.gnu.org
Cc: Nicolas Graves <ngraves@ngraves.fr>
Subject: [bug#74517] [PATCH 2/8] gnu: zbar: Split outputs.
Date: Sun, 24 Nov 2024 23:29:09 +0100 [thread overview]
Message-ID: <20241124222934.524-2-ngraves@ngraves.fr> (raw)
In-Reply-To: <20241124222934.524-1-ngraves@ngraves.fr>
* gnu/packages/aidc.scm (zbar): Split outputs.
[build-system]: Switch to glib-or-gtk-build-system.
[arguments]<#:configure-flags>: Add --disable-static.
<#:modules>: Use srfi-26 and gremlin's file-runpath.
<#:phases>: Add phase 'split-outputs.
[native-inputs]: Improve style.
[inputs]: Improve style. Replace v4l-utils by v4l-utils-minimal.
---
gnu/packages/aidc.scm | 94 +++++++++++++++++++++++++++++++++----------
1 file changed, 73 insertions(+), 21 deletions(-)
diff --git a/gnu/packages/aidc.scm b/gnu/packages/aidc.scm
index bc9c47a480..281f87dc78 100644
--- a/gnu/packages/aidc.scm
+++ b/gnu/packages/aidc.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2018, 2019, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2020 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -30,6 +31,7 @@ (define-module (gnu packages aidc)
#:use-module (guix git-download)
#:use-module (gnu packages autotools)
#:use-module (gnu packages check)
+ #:use-module (gnu packages elf)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
@@ -43,7 +45,8 @@ (define-module (gnu packages aidc)
#:use-module (gnu packages qt)
#:use-module (gnu packages video)
#:use-module (guix build-system cmake)
- #:use-module (guix build-system gnu))
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system glib-or-gtk))
(define-public zxing-cpp
;; Use the master branch as it includes unreleased build system improvements
@@ -184,32 +187,81 @@ (define-public zbar
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "0rf3i7lx0fqzxsngird6l4d4dnl612nr32rm8sib699qqx67px8n"))))
- (build-system gnu-build-system)
+ (base32 "0rf3i7lx0fqzxsngird6l4d4dnl612nr32rm8sib699qqx67px8n"))))
+ (build-system glib-or-gtk-build-system)
+ ;; XXX: qt output is broken: zbarcam-qt fails with segmentation fault, but
+ ;; this error happened before the output split.
+ (outputs '("out" "gtk" "qt"))
(arguments
- '(#:configure-flags (list "--with-gtk=auto"
+ (list
+ #:configure-flags '(list "--disable-static"
+ "--with-gtk=auto"
"--with-python=auto"
(string-append "--with-dbusconfdir="
(assoc-ref %outputs "out")
- "/etc"))))
+ "/etc"))
+ #:modules `(((guix build gremlin) #:select (file-runpath))
+ (srfi srfi-26)
+ ,@%glib-or-gtk-build-system-modules)
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'split-outputs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (gtk (assoc-ref outputs "gtk")))
+
+ ;; XXX: Using set-file-runpath leads to runpath-too-long-error
+ (define (prepend-to-runpath path file)
+ (invoke "patchelf" "--set-rpath"
+ (string-join (cons* path (file-runpath file)) ":")
+ file))
+
+ (define (move-output-file target file)
+ (let* ((source (string-append out file))
+ (destination (string-append target file)))
+ (mkdir-p (dirname destination))
+ (rename-file source destination)
+ (when (and (eq? (stat:type (lstat destination)) 'regular)
+ (elf-file? destination))
+ (prepend-to-runpath
+ (string-append out "/lib:" target "/lib")
+ destination))))
+
+ (for-each
+ (lambda (kind)
+ (for-each
+ (cut move-output-file (assoc-ref outputs kind) <>)
+ (cons*
+ (string-append "/lib/pkgconfig/zbar-" kind ".pc")
+ (string-append "/bin/zbarcam-" kind)
+ (map (cut string-drop <> 1)
+ (with-directory-excursion out
+ (find-files
+ "./lib"
+ (string-append "lib.*" kind "\\.so.*")))))))
+ '("gtk" "qt"))
+
+ (for-each
+ (cut move-output-file gtk <>)
+ '("/share/gir-1.0" "/lib/girepository-1.0"))))))))
(native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("gettext" ,gettext-minimal)
- ("glib" ,glib "bin")
- ("gobject-introspection" ,gobject-introspection)
- ("libtool" ,libtool)
- ("pkg-config" ,pkg-config)
- ("python-wrapper" ,python-wrapper)))
+ (list autoconf
+ automake
+ gettext-minimal
+ `(,glib "bin")
+ gobject-introspection
+ libtool
+ patchelf
+ pkg-config
+ python-wrapper))
(inputs
- `(("dbus" ,dbus)
- ("imagemagick" ,imagemagick)
- ("libjpeg" ,libjpeg-turbo)
- ("perl" ,perl)
- ("python" ,python)
- ("qtx11extras" ,qtx11extras)
- ("v4l-utils" ,v4l-utils)))
+ (list dbus
+ imagemagick
+ libjpeg-turbo
+ perl
+ python
+ qtx11extras
+ v4l-utils-minimal))
(propagated-inputs
;; These are in 'requires' field of .pc files.
(list glib gtk+ qtbase-5))
--
2.46.0
next prev parent reply other threads:[~2024-11-24 22:30 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-24 22:09 [bug#74517] [PATCH 0/8] Remove gtk@4 input dependency on qtbase@5 Nicolas Graves via Guix-patches via
2024-11-24 22:29 ` [bug#74517] [PATCH 1/8] gnu: Add v4l-utils-minimal Nicolas Graves via Guix-patches via
2024-11-24 22:29 ` Nicolas Graves via Guix-patches via [this message]
2024-11-25 3:04 ` [bug#74517] [PATCH 2/8] gnu: zbar: Split outputs Maxim Cournoyer
2024-11-24 22:29 ` [bug#74517] [PATCH 3/8] gnu: Add zbar-minimal Nicolas Graves via Guix-patches via
2024-11-25 3:08 ` Maxim Cournoyer
2024-11-24 22:29 ` [bug#74517] [PATCH 4/8] gnu: libde265: Remove unused qtbase-5 input Nicolas Graves via Guix-patches via
2024-11-25 3:08 ` Maxim Cournoyer
2024-11-24 22:29 ` [bug#74517] [PATCH 5/8] gnu: libde265: Update to 1.0.14 Nicolas Graves via Guix-patches via
2024-11-25 3:09 ` Maxim Cournoyer
2024-11-24 22:29 ` [bug#74517] [PATCH 6/8] gnu: libdc1394: Replace v4l-utils by v4l-utils-minimal Nicolas Graves via Guix-patches via
2024-11-24 22:29 ` [bug#74517] [PATCH 7/8] gnu: gst-plugins-bad: Replace inputs with -minimal variants Nicolas Graves via Guix-patches via
2024-11-24 22:29 ` [bug#74517] [PATCH 8/8] gnu: gst-plugins-good: Replace v4l-utils by v4l-utils-minimal Nicolas Graves via Guix-patches via
2024-11-25 2:54 ` [bug#74517] [PATCH 1/8] gnu: Add v4l-utils-minimal Maxim Cournoyer
2024-11-25 2:56 ` Maxim Cournoyer
2024-11-25 2:38 ` [bug#74517] [PATCH 0/8] Remove gtk@4 input dependency on qtbase@5 Maxim Cournoyer
2024-11-25 3:11 ` Maxim Cournoyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241124222934.524-2-ngraves@ngraves.fr \
--to=guix-patches@gnu.org \
--cc=74517@debbugs.gnu.org \
--cc=ngraves@ngraves.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.