mirror of
https://abf.rosa.ru/djam/docker.git
synced 2025-02-23 09:32:49 +00:00
386 lines
15 KiB
RPMSpec
386 lines
15 KiB
RPMSpec
# modifying the dockerinit binary breaks the SHA1 sum check by docker
|
|
%global __os_install_post %{_usrlibrpm}/brp-compress
|
|
%global dist_version 17.05.0
|
|
|
|
|
|
# docker builds in a checksum of dockerinit into docker,
|
|
# so stripping the binaries breaks docker
|
|
#debuginfo not supported with Go
|
|
%global debug_package %{nil}
|
|
%global provider github
|
|
%global provider_tld com
|
|
%global project docker
|
|
%global repo %{project}
|
|
%global import_path %{provider}.%{provider_tld}/%{project}/%{repo}
|
|
|
|
|
|
%global gopath %{_libdir}/golang
|
|
%define gosrc %{gopath}/src/pkg/%{import_path}
|
|
%define go_dir %{gopath}
|
|
|
|
%global commit 4dc5990d7565a4a15d641bc6a0bc50a02cfcf302
|
|
%global shortcommit %(c=%{commit}; echo ${c:0:7})
|
|
|
|
%define __noautoreq '.*/bin/make'
|
|
|
|
%define libnetwork_date 20170523
|
|
|
|
|
|
Name: docker
|
|
Version: %{dist_version}
|
|
Release: 3
|
|
Summary: Automates deployment of containerized applications
|
|
License: ASL 2.0
|
|
Group: System/Kernel and hardware
|
|
|
|
URL: http://www.docker.com
|
|
# only x86_64 for now: https://github.com/docker/docker/issues/136
|
|
#ExclusiveArch: x86_64
|
|
Source0: https://%{import_path}/archive/v%{dist_version}-ce.tar.gz
|
|
#Source0: https://%{import_path}/archive/%{commit}.tar.gzS
|
|
|
|
#Source1: %{repo}.service
|
|
#Source2: %{repo}.sysconfig
|
|
#Source3: %{repo}-storage.sysconfig
|
|
#Source4: %{repo}-logrotate.sh
|
|
#Source5: README.%{repo}-logrotate
|
|
#Source6: %{repo}-network.sysconfig
|
|
#Source7: %{repo}.socket
|
|
|
|
Source2: docker.conf
|
|
Source3: libnetwork-20170523.tar.xz
|
|
Patch0: adjust-docker-service.patch
|
|
Source100: %{name}.rpmlintrc
|
|
|
|
BuildRequires: gcc
|
|
BuildRequires: glibc-static-devel
|
|
|
|
# ensure build uses golang 1.4 or above
|
|
BuildRequires: golang >= 1.4
|
|
BuildRequires: pkgconfig(sqlite3)
|
|
|
|
Requires: runc
|
|
# Requires: containerd
|
|
|
|
BuildRequires: golang-net-devel
|
|
BuildRequires: go-md2man
|
|
BuildRequires: device-mapper-devel
|
|
BuildRequires: btrfs-devel
|
|
BuildRequires: pkgconfig(systemd)
|
|
BuildRequires: pkgconfig(libsystemd)
|
|
Requires: systemd-units
|
|
|
|
# With docker >= 1.11 you now need containerd (and runC as a dep)
|
|
Requires: docker-containerd
|
|
|
|
# need xz to work with ubuntu images
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1045220
|
|
Requires: xz
|
|
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1035436
|
|
# this won't be needed for rhel7+
|
|
Requires: bridge-utils
|
|
Requires: lxc
|
|
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1034919
|
|
# No longer needed in Fedora because of libcontainer
|
|
Requires: cgroup
|
|
Requires: e2fsprogs
|
|
Requires: iptables
|
|
|
|
|
|
Obsoletes: docker-io < 1.2.0-8
|
|
Provides: docker-io = %{version}-%{release}
|
|
|
|
%description
|
|
Docker is an open-source engine that automates the deployment of any
|
|
application as a lightweight, portable, self-sufficient container that will
|
|
run virtually anywhere.
|
|
|
|
Docker containers can encapsulate any payload, and will run consistently on
|
|
and between virtually any server. The same container that a developer builds
|
|
and tests on a laptop will run at scale, in production*, on VMs, bare-metal
|
|
servers, OpenStack clusters, public instances, or combinations of the above.
|
|
|
|
%package devel
|
|
BuildRequires: golang >= 1.4
|
|
Requires: golang >= 1.4
|
|
Requires: docker-pkg-devel
|
|
Summary: A golang registry for global request variables (source libraries)
|
|
Provides: %{repo}-pkg-devel = %{version}-%{release}
|
|
Provides: golang(%{import_path}) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/api) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/api/client) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/api/server) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/api/types) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/archive) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/builtins) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/contrib) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/contrib/docker-device-tool) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/contrib/host-integration) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/execdriver) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/execdriver/execdrivers) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/execdriver/lxc) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/execdriver/native) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/execdriver/native/template) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/graphdriver) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/graphdriver/aufs) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/graphdriver/btrfs) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/graphdriver/devmapper) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/graphdriver/overlay) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/graphdriver/graphtest) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/graphdriver/vfs) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/logger) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/logger/jsonfilelog) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/logger/syslog) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/networkdriver) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/networkdriver/bridge) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/networkdriver/ipallocator) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/networkdriver/portallocator) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/daemon/networkdriver/portmapper) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/dockerversion) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/engine) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/graph) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/image) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/integration) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/integration-cli) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/links) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/nat) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/opts) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/term) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/term/winconsole) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/registry) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/registry/v2) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/runconfig) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/utils) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/utils/broadcastwriter) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/graphdb) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/iptables) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/listenbuffer) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/mflag) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/mflag/example) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/mount) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/namesgenerator) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/networkfs/etchosts) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/networkfs/resolvconf) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/proxy) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/signal) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/symlink) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/sysinfo) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/system) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/systemd) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/tailfile) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/term) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/testutils) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/truncindex) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/units) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/user) = %{version}-%{release}
|
|
Provides: golang(%{import_path}/pkg/version) = %{version}-%{release}
|
|
|
|
%description devel
|
|
This is the source libraries for docker.
|
|
|
|
%package fish-completion
|
|
Summary: Fish completion files for Docker
|
|
Requires: %{repo} = %{version}-%{release}
|
|
# fish is in contrib, but we can't move this particular
|
|
# subpackage there, so suggest fish instead of require
|
|
Suggests: fish
|
|
Provides: %{repo}-io-fish-completion = %{version}-%{release}
|
|
|
|
%description fish-completion
|
|
This package installs %{summary}.
|
|
|
|
%package logrotate
|
|
Summary: Cron job to run logrotate on Docker containers
|
|
Requires: %{repo} = %{version}-%{release}
|
|
Provides: %{repo}-io-logrotate = %{version}-%{release}
|
|
|
|
%description logrotate
|
|
This package installs a cron job to run logrotate on Docker containers.
|
|
Logrotate is assumed to be installed on containers for this to work,
|
|
failures are silently ignored.
|
|
|
|
%package unit-test
|
|
Summary: Cron job for running unit tests
|
|
|
|
%description unit-test
|
|
%{summary} - for running unit tests
|
|
|
|
%package vim
|
|
Summary: Vim syntax highlighting files for Docker
|
|
Requires: %{repo} = %{version}-%{release}
|
|
Requires: vim
|
|
Provides: %{repo}-io-vim = %{version}-%{release}
|
|
|
|
%description vim
|
|
This package installs %{summary}.
|
|
|
|
%package zsh-completion
|
|
Summary: Zsh completion files for Docker
|
|
Requires: %{repo} = %{version}-%{release}
|
|
Requires: zsh
|
|
Provides: %{repo}-io-zsh-completion = %{version}-%{release}
|
|
|
|
%description zsh-completion
|
|
This package installs %{summary}.
|
|
|
|
|
|
%prep
|
|
%setup -q -n moby-%{dist_version}-ce
|
|
%apply_patches
|
|
|
|
tar -xf %{SOURCE3} -C vendor/github.com/
|
|
|
|
%build
|
|
export DOCKER_GITCOMMIT="%{shortcommit}"
|
|
|
|
export CGO_CFLAGS="-I%{_includedir}"
|
|
export CGO_LDFLAGS="-L%{_libdir}"
|
|
|
|
|
|
AUTO_GOPATH=1 ./hack/make.sh dynbinary
|
|
man/md2man-all.sh
|
|
cp contrib/syntax/vim/LICENSE LICENSE-vim-syntax
|
|
cp contrib/syntax/vim/README.md README-vim-syntax.md
|
|
|
|
echo "build docker-proxy"
|
|
export GOPATH=$(pwd)
|
|
ln -s vendor src
|
|
go build -ldflags='-linkmode=external' github.com/libnetwork/cmd/proxy
|
|
|
|
%install
|
|
# install binary
|
|
install -d %{buildroot}%{_bindir}
|
|
install -p -m 755 bundles/%{version}-ce/dynbinary-client/docker-%{version}-ce %{buildroot}%{_bindir}/docker
|
|
install -p -m 755 bundles/%{version}-ce/dynbinary-daemon/dockerd-%{version}-ce %{buildroot}%{_bindir}/dockerd
|
|
install -p -m 755 proxy %{buildroot}%{_bindir}/docker-proxy
|
|
|
|
# Place to store images
|
|
install -d %{buildroot}%{_libexecdir}/cache/docker
|
|
|
|
# install manpages
|
|
install -d %{buildroot}%{_mandir}/man1
|
|
install -p -m 644 man/man1/*.1 %{buildroot}%{_mandir}/man1
|
|
install -d %{buildroot}%{_mandir}/man5
|
|
install -p -m 644 man/man5/*.5 %{buildroot}%{_mandir}/man5
|
|
install -d %{buildroot}%{_mandir}/man8
|
|
install -p -m 644 man/man8/*.8 %{buildroot}%{_mandir}/man8
|
|
|
|
# install bash completion
|
|
install -d %{buildroot}%{_sysconfdir}/bash_completion.d
|
|
install -p -m 644 contrib/completion/bash/docker %{buildroot}%{_sysconfdir}/bash_completion.d/docker.bash
|
|
|
|
# install fish completion
|
|
# create, install and own /usr/share/fish/vendor_completions.d until
|
|
# upstream fish provides it
|
|
install -dp %{buildroot}%{_datadir}/fish/vendor_completions.d
|
|
install -p -m 644 contrib/completion/fish/%{repo}.fish %{buildroot}%{_datadir}/fish/vendor_completions.d
|
|
|
|
# install vim syntax highlighting
|
|
install -d %{buildroot}%{_datadir}/vim/vimfiles/{doc,ftdetect,syntax}
|
|
install -p -m 644 contrib/syntax/vim/doc/dockerfile.txt %{buildroot}%{_datadir}/vim/vimfiles/doc
|
|
install -p -m 644 contrib/syntax/vim/ftdetect/dockerfile.vim %{buildroot}%{_datadir}/vim/vimfiles/ftdetect
|
|
install -p -m 644 contrib/syntax/vim/syntax/dockerfile.vim %{buildroot}%{_datadir}/vim/vimfiles/syntax
|
|
|
|
# install zsh completion
|
|
install -d %{buildroot}%{_datadir}/zsh/site-functions
|
|
install -p -m 644 contrib/completion/zsh/_docker %{buildroot}%{_datadir}/zsh/site-functions
|
|
|
|
# install udev rules
|
|
install -d %{buildroot}%{_udevrulesdir}
|
|
install -p -m 755 contrib/udev/80-docker.rules %{buildroot}%{_udevrulesdir}
|
|
# install storage dir
|
|
install -d -m 700 %{buildroot}%{_sharedstatedir}/docker
|
|
# install systemd/init scripts
|
|
install -d %{buildroot}%{_unitdir}
|
|
install -p -m 644 contrib/init/systemd/docker.service.rpm %{buildroot}%{_unitdir}/docker.service
|
|
install -p -m 644 contrib/init/systemd/docker.socket %{buildroot}%{_unitdir}
|
|
|
|
# sources
|
|
install -d -p %{buildroot}/%{gosrc}
|
|
|
|
for dir in api daemon \
|
|
image opts pkg registry runconfig
|
|
do
|
|
cp -rpav $dir %{buildroot}/%{gosrc}
|
|
done
|
|
|
|
|
|
install -d %{buildroot}%{_presetdir}
|
|
cat > %{buildroot}%{_presetdir}/86-docker.preset << EOF
|
|
enable docker.socket
|
|
EOF
|
|
|
|
find %{buildroot} -name "*~" -exec rm -rf {} \;
|
|
find %{buildroot}%{go_dir}/src/pkg/github.com/ -type d -exec chmod 0755 {} \;
|
|
|
|
%check
|
|
|
|
%pre
|
|
getent group docker > /dev/null || %{_sbindir}/groupadd -r docker
|
|
exit 0
|
|
|
|
%post
|
|
%systemd_post docker
|
|
|
|
%preun
|
|
%systemd_preun docker
|
|
|
|
%postun
|
|
%systemd_postun_with_restart docker
|
|
|
|
%files
|
|
%doc AUTHORS CHANGELOG.md CONTRIBUTING.md LICENSE MAINTAINERS NOTICE README.md
|
|
%doc LICENSE-vim-syntax README-vim-syntax.md
|
|
# %config(noreplace) %{_sysconfdir}/sysconfig/%{repo}
|
|
# %config(noreplace) %{_sysconfdir}/sysconfig/%{repo}-network
|
|
# %config(noreplace) %{_sysconfdir}/sysconfig/%{repo}-storage
|
|
%{_mandir}/man1/*.1*
|
|
%{_mandir}/man5/*.5*
|
|
%{_mandir}/man8/*.8*
|
|
%{_bindir}/docker
|
|
%{_bindir}/docker-proxy
|
|
%{_bindir}/dockerd
|
|
# %config(noreplace) %{_sysconfdir}/sysconfig/docker
|
|
%{_presetdir}/86-docker.preset
|
|
%{_unitdir}/docker.service
|
|
%{_unitdir}/docker.socket
|
|
%dir %{_sysconfdir}/bash_completion.d
|
|
%{_sysconfdir}/bash_completion.d/docker.bash
|
|
# %{_datadir}/zsh/site-functions/_docker
|
|
%dir %{_sharedstatedir}/docker
|
|
|
|
%dir %{_udevrulesdir}
|
|
%{_udevrulesdir}/80-docker.rules
|
|
|
|
# %files unit-test
|
|
# %{_sharedstatedir}/docker-unit-test/
|
|
|
|
%files fish-completion
|
|
%dir %{_datadir}/fish/vendor_completions.d/
|
|
%{_datadir}/fish/vendor_completions.d/%{repo}.fish
|
|
|
|
# %files logrotate
|
|
# %doc README.%{repo}-logrotate
|
|
# %{_sysconfdir}/cron.daily/%{repo}-logrotate
|
|
|
|
%files vim
|
|
%doc LICENSE-vim-syntax README-vim-syntax.md
|
|
%dir %{_datadir}/vim/vimfiles/doc
|
|
%{_datadir}/vim/vimfiles/doc/dockerfile.txt
|
|
%dir %{_datadir}/vim/vimfiles/ftdetect
|
|
%{_datadir}/vim/vimfiles/ftdetect/dockerfile.vim
|
|
%dir %{_datadir}/vim/vimfiles/syntax
|
|
%{_datadir}/vim/vimfiles/syntax/dockerfile.vim
|
|
|
|
%files zsh-completion
|
|
%{_datadir}/zsh/site-functions/_%{repo}
|
|
|
|
%files devel
|
|
%doc AUTHORS CHANGELOG.md CONTRIBUTING.md LICENSE MAINTAINERS NOTICE README.md
|
|
%dir %{go_dir}/src/pkg/%{provider}.%{provider_tld}/%{project}
|
|
%{go_dir}/src/pkg/%{import_path}
|
|
|