%define groupid 65440
%define userid  65440
# https://github.com/moby/moby/tree/v20.10.0/hack/dockerfile/install
%define tini_tag master@de40ad007797e0dcd8b7126f27bb87401d224240

Name:          docker
Version:       28.0.4
Release:       1mamba
Summary:       An open-source application container engine
Group:         System/Servers
Vendor:        openmamba
Distribution:  openmamba
Packager:      Silvan Calarco <silvan.calarco@mambasoft.it>
URL:           https://www.docker.com/
Source:        https://github.com/docker/cli.git/v%{version}/cli-%{version}.tar.bz2
Source1:       https://github.com/moby/moby.git/v%{version}/moby-%{version}.tar.bz2
Source2:       https://github.com/krallin/tini.git/%{tini_tag}/tini-%{version}.tar.bz2
License:       Apache License 2.0
## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel
BuildRequires: libsystemd-devel
## AUTOBUILDREQ-END
BuildRequires: libgo-devel >= 7.3.0-1mamba
BuildRequires: go-md2man
BuildRequires: go
%systemd_requires
Requires:      containerd
Requires:      runc

%description
An open-source application container engine.


%prep
%setup -q -c -a0 -a1 -a2
#% setup -q -c -D -T
#:<< _EOF
mv cli-%{version} cli
mv moby-%{version} moby
mv tini-%{version} tini
 
%build
#:<< _EOF
# create a fake go path directory and pushd into it
# $1 real directory
# $2 gopath directory
_fake_gopath_pushd() {
  mkdir -p "$GOPATH/src/${2%/*}"
  rm -f "$GOPATH/src/$2"
  ln -rsT "$1" "$GOPATH/src/$2"
  pushd  "$GOPATH/src/$2" >/dev/null
}

_fake_gopath_popd() {
  popd >/dev/null
}

### globals
export GOPATH="$PWD"
export PATH="$GOPATH/bin:$PATH"

### cli
_fake_gopath_pushd cli github.com/docker/cli
DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=%{version} dynbinary
make manpages
_fake_gopath_popd

### daemon
_fake_gopath_pushd moby github.com/docker/docker
DOCKER_GITCOMMIT=v%{version} \
DOCKER_BUILDTAGS='seccomp journald apparmor' \
    VERSION=%{version}-ce \
    hack/make.sh dynbinary
_fake_gopath_popd

### docker-init
_fake_gopath_pushd tini github.com/krallin/tini
cmake .
# we must use the static binary because it's started in a foreign os
make tini-static
_fake_gopath_popd

%install
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"

### init
install -Dm755 tini/tini-static %{buildroot}%{_bindir}/docker-init

### dockerd
install -Dm755 moby/bundles/dynbinary-daemon/dockerd %{buildroot}%{_bindir}/dockerd
install -Dm755 moby/bundles/dynbinary-daemon/docker-proxy %{buildroot}%{_bindir}/docker-proxy

# systemd
install -Dm644 moby/contrib/init/systemd/docker.service \
  %{buildroot}%{_unitdir}/docker.service
install -Dm644 moby/contrib/init/systemd/docker.socket \
  %{buildroot}%{_unitdir}/docker.socket
install -Dm644 moby/contrib/udev/80-docker.rules \
  %{buildroot}%{_udevrulesdir}/80-docker.rules

### cli
# binary
install -Dm755 cli/build/docker %{buildroot}%{_bindir}/docker

# completion
install -Dm644 cli/contrib/completion/bash/docker \
  %{buildroot}%{_datadir}/bash-completion/completions/docker
install -Dm644 cli/contrib/completion/zsh/_docker \
  %{buildroot}%{_datadir}/zsh/site-functions/_docker
install -Dm644 cli/contrib/completion/fish/docker.fish \
  %{buildroot}%{_datadir}/fish/vendor_completions.d/docker.fish
# man
install -dm755 %{buildroot}%{_mandir}
cp -r cli/man/man* %{buildroot}%{_mandir}/

# symlink containerd/run
ln -s containerd %{buildroot}%{_bindir}/docker-containerd
ln -s containerd-shim %{buildroot}%{_bindir}/docker-containerd-shim
ln -s ctr %{buildroot}%{_bindir}/docker-containerd-ctr
ln -s runc %{buildroot}%{_bindir}/docker-runc

%clean
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"

%pre
if [ $1 -ge 1 ]; then
   /usr/sbin/groupadd docker -g %{groupid} &>/dev/null
fi
:

%post
%systemd_post %{name}
:

%preun
%systemd_preun %{name}
:

%postun
%systemd_postun %{name}
if [ $1 -eq 0 ]; then
   groupdel docker || true
fi

%files
%defattr(-,root,root)
%{_bindir}/docker
%{_bindir}/docker-containerd-ctr
%{_bindir}/docker-containerd-shim
%{_bindir}/docker-init
%{_bindir}/docker-proxy
%{_bindir}/docker-runc
%{_bindir}/docker-containerd
%{_bindir}/dockerd
%{_udevrulesdir}/80-docker.rules
%{_unitdir}/docker.service
%{_unitdir}/docker.socket
%{_datadir}/bash-completion/completions/docker
%{_datadir}/fish/vendor_completions.d/docker.fish
%{_datadir}/zsh/site-functions/_docker
%{_mandir}/man1/docker*.1*
%{_mandir}/man5/Dockerfile.5*
%{_mandir}/man5/docker-config-json.5*
%doc moby/AUTHORS moby/LICENSE

%changelog
* Wed Mar 26 2025 Automatic Build System <autodist@openmamba.org> 28.0.4-1mamba
- automatic version update by autodist

* Thu Mar 20 2025 Automatic Build System <autodist@openmamba.org> 28.0.2-1mamba
- automatic version update by autodist

* Thu Feb 27 2025 Automatic Build System <autodist@openmamba.org> 28.0.1-1mamba
- automatic version update by autodist

* Fri Feb 21 2025 Automatic Build System <autodist@openmamba.org> 28.0.0-1mamba
- automatic version update by autodist

* Thu Jan 23 2025 Automatic Build System <autodist@openmamba.org> 27.5.1-1mamba
- automatic version update by autodist

* Tue Jan 14 2025 Automatic Build System <autodist@openmamba.org> 27.5.0-1mamba
- automatic version update by autodist

* Thu Dec 19 2024 Automatic Build System <autodist@openmamba.org> 27.4.1-1mamba
- automatic version update by autodist

* Tue Dec 10 2024 Automatic Build System <autodist@openmamba.org> 27.4.0-1mamba
- automatic version update by autodist

* Sat Sep 21 2024 Automatic Build System <autodist@openmamba.org> 27.3.1-1mamba
- automatic version update by autodist

* Fri Sep 20 2024 Automatic Build System <autodist@openmamba.org> 27.3.0-1mamba
- automatic version update by autodist

* Mon Sep 09 2024 Automatic Build System <autodist@openmamba.org> 27.2.1-1mamba
- automatic version update by autodist

* Wed Aug 28 2024 Automatic Build System <autodist@openmamba.org> 27.2.0-1mamba
- automatic version update by autodist

* Wed Aug 14 2024 Automatic Build System <autodist@openmamba.org> 27.1.2-1mamba
- automatic version update by autodist

* Wed Jul 24 2024 Automatic Build System <autodist@openmamba.org> 27.1.1-1mamba
- automatic version update by autodist

* Mon Jul 22 2024 Automatic Build System <autodist@openmamba.org> 27.1.0-1mamba
- automatic version update by autodist

* Tue Jul 02 2024 Automatic Build System <autodist@openmamba.org> 27.0.3-1mamba
- automatic version update by autodist

* Thu Jun 27 2024 Automatic Build System <autodist@openmamba.org> 27.0.2-1mamba
- automatic version update by autodist

* Tue Jun 25 2024 Automatic Build System <autodist@openmamba.org> 27.0.1-1mamba
- automatic version update by autodist

* Thu Jun 06 2024 Automatic Build System <autodist@openmamba.org> 26.1.4-1mamba
- automatic version update by autodist

* Thu May 16 2024 Automatic Build System <autodist@openmamba.org> 26.1.3-1mamba
- automatic version update by autodist

* Thu May 09 2024 Automatic Build System <autodist@openmamba.org> 26.1.2-1mamba
- automatic version update by autodist

* Tue Apr 30 2024 Automatic Build System <autodist@openmamba.org> 26.1.1-1mamba
- automatic version update by autodist

* Tue Apr 23 2024 Automatic Build System <autodist@openmamba.org> 26.1.0-1mamba
- automatic version update by autodist

* Fri Apr 19 2024 Automatic Build System <autodist@openmamba.org> 26.0.2-1mamba
- automatic version update by autodist

* Sun Apr 14 2024 Silvan Calarco <silvan.calarco@mambasoft.it> 26.0.1-1mamba
- update to 26.0.1

* Tue Jul 25 2023 Automatic Build System <autodist@mambasoft.it> 24.0.5-1mamba
- automatic version update by autodist

* Sat Jul 08 2023 Automatic Build System <autodist@mambasoft.it> 24.0.4-1mamba
- automatic version update by autodist

* Fri Jul 07 2023 Automatic Build System <autodist@mambasoft.it> 24.0.3-1mamba
- automatic version update by autodist

* Fri May 26 2023 Automatic Build System <autodist@mambasoft.it> 24.0.2-1mamba
- automatic version update by autodist

* Sat May 20 2023 Automatic Build System <autodist@mambasoft.it> 24.0.1-1mamba
- automatic version update by autodist

* Wed May 17 2023 Automatic Build System <autodist@mambasoft.it> 24.0.0-1mamba
- automatic version update by autodist

* Mon May 08 2023 Automatic Build System <autodist@mambasoft.it> 23.0.6-1mamba
- automatic version update by autodist

* Tue May 02 2023 Automatic Build System <autodist@mambasoft.it> 23.0.5-1mamba
- automatic version update by autodist

* Tue Apr 18 2023 Automatic Build System <autodist@mambasoft.it> 23.0.4-1mamba
- automatic version update by autodist

* Wed Apr 05 2023 Automatic Build System <autodist@mambasoft.it> 23.0.3-1mamba
- automatic version update by autodist

* Wed Mar 29 2023 Automatic Build System <autodist@mambasoft.it> 23.0.2-1mamba
- automatic version update by autodist

* Fri Feb 10 2023 Automatic Build System <autodist@mambasoft.it> 23.0.1-1mamba
- automatic version update by autodist

* Fri Feb 03 2023 Automatic Build System <autodist@mambasoft.it> 23.0.0-1mamba
- automatic version update by autodist

* Fri Jan 20 2023 Automatic Build System <autodist@mambasoft.it> 20.10.23-1mamba
- automatic version update by autodist

* Fri Dec 16 2022 Automatic Build System <autodist@mambasoft.it> 20.10.22-1mamba
- automatic version update by autodist

* Wed Oct 26 2022 Automatic Build System <autodist@mambasoft.it> 20.10.21-1mamba
- automatic version update by autodist

* Thu Oct 20 2022 Automatic Build System <autodist@mambasoft.it> 20.10.20-1mamba
- automatic version update by autodist

* Sat Oct 15 2022 Automatic Build System <autodist@mambasoft.it> 20.10.19-1mamba
- automatic version update by autodist

* Sat Sep 10 2022 Automatic Build System <autodist@mambasoft.it> 20.10.18-1mamba
- automatic version update by autodist

* Tue Jun 07 2022 Automatic Build System <autodist@mambasoft.it> 20.10.17-1mamba
- automatic version update by autodist

* Fri May 13 2022 Automatic Build System <autodist@mambasoft.it> 20.10.16-1mamba
- automatic version update by autodist

* Sat May 07 2022 Automatic Build System <autodist@mambasoft.it> 20.10.15-1mamba
- automatic version update by autodist

* Thu Mar 24 2022 Automatic Build System <autodist@mambasoft.it> 20.10.14-1mamba
- automatic version update by autodist

* Fri Mar 11 2022 Automatic Build System <autodist@mambasoft.it> 20.10.13-1mamba
- automatic version update by autodist

* Tue Dec 14 2021 Automatic Build System <autodist@mambasoft.it> 20.10.12-1mamba
- automatic version update by autodist

* Thu Nov 18 2021 Automatic Build System <autodist@mambasoft.it> 20.10.11-1mamba
- automatic version update by autodist

* Tue Oct 26 2021 Automatic Build System <autodist@mambasoft.it> 20.10.10-1mamba
- automatic version update by autodist

* Tue Oct 05 2021 Automatic Build System <autodist@mambasoft.it> 20.10.9-1mamba
- automatic version update by autodist

* Wed Aug 04 2021 Silvan Calarco <silvan.calarco@mambasoft.it> 20.10.8-1mamba
- update to 20.10.8

* Wed Aug 04 2021 Silvan Calarco <silvan.calarco@mambasoft.it> 19.03.15-2mamba
- install docker-proxy and docker-init

* Tue Feb 02 2021 Automatic Build System <autodist@mambasoft.it> 19.03.15-1mamba
- automatic version update by autodist

* Wed Dec 02 2020 Automatic Build System <autodist@mambasoft.it> 19.03.14-1mamba
- automatic version update by autodist

* Fri Sep 18 2020 Automatic Build System <autodist@mambasoft.it> 19.03.13-1mamba
- automatic version update by autodist

* Tue Sep 01 2020 Automatic Build System <autodist@mambasoft.it> 19.03.12-1mamba
- automatic version update by autodist

* Tue May 12 2020 Silvan Calarco <silvan.calarco@mambasoft.it> 19.03.8-1mamba
- update to 19.03.8

* Sun Jul 08 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 18.05.0-1mamba
- update to 18.05.0

* Thu Apr 19 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 1.11.1-3mamba
- rebuilt by autoport with build requirements: libgo-devel>=7.3.0-1mamba

* Fri Jul 29 2016 Silvan Calarco <silvan.calarco@mambasoft.it> 1.11.1-2mamba
- require containerd and add necessary symlinks

* Sun May 15 2016 Silvan Calarco <silvan.calarco@mambasoft.it> 1.11.1-1mamba
- update to 1.11.1

* Fri Jan 01 2016 Silvan Calarco <silvan.calarco@mambasoft.it> 1.9.1-1mamba
- package created using the webbuild interface