(define-module (glicid packages containers) #:use-module (guix download) #:use-module (guix git-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 python) #:use-module (gnu packages file-systems) #: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 (name "podman") (version "4.5.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/containers/podman") (commit (string-append "v" version)))) (sha256 (base32 "145v7cq1y1v5kjdlg0vl70y693flagw4m60vm95wizibrf4byv9w")) (modules '((guix build utils))) (snippet '(begin ; (substitute* "Makefile" ((".*hack/btrfs.*") "")) ; we build without doc (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")))))) (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 'install 'install-completions (lambda _ (invoke "make" "install.completions" (string-append "PREFIX=" #$output))))))) (inputs (list btrfs-progs gnu:cni-plugins gnu:conmon gnu:crun gpgme go-github-com-go-md2man iptables libassuan libseccomp libselinux gnu:slirp4netns fuse-overlayfs)) (native-inputs (list bats git go-1.18 pkg-config python)) (propagated-inputs (list fuse-overlayfs)) (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)))