guix_mirror_bot pushed a commit to branch next-master
in repository guix.
commit 4e227eb5f16d539cf3315242581322c202b438c7
Author: Nicolas Graves <[email protected]>
AuthorDate: Tue Jan 6 16:54:07 2026 +0100
gnu: hplip: Switch to pyproject.
* gnu/packages/cups.scm (hplip):
[arguments]<#:imported-modules, #:modules, #:phases>: Switch to
pyproject-build-system.
Change-Id: I0150ce69467c4409ce6dfa45d094304d42c98f01
Signed-off-by: Sharlatan Hellseher <[email protected]>
---
gnu/packages/cups.scm | 190 +++++++++++++++++++++++++-------------------------
1 file changed, 95 insertions(+), 95 deletions(-)
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index ad9779cb2e..5a0ec0d1b6 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -623,11 +623,10 @@ should only be used as part of the Guix cups-pk-helper
service.")
(build-system gnu-build-system)
(arguments
(list
- #:imported-modules `((guix build python-build-system)
- ,@%default-gnu-imported-modules)
+ #:imported-modules %pyproject-build-system-modules
#:modules '((guix build gnu-build-system)
(guix build utils)
- ((guix build python-build-system) #:prefix python:))
+ ((guix build pyproject-build-system) #:prefix py:))
#:configure-flags
#~(list "--disable-imageProcessor-build"
(string-append "--prefix=" #$output)
@@ -648,102 +647,103 @@ should only be used as part of the Guix cups-pk-helper
service.")
"--enable-qt5"
"--disable-qt4")
#:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'set-gcc-14-cflags
- ;; We set CFLAGS here because adding setting it in
- ;; #:configure-flags or #:make-flags does not work.
- (lambda _
- (substitute* "Makefile.in"
- (("CFLAGS = @CFLAGS@" all)
- (string-append all
- " -Wno-error=attributes"
- " -Wno-error=implicit-function-declaration"
- " -Wno-error=implicit-int"
- " -Wno-error=incompatible-pointer-types"
- " -Wno-error=int-conversion"
- " -Wno-error=return-mismatch")))))
- (add-after 'unpack 'fix-hard-coded-file-names
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out #$output)
- ;; FIXME: use merged ppds (I think actually only
- ;; drvs need to be merged).
- (cupsdir #$(this-package-input "cups-minimal")))
- (substitute* (find-files "." "\\.py$")
- ;; Refer to the correct default configuration file name.
- (("/etc/hp/hplip.conf")
- (string-append out "/etc/hp/hplip.conf")))
- (substitute* "base/g.py"
- (("'/usr/share;[^']*'")
- (string-append "'" cupsdir "/share'"))
- (("'/etc/hp/hplip.conf'")
- (string-append "'" out "/etc/hp/hplip.conf" "'")))
-
+ (with-extensions (list (pyproject-guile-json))
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-gcc-14-cflags
+ ;; We set CFLAGS here because adding setting it in
+ ;; #:configure-flags or #:make-flags does not work.
+ (lambda _
(substitute* "Makefile.in"
- (("[[:blank:]]check-plugin\\.py[[:blank:]]") " ")
- ;; FIXME Use beginning-of-word in regexp.
- (("[[:blank:]]plugin\\.py[[:blank:]]") " ")
- (("/usr/include/libusb-1.0")
- (search-input-directory inputs "/include/libusb-1.0"))
- (("hplip_statedir =.*$")
- ;; Don't bail out while trying to create
- ;; /var/lib/hplip. We can safely change its value
- ;; here because it's hard-coded in the code anyway.
- "hplip_statedir = $(prefix)\n")
- (("hplip_confdir = /etc/hp")
- ;; This is only used for installing the default config.
- (string-append "hplip_confdir = " out "/etc/hp"))
- (("halpredir = /usr/share/hal/fdi/preprobe/10osvendor")
- ;; We don't use hal.
- (string-append "halpredir = " out
- "/share/hal/fdi/preprobe/10osvendor"))
- (("rulesdir = /etc/udev/rules.d")
- ;; udev rules will be merged by base service.
- (string-append "rulesdir = " out "/lib/udev/rules.d"))
- (("rulessystemdir = /usr/lib/systemd/system")
- ;; We don't use systemd.
- (string-append "rulessystemdir = " out
"/lib/systemd/system"))
- (("/etc/sane.d")
- (string-append out "/etc/sane.d"))))))
- (add-after 'install 'move-sane-config-to-dll.d
- (lambda _
- ;; move dll.conf to dll.d - the directory intended for 3rd-party
- ;; backend configurations.
- (let ((dll.d (string-append #$output "/etc/sane.d/dll.d"))
- (dll.conf (string-append #$output "/etc/sane.d/dll.conf")))
- (mkdir-p dll.d)
- (rename-file dll.conf (string-append dll.d "/hpaio")))))
- (add-after 'install 'install-models-dat
- (lambda* (#:key outputs #:allow-other-keys)
- (install-file "data/models/models.dat"
- (string-append #$output
"/share/hplip/data/models"))))
+ (("CFLAGS = @CFLAGS@" all)
+ (string-append all
+ " -Wno-error=attributes"
+ " -Wno-error=implicit-function-declaration"
+ " -Wno-error=implicit-int"
+ " -Wno-error=incompatible-pointer-types"
+ " -Wno-error=int-conversion"
+ " -Wno-error=return-mismatch")))))
+ (add-after 'unpack 'fix-hard-coded-file-names
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out #$output)
+ ;; FIXME: use merged ppds (I think actually only
+ ;; drvs need to be merged).
+ (cupsdir #$(this-package-input "cups-minimal")))
+ (substitute* (find-files "." "\\.py$")
+ ;; Refer to the correct default configuration file name.
+ (("/etc/hp/hplip.conf")
+ (string-append out "/etc/hp/hplip.conf")))
+ (substitute* "base/g.py"
+ (("'/usr/share;[^']*'")
+ (string-append "'" cupsdir "/share'"))
+ (("'/etc/hp/hplip.conf'")
+ (string-append "'" out "/etc/hp/hplip.conf" "'")))
+
+ (substitute* "Makefile.in"
+ (("[[:blank:]]check-plugin\\.py[[:blank:]]") " ")
+ ;; FIXME Use beginning-of-word in regexp.
+ (("[[:blank:]]plugin\\.py[[:blank:]]") " ")
+ (("/usr/include/libusb-1.0")
+ (search-input-directory inputs "/include/libusb-1.0"))
+ (("hplip_statedir =.*$")
+ ;; Don't bail out while trying to create
+ ;; /var/lib/hplip. We can safely change its value
+ ;; here because it's hard-coded in the code anyway.
+ "hplip_statedir = $(prefix)\n")
+ (("hplip_confdir = /etc/hp")
+ ;; This is only used for installing the default config.
+ (string-append "hplip_confdir = " out "/etc/hp"))
+ (("halpredir = /usr/share/hal/fdi/preprobe/10osvendor")
+ ;; We don't use hal.
+ (string-append "halpredir = " out
+ "/share/hal/fdi/preprobe/10osvendor"))
+ (("rulesdir = /etc/udev/rules.d")
+ ;; udev rules will be merged by base service.
+ (string-append "rulesdir = " out "/lib/udev/rules.d"))
+ (("rulessystemdir = /usr/lib/systemd/system")
+ ;; We don't use systemd.
+ (string-append "rulessystemdir = " out
"/lib/systemd/system"))
+ (("/etc/sane.d")
+ (string-append out "/etc/sane.d"))))))
+ (add-after 'install 'move-sane-config-to-dll.d
+ (lambda _
+ ;; move dll.conf to dll.d - the directory intended for
3rd-party
+ ;; backend configurations.
+ (let ((dll.d (string-append #$output "/etc/sane.d/dll.d"))
+ (dll.conf (string-append #$output
"/etc/sane.d/dll.conf")))
+ (mkdir-p dll.d)
+ (rename-file dll.conf (string-append dll.d "/hpaio")))))
+ (add-after 'install 'install-models-dat
+ (lambda* (#:key outputs #:allow-other-keys)
+ (install-file "data/models/models.dat"
+ (string-append #$output
"/share/hplip/data/models"))))
(add-after 'install 'wrap-binaries
- ;; Scripts in /bin are all symlinks to .py files in /share/hplip.
- ;; Symlinks are immune to the Python build system's 'WRAP phase,
- ;; and the .py files can't be wrapped because they are reused as
- ;; modules. Replacing the symlinks in /bin with copies and
- ;; wrapping them also doesn't work (“ModuleNotFoundError:
- ;; No module named 'base'”). Behold: a custom WRAP-PROGRAM.
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin"))
- (site (python:site-packages inputs outputs)))
- (with-directory-excursion bin
- (for-each (lambda (file)
- (let ((target (readlink file)))
- (delete-file file)
- (with-output-to-file file
- (lambda _
- (format #t
- "#!~a~@
+ ;; Scripts in /bin are all symlinks to .py files in /share/hplip.
+ ;; Symlinks are immune to the Python build system's 'WRAP phase,
+ ;; and the .py files can't be wrapped because they are reused as
+ ;; modules. Replacing the symlinks in /bin with copies and
+ ;; wrapping them also doesn't work (“ModuleNotFoundError:
+ ;; No module named 'base'”). Behold: a custom WRAP-PROGRAM.
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((bin (string-append #$output "/bin"))
+ (site (py:site-packages inputs outputs)))
+ (with-directory-excursion bin
+ (for-each
+ (lambda (file)
+ (let ((target (readlink file)))
+ (delete-file file)
+ (with-output-to-file file
+ (lambda _
+ (format #t
+ "#!~a~@
export GUIX_PYTHONPATH=\"~a:~a\"~@
exec -a \"$0\" \"~a/~a\" \"$@\"~%"
- (which "bash")
- site
- (getenv "GUIX_PYTHONPATH")
- bin target)))
- (chmod file #o755)))
- (find-files "." (lambda (file stat)
- (eq? 'symlink (stat:type
stat))))))))))))
+ (which "bash")
+ site
+ (getenv "GUIX_PYTHONPATH")
+ bin target)))
+ (chmod file #o755)))
+ (find-files "." (lambda (file stat)
+ (eq? 'symlink (stat:type
stat)))))))))))))
;; Note that the error messages printed by the tools in the case of
;; missing dependencies are often downright misleading.
;; TODO: hp-toolbox still fails to start with: