aboutsummaryrefslogtreecommitdiffstats
path: root/community/docker/APKBUILD
blob: 0ce351df30761b8bb3c984ff0daa56e895c5454d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
# Contributor: Eivind Uggedal <eu@eju.no>
# Contributor: Jake Buchholz Göktürk <tomalok@gmail.com>
# Maintainer: Jake Buchholz Göktürk <tomalok@gmail.com>
pkgname=docker
pkgver=26.0.2
_cli_commit=3c863ff8d3f0b81f25ed3afb60f2822019c4b94f    # https://github.com/docker/cli/commits/v$pkgver
_moby_commit=7cef0d9cd1cf221d8c0b7b7aeda69552649e0642   # https://github.com/moby/moby/commits/v$pkgver
pkgrel=0
pkgdesc="Pack, ship and run any application as a lightweight container"
url="https://www.docker.io/"
arch="all"
license="Apache-2.0"
_engine_deps="ca-certificates containerd iptables tini-static"
makedepends="go btrfs-progs-dev bash linux-headers coreutils lvm2-dev libtool libseccomp-dev
	$_engine_deps"
options="net chmod-clean"
install="$pkgname-engine.pre-install"

# secfixes:
#   26.0.2-r0:
#     - CVE-2024-32473
#   26.0.0-r0:
#     - CVE-2024-29018
#   25.0.2-r0:
#     - CVE-2024-23651
#     - CVE-2024-23652
#     - CVE-2024-23653
#     - CVE-2024-23650
#     - CVE-2024-24557
#   23.0.3-r0:
#     - CVE-2023-28840
#     - CVE-2023-28841
#     - CVE-2023-28842
#   23.0.2-r0:
#     - CVE-2023-26054
#   20.10.20-r0:
#     - CVE-2022-39253
#   20.10.18-r0:
#     - CVE-2022-36109
#   20.10.16-r0:
#     - CVE-2022-29526
#   20.10.14-r0:
#     - CVE-2022-24769
#   20.10.11-r0:
#     - CVE-2021-41190
#   20.10.9-r0:
#     - CVE-2021-41089
#     - CVE-2021-41091
#     - CVE-2021-41092
#   20.10.3-r0:
#     - CVE-2021-21285
#     - CVE-2021-21284
#   19.03.14-r0:
#     - CVE-2020-15257
#   19.03.11-r0:
#     - CVE-2020-13401
#   19.03.1-r0:
#     - CVE-2019-14271
#   18.09.8-r0:
#     - CVE-2019-13509
#   18.09.7-r0:
#     - CVE-2018-15664

subpackages="
	$pkgname-engine:engine
	$pkgname-openrc:engine_openrc:noarch
	$pkgname-cli:cli
	$pkgname-doc:cli_doc:noarch
	$pkgname-bash-completion
	$pkgname-fish-completion
	$pkgname-zsh-completion
	"

source="
	cli-$pkgver.tar.gz::https://github.com/docker/cli/archive/v$pkgver.tar.gz
	moby-$pkgver.tar.gz::https://github.com/moby/moby/archive/v$pkgver.tar.gz
	docker.initd
	docker.confd
	"

builddir="$srcdir"
_cli_builddir="$srcdir/cli-$pkgver"
_moby_builddir="$srcdir/moby-$pkgver"

_buildtags="seccomp"

export GO111MODULE=off # go1.16 defaults to on
export GOCACHE="${GOCACHE:-"$srcdir/go-cache"}"
export GOTMPDIR="${GOTMPDIR:-"$srcdir"}"
export GOMODCACHE="${GOMODCACHE:-"$srcdir/go"}"
export CGO_ENABLED=1 # go1.22 needs this

build() {
	export AUTO_GOPATH=1
	export GITCOMMIT=$_cli_commit		# for cli
	export DOCKER_GITCOMMIT=$_moby_commit	# for moby
	export DOCKER_BUILDTAGS=$_buildtags
	export DISABLE_WARN_OUTSIDE_CONTAINER=1
	unset CC # prevent possible ccache issues

	case "$CARCH" in
		armv7) export GOARM=7;;
	esac

	# engine (moby)
	msg "building engine"
	cd "$_moby_builddir"
	mkdir -p src/github.com/docker/
	ln -sf "$_moby_builddir" src/github.com/docker/docker
	GOPATH="$PWD" VERSION="$pkgver" hack/make.sh dynbinary

	# Required for building man-pages
	export GOPATH="$_cli_builddir"
	export GOBIN="$GOPATH/bin"
	export PATH="$GOBIN:$PATH"

	# cli
	msg "building cli"
	cd "$_cli_builddir"
	mkdir -p "$GOPATH"/src/github.com/docker/
	ln -sf "$_cli_builddir" "$GOPATH"/src/github.com/docker/cli
	LDFLAGS="" make VERSION="$pkgver" dynbinary

	# docker man
	msg "building docker man pages"
	make manpages
}

package() {
	# docker itself is a meta package
	# note that cli-buildx is circular to have with this toplevel
	depends="docker-engine=$pkgver-r$pkgrel docker-cli=$pkgver-r$pkgrel docker-cli-buildx"

	install -Dm644 "$_cli_builddir"/contrib/completion/fish/$pkgname.fish \
		"$pkgdir"/usr/share/fish/vendor_completions.d/$pkgname.fish

	install -Dm644 "$_cli_builddir"/contrib/completion/zsh/_$pkgname \
		"$pkgdir"/usr/share/zsh/site-functions/_$pkgname

	install -Dm644 "$_cli_builddir"/contrib/completion/bash/$pkgname \
		"$pkgdir"/usr/share/bash-completion/completions/$pkgname

	install -Dm644 "$_cli_builddir"/man/man1/* \
		-t "$pkgdir"/usr/share/man/man1/

	# 'build/docker' is a symlink to 'docker-linux-$arch' e.g. 'docker-linux-amd64'
	install -Dm755 "$_cli_builddir"/build/docker \
		"$pkgdir"/usr/bin/docker

	install -Dm755 -t "$pkgdir"/usr/bin \
		"$_moby_builddir"/bundles/dynbinary-daemon/dockerd \
		"$_moby_builddir"/bundles/dynbinary-daemon/docker-proxy

	# symlink externally provided tini-static binary
	ln -sf /sbin/tini-static "$pkgdir"/usr/bin/docker-init

	install -Dm755 "$srcdir"/docker.initd "$pkgdir"/etc/init.d/docker
	install -Dm644 "$srcdir"/docker.confd "$pkgdir"/etc/conf.d/docker
}

engine() {
	pkgdesc="Docker Engine (dockerd)"
	depends="$_engine_deps"

	amove \
		usr/bin/dockerd \
		usr/bin/docker-init \
		usr/bin/docker-proxy
}

engine_openrc() {
	default_openrc
	depends="log_proxy"
	install_if="openrc $pkgname-engine=$pkgver-r$pkgrel"
}

cli() {
	pkgdesc="Docker CLI"
	depends="ca-certificates"

	amove usr/bin/docker
}

cli_doc() {
	default_doc
	pkgdesc="Documentation for Docker"
	install_if="docs $pkgname-cli=$pkgver-r$pkgrel"
}

sha512sums="
833fe77ac6111fb4796b50b0a4263490876a54dc442c46c2fdcef04a9be3fe3cc829e5ab7f39ef3368f1bc59511d62063e077ce0cfc9747bc249e2cc071fc1b3  cli-26.0.2.tar.gz
ff99e16d4818a9477c9da28edb0c9f065fdb9c1e5977da68993ab5ad9bcace9a14b746c09002233e51ae7a3b8b61286fe8c5cf4d56ce077350bc7c1a4e03d18a  moby-26.0.2.tar.gz
dd499b92058fc4d7d19e0c9030b1f390f58ac40be423442732cb7d02067ed2e43c464511772a21d4f347ec34f037ddd00cc1243dc41c8ce85151ac6142611d61  docker.initd
43432a05e5776910d45364aee9070932aa89f70eb9e69d3b7ed8e17d9a70eaed4c8c29b3524888214c7ddba592399e781a72255f7eb8fafd80c9f532a9481fac  docker.confd
"