diff --git a/glicid/packages/containers.scm b/glicid/packages/containers.scm index f4b2455..3ade6dc 100644 --- a/glicid/packages/containers.scm +++ b/glicid/packages/containers.scm @@ -1,13 +1,96 @@ (define-module (glicid packages containers) #:use-module (guix download) #:use-module (guix packages) + #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module ((gnu packages containers) #:prefix gnu:) + #:use-module (gnu packages linux) + #:use-module (gnu packages gnupg) + #:use-module (gnu packages golang) + #:use-module (gnu packages selinux) + #:use-module (gnu packages bash) + #:use-module (gnu packages version-control) + #:use-module (gnu packages pkg-config) + #:use-module (guix utils) + #:use-module (guix build-system gnu) ) (define-public podman (package - (inherit gnu:podman) + (name "podman") + (version "4.3.1") + (source (origin + (method url-fetch) + (uri (list + (string-append "https://github.com/containers/podman/archive/refs/tags/v" version ".tar.gz") + )) + (sha256 (base32 "04w8lwybsxix4ms6gnsj2xp4xkm567fj0vnlwmjn7kbqxv22jp25")) + )) + (home-page "https://podman.io") + (synopsis "Manage containers, images, pods, and their volumes") + (description "Podman (the POD MANager) is a tool for managing containers and images, volumes mounted into those containers, and pods made from groups of containers.") + (license license:asl2.0) + (inputs (list btrfs-progs gnu:cni-plugins gnu:conmon gnu:crun gpgme go-github-com-go-md2man iptables libassuan libseccomp libselinux gnu:slirp4netns )) + (native-inputs (list bats git go pkg-config )) + (build-system gnu-build-system) + (arguments + (list + #:make-flags + #~(list #$(string-append "CC=" (cc-for-target)) + (string-append "PREFIX=" #$output) + ) + #:tests? #f + #:test-target "test" + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'set-env + (lambda* (#:key inputs #:allow-other-keys) + (setenv "HOME" "/tmp") + ) + ) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "make" "localsystem") + (invoke "make" "remotesystem") + ) + ) + ) + (add-after 'unpack 'fix-hardcoded-paths + (lambda _ + (substitute* + (find-files "libpod" "\\.go") + (("exec.LookPath[(][\"]slirp4netns[\"][)]") (string-append "exec.LookPath(\"" (which "slirp4netns") "\")")) + ) + (substitute* "hack/install_catatonit.sh" (("CATATONIT_PATH=\"[^\"]+\"") (string-append "CATATONIT_PATH=" (which "true")))) + (substitute* "vendor/github.com/containers/common/pkg/config/config_linux.go" (("/usr/local/libexec/podman")(string-append #$output "/bin"))) + (substitute* "vendor/github.com/containers/common/pkg/config/default.go" + (("/usr/libexec/podman/conmon") (which "conmon")) (("/usr/local/libexec/cni") (string-append #$(this-package-input "cni-plugins") "/bin")) + (("/usr/bin/crun") (which "crun")) + ) + ) + ) + (add-after 'unpack 'build-no-docs + (lambda _ + (substitute* "Makefile" (("all: binaries docs") "all: binaries")) + (substitute* "Makefile" (("install: install.bin install.remote install.man install.systemd") "install: install.bin install.remote install.systemd")) + ) + ) + (add-after 'install 'install-completions + (lambda _ + (invoke "make" "install.completions" (string-append "PREFIX=" #$output)) + ) + ) + ) + ) + ) + ) +) + +(define-public podman-4.3.0 + (package + (inherit podman) (name "podman") (version "4.3.0") (source (origin