Merge branch 'master' into 'master'

Support rpm source in build-systems

Closes #353

See merge request nonguix/nonguix!565
This commit is contained in:
Dariqq 2025-02-15 22:09:23 +00:00
commit 0cbd532fb3

View File

@ -3,6 +3,7 @@
;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name> ;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name>
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se> ;;; Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se>
;;; Copyright © 2024 Dariqq <dariqq@posteo.net>
(define-module (nonguix build binary-build-system) (define-module (nonguix build binary-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:) #:use-module ((guix build gnu-build-system) #:prefix gnu:)
@ -154,6 +155,20 @@ The inputs are optional when the file is an executable."
deb-file deb-file
"debian-binary"))) "debian-binary")))
(define (rpm-file? binary-file)
(string-suffix? ".rpm" binary-file))
(define (unpack-rpm rpm-file)
(invoke "bsdtar" "xvf" rpm-file)
(delete-file rpm-file)
;; Delete .build-id directories
(for-each
(lambda (dir)
(format #t "Deleting directory ~a~%" dir)
(delete-file-recursively dir))
(find-files "." (lambda (f stat) (string-suffix? ".build-id" f))
#:directories? #t)))
(define* (binary-unpack #:key source #:allow-other-keys) (define* (binary-unpack #:key source #:allow-other-keys)
(let* ((files (filter (lambda (f) (let* ((files (filter (lambda (f)
(not (string=? (basename f) "environment-variables"))) (not (string=? (basename f) "environment-variables")))
@ -164,6 +179,7 @@ The inputs are optional when the file is an executable."
(chdir "binary") (chdir "binary")
(match binary-file (match binary-file
((? deb-file?) (unpack-deb binary-file)) ((? deb-file?) (unpack-deb binary-file))
((? rpm-file?) (unpack-rpm binary-file))
(_ (_
(begin (begin
(format #t "Unknown file type: ~a~%" (basename binary-file)) (format #t "Unknown file type: ~a~%" (basename binary-file))