mirror of https://github.com/containers/podman.git
				
				
				
			
		
			
				
	
	
		
			264 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			264 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| # For automatic rebuilds in COPR
 | |
| 
 | |
| # The following tag is to get correct syntax highlighting for this file in vim text editor
 | |
| # vim: syntax=spec
 | |
| 
 | |
| %global with_debug 1
 | |
| 
 | |
| # _user_tmpfiles.d currently undefined on rhel
 | |
| %if 0%{?rhel}
 | |
| %global _user_tmpfilesdir %{_datadir}/user-tmpfiles.d
 | |
| %endif
 | |
| 
 | |
| %if 0%{?with_debug}
 | |
| %global _find_debuginfo_dwz_opts %{nil}
 | |
| %global _dwz_low_mem_die_limit 0
 | |
| %else
 | |
| %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 !0%{?fedora} && 0%{?rhel} <= 8
 | |
| %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 %{?**};
 | |
| %endif
 | |
| 
 | |
| Name: {{{ git_dir_name }}}
 | |
| Epoch: 101
 | |
| Version: {{{ git_dir_version }}}
 | |
| Release: 1%{?dist}
 | |
| Summary: Manage Pods, Containers and Container Images
 | |
| License: Apache-2.0
 | |
| URL: https://github.com/containers/podman
 | |
| VCS: {{{ git_dir_vcs }}}
 | |
| Source:     {{{ git_dir_pack }}}
 | |
| %if 0%{?fedora} && ! 0%{?rhel}
 | |
| BuildRequires: btrfs-progs-devel
 | |
| %endif
 | |
| BuildRequires: gcc
 | |
| %if 0%{?fedora} >= 37
 | |
| BuildRequires: gettext-envsubst
 | |
| %else
 | |
| BuildRequires: gettext
 | |
| %endif
 | |
| BuildRequires: golang >= 1.16.6
 | |
| BuildRequires: glib2-devel
 | |
| BuildRequires: glibc-devel
 | |
| BuildRequires: glibc-static
 | |
| BuildRequires: git-core
 | |
| BuildRequires: go-md2man
 | |
| %if 0%{?fedora} || 0%{?rhel} >= 9
 | |
| BuildRequires: go-rpm-macros
 | |
| %endif
 | |
| %if 0%{?rhel} <= 8
 | |
| BuildRequires: pkgconfig(devmapper)
 | |
| BuildRequires: python3
 | |
| %endif
 | |
| BuildRequires: gpgme-devel
 | |
| BuildRequires: libassuan-devel
 | |
| BuildRequires: libgpg-error-devel
 | |
| BuildRequires: libseccomp-devel
 | |
| BuildRequires: libselinux-devel
 | |
| BuildRequires: shadow-utils-subid-devel
 | |
| BuildRequires: pkgconfig
 | |
| BuildRequires: make
 | |
| BuildRequires: ostree-devel
 | |
| %{?systemd_requires}
 | |
| BuildRequires: systemd
 | |
| BuildRequires: systemd-devel
 | |
| Requires: conmon >= 2:2.0.30-2
 | |
| Requires: containers-common-extra >= 4:1-87
 | |
| Recommends: catatonit
 | |
| Conflicts: quadlet
 | |
| Provides: %{name}-quadlet
 | |
| Obsoletes: %{name}-quadlet <= 101:0.0.git.17877.f247b4d4-1
 | |
| Provides: %{name}-quadlet = %{epoch}:%{version}-%{release}
 | |
| 
 | |
| %description
 | |
| %{name} (Pod Manager) is a fully featured container engine that is a simple
 | |
| daemonless tool.  %{name} provides a Docker-CLI comparable command line that
 | |
| eases the transition from other container engines and allows the management of
 | |
| pods, containers and images.  Simply put: alias docker=%{name}.
 | |
| Most %{name} commands can be run as a regular user, without requiring
 | |
| additional privileges.
 | |
| 
 | |
| %{name} uses Buildah(1) internally to create container images.
 | |
| Both tools share image (not container) storage, hence each can use or
 | |
| manipulate images (but not containers) created by the other.
 | |
| 
 | |
| %package docker
 | |
| Summary: Emulate Docker CLI using %{name}
 | |
| BuildArch: noarch
 | |
| Requires: %{name} = %{epoch}:%{version}-%{release}
 | |
| Conflicts: docker
 | |
| Conflicts: docker-latest
 | |
| Conflicts: docker-ce
 | |
| Conflicts: docker-ee
 | |
| Conflicts: moby-engine
 | |
| 
 | |
| %description docker
 | |
| This package installs a script named docker that emulates the Docker CLI by
 | |
| executes %{name} commands, it also creates links between all Docker CLI man
 | |
| pages and %{name}.
 | |
| 
 | |
| %package tests
 | |
| Summary: Tests for %{name}
 | |
| Requires: %{name} = %{epoch}:%{version}-%{release}
 | |
| Requires: bats
 | |
| Requires: jq
 | |
| Requires: skopeo
 | |
| Requires: nmap-ncat
 | |
| Requires: httpd-tools
 | |
| Requires: openssl
 | |
| Requires: socat
 | |
| Requires: buildah
 | |
| Requires: gnupg
 | |
| 
 | |
| %description tests
 | |
| %{summary}
 | |
| 
 | |
| This package contains system tests for %{name}
 | |
| 
 | |
| %package remote
 | |
| Summary: (Experimental) Remote client for managing %{name} containers
 | |
| 
 | |
| %description remote
 | |
| Remote client for managing %{name} containers.
 | |
| 
 | |
| %{name}-remote uses the libpod REST API to connect to a %{name} client to
 | |
| manage pods, containers and container images. %{name}-remote supports ssh
 | |
| connections as well.
 | |
| 
 | |
| %prep
 | |
| {{{ git_dir_setup_macro }}}
 | |
| 
 | |
| %build
 | |
| %set_build_flags
 | |
| %global gomodulesmode GO111MODULE=on
 | |
| export CGO_CFLAGS=$CFLAGS
 | |
| # These extra flags present in $CFLAGS have been skipped for now as they break the build
 | |
| CGO_CFLAGS=$(echo $CGO_CFLAGS | sed 's/-flto=auto//g')
 | |
| CGO_CFLAGS=$(echo $CGO_CFLAGS | sed 's/-Wp,D_GLIBCXX_ASSERTIONS//g')
 | |
| CGO_CFLAGS=$(echo $CGO_CFLAGS | sed 's/-specs=\/usr\/lib\/rpm\/redhat\/redhat-annobin-cc1//g')
 | |
| 
 | |
| %ifarch x86_64
 | |
| export CGO_CFLAGS+=" -m64 -mtune=generic -fcf-protection=full"
 | |
| %endif
 | |
| 
 | |
| # build date. FIXME: Makefile uses '/v2/libpod', that doesn't work here?
 | |
| LDFLAGS="-X ./libpod/define.buildInfo=$(date +%s)"
 | |
| 
 | |
| # build rootlessport first
 | |
| %gobuild -o bin/rootlessport ./cmd/rootlessport
 | |
| 
 | |
| # set base buildtags common to both %%{name} and %%{name}-remote
 | |
| export BASEBUILDTAGS="seccomp exclude_graphdriver_devicemapper $(hack/selinux_tag.sh) $(hack/systemd_tag.sh) $(hack/libsubid_tag.sh)"
 | |
| 
 | |
| # build %%{name}
 | |
| export BUILDTAGS="$BASEBUILDTAGS $(hack/btrfs_installed_tag.sh) $(hack/btrfs_tag.sh)"
 | |
| %gobuild -o bin/%{name} ./cmd/%{name}
 | |
| 
 | |
| # build %%{name}-remote
 | |
| export BUILDTAGS="$BASEBUILDTAGS exclude_graphdriver_btrfs btrfs_noversion remote"
 | |
| %gobuild -o bin/%{name}-remote ./cmd/%{name}
 | |
| 
 | |
| # build quadlet
 | |
| export BUILDTAGS="$BASEBUILDTAGS $(hack/btrfs_installed_tag.sh) $(hack/btrfs_tag.sh)"
 | |
| %gobuild -o bin/quadlet ./cmd/quadlet
 | |
| 
 | |
| make docs docker-docs
 | |
| 
 | |
| %install
 | |
| PODMAN_VERSION=%{version} %{__make} DESTDIR=%{buildroot} PREFIX=%{_prefix} ETCDIR=%{_sysconfdir} \
 | |
|         install.bin \
 | |
|         install.man \
 | |
|         install.systemd \
 | |
|         install.completions \
 | |
|         install.docker \
 | |
|         install.docker-docs \
 | |
|         install.remote \
 | |
| %if 0%{?fedora} || 0%{?rhel} >= 10
 | |
|         install.modules-load
 | |
| %endif
 | |
| 
 | |
| # Sanitize paths in %%{_bindir}/docker
 | |
| sed -i 's;%{buildroot}%{_sysconfdir};%{_sysconfdir}/containers;g' %{buildroot}%{_bindir}/docker
 | |
| 
 | |
| install -d -p %{buildroot}/%{_datadir}/%{name}/test/system
 | |
| cp -pav test/system %{buildroot}/%{_datadir}/%{name}/test/
 | |
| 
 | |
| # do not include docker and %%{name}-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
 | |
|     echo "$file*" >> %{name}.file-list
 | |
| done
 | |
| 
 | |
| %post
 | |
| if [ $1 -eq 1 ]; then
 | |
|     %{_bindir}/systemctl enable --now %{name}-restart.service
 | |
| fi
 | |
| 
 | |
| %preun
 | |
| %systemd_preun %{name}-restart.service
 | |
| 
 | |
| %postun
 | |
| %systemd_postun %{name}-restart.service
 | |
| 
 | |
| # This lists all the files that are included in the rpm package and that
 | |
| # are going to be installed into target system where the rpm is installed.
 | |
| %files -f %{name}.file-list
 | |
| %license LICENSE
 | |
| %doc README.md CONTRIBUTING.md install.md transfer.md
 | |
| %{_bindir}/%{name}
 | |
| %dir %{_libexecdir}/%{name}
 | |
| %{_libexecdir}/%{name}/rootlessport
 | |
| %{_libexecdir}/%{name}/quadlet
 | |
| %{_systemdgeneratordir}/%{name}-system-generator
 | |
| %{_systemdusergeneratordir}/%{name}-user-generator
 | |
| %{_datadir}/bash-completion/completions/%{name}
 | |
| # By "owning" the site-functions dir, we don't need to Require zsh
 | |
| %dir %{_datadir}/zsh/site-functions
 | |
| %{_datadir}/zsh/site-functions/_%{name}
 | |
| %dir %{_datadir}/fish/vendor_completions.d
 | |
| %{_datadir}/fish/vendor_completions.d/%{name}.fish
 | |
| %{_unitdir}/%{name}-auto-update.service
 | |
| %{_unitdir}/%{name}-auto-update.timer
 | |
| %{_unitdir}/%{name}.service
 | |
| %{_unitdir}/%{name}.socket
 | |
| %{_unitdir}/%{name}-restart.service
 | |
| %{_unitdir}/%{name}-kube@.service
 | |
| %{_unitdir}/%{name}-clean-transient.service
 | |
| %{_userunitdir}/%{name}-auto-update.service
 | |
| %{_userunitdir}/%{name}-auto-update.timer
 | |
| %{_userunitdir}/%{name}.service
 | |
| %{_userunitdir}/%{name}.socket
 | |
| %{_userunitdir}/%{name}-restart.service
 | |
| %{_userunitdir}/%{name}-kube@.service
 | |
| %{_tmpfilesdir}/%{name}.conf
 | |
| %{_user_tmpfilesdir}/%{name}-docker.conf
 | |
| %if 0%{?fedora} || 0%{?rhel} >= 10
 | |
| %{_modulesloaddir}/%{name}-iptables.conf
 | |
| %endif
 | |
| 
 | |
| %files docker
 | |
| %{_bindir}/docker
 | |
| %{_mandir}/man1/docker*.1*
 | |
| %{_mandir}/man5/docker*.5*
 | |
| %{_usr}/lib/tmpfiles.d/%{name}-docker.conf
 | |
| 
 | |
| %files remote
 | |
| %license LICENSE
 | |
| %{_bindir}/%{name}-remote
 | |
| %{_mandir}/man1/%{name}-remote*.*
 | |
| %{_datadir}/bash-completion/completions/%{name}-remote
 | |
| %dir %{_datadir}/fish/vendor_completions.d
 | |
| %{_datadir}/fish/vendor_completions.d/%{name}-remote.fish
 | |
| %dir %{_datadir}/zsh/site-functions
 | |
| %{_datadir}/zsh/site-functions/_%{name}-remote
 | |
| 
 | |
| %files tests
 | |
| %license LICENSE
 | |
| %{_datadir}/%{name}/test
 | |
| 
 | |
| %changelog
 | |
| {{{ git_dir_changelog }}}
 |