353 lines
12 KiB
RPMSpec
353 lines
12 KiB
RPMSpec
%global with_debug 0
|
|
|
|
%if 0%{?with_debug}
|
|
%global _find_debuginfo_dwz_opts %{nil}
|
|
%global _dwz_low_mem_die_limit 0
|
|
%else
|
|
%global debug_package %{nil}
|
|
%endif
|
|
|
|
# binaries and unitfiles are currently called 'docker'
|
|
# to match with upstream supplied packages
|
|
%global origname docker
|
|
%global newname moby
|
|
%global service_name %{origname}
|
|
|
|
# moby / docker-ce / cli
|
|
%global git_moby https://github.com/%{service_name}/%{service_name}-ce
|
|
%global commit_moby 0ffa8257ec673ed6849b73b03fb01b0cac90fdb3
|
|
%global shortcommit_moby %(c=%{commit_moby}; echo ${c:0:7})
|
|
|
|
# docker-runc
|
|
%global git_runc https://github.com/opencontainers/runc
|
|
%global commit_runc ad0f5255060d36872be04de22f8731f38ef2d7b1
|
|
%global shortcommit_runc %(c=%{commit_runc}; echo ${c:0:7})
|
|
|
|
# docker-containerd
|
|
%global git_containerd https://github.com/containerd/containerd
|
|
%global commit_containerd a88b6319614de846458750ff882723479ca7b1a1
|
|
%global shortcommit_containerd %(c=%{commit_containerd}; echo ${c:0:7})
|
|
|
|
# docker-proxy / libnetwork
|
|
%global git_libnetwork https://github.com/%{service_name}/libnetwork
|
|
%global commit_libnetwork a79d3687931697244b8e03485bf7b2042f8ec6b6
|
|
%global shortcommit_libnetwork %(c=%{commit_libnetwork}; echo ${c:0:7})
|
|
|
|
# tini
|
|
%global git_tini https://github.com/krallin/tini
|
|
%global commit_tini fec3683b971d9c3ef73f284f176672c44b448662
|
|
%global shortcommit_tini %(c=%{commit_tini}; echo ${c:0:7})
|
|
|
|
Name: %{newname}-engine
|
|
Version: 18.06.0
|
|
Release: 2.ce.git%{shortcommit_moby}%{?dist}
|
|
Summary: The open-source application container engine
|
|
License: ASL 2.0
|
|
# no golang / go-md2man for ppc64
|
|
ExcludeArch: ppc64
|
|
Source0: %{git_moby}/archive/%{commit_moby}.tar.gz
|
|
Source1: %{git_runc}/archive/%{commit_runc}.tar.gz
|
|
Source2: %{git_containerd}/archive/%{commit_containerd}.tar.gz
|
|
Source3: %{git_libnetwork}/archive/%{commit_libnetwork}.tar.gz
|
|
Source4: %{git_tini}/archive/%{commit_tini}.tar.gz
|
|
Patch1: %{name}-%{version}-CVE-2019-5736.patch
|
|
URL: https://www.%{origname}.com
|
|
|
|
BuildRequires: btrfs-progs-devel
|
|
BuildRequires: cmake
|
|
BuildRequires: dep
|
|
BuildRequires: device-mapper-devel
|
|
BuildRequires: git
|
|
BuildRequires: glibc-static
|
|
BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang >= 1.6.2}
|
|
BuildRequires: go-md2man
|
|
BuildRequires: gpgme-devel
|
|
BuildRequires: libassuan-devel
|
|
BuildRequires: libseccomp-static >= 2.3.0
|
|
BuildRequires: libtool-ltdl-devel
|
|
BuildRequires: make
|
|
BuildRequires: pkgconfig(audit)
|
|
BuildRequires: pkgconfig(systemd)
|
|
BuildRequires: sed
|
|
BuildRequires: sqlite-devel
|
|
|
|
# required packages on install
|
|
Requires: container-selinux
|
|
Requires: iptables
|
|
Requires: systemd
|
|
Requires: tar
|
|
Requires: xz
|
|
Requires: pigz
|
|
|
|
# Resolves: rhbz#1165615
|
|
Requires: device-mapper-libs >= 1.02.90-1
|
|
|
|
# conflicting packages
|
|
Conflicts: %{origname}
|
|
Conflicts: %{origname}-io
|
|
Conflicts: %{origname}-engine-cs
|
|
Conflicts: %{origname}-ce
|
|
Conflicts: %{origname}-ee
|
|
|
|
%description
|
|
Docker is an open source project to build, ship and run any application as a
|
|
lightweight container.
|
|
|
|
Docker containers are both hardware-agnostic and platform-agnostic. This means
|
|
they can run anywhere, from your laptop to the largest EC2 compute instance and
|
|
everything in between - and they don't require you to use a particular
|
|
language, framework or packaging system. That makes them great building blocks
|
|
for deploying and scaling web apps, databases, and backend services without
|
|
depending on a particular stack or provider.
|
|
|
|
%package fish-completion
|
|
Summary: Fish completion files for %{name}
|
|
Requires: %{name} = %{version}-%{release}
|
|
Requires: fish
|
|
Conflicts: %{service_name}-fish-completion
|
|
|
|
%description fish-completion
|
|
This package installs %{summary}.
|
|
|
|
%package vim
|
|
Summary: Vim syntax highlighting files for %{name}
|
|
Requires: %{name} = %{version}-%{release}
|
|
Requires: vim
|
|
Conflicts: %{service_name}-vim
|
|
|
|
%description vim
|
|
This package installs %{summary}.
|
|
|
|
%package zsh-completion
|
|
Summary: Zsh completion files for %{name}
|
|
Requires: %{name} = %{version}-%{release}
|
|
Requires: zsh
|
|
Conflicts: %{service_name}-zsh-completion
|
|
|
|
%description zsh-completion
|
|
This package installs %{summary}.
|
|
|
|
%package nano
|
|
Summary: nano syntax highlighting files for Moby
|
|
Requires: %{name} = %{version}-%{release}
|
|
Requires: nano
|
|
|
|
%description nano
|
|
This package installs %{summary}.
|
|
|
|
%prep
|
|
%autosetup -N -Sgit -n %{service_name}-ce-%{commit_moby}
|
|
|
|
# correct rpmlint errors for bash completion
|
|
pushd components/cli
|
|
sed -i '/env bash/d' contrib/completion/bash/docker
|
|
popd
|
|
|
|
# untar runc
|
|
tar zxf %{SOURCE1}
|
|
|
|
# untar containerd
|
|
tar zxf %{SOURCE2}
|
|
|
|
# untar libnetwork
|
|
tar zxf %{SOURCE3}
|
|
|
|
# untar tini
|
|
tar zxf %{SOURCE4}
|
|
|
|
%patch1 -p1 -d runc-%{commit_runc}
|
|
|
|
%build
|
|
# build docker-runc
|
|
pushd runc-%{commit_runc}
|
|
mv vendor src
|
|
mkdir -p src/github.com/opencontainers
|
|
ln -s $(pwd) src/github.com/opencontainers/runc
|
|
sed -i 's/go build -i/go build/g' Makefile
|
|
GOPATH=$(pwd) make BUILDTAGS="seccomp selinux"
|
|
popd
|
|
|
|
# build docker-containerd
|
|
pushd containerd-%{commit_containerd}
|
|
mv vendor src
|
|
mkdir -p src/github.com/containerd
|
|
ln -s $(pwd) src/github.com/containerd/containerd
|
|
GOPATH=$(pwd) make
|
|
popd
|
|
|
|
# build docker-proxy / libnetwork
|
|
pushd libnetwork-%{commit_libnetwork}
|
|
mkdir -p src/github.com/%{service_name}
|
|
ln -s $(pwd) src/github.com/%{service_name}/libnetwork
|
|
export GOPATH=$(pwd)
|
|
LDFLAGS="-linkmode=external" %gobuild -o %{service_name}-proxy github.com/%{service_name}/libnetwork/cmd/proxy
|
|
popd
|
|
|
|
# build tini
|
|
pushd tini-%{commit_tini}
|
|
cmake .
|
|
make tini-static
|
|
popd
|
|
|
|
# build engine
|
|
pushd components/engine
|
|
mkdir _build
|
|
pushd _build
|
|
mkdir -p $(pwd)/src/github.com/%{service_name}
|
|
ln -s $(dirs +1 -l) src/github.com/%{service_name}/%{service_name}
|
|
ln -s $(dirs +1 -l) src/github.com/%{service_name}/%{service_name}
|
|
popd
|
|
|
|
export DOCKER_GITCOMMIT=%{shortcommit_moby}
|
|
export DOCKER_BUILDTAGS="seccomp selinux"
|
|
DOCKER_DEBUG=1 GOPATH=$(pwd)/_build:$(pwd)/vendor:%{gopath} bash -x hack/make.sh dynbinary
|
|
popd
|
|
|
|
# build cli
|
|
pushd components/cli
|
|
mkdir -p src/github.com/%{service_name}/cli
|
|
ln -s $(pwd)/* src/github.com/%{service_name}/cli
|
|
export GOPATH=%{gopath}:$(pwd)
|
|
make VERSION=$(cat VERSION) GITCOMMIT=%{shortcommit_moby} dynbinary # cli
|
|
./man/md2man-all.sh
|
|
pushd man/man1
|
|
popd
|
|
pushd man/man5
|
|
popd
|
|
popd
|
|
|
|
%install
|
|
install -dp %{buildroot}%{_bindir}
|
|
install -dp %{buildroot}%{_libexecdir}/%{service_name}
|
|
|
|
# install binary
|
|
install -p -m 755 components/cli/build/%{service_name} %{buildroot}%{_bindir}/%{service_name}
|
|
install -p -m 755 components/engine/bundles/latest/dynbinary-daemon/%{service_name}d %{buildroot}%{_bindir}/%{service_name}d
|
|
|
|
# install proxy
|
|
install -p -m 755 libnetwork-%{commit_libnetwork}/%{service_name}-proxy %{buildroot}%{_bindir}/%{service_name}-proxy
|
|
|
|
# install containerd
|
|
install -p -m 755 containerd-%{commit_containerd}/bin/containerd %{buildroot}%{_bindir}/%{service_name}-containerd
|
|
install -p -m 755 containerd-%{commit_containerd}/bin/containerd-shim %{buildroot}%{_bindir}/%{service_name}-containerd-shim
|
|
install -p -m 755 containerd-%{commit_containerd}/bin/ctr %{buildroot}%{_bindir}/%{service_name}-containerd-ctr
|
|
|
|
# install runc
|
|
install -p -m 755 runc-%{commit_runc}/runc %{buildroot}%{_bindir}/%{service_name}-runc
|
|
|
|
# install tini
|
|
install -p -m 755 tini-%{commit_tini}/tini-static %{buildroot}%{_bindir}/%{service_name}-init
|
|
|
|
# install udev rules
|
|
install -dp %{buildroot}%{_prefix}/lib/udev/rules.d
|
|
install -p -m 644 components/engine/contrib/udev/80-%{service_name}.rules %{buildroot}%{_usr}/lib/udev/rules.d/80-%{service_name}.rules
|
|
|
|
# add init scripts
|
|
install -dp %{buildroot}/%{_unitdir}
|
|
install -p -m 644 components/packaging/rpm/systemd/%{service_name}.service %{buildroot}%{_unitdir}
|
|
|
|
# add bash, zsh, and fish completions
|
|
install -dp %{buildroot}%{_datadir}/bash-completion/completions
|
|
install -dp %{buildroot}%{_datadir}/zsh/vendor-completions
|
|
install -dp %{buildroot}%{_datadir}/fish/vendor_completions.d
|
|
install -p -m 644 components/cli/contrib/completion/bash/%{service_name} %{buildroot}%{_datadir}/bash-completion/completions/%{service_name}
|
|
install -p -m 644 components/cli/contrib/completion/zsh/_%{service_name} %{buildroot}%{_datadir}/zsh/vendor-completions/_%{service_name}
|
|
install -p -m 644 components/cli/contrib/completion/fish/%{service_name}.fish %{buildroot}%{_datadir}/fish/vendor_completions.d/%{service_name}.fish
|
|
|
|
# install manpages
|
|
install -dp %{buildroot}%{_mandir}/man{1,5,8}
|
|
install -p -m 644 components/cli/man/man1/*.1 %{buildroot}%{_mandir}/man1
|
|
install -p -m 644 components/cli/man/man5/*.5 %{buildroot}%{_mandir}/man5
|
|
install -p -m 644 components/cli/man/man8/*.8 %{buildroot}%{_mandir}/man8
|
|
|
|
# add vimfiles
|
|
install -dp %{buildroot}%{_datadir}/vim/vimfiles/doc
|
|
install -dp %{buildroot}%{_datadir}/vim/vimfiles/ftdetect
|
|
install -dp %{buildroot}%{_datadir}/vim/vimfiles/syntax
|
|
install -p -m 644 components/engine/contrib/syntax/vim/doc/%{service_name}file.txt %{buildroot}%{_datadir}/vim/vimfiles/doc/%{service_name}file.txt
|
|
install -p -m 644 components/engine/contrib/syntax/vim/ftdetect/%{service_name}file.vim %{buildroot}%{_datadir}/vim/vimfiles/ftdetect/%{service_name}file.vim
|
|
install -p -m 644 components/engine/contrib/syntax/vim/syntax/%{service_name}file.vim %{buildroot}%{_datadir}/vim/vimfiles/syntax/%{service_name}file.vim
|
|
|
|
# add nano files
|
|
install -dp %{buildroot}%{_datadir}/nano
|
|
install -p -m 644 components/engine/contrib/syntax/nano/Dockerfile.nanorc %{buildroot}%{_datadir}/nano/Dockerfile.nanorc
|
|
|
|
for cli_file in LICENSE MAINTAINERS NOTICE README.md; do
|
|
cp "components/cli/$cli_file" "$(pwd)/cli-$cli_file"
|
|
done
|
|
|
|
%post
|
|
%systemd_post %{service_name}
|
|
|
|
%preun
|
|
%systemd_preun %{service_name}
|
|
|
|
%postun
|
|
%systemd_postun_with_restart %{service_name}
|
|
|
|
%files
|
|
%license cli-LICENSE components/engine/LICENSE
|
|
%doc components/engine/{AUTHORS,CHANGELOG.md,CONTRIBUTING.md,MAINTAINERS,NOTICE,README.md}
|
|
%doc cli-MAINTAINERS cli-NOTICE cli-README.md
|
|
%{_bindir}/%{service_name}
|
|
%{_bindir}/%{service_name}d
|
|
%dir %{_libexecdir}/%{service_name}/
|
|
%{_bindir}/%{service_name}-containerd
|
|
%{_bindir}/%{service_name}-containerd-shim
|
|
%{_bindir}/%{service_name}-containerd-ctr
|
|
%{_bindir}/%{service_name}-proxy
|
|
%{_bindir}/%{service_name}-runc
|
|
%{_bindir}/%{service_name}-init
|
|
%{_usr}/lib/udev/rules.d/80-%{service_name}.rules
|
|
%{_unitdir}/%{service_name}.service
|
|
%{_datadir}/bash-completion/completions/%{service_name}
|
|
%{_mandir}/man1/*
|
|
%{_mandir}/man5/*
|
|
%{_mandir}/man8/*
|
|
|
|
%files vim
|
|
%dir %{_datadir}/vim/vimfiles/{doc,ftdetect,syntax}
|
|
%{_datadir}/vim/vimfiles/doc/%{service_name}file.txt
|
|
%{_datadir}/vim/vimfiles/ftdetect/%{service_name}file.vim
|
|
%{_datadir}/vim/vimfiles/syntax/%{service_name}file.vim
|
|
|
|
%files zsh-completion
|
|
%dir %{_datadir}/zsh/vendor-completions/
|
|
%{_datadir}/zsh/vendor-completions/_%{service_name}
|
|
|
|
%files fish-completion
|
|
%dir %{_datadir}/fish/vendor_completions.d
|
|
%{_datadir}/fish/vendor_completions.d/%{service_name}.fish
|
|
|
|
%files nano
|
|
%dir %{_datadir}/nano
|
|
%{_datadir}/nano/Dockerfile.nanorc
|
|
|
|
%changelog
|
|
* Mon Feb 11 2019 David Michael <dm0@redhat.com> - 18.06.0-2.ce.git0ffa825
|
|
- Apply a runc patch for CVE-2019-5736.
|
|
|
|
* Sat Aug 18 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 18.06.0-1.ce.git0ffa825
|
|
- Resolves: #1539161 - first upload to Fedora
|
|
- built docker-ce commit 0ffa825
|
|
- built docker-runc commit ad0f5255
|
|
- built docker-containerd commit a88b631
|
|
- built docker-proxy commit a79d368
|
|
- built docker-init commit fec3683
|
|
|
|
* Tue Mar 20 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 17.03.2-4.ce.gitf5ec1e2
|
|
- correct some rpmlint errors
|
|
|
|
* Wed Feb 21 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 17.03.2-3.ce
|
|
- docker-* symlinks to moby-* (RE: gh PR 34226)
|
|
|
|
* Wed Feb 21 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 17.03.2-2.ce
|
|
- rename binaries as per upstream gh PR 34226
|
|
|
|
* Fri Jan 26 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 17.03.2-1
|
|
- initial build
|
|
- built moby commit f5ec1e2
|
|
- built cli commit 4b61f56
|
|
- built docker-runc commit 2d41c047
|
|
- built docker-containerd commit 3addd84
|
|
- built docker-proxy commit 7b2b1fe
|