Browse code

hack/vendor: add check for vendored archive/tar

Also allow re-vendoring using `./hack/vendor.sh archive/tar`

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 31b2c3bbd920d415283a478170c0efe9ef7bf8e7)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

moby authored on 2020/07/15 20:45:41
Showing 3 changed files
... ...
@@ -280,6 +280,7 @@ RUN --mount=type=cache,sharing=locked,id=moby-dev-aptlib,target=/var/lib/apt \
280 280
             libnl-3-200 \
281 281
             libprotobuf-c1 \
282 282
             net-tools \
283
+            patch \
283 284
             pigz \
284 285
             python3-pip \
285 286
             python3-setuptools \
... ...
@@ -5,12 +5,13 @@ source "${SCRIPTDIR}/.validate"
5 5
 
6 6
 validate_vendor_diff(){
7 7
 	IFS=$'\n'
8
+	# shellcheck disable=SC2207
8 9
 	files=( $(validate_diff --diff-filter=ACMR --name-only -- 'vendor.conf' 'vendor/' || true) )
9 10
 	unset IFS
10 11
 
11 12
 	if [ -n "${TEST_FORCE_VALIDATE:-}" ] || [ ${#files[@]} -gt 0 ]; then
12 13
 		# recreate vendor/
13
-		vndr -whitelist=^archive/tar
14
+		./hack/vendor.sh
14 15
 		# check if any files have changed
15 16
 		diffs="$(git status --porcelain -- vendor 2>/dev/null)"
16 17
 		mfiles="$(echo "$diffs" | awk '/^ M / {print $2}')"
... ...
@@ -12,4 +12,17 @@ if ! hash vndr; then
12 12
 	exit 1
13 13
 fi
14 14
 
15
-vndr -whitelist=^archive/tar "$@"
15
+if [ $# -eq 0 ] || [ "$1" = "archive/tar" ]; then
16
+	echo "update vendored copy of archive/tar"
17
+	: "${GO_VERSION:=$(awk -F '[ =]' '$1 == "ARG" && $2 == "GO_VERSION" { print $3; exit }' ./Dockerfile)}"
18
+	rm -rf vendor/archive
19
+	mkdir -p ./vendor/archive/tar
20
+	echo "downloading: https://golang.org/dl/go${GO_VERSION}.src.tar.gz"
21
+	curl -fsSL "https://golang.org/dl/go${GO_VERSION}.src.tar.gz" \
22
+		| tar --extract --gzip --directory=vendor/archive/tar --strip-components=4 go/src/archive/tar
23
+	patch --strip=4 --directory=vendor/archive/tar --input="$PWD/patches/0001-archive-tar-do-not-populate-user-group-names.patch"
24
+fi
25
+
26
+if [ $# -eq 0 ] || [ "$1" != "archive/tar" ]; then
27
+	vndr -whitelist=^archive/tar "$@"
28
+fi