This repository has been archived by the owner on May 20, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 302
/
PKGBUILD
162 lines (148 loc) · 5.52 KB
/
PKGBUILD
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
# Maintainer: Sébastien "Seblu" Luttringer
# Maintainer: Morten Linderud <foxboron@archlinux.org>
pkgname=docker
pkgver=20.10.6
pkgrel=1
epoch=1
pkgdesc='Pack, ship and run any application as a lightweight container'
arch=('x86_64')
url='https://www.docker.com/'
license=('Apache')
depends=('glibc' 'bridge-utils' 'iproute2' 'device-mapper' 'sqlite' 'systemd-libs'
'libseccomp' 'libtool' 'runc' 'containerd')
makedepends=('git' 'go' 'btrfs-progs' 'cmake' 'systemd' 'go-md2man' 'sed')
optdepends=('btrfs-progs: btrfs backend support'
'pigz: parallel gzip compressor support')
# https://github.com/moby/moby/tree/v20.10.0/hack/dockerfile/install
_TINI_COMMIT=de40ad007797e0dcd8b7126f27bb87401d224240
_LIBNETWORK_COMMIT=b3507428be5b458cb0e2b4086b13531fb0706e46
_BUILDX_COMMIT=11057da37336192bfc57d81e02359ba7ba848e4a
_APP_COMMIT=9d2c67f87b7338eb1a0fa2f18eb81af3d2aac0e1
source=("git+https://github.com/docker/cli.git#tag=v$pkgver"
"git+https://github.com/moby/moby.git#tag=v$pkgver"
"git+https://github.com/docker/libnetwork.git#commit=$_LIBNETWORK_COMMIT"
"git+https://github.com/krallin/tini.git#commit=$_TINI_COMMIT"
"git+https://github.com/docker/buildx.git#commit=$_BUILDX_COMMIT"
"git+https://github.com/docker/app.git#commit=$_APP_COMMIT"
"$pkgname.sysusers")
sha256sums=('SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'541826011a9836d05a2f42293d5f1beadf2ca8d89fb604487d61a013505678eb')
# 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
}
build() {
### check my mistakes on commit version
echo 'Checking commit mismatch'
(
local _cfile
for _cfile in tini proxy; do
. "moby/hack/dockerfile/install/$_cfile.installer"
done
local _commit _pkgbuild _dockerfile
err=0
for _commit in LIBNETWORK TINI; do
_pkgbuild=_${_commit}_COMMIT
_dockerfile=${_commit}_COMMIT
if [[ ${!_pkgbuild} != ${!_dockerfile} ]]; then
echo "Invalid $_commit commit, should be ${!_dockerfile}" >&2
err=$(($err + 1))
fi
done
return $err
)
### globals
export GOPATH="$srcdir"
export PATH="$GOPATH/bin:$PATH"
export CGO_CPPFLAGS="${CPPFLAGS}"
export CGO_CFLAGS="${CFLAGS}"
export CGO_CXXFLAGS="${CXXFLAGS}"
export CGO_LDFLAGS="${LDFLAGS}"
export LDFLAGS=''
export GOFLAGS='-buildmode=pie -trimpath -mod=readonly -modcacherw -ldflags=-linkmode=external'
export GO111MODULE=off
### cli
echo 'Building cli'
_fake_gopath_pushd cli github.com/docker/cli
DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=$pkgver dynbinary
make manpages
_fake_gopath_popd
### daemon
echo 'Building daemon'
_fake_gopath_pushd moby github.com/docker/docker
DOCKER_GITCOMMIT=$(cd "$srcdir"/moby && git rev-parse --short HEAD) \
DOCKER_BUILDTAGS='seccomp journald apparmor' \
VERSION=$pkgver \
hack/make.sh dynbinary
_fake_gopath_popd
### docker proxy
echo 'Building docker-proxy'
_fake_gopath_pushd libnetwork github.com/docker/libnetwork
go build github.com/docker/libnetwork/cmd/proxy
_fake_gopath_popd
### docker-init
echo 'Building 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
### app cli plugin
echo 'Building app cli plugin'
_fake_gopath_pushd app github.com/docker/app
make dynamic
_fake_gopath_popd
### buildx cli plugin
echo 'Building buildx cli plugin'
_fake_gopath_pushd buildx github.com/docker/buildx
go build -o docker-buildx -ldflags "\
-X github.com/docker/buildx/version.Version=$(git describe --match 'v[0-9]*' --always --tags)-tp-docker \
-X github.com/docker/buildx/version.Revision=$(git rev-parse HEAD) \
-X github.com/docker/buildx/version.Package=github.com/docker/buildx \
-X main.experimental=1 -linkmode=external" ./cmd/buildx
_fake_gopath_popd
}
package() {
### proxy
install -Dm755 libnetwork/proxy "$pkgdir/usr/bin/docker-proxy"
### init
install -Dm755 tini/tini-static "$pkgdir/usr/bin/docker-init"
### dockerd
install -Dm755 moby/bundles/dynbinary-daemon/dockerd "$pkgdir"/usr/bin/dockerd
### systemd units
cd "$srcdir"/moby/contrib
install -Dm644 'init/systemd/docker.service' "$pkgdir/usr/lib/systemd/system/docker.service"
install -Dm644 'init/systemd/docker.socket' "$pkgdir/usr/lib/systemd/system/docker.socket"
# systemd rules
install -Dm644 'udev/80-docker.rules' "$pkgdir/usr/lib/udev/rules.d/80-docker.rules"
install -Dm644 "$srcdir/$pkgname.sysusers" "$pkgdir/usr/lib/sysusers.d/$pkgname.conf"
### cli
cd "$srcdir"/cli
# binary
install -Dm755 build/docker "$pkgdir/usr/bin/docker"
# completion
install -Dm644 'contrib/completion/bash/docker' "$pkgdir/usr/share/bash-completion/completions/docker"
install -Dm644 'contrib/completion/zsh/_docker' "$pkgdir/usr/share/zsh/site-functions/_docker"
install -Dm644 'contrib/completion/fish/docker.fish' "$pkgdir/usr/share/fish/vendor_completions.d/docker.fish"
# man
install -dm755 "$pkgdir/usr/share/man"
cp -r man/man* "$pkgdir/usr/share/man"
# cli-plugins
cd "$srcdir"/src/github.com/docker
install -Dm755 app/bin/docker-app "$pkgdir/usr/lib/docker/cli-plugins/docker-app"
install -Dm755 buildx/docker-buildx "$pkgdir/usr/lib/docker/cli-plugins/docker-buildx"
}
# vim:set ts=2 sw=2 et: