mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-20 17:49:10 +00:00
tools/alpine: multi-arch support for the base alpine image
Alpine is the base docker image for the LinuxKit, but currently it only supports amd64 architecture. This patch is try to unify the alpine tool docker image build process order to suport other architectures, such as AArch64, by using '--build-arg' to override the alpine base image specified by 'FROM' in the Dockerfile. Also this patch splits the standalone packages into 2 parts: one is common for all archs, another is arch-specific. Signed-off-by: Dennis Chen <dennis.chen@arm.com>
This commit is contained in:
parent
e59d4ef3d7
commit
cc14a74276
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
1
tools/alpine/packages.aarch64
Normal file
1
tools/alpine/packages.aarch64
Normal file
@ -0,0 +1 @@
|
||||
qemu-system-aarch64
|
2
tools/alpine/packages.x86_64
Normal file
2
tools/alpine/packages.x86_64
Normal file
@ -0,0 +1,2 @@
|
||||
open-vm-tools
|
||||
syslinux
|
231
tools/alpine/versions.aarch64
Normal file
231
tools/alpine/versions.aarch64
Normal file
@ -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
|
@ -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
|
Loading…
Reference in New Issue
Block a user