- Update to GCC 11.2.0
- Update crosstool-ng
- Fix FATAL: kernel too old with static build and QEMU (Down minimal kernel to 5.4.0, works on Ubuntu 20.04, debian 11 and Raspberry Pi OS after 2020-08-20)
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
It is now possible to choose the version of crosstool-ng per image, To make it easier to upgrade crosstool-ng to newer versions without having to update all images at the same time
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
linux-arm64 is currently using gcc 4, so it's difficult to take
advantage of modern C++. This PR bump up the version of gcc to
allow us to enjoy all the benefits of modern C++. (This PR is based
on #310)
Set the ARCH, CROSS_COMPILE and PATH variables to support Linux kernel
cross compilation.
ARCH is set according to:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch?h=v5.2.2
PATH is set to include the cross toolchain path, which is used by the
kernel Makefile.
CROSS_COMPILE is the CROSS_TRIPLE with a dash appended, as the kernel
Makefile uses it to invoke the toolchain utils.
To build the kernel, depending on the config, libssl-dev and libelf-dev
are required. Those are not dealt in this commit as they are not
correlated to the environment variables.
Validated by build the kernel using default kernel config when possible,
otherwise randomly select a defconfig.
<arch> - <defconfig>
arm64 - defconfig
armv5 and armv5-musl - colibri_pxa270_defconfig
armv6 - bcm2835_defconfig
armv7 and armv7a- tegra_defconfig
*x86 - i386_defconfig
mips and mipsel - ath79_defconfig
ppc64le - wii_defconfig
s390x - defconfig
x64 - x86_64_defconfig
* x86 dockcross toolchain does not provide "ld" and compilation fails.
fix#160
As recommended in by CircleCI, explicitly specify the "latest"
tag. This will be important when we will start versioning our images.
Copied from CircleCI documentation [1]:
"Make sure you tag the image you use in the FROM command in your
Dockerfile, even if it is the default “latest” tag. Otherwise, Docker
will pull down all tags for the image you specify. This will create
significant performance problems because the save/load strategy described
above only caches the image layers (and thus tags) that you specify in
the docker save command, so other tags will be re-pulled on every build
if a tag is not specified in the FROM command."
[1] https://circleci.com/docs/docker/#caching-docker-layers
This commit build each images with the following arguments:
* IMAGE: Name of the image (e.g dockcross/base, dockcross/manylinux-x64, ...)
* VCS_REF: dockcross/dockcross commit from which this image is built
* VCS_URL: this repository obtained reading remote.origin.url
* BUILD_DATE: Date and time when the build was initiated
Then, within the Dockerfile, the metadata are associated with the image
using the "LABEL" instruction.
See https://docs.docker.com/engine/reference/builder/#/label
The corresponding labels can be found here:
http://label-schema.org/rc1/#build-time-labels
See #28