Browse code

project: fix build rpm

* change workdir for accessing install-binaries.sh
* use other gopath for binaries to preserve sources
* add sources of proxy and grimes to rpc spec
* use dynamic proxy with -linkmode external in deb and rpm

Signed-off-by: Alexander Morozov <lk4d4@docker.com>

Alexander Morozov authored on 2016/10/28 08:52:56
Showing 4 changed files
... ...
@@ -8,7 +8,16 @@ CONTAINERD_COMMIT=52ef1ceb4b660c42cf4ea9013180a5663968d4c7
8 8
 GRIMES_COMMIT=74341e923bdf06cfb6b70cf54089c4d3ac87ec2d
9 9
 LIBNETWORK_COMMIT=0f534354b813003a754606689722fe253101bc4e
10 10
 
11
-export GOPATH="$(mktemp -d)"
11
+RM_GOPATH=0
12
+
13
+TMP_GOPATH=${TMP_GOPATH:-""}
14
+
15
+if [ -z "$TMP_GOPATH" ]; then
16
+	export GOPATH="$(mktemp -d)"
17
+	RM_GOPATH=1
18
+else
19
+	export GOPATH="$TMP_GOPATH"
20
+fi
12 21
 
13 22
 RUNC_BUILDTAGS="${RUNC_BUILDTAGS:-"seccomp apparmor selinux"}"
14 23
 
... ...
@@ -32,6 +41,14 @@ install_containerd() {
32 32
 	cp bin/ctr /usr/local/bin/docker-containerd-ctr
33 33
 }
34 34
 
35
+install_proxy() {
36
+	echo "Install docker-proxy version $LIBNETWORK_COMMIT"
37
+	git clone https://github.com/docker/libnetwork.git "$GOPATH/src/github.com/docker/libnetwork"
38
+	cd "$GOPATH/src/github.com/docker/libnetwork"
39
+	git checkout -q "$LIBNETWORK_COMMIT"
40
+	go build -ldflags="$PROXY_LDFLAGS" -o /usr/local/bin/docker-proxy github.com/docker/libnetwork/cmd/proxy
41
+}
42
+
35 43
 for prog in "$@"
36 44
 do
37 45
 	case $prog in
... ...
@@ -68,11 +85,12 @@ do
68 68
 			;;
69 69
 
70 70
 		proxy)
71
-			echo "Install docker-proxy version $LIBNETWORK_COMMIT"
72
-			git clone https://github.com/docker/libnetwork.git "$GOPATH/src/github.com/docker/libnetwork"
73
-			cd "$GOPATH/src/github.com/docker/libnetwork"
74
-			git checkout -q "$LIBNETWORK_COMMIT"
75
-			CGO_ENABLED=0 go build -v -o /usr/local/bin/docker-proxy github.com/docker/libnetwork/cmd/proxy
71
+			export CGO_ENABLED=0
72
+			install_proxy
73
+			;;
74
+
75
+		proxy-dynamic)
76
+			PROXY_LDFLAGS="-linkmode=external" install_proxy
76 77
 			;;
77 78
 
78 79
 		*)
... ...
@@ -82,4 +100,6 @@ do
82 82
 	esac
83 83
 done
84 84
 
85
-rm -rf "$GOPATH"
85
+if [ $RM_GOPATH -eq 1 ]; then
86
+	rm -rf "$GOPATH"
87
+fi
... ...
@@ -195,6 +195,7 @@ install -p -m 644 contrib/syntax/nano/Dockerfile.nanorc $RPM_BUILD_ROOT/usr/shar
195 195
 /%{_bindir}/docker-containerd-ctr
196 196
 /%{_bindir}/docker-proxy
197 197
 /%{_bindir}/docker-runc
198
+/%{_bindir}/docker-init
198 199
 /%{_sysconfdir}/udev/rules.d/80-docker.rules
199 200
 %if 0%{?is_systemd}
200 201
 /%{_unitdir}/docker.service
... ...
@@ -74,7 +74,7 @@ set -e
74 74
 
75 75
 		cat >> "$DEST/$version/Dockerfile.build" <<-EOF
76 76
 			# Install runc, containerd, proxy and grimes
77
-			RUN ./hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy grimes
77
+			RUN ./hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic grimes
78 78
 		EOF
79 79
 		cat >> "$DEST/$version/Dockerfile.build" <<-EOF
80 80
 			RUN cp -aL hack/make/.build-deb debian
... ...
@@ -89,12 +89,13 @@ set -e
89 89
 		cat > "$DEST/$version/Dockerfile.build" <<-EOF
90 90
 			FROM $image
91 91
 			COPY . /usr/src/${rpmName}
92
+			WORKDIR /usr/src/${rpmName}
92 93
 			RUN mkdir -p /go/src/github.com/docker && mkdir -p /go/src/github.com/opencontainers
93 94
 		EOF
94 95
 
95 96
 		cat >> "$DEST/$version/Dockerfile.build" <<-EOF
96 97
 			# Install runc, containerd, proxy and grimes
97
-			RUN ./hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy grimes
98
+			RUN TMP_GOPATH="/go" ./hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic grimes
98 99
 		EOF
99 100
 		if [[ "$VERSION" == *-dev ]] || [ -n "$(git status --porcelain)" ]; then
100 101
 			echo 'ENV DOCKER_EXPERIMENTAL 1' >> "$DEST/$version/Dockerfile.build"
... ...
@@ -107,7 +108,9 @@ set -e
107 107
 			WORKDIR /root/rpmbuild/SPECS
108 108
 			RUN tar --exclude .git -r -C /usr/src -f /root/rpmbuild/SOURCES/${rpmName}.tar ${rpmName}
109 109
 			RUN tar --exclude .git -r -C /go/src/github.com/docker -f /root/rpmbuild/SOURCES/${rpmName}.tar containerd
110
+			RUN tar --exclude .git -r -C /go/src/github.com/docker/libnetwork/cmd -f /root/rpmbuild/SOURCES/${rpmName}.tar proxy
110 111
 			RUN tar --exclude .git -r -C /go/src/github.com/opencontainers -f /root/rpmbuild/SOURCES/${rpmName}.tar runc
112
+			RUN tar --exclude .git -r -C /go/ -f /root/rpmbuild/SOURCES/${rpmName}.tar grimes
111 113
 			RUN gzip /root/rpmbuild/SOURCES/${rpmName}.tar
112 114
 			RUN { cat /usr/src/${rpmName}/contrib/builder/rpm/${PACKAGE_ARCH}/changelog; } >> ${rpmName}.spec && tail >&2 ${rpmName}.spec
113 115
 			RUN rpmbuild -ba \