166 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			4.9 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
 | 
						|
 | 
						|
# Any additinoal comments should go below this line or else syntax highlighting
 | 
						|
# may not work.
 | 
						|
 | 
						|
# CAUTION: This is not a replacement for RPMs provided by your distro.
 | 
						|
# Only intended to build and test the latest unreleased changes.
 | 
						|
 | 
						|
%global with_debug 1
 | 
						|
 | 
						|
# 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:) GO111MODULE=off 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
 | 
						|
 | 
						|
%if 0%{?with_debug}
 | 
						|
%global _find_debuginfo_dwz_opts %{nil}
 | 
						|
%global _dwz_low_mem_die_limit 0
 | 
						|
%else
 | 
						|
%global debug_package %{nil}
 | 
						|
%endif
 | 
						|
 | 
						|
%global provider github
 | 
						|
%global provider_tld com
 | 
						|
%global project containers
 | 
						|
%global repo %{name}
 | 
						|
# https://github.com/containers/%%{name}
 | 
						|
%global import_path %{provider}.%{provider_tld}/%{project}/%{repo}
 | 
						|
%global git0 https://%{import_path}
 | 
						|
 | 
						|
Name: {{{ git_dir_name }}}
 | 
						|
Epoch: 101
 | 
						|
Version: {{{ git_dir_version }}}
 | 
						|
Release: 1%{?dist}
 | 
						|
Summary: Manage Pods, Containers and Container Images
 | 
						|
License:   ASL 2.0
 | 
						|
URL:        https://github.com/containers/buildah
 | 
						|
VCS:        {{{ git_dir_vcs }}}
 | 
						|
Source:     {{{ git_dir_pack }}}
 | 
						|
BuildRequires: device-mapper-devel
 | 
						|
BuildRequires: git-core
 | 
						|
BuildRequires: golang
 | 
						|
BuildRequires: glib2-devel
 | 
						|
BuildRequires: glibc-static
 | 
						|
BuildRequires: go-md2man
 | 
						|
%if 0%{?fedora} || 0%{?rhel} >= 9
 | 
						|
BuildRequires: go-rpm-macros
 | 
						|
%endif
 | 
						|
BuildRequires: gpgme-devel
 | 
						|
BuildRequires: libassuan-devel
 | 
						|
BuildRequires: make
 | 
						|
BuildRequires: ostree-devel
 | 
						|
BuildRequires: shadow-utils-subid-devel
 | 
						|
%if 0%{?fedora} && ! 0%{?rhel}
 | 
						|
BuildRequires: btrfs-progs-devel
 | 
						|
%endif
 | 
						|
Requires: containers-common-extra >= 4:1-78
 | 
						|
%if 0%{?rhel}
 | 
						|
BuildRequires: libseccomp-devel
 | 
						|
%else
 | 
						|
BuildRequires: libseccomp-static
 | 
						|
%endif
 | 
						|
Requires: libseccomp
 | 
						|
Suggests: cpp
 | 
						|
 | 
						|
%description
 | 
						|
The %{name} package provides a command line tool which can be used to
 | 
						|
* create a working container from scratch
 | 
						|
or
 | 
						|
* create a working container from an image as a starting point
 | 
						|
* mount/umount a working container's root file system for manipulation
 | 
						|
* save container's root file system layer to create a new image
 | 
						|
* delete a working container or an image.
 | 
						|
 | 
						|
%package tests
 | 
						|
Summary: Tests for %{name}
 | 
						|
Requires: %{name} = %{version}-%{release}
 | 
						|
Requires: bats
 | 
						|
Requires: bzip2
 | 
						|
Requires: podman
 | 
						|
Requires: golang
 | 
						|
Requires: jq
 | 
						|
Requires: httpd-tools
 | 
						|
Requires: openssl
 | 
						|
Requires: nmap-ncat
 | 
						|
Requires: git-daemon
 | 
						|
 | 
						|
%description tests
 | 
						|
%{summary}
 | 
						|
 | 
						|
This package contains system tests for %{name}
 | 
						|
 | 
						|
%prep
 | 
						|
{{{ git_dir_setup_macro }}}
 | 
						|
 | 
						|
%build
 | 
						|
%set_build_flags
 | 
						|
export GOPATH=$(pwd)/_build:$(pwd)
 | 
						|
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
 | 
						|
 | 
						|
mkdir _build
 | 
						|
pushd _build
 | 
						|
mkdir -p src/%{provider}.%{provider_tld}/%{project}
 | 
						|
ln -s $(dirs +1 -l) src/%{import_path}
 | 
						|
popd
 | 
						|
 | 
						|
mv vendor src
 | 
						|
 | 
						|
export CNI_VERSION=`grep '^# github.com/containernetworking/cni ' src/modules.txt | sed 's,.* ,,'`
 | 
						|
export LDFLAGS="-X main.buildInfo=`date +%s` -X main.cniVersion=${CNI_VERSION}"
 | 
						|
 | 
						|
export BUILDTAGS="$(hack/libsubid_tag.sh) seccomp selinux $(hack/systemd_tag.sh)"
 | 
						|
%if 0%{?rhel}
 | 
						|
export BUILDTAGS="$BUILDTAGS exclude_graphdriver_btrfs btrfs_noversion"
 | 
						|
%endif
 | 
						|
 | 
						|
%gobuild -o bin/%{name} %{import_path}/cmd/%{name}
 | 
						|
%gobuild -o bin/imgtype %{import_path}/tests/imgtype
 | 
						|
%gobuild -o bin/copy    %{import_path}/tests/copy
 | 
						|
GOMD2MAN=go-md2man %{__make} -C docs
 | 
						|
 | 
						|
# This will copy the files generated by the `make` command above into
 | 
						|
# the installable rpm package.
 | 
						|
%install
 | 
						|
export GOPATH=$(pwd)/_build:$(pwd):%{gopath}
 | 
						|
make DESTDIR=%{buildroot} PREFIX=%{_prefix} install install.completions
 | 
						|
make DESTDIR=%{buildroot} PREFIX=%{_prefix} -C docs install
 | 
						|
 | 
						|
install -d -p %{buildroot}/%{_datadir}/%{name}/test/system
 | 
						|
cp -pav tests/. %{buildroot}/%{_datadir}/%{name}/test/system
 | 
						|
cp bin/imgtype %{buildroot}/%{_bindir}/%{name}-imgtype
 | 
						|
cp bin/copy    %{buildroot}/%{_bindir}/%{name}-copy
 | 
						|
 | 
						|
rm -f %{buildroot}%{_mandir}/man5/{Containerfile.5*,containerignore.5*}
 | 
						|
 | 
						|
 | 
						|
%files
 | 
						|
%license LICENSE
 | 
						|
%doc README.md
 | 
						|
%{_bindir}/%{name}
 | 
						|
%{_mandir}/man1/%{name}*
 | 
						|
%dir %{_datadir}/bash-completion
 | 
						|
%dir %{_datadir}/bash-completion/completions
 | 
						|
%{_datadir}/bash-completion/completions/%{name}
 | 
						|
 | 
						|
%files tests
 | 
						|
%license LICENSE
 | 
						|
%{_bindir}/%{name}-imgtype
 | 
						|
%{_bindir}/%{name}-copy
 | 
						|
%{_datadir}/%{name}/test
 | 
						|
 | 
						|
%changelog
 | 
						|
{{{ git_dir_changelog }}}
 |