podman/podman.spec
Richard Brown c6ef1bc2ee Accepting request 984428 from home:RBrownSUSE:branches:devel:microos
- Update to version 4.1.1:
  * The output of the podman load command now mirrors that of docker load.
  * Podman now supports Docker Compose v2.2 and higher. Please note that it may be necessary to disable the use of Buildkit by setting the environment variable DOCKER_BUILDKIT=0.
  * A new container command has been added, podman container clone. This command makes a copy of an existing container, with the ability to change some settings (e.g. resource limits) while doing so.
  * Podman now supports sending JSON events related to machines to a Unix socket named machine_events.*\.sock in XDG_RUNTIME_DIR/podman or to a socket whose path is set in the PODMAN_MACHINE_EVENTS_SOCK environment variable.
  * Two new volume commands have been added, podman volume mount and podman volume unmount. These allow for Podman-managed named volumes to be mounted and accessed from outside containers.
  * The podman container checkpoint and podman container restore options now support checkpointing to and restoring from OCI images. This allows checkpoints to be distributed via standard image registries.
  * The podman play kube command now supports environment variables that are specified using the fieldRef and resourceFieldRef sources.
  * The podman play kube command will now set default resource limits when the provided YAML does not include them.
  * The podman play kube command now supports a new option, --annotation, to add annotations to created containers.
  * The podman play kube --build command now supports a new option, --context-dir, which allows the user to specify the context directory to use when building the Containerfile.
  * The podman container commit command now supports a new option, --squash, which squashes the generated image into a single layer.
  * The podman pod logs command now supports two new options, --names, which identifies which container generated a log message by name, instead of ID and --color, which colors messages based on what container generated them.
  * The podman rmi command now supports a new option, --ignore, which will ignore errors caused by missing images.
  * The podman network create command now features a new option, --ipam-driver, to specify details about how IP addresses are assigned to containers in the network.
  * The podman machine list command now features a new option, --quiet, to print only the names of configured VMs and no other information.
  * The --ipc option to the podman create, podman run, and podman pod create commands now supports three new modes: none, private, and shareable. The default IPC mode is now shareable, indicating the the IPC namespace can be shared with other containers.
  * The --mount option to the podman create and podman run commands can now set options for created named volumes via the volume-opt parameter.
  * The --mount option to the podman create and podman run commands now allows parameters to be passed in CSV format.
  * The --userns option to the podman create and podman run commands now supports a new option, nomap, that (only for rootless containers) does not map the UID of the user that started the container into the container, increasing security.
  * The podman import command now supports three new options, --arch, --os, and --variant, to specify what system the imported image was built for.
  * The podman inspect command now includes information on the network configuration of containers that joined a pre-configured network namespace with the --net ns: option to podman run, podman create, and podman pod create.
  * The podman run and podman create commands now support a new option, --chrootdirs, which specifies additional locations where container-specific files managed by Podman (e.g. /etc/hosts, `/etc/resolv.conf, etc) will be mounted inside the container (#12961).
  * The podman run and podman create commands now support a new option, --passwd-entry, allowing entries to be added to the container's /etc/passwd file.
  * The podman images --format command now accepts two new format directives: {{.CreatedAt}} and {{.CreatedSince}}.
  * The podman volume create command's -o option now accepts a new argument, o=noquota, to disable XFS quotas entirely and avoid potential issues when Podman is run on an XFS filesystem with existing quotas defined.
  * The podman info command now includes additional information on the machine Podman is running on, including disk utilization on the drive Podman is storing containers and images on, and CPU utilization.
- Drop obsolete patches:
  * 0001-Adjust-buildah-to-opencontainers-selinux-v1.10.1.patch
  * 0001-Relabel-relabel-links-instead-of-their-targets.patch
  * 0002-specgen-do-not-set-OOMScoreAdj-by-default.patch
  * 0004-fix-Container.cGroupPath-skip-empty-line-to-avoid-fa.patch

OBS-URL: https://build.opensuse.org/request/show/984428
OBS-URL: https://build.opensuse.org/package/show/devel:microos/podman?expand=0&rev=3
2022-06-22 10:01:20 +00:00

250 lines
8.3 KiB
RPMSpec

#
# spec file for package podman
#
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define project github.com/containers/podman
# Build with libostree-devel in Tumbleweed, Leap 15 and SLES 15
%if 0%{?suse_version} >= 1500
%define with_libostree 1
%endif
Name: podman
Version: 4.1.1
Release: 0
Summary: Daemon-less container engine for managing containers, pods and images
License: Apache-2.0
Group: System/Management
URL: https://github.com/containers/podman
Source0: %{name}-%{version}.tar.xz
Source1: podman.conf
Source3: %{name}-rpmlintrc
Source4: README.SUSE.SLES
BuildRequires: bash-completion
BuildRequires: cni
BuildRequires: device-mapper-devel
BuildRequires: fdupes
BuildRequires: git-core
BuildRequires: glib2-devel-static
BuildRequires: glibc-devel-static
BuildRequires: go-go-md2man
BuildRequires: golang-packaging
BuildRequires: libapparmor-devel
BuildRequires: libassuan-devel
BuildRequires: libbtrfs-devel
BuildRequires: libcontainers-common
BuildRequires: libgpgme-devel
BuildRequires: libseccomp-devel
BuildRequires: golang(API) = 1.16
BuildRequires: pkgconfig(libselinux)
BuildRequires: pkgconfig(libsystemd)
Recommends: apparmor-abstractions
Recommends: apparmor-parser
Requires: catatonit >= 0.1.7
Requires: cni
Requires: cni-plugins
Requires: conmon >= 2.0.24
Requires: fuse-overlayfs
Requires: iptables
Requires: libcontainers-common >= 20210626
Requires: runc >= 1.0.1
Requires: slirp4netns >= 0.4.0
Requires: timezone
Recommends: %{name}-cni-config = %{version}
Suggests: katacontainers
%if 0%{?with_libostree}
BuildRequires: libostree-devel
%endif
%description
Podman is a container engine for managing pods, containers, and container
images.
It is a standalone tool and it directly manipulates containers without the need
of a container engine daemon.
Podman is able to interact with container images create in buildah, cri-o, and
skopeo, as they all share the same datastore backend.
%prep
%autosetup -p1
%package remote
Summary: Client for managing podman containers remotely
Group: System/Management
Conflicts: %{name} < 3.1.2
Provides: podman:%{_bindir}/%{name}-remote
%description remote
This client allows controlling podman on a separate host, e.g. over SSH.
%package cni-config
Summary: Basic CNI configuration for podman
Group: System/Management
Requires: %{name} = %{version}
# iproute2 is needed by the %%triggerun scriplet
Requires: iproute2
BuildArch: noarch
%description cni-config
A "basic" CNI configuration for podman that makes networking usable for basic
setups. In more complicated setups, users are recommended to write their own
CNI configurations.
%package docker
Summary: Emulate Docker CLI using podman
BuildArch: noarch
Requires: %{name} = %{version}
Conflicts: docker
Conflicts: docker-ce
Conflicts: docker-ee
Conflicts: docker-latest
Conflicts: moby-engine
%description docker
This package installs a script named docker that emulates the Docker CLI by
executes podman commands, it also creates links between all Docker CLI man
pages and %{name}.
%build
# Build podman
BUILDFLAGS="-buildmode=pie" make
# Build manpages
make %{?_smp_mflags} docs
%check
# Too many tests fail due to the restricted permissions in the build enviroment.
# Updates must be tested manually.
%install
make DESTDIR=%{buildroot} PREFIX=/usr install install.completions install.docker
# packaged in libcontainers-common
rm %{buildroot}/usr/share/man/man5/oci-hooks.*
# Add podman modprobe.d drop-in config
mkdir -p %{buildroot}%{_prefix}/lib/modules-load.d
install -m 0644 -t %{buildroot}%{_prefix}/lib/modules-load.d/ %{SOURCE1}
# README.SUSE is SLES specifc currently
%if !0%{?is_opensuse}
install -D -m 0644 %{SOURCE4} %{buildroot}%{_docdir}/%{name}/README.SUSE
%endif
%fdupes %{buildroot}/%{_prefix}
%files
%if !0%{?is_opensuse}
%doc %{_docdir}/%{name}
%endif
# Binaries
%{_bindir}/podman
# Manpages
%{_mandir}/man1/podman*.1*
%exclude %{_mandir}/man1/podman-remote*.1*
# Configs
%dir %{_prefix}/lib/modules-load.d
%{_prefix}/lib/modules-load.d/podman.conf
%{_tmpfilesdir}/podman.conf
# Rootless port
%dir %{_libexecdir}/podman
%{_libexecdir}/podman/rootlessport
# Completion
%{_datadir}/bash-completion/completions/podman
%{_datadir}/zsh/site-functions/_podman
%dir %{_datadir}/fish/
%dir %{_datadir}/fish/vendor_completions.d/
%{_datadir}/fish/vendor_completions.d/podman.fish
%{_unitdir}/podman.service
%{_unitdir}/podman.socket
%{_unitdir}/podman-auto-update.service
%{_unitdir}/podman-restart.service
%{_unitdir}/podman-auto-update.timer
%{_userunitdir}/podman.service
%{_userunitdir}/podman.socket
%{_userunitdir}/podman-auto-update.service
%{_userunitdir}/podman-restart.service
%{_userunitdir}/podman-auto-update.timer
%ghost /run/podman
%ghost %{_localstatedir}/adm/update-messages/%{name}-%{version}-%{release}-libpodconf
%license LICENSE
%files remote
%{_bindir}/podman-remote
%{_mandir}/man1/podman-remote*.1*
%{_datadir}/bash-completion/completions/podman-remote
%{_datadir}/zsh/site-functions/_podman-remote
%dir %{_datadir}/fish/
%dir %{_datadir}/fish/vendor_completions.d/
%{_datadir}/fish/vendor_completions.d/podman-remote.fish
%files cni-config
%license LICENSE
%files docker
%{_bindir}/docker
%{_tmpfilesdir}/podman-docker.conf
%post docker
%tmpfiles_create %{_tmpfilesdir}/podman-docker.conf
%pre
%service_add_pre podman.service podman.socket podman-auto-update.service podman-restart.service podman-auto-update.timer
# move away any old rpmsave config file to avoid having it re-activated again in
# %%posttrans
test -f /etc/containers/libpod.conf.rpmsave && mv -v /etc/containers/libpod.conf.rpmsave /etc/containers/libpod.conf.rpmsave.old ||:
%post
%service_add_post podman.service podman.socket podman-auto-update.service podman-restart.service podman-auto-update.timer
%tmpfiles_create %{_tmpfilesdir}/podman.conf
%systemd_user_post podman.service podman.socket podman-auto-update.service podman-restart.service podman-auto-update.timer
%preun
%service_del_preun podman.service podman.socket podman-auto-update.service podman-restart.service podman-auto-update.timer
%systemd_user_preun podman.service podman.socket podman-auto-update.service podman-restart.service podman-auto-update.timer
%postun
%service_del_postun podman.service podman.socket podman-auto-update.service podman-restart.service podman-auto-update.timer
%systemd_user_postun podman.service podman.socket podman-auto-update.service podman-restart.service podman-auto-update.timer
%posttrans
# if libpod.conf.rpmsave was created, set an update
# message informing about the libpod.conf -> containers.conf change
if test -f /etc/containers/libpod.conf.rpmsave ; then
cat >> %{_localstatedir}/adm/update-messages/%{name}-%{version}-%{release}-libpodconf << EOF
WARNING: Podman configuration file changes
With version 2.0 Podman changed to a slightly different configuration file format.
Also the name of default configuration file has been changed. The new format is
documented in the containers.conf(5) man-page and changes should usually be
straight-forward.
The new default configuration is located in /usr/share/containers/containers.conf.
In order to override setting from that file you can create
/etc/containers/containers.conf with your changed settings.
EOF
fi
%triggerun cni-config -- %{name}-cni-config < 1.6.0
# The name of the network bridge changed from cni0 to podman-cni0 with
# podman 1.6. We need to rename the existing bridge to the new name to
# to avoid network issues after upgrade
if ip link show dev cni0 > /dev/null 2>&1; then
ip link set dev cni0 down
ip link set dev cni0 name cni-podman0
ip link set dev cni-podman0 up
fi
%changelog