diff --git a/.gitignore b/.gitignore index 3b07634..a609cd9 100644 --- a/.gitignore +++ b/.gitignore @@ -1831,3 +1831,6 @@ /v4.5.1.tar.gz /v4.6.0-rc1.tar.gz /v4.6.0-rc2.tar.gz +/v4.6.0.tar.gz +/v4.6.1.tar.gz +/v4.6.2.tar.gz diff --git a/.packit.yaml b/.packit.yaml new file mode 100644 index 0000000..fb8aefa --- /dev/null +++ b/.packit.yaml @@ -0,0 +1,65 @@ +--- +# See the documentation for more information: +# https://packit.dev/docs/configuration/ + +specfile_path: rpm/podman.spec +upstream_tag_template: v{version} + +srpm_build_deps: + - make + +jobs: + - job: copr_build + trigger: pull_request + enable_net: true + # keep in sync with https://copr.fedorainfracloud.org/coprs/rhcontainerbot/podman-next + targets: + - fedora-all-x86_64 + - fedora-all-aarch64 + - centos-stream+epel-next-8-x86_64 + - centos-stream+epel-next-8-aarch64 + - centos-stream+epel-next-9-x86_64 + - centos-stream+epel-next-9-aarch64 + additional_repos: + - "copr://rhcontainerbot/podman-next" + + # Run on commit to main branch + - job: copr_build + trigger: commit + branch: main + owner: rhcontainerbot + project: podman-next + enable_net: true + + - job: tests + identifier: cockpit-revdeps + trigger: pull_request + targets: + - fedora-latest-stable + - fedora-development + tf_extra_params: + environments: + - artifacts: + - type: repository-file + id: https://copr.fedorainfracloud.org/coprs/g/cockpit/main-builds/repo/fedora-$releasever/group_cockpit-main-builds-fedora-$releasever.repo + - type: repository-file + id: https://copr.fedorainfracloud.org/coprs/rhcontainerbot/podman-next/repo/fedora-$releasever/rhcontainerbot-podman-next-fedora-$releasever.repo + tmt: + context: + revdeps: "yes" + + - job: propose_downstream + trigger: release + update_release: false + dist_git_branches: + - fedora-all + + - job: koji_build + trigger: commit + dist_git_branches: + - fedora-all + + - job: bodhi_update + trigger: commit + dist_git_branches: + - fedora-branched # rawhide updates are created automatically diff --git a/README.packit b/README.packit new file mode 100644 index 0000000..797aefb --- /dev/null +++ b/README.packit @@ -0,0 +1,3 @@ +This repository is maintained by packit. +https://packit.dev/ +The file was generated using packit 0.79.0.post2+g93f33d9. diff --git a/podman.spec b/podman.spec index b907f5b..35f6168 100644 --- a/podman.spec +++ b/podman.spec @@ -7,12 +7,18 @@ %global debug_package %{nil} %endif -# RHEL 8's default %%gobuild macro doesn't account for the BUILDTAGS variable, so we -# set it separately here and do not depend on RHEL 8's go-srpm-macros package. -%if %{defined rhel} && 0%{?rhel} == 8 +# RHEL's default %%gobuild macro doesn't account for the BUILDTAGS variable, so we +# set it separately here and do not depend on RHEL's go-[s]rpm-macros package +# until that's fixed. +# c9s bz: https://bugzilla.redhat.com/show_bug.cgi?id=2227328 +# c8s bz: https://bugzilla.redhat.com/show_bug.cgi?id=2227331 +%if %{defined rhel} && !%{defined eln} %define gobuild(o:) go build -buildmode pie -compiler gc -tags="rpm_crashtraceback libtrust_openssl ${BUILDTAGS:-}" -ldflags "-linkmode=external -compressdwarf=false ${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n') -extldflags '%__global_ldflags'" -a -v -x %{?**}; +# python3 dep conditional for rhel8 +%if %{?rhel} == 8 %define rhel8py3 1 %endif +%endif %global gomodulesmode GO111MODULE=on @@ -25,6 +31,16 @@ %define build_with_btrfs 1 %endif +# gvproxy doesn't currently build on rawhide because of go1.21. +# It can be included as a standalone package on copr. +# It is currently open for review on bugzilla until which fedora releases can't +# include it. Official rawhide should be able to fetch the last active build of +# gvproxy, the min version requirement has been removed to allow it. +# Ref: https://bugzilla.redhat.com/show_bug.cgi?id=2224434 +%if !%{defined copr_username} && 0%{?fedora} <= 37 +%define gvproxy_subpackage 1 +%endif + %global container_base_path github.com/containers %global container_base_url https://%{container_base_path} @@ -41,10 +57,12 @@ %global commit_plugins 18822f9a4fb35d1349eb256f4cd2bfd372474d84 %global import_path_plugins %{container_base_path}/%{repo_plugins} +%if %{defined gvproxy_subpackage} # gvproxy %global repo_gvproxy gvisor-tap-vsock %global git_gvproxy %{container_base_url}/%{repo_gvproxy} %global commit_gvproxy 407efb5dcdb0f4445935f7360535800b60447544 +%endif Name: podman %if %{defined copr_username} @@ -58,8 +76,9 @@ Epoch: 5 # If that's what you're reading, Version must be 0, and will be updated by Packit for # copr and koji builds. # If you're reading this on dist-git, the version is automatically filled in by Packit. -Version: 4.6.0~rc2 -License: Apache-2.0 and BSD-2-Clause and BSD-3-Clause and ISC and MIT and MPL-2.0 +Version: 4.6.2 +# The `AND` needs to be uppercase in the License for SPDX compatibility +License: Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 Release: %autorelease %if %{defined golang_arches_future} ExclusiveArch: %{golang_arches_future} @@ -69,9 +88,11 @@ ExclusiveArch: aarch64 ppc64le s390x x86_64 Summary: Manage Pods, Containers and Container Images URL: https://%{name}.io/ # All SourceN files fetched from upstream -Source0: %{git0}/archive/v4.6.0-rc2.tar.gz +Source0: %{git0}/archive/v%{version}.tar.gz Source1: %{git_plugins}/archive/%{commit_plugins}/%{repo_plugins}-%{commit_plugins}.tar.gz +%if %{defined gvproxy_subpackage} Source2: %{git_gvproxy}/archive/%{commit_gvproxy}/%{repo_gvproxy}-%{commit_gvproxy}.tar.gz +%endif Provides: %{name}-manpages = %{epoch}:%{version}-%{release} BuildRequires: %{_bindir}/envsubst BuildRequires: %{_bindir}/go-md2man @@ -95,6 +116,7 @@ BuildRequires: libselinux-devel BuildRequires: shadow-utils-subid-devel BuildRequires: pkgconfig BuildRequires: make +BuildRequires: man-db BuildRequires: ostree-devel BuildRequires: systemd BuildRequires: systemd-devel @@ -104,7 +126,11 @@ BuildRequires: python3 Requires: catatonit Requires: conmon >= 2:2.1.7-2 Requires: containers-common-extra +%if %{defined gvproxy_subpackage} Recommends: %{name}-gvproxy = %{epoch}:%{version}-%{release} +%else +Recommends: %{name}-gvproxy +%endif Provides: %{name}-quadlet Obsoletes: %{name}-quadlet <= 5:4.4.0-1 Provides: %{name}-quadlet = %{epoch}:%{version}-%{release} @@ -174,7 +200,11 @@ connections as well. %package plugins Summary: Plugins for %{name} Requires: dnsmasq +%if %{defined gvproxy_subpackage} Recommends: %{name}-gvproxy = %{epoch}:%{version}-%{release} +%else +Recommends: %{name}-gvproxy +%endif %description plugins This plugin sets up the use of dnsmasq on a given CNI network so @@ -184,6 +214,7 @@ that dnsmasq will read in. Similarly, when a pod is removed from the network, it will remove the entry from the hosts file. Each CNI network will have its own dnsmasq instance. +%if %{defined gvproxy_subpackage} %package gvproxy Summary: Go replacement for libslirp and VPNKit @@ -192,6 +223,7 @@ A replacement for libslirp and VPNKit, written in pure Go. It is based on the network stack of gVisor. Compared to libslirp, gvisor-tap-vsock brings a configurable DNS server and dynamic port forwarding. +%endif %package -n %{name}sh Summary: Confined login and user shell using %{name} @@ -207,14 +239,16 @@ It is a symlink to %{_bindir}/%{name} and execs into the `%{name}sh` container when `%{_bindir}/%{name}sh is set as a login shell or set as os.Args[0]. %prep -%autosetup -Sgit -n %{name}-4.6.0-rc2 +%autosetup -Sgit -n %{name}-%{version} sed -i 's;@@PODMAN@@\;$(BINDIR);@@PODMAN@@\;%{_bindir};' Makefile # untar dnsname tar zxf %{SOURCE1} +%if %{defined gvproxy_subpackage} # untar %%{name}-gvproxy tar zxf %{SOURCE2} +%endif %build %set_build_flags @@ -254,11 +288,13 @@ export BUILDTAGS="$BASEBUILDTAGS $(hack/btrfs_installed_tag.sh) $(hack/btrfs_tag # reset LDFLAGS for plugins and gvisor binaries LDFLAGS='' +%if %{defined gvproxy_subpackage} # build gvisor-tap-vsock binaries cd %{repo_gvproxy}-%{commit_gvproxy} %gobuild -o bin/gvproxy ./cmd/gvproxy %gobuild -o bin/gvforwarder ./cmd/vm cd .. +%endif %{__make} docs docker-docs @@ -296,12 +332,14 @@ cd %{repo_plugins}-%{commit_plugins} %{__make} PREFIX=%{_prefix} DESTDIR=%{buildroot} install cd .. +%if %{defined gvproxy_subpackage} # install gvproxy cd %{repo_gvproxy}-%{commit_gvproxy} install -dp %{buildroot}%{_libexecdir}/%{name} install -p -m0755 bin/gvproxy %{buildroot}%{_libexecdir}/%{name} install -p -m0755 bin/gvforwarder %{buildroot}%{_libexecdir}/%{name} cd .. +%endif # do not include docker and podman-remote man pages in main package for file in `find %{buildroot}%{_mandir}/man[15] -type f | sed "s,%{buildroot},," | grep -v -e remote -e docker`; do @@ -364,12 +402,14 @@ cp -pav test/system %{buildroot}/%{_datadir}/%{name}/test/ %dir %{_libexecdir}/cni %{_libexecdir}/cni/dnsname +%if %{defined gvproxy_subpackage} %files gvproxy %license %{repo_gvproxy}-%{commit_gvproxy}/LICENSE %doc %{repo_gvproxy}-%{commit_gvproxy}/README.md %dir %{_libexecdir}/%{name} %{_libexecdir}/%{name}/gvproxy %{_libexecdir}/%{name}/gvforwarder +%endif %files -n %{name}sh %license LICENSE diff --git a/sources b/sources index 0c97bd1..8ebecd1 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ +SHA512 (v4.6.2.tar.gz) = 0c89ff3df21e9ca0eb6891600eb86c47463a53bd004d1564cc4661f0ea303dc245b47467d586db29587f960d5c78e0326b7f33ef87ba95e142e3320c56ceaa99 SHA512 (dnsname-18822f9a4fb35d1349eb256f4cd2bfd372474d84.tar.gz) = de371722fbf18cd23b31485ee7ba36bb41d0d9a932d15e50872989c3ca1ff7246da63143c3725d81089fadda3821a54c18b22150d9d16005b07df6824f5f71f8 SHA512 (gvisor-tap-vsock-407efb5dcdb0f4445935f7360535800b60447544.tar.gz) = 8b9e687c8be7063641839b5764787ae82561635ae6410585a3c70552bed741e6a63154f55d0209a6408861d5ee76619a765e70b2deda37d38802f6e5b57f2a4c -SHA512 (v4.6.0-rc2.tar.gz) = 96dc23df93269c5c83e15bfeb33606505205aef7ee2064f69babf6f4fae9c2d1a416d397f34119de30f1d086192b307771c67d66ae256ace1dfd4a24b7c675bf diff --git a/tests/roles/run_bats_tests/files/run_bats_tests.sh b/tests/roles/run_bats_tests/files/run_bats_tests.sh index 249c3ec..90884cb 100755 --- a/tests/roles/run_bats_tests/files/run_bats_tests.sh +++ b/tests/roles/run_bats_tests/files/run_bats_tests.sh @@ -27,7 +27,7 @@ exec &> >(tee -a $FULL_LOG) echo "Packages:" echo " Kernel: $(uname -r)" rpm -qa |\ - egrep 'podman|conmon|containers-common|crun|runc|iptable|slirp|aardvark|netavark|containernetworking-plugins|systemd|container-selinux' |\ + egrep 'podman|conmon|containers-common|crun|runc|iptable|slirp|aardvark|netavark|containernetworking-plugins|systemd|container-selinux|passt' |\ sort |\ sed -e 's/^/ /'