From: Tomas Volf <~@wolfsden.cz>
To: Z572 <873216071@qq.com>
Cc: 70115@debbugs.gnu.org
Subject: [bug#70115] [PATCH] gnu: skopeo: Update to 1.15.0.
Date: Mon, 1 Apr 2024 15:21:03 +0200 [thread overview]
Message-ID: <Zgq0v3iFZbKsfM0L@ws> (raw)
In-Reply-To: <874jcl44k2.fsf@qq.com>
[-- Attachment #1: Type: text/plain, Size: 7146 bytes --]
On 2024-04-01 20:37:45 +0800, Z572 wrote:
>
> Tomas Volf <~@wolfsden.cz> writes:
>
> > The package is also converted to gnu-build-system in order to take advantage
> > of already existing Makefile instead of reinventing (parts) of it in Guile.
> >
> > * gnu/packages/virtualization.scm (skopeo)[version]: Update to 1.15.0.
> > [build-system]: Use gnu-build-system.
> > [native-inputs]: Add go-1.21, sort.
> > [inputs]: Add bash-minimal.
> > [arguments]<#:import-path, #:install-source?>: Delete.
> > <#:make-flags, #:test-target, #:imported-modules>: New arguments.
> > <#:phases>{'configure}: Delete.
> > {'set-env, 'cc-to-gcc, 'wrap-skopeo, 'remove-go-references}: New phases.
> >
> > Change-Id: I1010e1f4fbdc093646c2879bdf30125ab2e88bdd
> > ---
> > This commit updates the skopeo, and also converts it to use
> > gnu-build-system. Both is done in one commit, since 1.15 did not
> > built just by straight-forward update, and due to the intended rewrite
> > the time spent debugging that would be wasted.
> >
> > This (gnu-build-system) matches how podman and buildah are done in #70112
> > bringing all github.com/containers/* projects on the same model.
> >
> > gnu/packages/virtualization.scm | 80 ++++++++++++++++++++++-----------
> > 1 file changed, 54 insertions(+), 26 deletions(-)
> >
> > diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
> > index 251fe00aa0..60f43c19cf 100644
> > --- a/gnu/packages/virtualization.scm
> > +++ b/gnu/packages/virtualization.scm
> > @@ -151,6 +151,7 @@ (define-module (gnu packages virtualization)
> > #:use-module (guix gexp)
> > #:use-module (guix git-download)
> > #:use-module (guix packages)
> > + #:use-module (guix modules)
> > #:use-module (guix utils)
> > #:use-module (srfi srfi-1)
> > #:use-module (srfi srfi-26)
> > @@ -2257,7 +2258,7 @@ (define-public umoci
> > (define-public skopeo
> > (package
> > (name "skopeo")
> > - (version "1.2.3")
> > + (version "1.15.0")
> > (source (origin
> > (method git-fetch)
> > (uri (git-reference
> > @@ -2266,12 +2267,15 @@ (define-public skopeo
> > (file-name (git-file-name name version))
> > (sha256
> > (base32
> > - "0n22sdif437ddg5ch0ipwim3fg0n6ihc9bfi52qkhy3r1grz04hs"))))
> > - (build-system go-build-system)
> > + "1f9n3ysdmll7vq8dmgpv03m8aqq3w9cfvbmxxpwmnv1nlfc67ihq"))))
> > + (build-system gnu-build-system)
> > (native-inputs
> > - (list pkg-config go-github-com-go-md2man))
> > + (list go-1.21
> > + go-github-com-go-md2man
> > + pkg-config))
> > (inputs
> > - (list btrfs-progs
> > + (list bash-minimal
> > + btrfs-progs
> > eudev
> > libassuan
> > libselinux
> > @@ -2280,27 +2284,51 @@ (define-public skopeo
> > glib
> > gpgme))
> > (arguments
> > - '(#:import-path "github.com/containers/skopeo"
> > - #:install-source? #f
> > - #:tests? #f ; The tests require Docker
> > - #:phases
> > - (modify-phases %standard-phases
> > - (replace 'build
> > - (lambda* (#:key import-path #:allow-other-keys)
> > - (with-directory-excursion (string-append "src/" import-path)
> > - (invoke "make" "bin/skopeo"))))
> > - (add-after 'build 'build-docs
> > - (lambda* (#:key import-path #:allow-other-keys)
> > - (with-directory-excursion (string-append "src/" import-path)
> > - (invoke "make" "docs"))))
> > - (replace 'install
> > - (lambda* (#:key import-path outputs #:allow-other-keys)
> > - (with-directory-excursion (string-append "src/" import-path)
> > - (let ((out (assoc-ref outputs "out")))
> > - (install-file "default-policy.json"
> > - (string-append out "/etc/containers"))
> > - (invoke "make" "install-binary" "install-completions" "install-docs"
> > - (string-append "PREFIX=" out)))))))))
> > + (list
> > + #:make-flags
> > + #~(list (string-append "CC=" #$(cc-for-target))
> > + "PREFIX="
> > + (string-append "DESTDIR=" #$output)
> > + (string-append "GOMD2MAN="
> > + #$go-github-com-go-md2man "/bin/go-md2man"))
> > + #:tests? #f ; The tests require Docker
> > + #:test-target "test-unit"
> > + #:imported-modules
> > + (source-module-closure `(,@%gnu-build-system-modules
> > + (guix build go-build-system)))
> > + #:phases
> > + #~(modify-phases %standard-phases
> > + (delete 'configure)
> > + (add-after 'unpack 'set-env
> > + (lambda _
> > + ;; When running go, things fail because HOME=/homeless-shelter.
> > + (setenv "HOME" "/tmp")
> > + ;; Required for detecting btrfs in hack/btrfs* due to bug in GNU
> > + ;; Make <4.4 causing CC not to be propagated into $(shell ...)
> > + ;; calls. Can be removed once we update to >4.3.
> > + ;;
> > + ;; This techically does nothing *now*, but after upstream
> > + ;; issue[1] is solved and 'cc-to-gcc phase is removed, it will
> > + ;; start being required.
> > + ;; 1: https://github.com/containers/skopeo/issues/2278
> > + (setenv "CC" #$(cc-for-target))))
> > + (add-after 'unpack 'cc-to-gcc
> > + (lambda _
> > + (for-each (lambda (file)
> > + (substitute* file
> > + (("^cc -" all)
> > + (string-append "g" all))))
>
> I don't think this is a good idea. Why not "$(CC)", this env can get
> from set-env phase.
I mean, sure, I could do that. I do not think it really matters, since I *know*
we are building with gcc, but will change it.
>
> > + '("hack/btrfs_tag.sh"
> > + "hack/btrfs_installed_tag.sh"
> > + "hack/libdm_tag.sh"
> > + "hack/libsubid_tag.sh"))))
> > + (add-after 'install 'wrap-skopeo
> > + (lambda _
> > + (wrap-program (string-append #$output "/bin/skopeo")
> > + `("PATH" suffix
> > + ("/run/setuid-programs")))))
>
> It would be nice to add some comments about why need wrap /run/setuid-programs .
Will do.
>
> > + (add-after 'install 'remove-go-references
> > + (@@ (guix build go-build-system) remove-go-references)))))
> > (home-page "https://github.com/containers/skopeo")
> > (synopsis "Interact with container images and container image registries")
> > (description
>
Thanks for review :)
Tomas
--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2024-04-01 13:22 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-31 21:05 [bug#70115] [PATCH] gnu: skopeo: Update to 1.15.0 Tomas Volf
2024-04-01 12:37 ` Z572 via Guix-patches via
2024-04-01 12:37 ` Z572 via Guix-patches via
2024-04-01 13:21 ` Tomas Volf [this message]
2024-04-01 13:51 ` [bug#70115] [PATCH v2] " Tomas Volf
2024-04-05 11:31 ` bug#70115: " Christopher Baines
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=Zgq0v3iFZbKsfM0L@ws \
--to=~@wolfsden.cz \
--cc=70115@debbugs.gnu.org \
--cc=873216071@qq.com \
/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.