Support to build armhf/arm64 platforms on arm based system (#7731)
Why I did it Support to build armhf/arm64 platforms on arm based system without qemu simulator. When building the armhf/arm64 on arm based system, it is not necessary to use qemu simulator. How I did it Build armhf on armhf system, or build arm64 on arm64 system, by default, qemu simulator will not be used. When building armhf on arm64, and you have enabled armhf docker, then it will build images without simulator automatically. It is based how the docker service is run. Docker base image change: For amd64, change from debian:to amd64/debian: For arm64, change from multiarch/debian-debootstrap:arm64- to arm64v8/debian: For armhf, change from multiarch/debian-debootstrap:armhf- to arm32v7/debian: See https://github.com/docker-library/official-images#architectures-other-than-amd64 The mapping relations: arm32v6 --- armel arm32v7 --- armhf arm64v8 --- arm64 Docker image armhf deprecated info: https://hub.docker.com/r/armhf/debian, using arm32v7 instead.
This commit is contained in:
parent
28dca68925
commit
a4405f09ed
@ -47,12 +47,13 @@ SHELL = /bin/bash
|
||||
USER := $(shell id -un)
|
||||
PWD := $(shell pwd)
|
||||
USER_LC := $(shell echo $(USER) | tr A-Z a-z)
|
||||
DOCKER_MACHINE := $(shell docker run --rm debian:buster uname -m)
|
||||
|
||||
comma := ,
|
||||
|
||||
ifeq ($(shell uname -m), aarch64)
|
||||
ifeq ($(DOCKER_MACHINE), aarch64)
|
||||
COMPILE_HOST_ARCH := arm64
|
||||
else ifeq ($(shell uname -m), armv7l)
|
||||
else ifeq ($(shell echo $(DOCKER_MACHINE) | grep -qE "armv7l|armv8l" && echo y),y)
|
||||
COMPILE_HOST_ARCH := armhf
|
||||
else
|
||||
COMPILE_HOST_ARCH := amd64
|
||||
@ -286,7 +287,7 @@ SONIC_BUILD_INSTRUCTION := make \
|
||||
.DEFAULT_GOAL := all
|
||||
|
||||
%::
|
||||
ifneq (,$(filter $(CONFIGURED_ARCH), armhf arm64))
|
||||
ifeq ($(MULTIARCH_QEMU_ENVIRON), y)
|
||||
@$(DOCKER_MULTIARCH_CHECK)
|
||||
ifneq ($(BLDENV), )
|
||||
@$(DOCKER_SERVICE_MULTIARCH_CHECK)
|
||||
@ -361,7 +362,7 @@ reset :
|
||||
if [ $$ans == y ]; then
|
||||
echo "Resetting local repository. Please wait...";
|
||||
$(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) sudo rm -rf fsroot;
|
||||
if [[ "$(CONFIGURED_ARCH)" == "armhf" || "$(CONFIGURED_ARCH)" == "arm64" ]]; then
|
||||
if [ "$(MULTIARCH_QEMU_ENVIRON)" == y ] && [[ "$(CONFIGURED_ARCH)" == "armhf" || "$(CONFIGURED_ARCH)" == "arm64" ]]; then
|
||||
echo "Stopping march $(CONFIGURED_ARCH) docker"
|
||||
sudo kill -9 `sudo cat /var/run/march/docker.pid` || true
|
||||
sudo rm -f /var/run/march/docker.pid || true
|
||||
|
@ -4,7 +4,7 @@ FROM multiarch/debian-debootstrap:armhf-buster
|
||||
{% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %}
|
||||
FROM multiarch/debian-debootstrap:arm64-buster
|
||||
{% else %}
|
||||
FROM debian:buster
|
||||
FROM {{DOCKER_BASE_ARCH}}/debian:buster
|
||||
{% endif %}
|
||||
|
||||
# Clean documentation in FROM image
|
||||
|
@ -4,7 +4,7 @@ FROM multiarch/debian-debootstrap:armhf-stretch
|
||||
{% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %}
|
||||
FROM multiarch/debian-debootstrap:arm64-stretch
|
||||
{% else %}
|
||||
FROM debian:stretch
|
||||
FROM {{DOCKER_BASE_ARCH}}/debian:stretch
|
||||
{% endif %}
|
||||
|
||||
# Clean documentation in FROM image
|
||||
|
@ -3,7 +3,7 @@ FROM multiarch/debian-debootstrap:armhf-jessie
|
||||
{% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %}
|
||||
FROM multiarch/debian-debootstrap:arm64-jessie
|
||||
{% else %}
|
||||
FROM debian:jessie
|
||||
FROM {{DOCKER_BASE_ARCH}}/debian:jessie
|
||||
{% endif %}
|
||||
|
||||
## Remove retired jessie-updates repo
|
||||
|
9
slave.mk
9
slave.mk
@ -51,6 +51,14 @@ CONFIGURED_ARCH := $(shell [ -f .arch ] && cat .arch || echo amd64)
|
||||
ifeq ($(PLATFORM_ARCH),)
|
||||
override PLATFORM_ARCH = $(CONFIGURED_ARCH)
|
||||
endif
|
||||
DOCKER_BASE_ARCH := $(CONFIGURED_ARCH)
|
||||
ifeq ($(CONFIGURED_ARCH),armhf)
|
||||
override DOCKER_BASE_ARCH = arm32v7
|
||||
else
|
||||
ifeq ($(CONFIGURED_ARCH),arm64)
|
||||
override DOCKER_BASE_ARCH = arm64v8
|
||||
endif
|
||||
endif
|
||||
ifeq ($(BLDENV),bullseye)
|
||||
IMAGE_DISTRO := bullseye
|
||||
else
|
||||
@ -68,6 +76,7 @@ export PYTHON_WHEELS_PATH
|
||||
export IMAGE_DISTRO
|
||||
export IMAGE_DISTRO_DEBS_PATH
|
||||
export MULTIARCH_QEMU_ENVIRON
|
||||
export DOCKER_BASE_ARCH
|
||||
|
||||
###############################################################################
|
||||
## Utility rules
|
||||
|
Loading…
Reference in New Issue
Block a user