%define debug_package %{nil}
%define __os_install_post %{nil}
Summary:        Docker
Name:           docker
Version:        1.13.1
Release:        4%{?dist}
License:        ASL 2.0
URL:            http://docs.docker.com
Group:          Applications/File
Vendor:         VMware, Inc.
Distribution:   Photon
#Git commits must be in sync with docker/hack/dockerfile/binaries-commits
Source0:        https://github.com/docker/moby/archive/moby-%{version}.tar.gz
%define sha1 moby=eb67f8c60bd132d8917335ebf92d90020ba52d27
%define DOCKER_COMMIT 092cba3
Source1:        https://github.com/docker/containerd/tree/containerd-aa8187d.tar.gz
%define CONTAINERD_COMMIT aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1
%define sha1 containerd=b8aac40b423e80028ec6b7ff5cca1ccaab617d86
Source2:        https://github.com/docker/runc/tree/runc-9df8b30.tar.gz
%define sha1 runc=35d0c90f634d2327356e7268ff73ecbffdd65d82
%define RUNC_COMMIT 9df8b306d01f59d3a8029be411de015b7304dd8f
Source3:        https://github.com/docker/libnetwork/tree/libnetwork-0f53435.tar.gz
%define sha1 libnetwork=a63774a38bec3aba4b1ff7a0b3e748960da2048b
%define LIBNETWORK_COMMIT 0f534354b813003a754606689722fe253101bc4e
Source4:        docker.service
Source5:        docker-containerd.service
Source6:        docker-completion.bash

BuildRequires:  systemd
BuildRequires:  device-mapper-devel
BuildRequires:  btrfs-progs-devel
BuildRequires:  libseccomp
BuildRequires:  libseccomp-devel
BuildRequires:  unzip
BuildRequires:  go
BuildRequires:  findutils
BuildRequires:  sed
Requires:       libgcc
Requires:       glibc
Requires:       libseccomp
Requires:       systemd
Requires:       device-mapper-libs

%description
Docker is a platform for developers and sysadmins to develop, ship and run applications.
%prep
%setup -q -c
%setup -T -D -a 1
%setup -T -D -a 2
%setup -T -D -a 3

#Fix containerd git commit/branch
find containerd-%{CONTAINERD_COMMIT} -name Makefile \
  -exec sed -i 's/^GIT_COMMIT :=.*$/GIT_COMMIT := %{CONTAINERD_COMMIT}/g' {} \; \
  -exec sed -i 's/^GIT_BRANCH :=.*$/GIT_BRANCH := %{name}-%{version}/g' {} \;

#Fix runc git commit/branch
find runc-%{RUNC_COMMIT} -name Makefile \
  -exec sed -i 's/^GIT_COMMIT :=.*$/GIT_COMMIT := %{RUNC_COMMIT}/g' {} \; \
  -exec sed -i 's/^COMMIT :=.*$/COMMIT := %{RUNC_COMMIT}/g' {} \; \
  -exec sed -i 's/^COMMIT_NO :=.*$/COMMIT_NO := %{RUNC_COMMIT}/g' {} \; \
  -exec sed -i 's/^GIT_BRANCH :=.*$/GIT_BRANCH := %{name}-%{version}/g' {} \;

#Fix docker git commit/branch
find moby-%{version} -name Makefile \
  -exec sed -i 's/^GIT_COMMIT :=.*$/GIT_COMMIT := %{DOCKER_COMMIT}/g' {} \; \
  -exec sed -i 's/^GIT_BRANCH :=.*$/GIT_BRANCH := %{name}-%{version}/g' {} \;

#Fail if there is still "shell git" invocation
find -name Makefile -exec grep "shell git" {} \; | read && exit 1

%build

export GOPATH="${PWD}/gopath"
mkdir -p gopath/src/github.com
cd gopath/src/github.com
mkdir -p docker
mkdir -p opencontainers

ln -snrf ../../../runc-%{RUNC_COMMIT} opencontainers/runc
ln -snrf ../../../containerd-%{CONTAINERD_COMMIT} docker/containerd
ln -snrf ../../../libnetwork-%{LIBNETWORK_COMMIT} docker/libnetwork
ln -snrf ../../../moby-%{version} docker/docker

pushd docker/docker
DOCKER_GITCOMMIT=%{DOCKER_COMMIT} DOCKER_BUILDTAGS='exclude_graphdriver_aufs seccomp' ./hack/make.sh dynbinary
popd

pushd docker/containerd
make
popd

pushd opencontainers/runc
make BUILDTAGS='seccomp'
popd

pushd docker/libnetwork
go build -ldflags="-linkmode=external" -o docker-proxy github.com/docker/libnetwork/cmd/proxy
popd

%install

install -vdm755 %{buildroot}%{_bindir}
install -vdm755 %{buildroot}%{_unitdir}
install -vdm755 %{buildroot}%{_datadir}/bash-completion/completions

pushd gopath/src/github.com/docker
install -m755 docker/bundles/latest/dynbinary-client/%{name}-%{version} %{buildroot}%{_bindir}/%{name}
install -m755 docker/bundles/latest/dynbinary-daemon/%{name}d-%{version} %{buildroot}%{_bindir}/%{name}d
install -m755 containerd/bin/containerd %{buildroot}%{_bindir}/%{name}-containerd
install -m755 containerd/bin/containerd-shim %{buildroot}%{_bindir}/%{name}-containerd-shim
install -m755 containerd/bin/ctr %{buildroot}%{_bindir}/%{name}-containerd-ctr
install -m755 libnetwork/docker-proxy %{buildroot}%{_bindir}/%{name}-proxy
popd

pushd gopath/src/github.com/opencontainers
install -m755 runc/runc %{buildroot}%{_bindir}/%{name}-runc
popd

install -m644 %{SOURCE4} %{buildroot}%{_unitdir}/docker.service
install -m644 %{SOURCE5} %{buildroot}%{_unitdir}/docker-containerd.service
install -m644 %{SOURCE6} %{buildroot}%{_datadir}/bash-completion/completions/docker

#%{_fixperms} %{buildroot}/*

%preun
%systemd_preun docker.service
%systemd_preun docker-containerd.service

%post
/sbin/ldconfig

if [ $1 -eq 1 ] ; then
    getent group  docker  >/dev/null || groupadd -r docker
fi

%postun
/sbin/ldconfig
%systemd_postun_with_restart docker-containerd.service
%systemd_postun_with_restart docker.service

if [ $1 -eq 0 ] ; then
    if getent group docker >/dev/null; then
        groupdel docker
    fi
fi

%clean
rm -rf %{buildroot}/*

%files
%defattr(-,root,root)
%{_unitdir}/docker-containerd.service
%{_unitdir}/docker.service
%{_bindir}/docker
%{_bindir}/docker-containerd
%{_bindir}/docker-containerd-ctr
%{_bindir}/docker-containerd-shim
%{_bindir}/docker-proxy
%{_bindir}/docker-runc
%{_bindir}/dockerd
%{_datadir}/bash-completion/completions/docker

%changelog
*   Mon Jul 10 2017 Bo Gan <ganb@vmware.com> 1.13.1-4
-   Fix runc/containerd/libnetwork versions
-   Do not strip binaries
*   Thu May 04 2017 Kumar Kaushik <kaushikk@vmware.com> 1.13.1-3
-   Docker build requires GO.
*   Wed May 03 2017 Kumar Kaushik <kaushikk@vmware.com> 1.13.1-2
-   Fixing docker plugin runc version github issue # 640.
-   Adding docker group for non-sudo users, GitHub issue # 207.
*   Tue Apr 11 2017 Kumar Kaushik <kaushikk@vmware.com> 1.13.1-1
-   Building docker from source.
*   Fri Jan 13 2017 Xiaolin Li <xiaolinl@vmware.com> 1.12.6-1
-   Upgraded to version 1.12.6
*   Wed Sep 21 2016 Xiaolin Li <xiaolinl@vmware.com> 1.12.1-1
-   Upgraded to version 1.12.1
*   Mon Aug 22 2016 Alexey Makhalov <amakhalov@vmware.com> 1.12.0-2
-   Added bash completion file
*   Tue Aug 09 2016 Anish Swaminathan <anishs@vmware.com> 1.12.0-1
-   Upgraded to version 1.12.0
*   Tue Jun 28 2016 Anish Swaminathan <anishs@vmware.com> 1.11.2-1
-   Upgraded to version 1.11.2
*   Thu May 26 2016 Divya Thaluru <dthaluru@vmware.com>  1.11.0-6
-   Fixed logic to restart the active services after upgrade 
*   Tue May 24 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.11.0-5
-   GA - Bump release of all rpms
*   Tue May 10 2016 Anish Swaminathan <anishs@vmware.com> 1.11.0-4
-   Remove commented post actions
*   Tue May 3 2016 Divya Thaluru <dthaluru@vmware.com>  1.11.0-3
-   Fixing spec file to handle rpm upgrade scenario correctly
*   Sat Apr 30 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.11.0-2
-   Add $DOCKER_OPTS to start in docker.service
*   Fri Apr 15 2016 Anish Swaminathan <anishs@vmware.com> 1.11.0-1
-   Updated to version 1.11.0.
*   Tue Feb 23 2016 Harish Udaiya Kumar <hudaiyakumar@vmware.com> 1.10.2-1
-   Upgraded to version 1.10.2
*   Thu Dec 10 2015 Xiaolin Li <xiaolinl@vmware.com>  1.9.0-2
-   Add systemd to Requires and BuildRequires.
-   Use systemctl to enable/disable service.
*   Fri Nov 06 2015 Vinay Kulkarni <kulkarniv@vmware.com> 1.9.0-1
-   Update to version 1.9.0
*   Mon Aug 17 2015 Divya Thaluru <dthaluru@vmware.com> 1.8.1-1
-   Update to new version 1.8.1.
*   Fri Jun 19 2015 Fabio Rapposelli <fabio@vmware.com> 1.7.0-1
-   Update to new version.
*   Mon May 18 2015 Touseef Liaqat <tliaqat@vmware.com> 1.6.0-3
-   Update according to UsrMove.
*   Fri May 15 2015 Divya Thaluru <dthaluru@vmware.com> 1.6.0-2
-   Updated to version 1.6
*   Wed Mar 4 2015 Divya Thaluru <dthaluru@vmware.com> 1.5.0-1
-   Initial build. First version