github.com/docker/docker-ce@v17.12.1-ce-rc2+incompatible/components/packaging/rpm/centos-7/docker-ce.spec (about)

     1  Name: docker-ce
     2  Version: %{_version}
     3  Release: %{_release}%{?dist}
     4  Summary: The open-source application container engine
     5  Group: Tools/Docker
     6  License: ASL 2.0
     7  Source0: engine.tgz
     8  Source1: cli.tgz
     9  URL: https://www.docker.com
    10  Vendor: Docker
    11  Packager: Docker <support@docker.com>
    12  
    13  # DWZ problem with multiple golang binary, see bug
    14  # https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12
    15  %global _dwz_low_mem_die_limit 0
    16  %global is_systemd 1
    17  %global with_selinux 1
    18  
    19  BuildRequires: pkgconfig(systemd)
    20  BuildRequires: pkgconfig(libsystemd-journal)
    21  
    22  # required packages on install
    23  Requires: /bin/sh
    24  Requires: container-selinux >= 2.9
    25  Requires: iptables
    26  Requires: libcgroup
    27  Requires: systemd-units
    28  Requires: tar
    29  Requires: xz
    30  
    31  # Resolves: rhbz#1165615
    32  Requires: device-mapper-libs >= 1.02.90-1
    33  
    34  # conflicting packages
    35  Conflicts: docker
    36  Conflicts: docker-io
    37  Conflicts: docker-engine-cs
    38  Conflicts: docker-ee
    39  
    40  # Obsolete packages
    41  Obsoletes: docker-ce-selinux
    42  Obsoletes: docker-engine-selinux
    43  Obsoletes: docker-engine
    44  
    45  %description
    46  Docker is an open source project to build, ship and run any application as a
    47  lightweight container.
    48  
    49  Docker containers are both hardware-agnostic and platform-agnostic. This means
    50  they can run anywhere, from your laptop to the largest EC2 compute instance and
    51  everything in between - and they don't require you to use a particular
    52  language, framework or packaging system. That makes them great building blocks
    53  for deploying and scaling web apps, databases, and backend services without
    54  depending on a particular stack or provider.
    55  
    56  %prep
    57  %setup -q -c -n src -a 1
    58  
    59  %build
    60  export DOCKER_GITCOMMIT=%{_gitcommit}
    61  mkdir -p /go/src/github.com/docker
    62  rm -f /go/src/github.com/docker/cli
    63  ln -s /root/rpmbuild/BUILD/src/cli /go/src/github.com/docker/cli
    64  pushd /go/src/github.com/docker/cli
    65  make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli
    66  popd
    67  pushd engine
    68  TMP_GOPATH="/go" hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini
    69  VERSION=%{_origversion} hack/make.sh dynbinary
    70  popd
    71  
    72  %check
    73  cli/build/docker -v
    74  engine/bundles/dynbinary-daemon/dockerd -v
    75  
    76  %install
    77  # install binary
    78  install -d $RPM_BUILD_ROOT/%{_bindir}
    79  install -p -m 755 cli/build/docker $RPM_BUILD_ROOT/%{_bindir}/docker
    80  install -p -m 755 $(readlink -f engine/bundles/dynbinary-daemon/dockerd) $RPM_BUILD_ROOT/%{_bindir}/dockerd
    81  
    82  # install proxy
    83  install -p -m 755 /usr/local/bin/docker-proxy $RPM_BUILD_ROOT/%{_bindir}/docker-proxy
    84  
    85  # install containerd
    86  install -p -m 755 /usr/local/bin/docker-containerd $RPM_BUILD_ROOT/%{_bindir}/docker-containerd
    87  install -p -m 755 /usr/local/bin/docker-containerd-shim $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-shim
    88  install -p -m 755 /usr/local/bin/docker-containerd-ctr $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-ctr
    89  
    90  # install runc
    91  install -p -m 755 /usr/local/bin/docker-runc $RPM_BUILD_ROOT/%{_bindir}/docker-runc
    92  
    93  # install tini
    94  install -p -m 755 /usr/local/bin/docker-init $RPM_BUILD_ROOT/%{_bindir}/docker-init
    95  
    96  # install udev rules
    97  install -d $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d
    98  install -p -m 644 engine/contrib/udev/80-docker.rules $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d/80-docker.rules
    99  
   100  # add init scripts
   101  install -d $RPM_BUILD_ROOT/etc/sysconfig
   102  install -d $RPM_BUILD_ROOT/%{_initddir}
   103  install -d $RPM_BUILD_ROOT/%{_unitdir}
   104  install -p -m 644 /systemd/docker.service $RPM_BUILD_ROOT/%{_unitdir}/docker.service
   105  # add bash, zsh, and fish completions
   106  install -d $RPM_BUILD_ROOT/usr/share/bash-completion/completions
   107  install -d $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions
   108  install -d $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d
   109  install -p -m 644 cli/contrib/completion/bash/docker $RPM_BUILD_ROOT/usr/share/bash-completion/completions/docker
   110  install -p -m 644 cli/contrib/completion/zsh/_docker $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions/_docker
   111  install -p -m 644 cli/contrib/completion/fish/docker.fish $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d/docker.fish
   112  
   113  # install manpages
   114  install -d %{buildroot}%{_mandir}/man1
   115  install -p -m 644 cli/man/man1/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1
   116  install -d %{buildroot}%{_mandir}/man5
   117  install -p -m 644 cli/man/man5/*.5 $RPM_BUILD_ROOT/%{_mandir}/man5
   118  install -d %{buildroot}%{_mandir}/man8
   119  install -p -m 644 cli/man/man8/*.8 $RPM_BUILD_ROOT/%{_mandir}/man8
   120  
   121  # add vimfiles
   122  install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/doc
   123  install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/ftdetect
   124  install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/syntax
   125  install -p -m 644 engine/contrib/syntax/vim/doc/dockerfile.txt $RPM_BUILD_ROOT/usr/share/vim/vimfiles/doc/dockerfile.txt
   126  install -p -m 644 engine/contrib/syntax/vim/ftdetect/dockerfile.vim $RPM_BUILD_ROOT/usr/share/vim/vimfiles/ftdetect/dockerfile.vim
   127  install -p -m 644 engine/contrib/syntax/vim/syntax/dockerfile.vim $RPM_BUILD_ROOT/usr/share/vim/vimfiles/syntax/dockerfile.vim
   128  
   129  # add nano
   130  install -d $RPM_BUILD_ROOT/usr/share/nano
   131  install -p -m 644 engine/contrib/syntax/nano/Dockerfile.nanorc $RPM_BUILD_ROOT/usr/share/nano/Dockerfile.nanorc
   132  
   133  mkdir -p build-docs
   134  for engine_file in AUTHORS CHANGELOG.md CONTRIBUTING.md LICENSE MAINTAINERS NOTICE README.md; do
   135      cp "engine/$engine_file" "build-docs/engine-$engine_file"
   136  done
   137  for cli_file in LICENSE MAINTAINERS NOTICE README.md; do
   138      cp "cli/$cli_file" "build-docs/cli-$cli_file"
   139  done
   140  
   141  # list files owned by the package here
   142  %files
   143  %doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md
   144  %doc build-docs/cli-LICENSE build-docs/cli-MAINTAINERS build-docs/cli-NOTICE build-docs/cli-README.md
   145  /%{_bindir}/docker
   146  /%{_bindir}/dockerd
   147  /%{_bindir}/docker-containerd
   148  /%{_bindir}/docker-containerd-shim
   149  /%{_bindir}/docker-containerd-ctr
   150  /%{_bindir}/docker-proxy
   151  /%{_bindir}/docker-runc
   152  /%{_bindir}/docker-init
   153  /%{_sysconfdir}/udev/rules.d/80-docker.rules
   154  /%{_unitdir}/docker.service
   155  /usr/share/bash-completion/completions/docker
   156  /usr/share/zsh/vendor-completions/_docker
   157  /usr/share/fish/vendor_completions.d/docker.fish
   158  %doc
   159  /%{_mandir}/man1/*
   160  /%{_mandir}/man5/*
   161  /%{_mandir}/man8/*
   162  /usr/share/vim/vimfiles/doc/dockerfile.txt
   163  /usr/share/vim/vimfiles/ftdetect/dockerfile.vim
   164  /usr/share/vim/vimfiles/syntax/dockerfile.vim
   165  /usr/share/nano/Dockerfile.nanorc
   166  
   167  %pre
   168  if [ $1 -gt 0 ] ; then
   169      # package upgrade scenario, before new files are installed
   170  
   171      # clear any old state
   172      rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || :
   173  
   174      # check if docker service is running
   175      if systemctl is-active docker > /dev/null 2>&1; then
   176          systemctl stop docker > /dev/null 2>&1 || :
   177          touch %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || :
   178      fi
   179  fi
   180  
   181  %post
   182  %systemd_post docker
   183  if ! getent group docker > /dev/null; then
   184      groupadd --system docker
   185  fi
   186  
   187  %preun
   188  %systemd_preun docker
   189  
   190  %postun
   191  %systemd_postun_with_restart docker
   192  
   193  %posttrans
   194  if [ $1 -ge 0 ] ; then
   195      # package upgrade scenario, after new files are installed
   196  
   197      # check if docker was running before upgrade
   198      if [ -f %{_localstatedir}/lib/rpm-state/docker-is-active ]; then
   199          systemctl start docker > /dev/null 2>&1 || :
   200          rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || :
   201      fi
   202  fi
   203  
   204  %changelog