diff --git a/tools/alpine/Dockerfile b/tools/alpine/Dockerfile index f2f1ab504..8f7557885 100644 --- a/tools/alpine/Dockerfile +++ b/tools/alpine/Dockerfile @@ -1,14 +1,16 @@ -FROM alpine:3.6 AS mirror +ARG BASE=alpine:3.6 +FROM $BASE AS mirror # update base image RUN apk update && apk upgrade -a # Copy Dockerfile so we can include it in the hash COPY Dockerfile /Dockerfile -COPY packages /tmp/ +COPY packages* /tmp/ # mirror packages -RUN mkdir -p /mirror/$(uname -m) && \ +RUN cat /tmp/packages.$(uname -m) >> /tmp/packages && \ + mkdir -p /mirror/$(uname -m) && \ apk fetch --recursive -o /mirror/$(uname -m) $(apk info; cat /tmp/packages) # add the tools for WireGuard, since the kernel module is now included, but from edge/testing @@ -28,7 +30,10 @@ RUN cp /mirror/$(uname -m)/APKINDEX.unsigned.tar.gz /mirror/$(uname -m)/APKINDEX RUN abuild-sign /mirror/$(uname -m)/APKINDEX.tar.gz # fetch OVMF for qemu EFI boot (this is not added as a package) -RUN apk add -X http://dl-cdn.alpinelinux.org/alpine/edge/community ovmf +RUN mkdir -p /usr/share/ovmf && \ + if [ $(uname -m) = x86_64 ]; then \ + apk add -X http://dl-cdn.alpinelinux.org/alpine/edge/community ovmf; \ + fi # set this as our repo but keep a copy of the upstream for downstream use RUN mv /etc/apk/repositories /etc/apk/repositories.upstream && echo "/mirror" > /etc/apk/repositories && apk update @@ -41,14 +46,14 @@ RUN go get -u github.com/golang/lint/golint RUN go get -u github.com/gordonklaus/ineffassign RUN go get -u github.com/LK4D4/vndr -FROM alpine:3.6 +FROM $BASE COPY --from=mirror /etc/apk/repositories /etc/apk/repositories COPY --from=mirror /etc/apk/repositories.upstream /etc/apk/repositories.upstream COPY --from=mirror /etc/apk/keys /etc/apk/keys/ COPY --from=mirror /mirror /mirror/ COPY --from=mirror /go/bin /go/bin/ -COPY --from=mirror /usr/share/ovmf/bios.bin /usr/share/ovmf/bios.bin +COPY --from=mirror /usr/share/ovmf/ /usr/share/ovmf/ COPY --from=mirror /Dockerfile /Dockerfile RUN apk update && apk upgrade -a diff --git a/tools/alpine/Makefile b/tools/alpine/Makefile index 25624ba4d..5c5149262 100644 --- a/tools/alpine/Makefile +++ b/tools/alpine/Makefile @@ -2,24 +2,37 @@ ORG?=linuxkit IMAGE=alpine + +DOCKER_CONTENT_VAR=1 +PKG_DEPS=packages + +ifeq ($(shell uname -m), x86_64) BASE=alpine:3.6 +PKG_DEPS += packages.x86_64 +endif + +ifeq ($(shell uname -m), aarch64) +BASE=arm64v8/alpine:3.6 +PKG_DEPS += packages.aarch64 +DOCKER_CONTENT_VAR=0 +endif default: push show-tag: - @sed -n -e '1s/# \(.*\/.*:[0-9a-f]\{40\}\)/\1/p;q' versions + @sed -n -e '1s/# \(.*\/.*:[0-9a-f]\{40\}\)/\1/p;q' versions.$(shell uname -m) -hash: Dockerfile Makefile packages - DOCKER_CONTENT_TRUST=1 docker pull $(BASE) - docker build --no-cache -t $(IMAGE):build . +hash: Dockerfile Makefile $(PKG_DEPS) + DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker pull $(BASE) + docker build --no-cache --build-arg BASE=$(BASE) -t $(IMAGE):build . docker run --rm $(IMAGE):build sh -c 'echo Dockerfile /lib/apk/db/installed $$(find /mirror -name '*.apk' -type f) $$(find /go/bin -type f) | xargs cat | sha1sum' | sed 's/ .*//' > $@ push: hash - DOCKER_CONTENT_TRUST=1 docker pull $(ORG)/$(IMAGE):$(shell cat hash) || \ + DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker pull $(ORG)/$(IMAGE):$(shell cat hash) || \ (docker tag $(IMAGE):build $(ORG)/$(IMAGE):$(shell cat hash) && \ - DOCKER_CONTENT_TRUST=1 docker push $(ORG)/$(IMAGE):$(shell cat hash)) - echo "# $(ORG)/$(IMAGE):$(shell cat hash)" > versions - docker run --rm $(IMAGE):build find /mirror -name '*.apk' -exec basename '{}' .apk \; | sort | (echo '# automatically generated list of installed packages'; cat -) >> versions + DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker push $(ORG)/$(IMAGE):$(shell cat hash)) + echo "# $(ORG)/$(IMAGE):$(shell cat hash)" > versions.$(shell uname -m) + docker run --rm $(IMAGE):build find /mirror -name '*.apk' -exec basename '{}' .apk \; | sort | (echo '# automatically generated list of installed packages'; cat -) >> versions.$(shell uname -m) docker rmi $(IMAGE):build rm -f hash diff --git a/tools/alpine/packages b/tools/alpine/packages index 5d06d21d0..e49fc5953 100644 --- a/tools/alpine/packages +++ b/tools/alpine/packages @@ -61,7 +61,6 @@ openntpd openrc openssh-server openssl-dev -open-vm-tools patch python3 qemu-aarch64 @@ -77,7 +76,6 @@ slang-dev squashfs-tools strace swig -syslinux tar tcpdump tini diff --git a/tools/alpine/packages.aarch64 b/tools/alpine/packages.aarch64 new file mode 100644 index 000000000..67d66ec9e --- /dev/null +++ b/tools/alpine/packages.aarch64 @@ -0,0 +1 @@ +qemu-system-aarch64 diff --git a/tools/alpine/packages.x86_64 b/tools/alpine/packages.x86_64 new file mode 100644 index 000000000..b86c2899e --- /dev/null +++ b/tools/alpine/packages.x86_64 @@ -0,0 +1,2 @@ +open-vm-tools +syslinux diff --git a/tools/alpine/versions.aarch64 b/tools/alpine/versions.aarch64 new file mode 100644 index 000000000..94f0fa6f7 --- /dev/null +++ b/tools/alpine/versions.aarch64 @@ -0,0 +1,231 @@ +# linuxkit/alpine:07d75275bc91757f2a03b3096ddfe6d442f66ab1 +# automatically generated list of installed packages +abuild-3.0.0_rc2-r8 +alpine-baselayout-3.0.4-r0 +alpine-keys-2.1-r1 +alsa-lib-1.1.3-r0 +apk-tools-2.7.2-r0 +argp-standalone-1.3-r2 +attr-2.4.47-r6 +autoconf-2.69-r0 +automake-1.15-r0 +bash-4.3.48-r1 +bc-1.06.95-r2 +binutils-2.28-r2 +binutils-dev-2.28-r2 +binutils-libs-2.28-r2 +bison-3.0.4-r0 +bsd-compat-headers-0.7.1-r0 +btrfs-progs-4.10.2-r0 +btrfs-progs-dev-4.10.2-r0 +btrfs-progs-libs-4.10.2-r0 +build-base-0.5-r0 +busybox-1.26.2-r5 +busybox-initscripts-3.1-r1 +bzip2-1.0.6-r5 +ca-certificates-20161130-r2 +cdrkit-1.1.11-r2 +celt051-0.5.1.3-r0 +cmake-3.8.1-r0 +cryptsetup-1.7.5-r0 +cryptsetup-libs-1.7.5-r0 +curl-7.54.0-r0 +db-5.3.28-r0 +device-mapper-libs-2.02.168-r3 +dhcpcd-6.11.5-r1 +diffutils-3.5-r0 +dosfstools-4.1-r1 +e2fsprogs-1.43.4-r0 +e2fsprogs-extra-1.43.4-r0 +e2fsprogs-libs-1.43.4-r0 +elfutils-dev-0.168-r1 +elfutils-libelf-0.168-r1 +expat-2.2.0-r1 +expect-5.45-r3 +fakeroot-1.21-r1 +file-5.30-r0 +findmnt-2.28.2-r2 +flex-2.6.4-r1 +fortify-headers-0.8-r0 +g++-6.3.0-r4 +gc-7.6.0-r1 +gcc-6.3.0-r4 +gdbm-1.12-r0 +gettext-0.19.8.1-r1 +gettext-asprintf-0.19.8.1-r1 +gettext-dev-0.19.8.1-r1 +gettext-libs-0.19.8.1-r1 +git-2.13.0-r0 +glib-2.52.1-r0 +gmp-6.1.2-r0 +gmp-dev-6.1.2-r0 +gnupg-2.1.20-r0 +gnutls-3.5.13-r0 +go-1.8.3-r0 +guile-2.0.13-r0 +guile-libs-2.0.13-r0 +gummiboot-48.1-r0 +hvtools-4.4.15-r0 +installkernel-3.5-r0 +iperf3-3.1.7-r0 +iproute2-4.10.0-r1 +iptables-1.6.1-r0 +isl-0.17.1-r0 +jq-1.5-r3 +jsoncpp-1.8.0-r0 +keyutils-libs-1.5.9-r1 +kmod-23-r1 +krb5-conf-1.0-r1 +krb5-libs-1.14.3-r2 +libacl-2.2.52-r3 +libaio-0.3.110-r0 +libarchive-3.3.1-r1 +libarchive-tools-3.3.1-r1 +libassuan-2.4.3-r0 +libatomic-6.3.0-r4 +libattr-2.4.47-r6 +libblkid-2.28.2-r2 +libburn-1.4.6-r0 +libbz2-1.0.6-r5 +libcap-2.25-r1 +libcap-ng-0.7.8-r0 +libcap-ng-dev-0.7.8-r0 +libc-dev-0.7.1-r0 +libcom_err-1.43.4-r0 +libcrypto1.0-1.0.2k-r0 +libcurl-7.54.0-r0 +libc-utils-0.7.1-r0 +libdrm-2.4.80-r0 +libedit-20170329.3.1-r2 +libelf-0.8.13-r2 +libelf-dev-0.8.13-r2 +libepoxy-1.4.1-r0 +libexecinfo-1.1-r0 +libexecinfo-dev-1.1-r0 +libfdisk-2.28.2-r2 +libffi-3.2.1-r3 +libgcc-6.3.0-r4 +libgcrypt-1.7.8-r0 +libgmpxx-6.1.2-r0 +libgomp-6.3.0-r4 +libgpg-error-1.27-r0 +libintl-0.19.8.1-r1 +libisoburn-1.4.6-r0 +libisofs-1.4.6-r0 +libjpeg-turbo-1.5.1-r0 +libksba-1.3.4-r0 +libldap-2.4.44-r5 +libltdl-2.4.6-r1 +libmagic-5.30-r0 +libmnl-1.0.4-r0 +libmount-2.28.2-r2 +libnfs-1.11.0-r0 +libnftnl-libs-1.0.7-r0 +libogg-1.3.2-r1 +libpcap-1.8.1-r0 +libpng-1.6.29-r1 +libressl-2.5.4-r0 +libressl2.5-libcrypto-2.5.4-r0 +libressl2.5-libssl-2.5.4-r0 +libressl2.5-libtls-2.5.4-r0 +libressl-dev-2.5.4-r0 +libsasl-2.1.26-r10 +libseccomp-2.3.2-r0 +libseccomp-dev-2.3.2-r0 +libsmartcols-2.28.2-r2 +libssh2-1.8.0-r1 +libssl1.0-1.0.2k-r0 +libstdc++-6.3.0-r4 +libtasn1-4.10-r1 +libtirpc-1.0.1-r1 +libtool-2.4.6-r1 +libunistring-0.9.7-r0 +libunwind-1.2-r2 +libunwind-dev-1.2-r2 +libusb-1.0.21-r0 +libuuid-2.28.2-r2 +libuv-1.11.0-r1 +libverto-0.2.5-r2 +libxml2-2.9.4-r4 +linux-headers-4.4.6-r2 +lua5.2-libs-5.2.4-r2 +lz4-libs-1.7.5-r0 +lzip-1.19-r0 +lzo-2.10-r0 +m4-1.4.18-r0 +make-4.2.1-r0 +mesa-gbm-17.0.3-r1 +mpc1-1.0.3-r0 +mpfr3-3.1.5-r0 +mtools-4.0.18-r1 +musl-1.1.16-r13 +musl-dev-1.1.16-r13 +musl-utils-1.1.16-r13 +ncurses-dev-6.0-r7 +ncurses-libs-6.0-r7 +ncurses-terminfo-6.0-r7 +ncurses-terminfo-base-6.0-r7 +nettle-3.3-r0 +npth-1.2-r0 +oniguruma-6.2.0-r0 +openntpd-6.0_p1-r3 +openrc-0.24.1-r2 +openssh-keygen-7.5_p1-r1 +openssh-server-7.5_p1-r1 +openssl-dev-1.0.2k-r0 +opus-1.1.4-r0 +p11-kit-0.23.2-r1 +patch-2.7.5-r1 +pax-utils-1.2.2-r0 +pcre-8.40-r2 +perl-5.24.1-r2 +pinentry-1.0.0-r0 +pixman-0.34.0-r0 +pkgconf-1.3.7-r0 +popt-1.16-r6 +python3-3.6.1-r2 +qemu-2.8.1-r1 +qemu-aarch64-2.8.1-r1 +qemu-arm-2.8.1-r1 +qemu-guest-agent-2.8.1-r1 +qemu-img-2.8.1-r1 +qemu-ppc64le-2.8.1-r1 +qemu-system-aarch64-2.8.1-r1 +qemu-system-arm-2.8.1-r1 +qemu-system-x86_64-2.8.1-r1 +readline-6.3.008-r5 +scanelf-1.2.2-r0 +sed-4.4-r0 +sfdisk-2.28.2-r2 +slang-2.3.1-r0 +slang-dev-2.3.1-r0 +snappy-1.1.4-r1 +spice-server-0.13.3-r1 +sqlite-libs-3.18.0-r0 +squashfs-tools-4.3-r3 +strace-4.16-r1 +sudo-1.8.19_p2-r0 +swig-3.0.10-r0 +tar-1.29-r1 +tcl-8.6.6-r0 +tcpdump-4.9.0-r1 +tini-0.14.0-r0 +tzdata-2017a-r0 +usbredir-0.7-r2 +util-linux-2.28.2-r2 +util-linux-dev-2.28.2-r2 +vde2-libs-2.3.2-r7 +vim-8.0.0595-r0 +wayland-1.13.0-r0 +wireguard-tools-0.0.20170629-r0 +xfsprogs-4.5.0-r0 +xfsprogs-extra-4.5.0-r0 +xfsprogs-libs-4.5.0-r0 +xorriso-1.4.6-r0 +xz-5.2.3-r0 +xz-dev-5.2.3-r0 +xz-libs-5.2.3-r0 +zfs-0.6.5.9-r1 +zfs-libs-0.6.5.9-r1 +zlib-1.2.11-r0 +zlib-dev-1.2.11-r0 diff --git a/tools/alpine/versions b/tools/alpine/versions.x86_64 similarity index 98% rename from tools/alpine/versions rename to tools/alpine/versions.x86_64 index 3aace5887..13805b726 100644 --- a/tools/alpine/versions +++ b/tools/alpine/versions.x86_64 @@ -1,4 +1,4 @@ -# linuxkit/alpine:43c139f87122e94af5fac9a9d1d96f0292ca1c0b +# linuxkit/alpine:c05b16339df6d4638bc048aa12148b5803635b66 # automatically generated list of installed packages abuild-3.0.0_rc2-r8 alpine-baselayout-3.0.4-r0 @@ -91,14 +91,14 @@ libattr-2.4.47-r6 libblkid-2.28.2-r2 libburn-1.4.6-r0 libbz2-1.0.6-r5 -libc-dev-0.7.1-r0 -libc-utils-0.7.1-r0 libcap-2.25-r1 libcap-ng-0.7.8-r0 libcap-ng-dev-0.7.8-r0 +libc-dev-0.7.1-r0 libcom_err-1.43.4-r0 libcrypto1.0-1.0.2k-r0 libcurl-7.54.0-r0 +libc-utils-0.7.1-r0 libdrm-2.4.80-r0 libedit-20170329.3.1-r2 libelf-0.8.13-r2 @@ -131,10 +131,10 @@ libpcap-1.8.1-r0 libpciaccess-0.13.4-r1 libpng-1.6.29-r1 libressl-2.5.4-r0 -libressl-dev-2.5.4-r0 libressl2.5-libcrypto-2.5.4-r0 libressl2.5-libssl-2.5.4-r0 libressl2.5-libtls-2.5.4-r0 +libressl-dev-2.5.4-r0 libsasl-2.1.26-r10 libseccomp-2.3.2-r0 libseccomp-dev-2.3.2-r0 @@ -175,12 +175,12 @@ ncurses-terminfo-base-6.0-r7 nettle-3.3-r0 npth-1.2-r0 oniguruma-6.2.0-r0 -open-vm-tools-10.1.0-r7 openntpd-6.0_p1-r3 openrc-0.24.1-r2 openssh-keygen-7.5_p1-r1 openssh-server-7.5_p1-r1 openssl-dev-1.0.2k-r0 +open-vm-tools-10.1.0-r7 opus-1.1.4-r0 p11-kit-0.23.2-r1 patch-2.7.5-r1