-
Notifications
You must be signed in to change notification settings - Fork 394
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update all GNU docker images to latest LTS version on Docker. #591
Conversation
Most of the build errors seem to be from spurious network errors, but if any other of the build steps are failing, please let me know so I fix the images. |
|
To build the @@ -37,7 +37,7 @@
pushd gcc-mingw-w64-*
# We are using dwarf exceptions instead of sjlj
- sed -i -e 's/libgcc_s_sjlj-1/libgcc_s_dw2-1/g' debian/gcc-mingw-w64-i686.install
+ sed -i -e 's/libgcc_s_sjlj-1/libgcc_s_dw2-1/g' debian/gcc-mingw-w64-i686.install.in
# Only build i686 packages (disable x86_64)
patch -p0 <<'EOF'
@@ -90,8 +90,7 @@
BUILD_TARGET :=
INSTALL_TARGET := install install-lto-plugin
endif
-@@ -85,7 +85,7 @@
touch $@
+@@ -87,6 +87,6 @@
touch $@
-targets := i686-w64-mingw32 x86_64-w64-mingw32
@@ -99,7 +98,7 @@
threads := posix win32
# Hardening on the host, none on the target
-@@ -216,6 +216,10 @@
+@@ -220,6 +220,10 @@
# Enable libatomic
CONFFLAGS += \
--enable-libatomic
# Enable dwarf exceptions
+CONFFLAGS += \
+ --disable-sjlj-exceptions \
+ --with-dwarf2
- # Enable experimental::filesystem
+ # Enable experimental::filesystem and std::filesystem
CONFFLAGS += \
--enable-libstdcxx-filesystem-ts=yes |
Maybe a bad hack... but when adding the following lines under line 12 in
building |
What's going on here? Is there any help I can provide? |
Any updates on this? |
Currently needs someone to fix #609. Perhaps you can help? |
Sorry for the delay, this is back on my priority list and will be working on this shortly. |
9bec10f
to
87560cc
Compare
bors try --target unknown-linux |
tryBuild failed: |
Sorry this should be converted to a draft: this commit was simply to rebase to the current codebase, to avoid merge conflicts, and I'm tracking the list of all images that fail to build and annotating the reasons for their failure. |
@Xuanwo Sorry for the delay, I'm currently fixing the following images:
This is non-exhaustive and some of these should be trivial to fix, but if you are willing to submit PRs for any of these, it would be great. For some, like If you would like to submit patches for any of these, feel free to submit a PR on my fork, and I'd recommend starting at their of the first 2. Make sure you run the following commands to test the code: # This is an example export, all can be seen in `build_all.sh`.
# export TARGET=arm-unknown-linux-musleabihf STD=1 RUN=1
./build-docker-image.sh "$TARGET"
ci/test.sh This should require a nightly compiler for the tests, and for some very recent ones, I've been getting an issue with the manifest being unknown after some tests run. This isn't a big issue and they pass the CI tests, so failing with that error counts as a successful build locally. The branch to submit PRs to can be found here. |
Ok I've added numerous fixes for updating the Docker Ubuntu versions, and the only issues remaining are: Interactive Issues
Package Name Issues
Docker Dependency Issue
Other Issues
Kernel Selection Logic @Emilgardis Due to the use of backports or certain kernel versions which might not be stable (for example, max_kernel_version() {
# kernel versions have the following format:
# `5.10.0-10-$arch`, where the `$arch` may be optional.
local IFS=$'\n'
local -a versions
local major=0
local minor=0
local patch=0
local release=0
local index=0
read -r -d '' -a versions <<< "$1"
for i in "${!versions[@]}"; do
local version="${versions[$i]}"
local x=$(echo "$version" | cut -d '.' -f 1)
local y=$(echo "$version" | cut -d '.' -f 2)
local z=$(echo "$version" | cut -d '.' -f 3 | cut -d '-' -f 1)
local r=$(echo "$version" | cut -d '-' -f 2)
local is_larger=
if [ "$x" -gt "$major" ]; then
is_larger=1
elif [ "$x" -eq "$major" ] && [ "$y" -gt "$minor" ]; then
is_larger=1
elif [ "$x" -eq "$major" ] && [ "$y" -eq "$minor" ] && [ "$z" -gt "$patch" ]; then
is_larger=1
elif [ "$x" -eq "$major" ] && [ "$y" -eq "$minor" ] && [ "$z" -eq "$patch" ] && [ "$r" -gt "$release" ]; then
is_larger=1
fi
if [ -n "$is_larger" ]; then
index="$i"
major="$x"
minor="$y"
patch="$z"
release="$r"
fi
done
echo "${versions[index]}"
} Any review of this code would be wonderful. |
Feel free to ignore these, they are disabled in CI |
@Alexhuszagh I added you as a member to bors so you can run please fix the conflict |
15b6c99
to
63b9e51
Compare
try again? |
I still have to fix the FreeBSD issue. |
Update linux-image script to latest kernel and debian versions. Update by default to kernel version 5.10.0-8. This means updating our debian source to bullseye from buster. 32-bit big-endian mips was discontinued in bullseye, so we revert to buster. For some images, due to constantly updating linux kernel versions, we need to use wildcards otherwise the build step breaks. Since there may be more than one relevant package, we've added a function to manually expand wildcards and select the best kernel version, `max_kernel_version`. Likewise, on 32-bit big-endian mips, we need to specify the ncurses version. Created temporary symlinks for autconf and autom4te due to the build expecting a hard-coded version (2.69) of these binaries. Fixed the patch for `debian/rules` due to changed line numbers. Updated the patch to use dwarf rather than sjlj exceptions to patch the template file (`debian/gcc-mingw-w64-i686.install.in`) since `debian/gcc-mingw-w64-i686.install` is overwritten during the build. For `x86_64-unknown-linux-gnu`, building the linux image fails unless we download specific versions of `libgcc-s1` and `libstdc++6`, since the pre-installed Ubuntu versions are higher than the Debian versions. We therefore extract the specific versions. However, while building the linux image, it prefers these system versions, so we must uninstall them or else while running `qemu-system` it cannot find `libgcc_s1.so.1`. Since `apt` and basically every other package besides `dpkg` relies on `libgcc-s1`, we have to temporarily delete it and reinstall it.
63b9e51
to
6dbdac1
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
bors try --target x86_64-unknown-freebsd |
tryBuild succeeded: |
bors r=Emilgardis |
591: Update all GNU docker images to latest LTS version on Docker. r=Emilgardis a=Alexhuszagh Increment Ubuntu base image versions to 20.04. Update linux-image script to latest kernel and debian versions. Update by default to kernel version 5.10.0-8. This means updating our debian source to bullseye from buster. 32-bit big-endian mips was discontinued in bullseye, so we revert to buster. For some images, due to constantly updating linux kernel versions, we need to use wildcards otherwise the build step breaks. Since there may be more than one relevant package, we've added a function to manually expand wildcards and select the best kernel version, `max_kernel_version`. Likewise, on 32-bit big-endian mips, we need to specify the ncurses version. Created temporary symlinks for autconf and autom4te due to the build expecting a hard-coded version (2.69) of these binaries. Fixed the patch for `debian/rules` due to changed line numbers. Updated the patch to use dwarf rather than sjlj exceptions to patch the template file (`debian/gcc-mingw-w64-i686.install.in`) since `debian/gcc-mingw-w64-i686.install` is overwritten during the build. For `x86_64-unknown-linux-gnu`, building the linux image fails unless we download specific versions of `libgcc-s1` and `libstdc++6`, since the pre-installed Ubuntu versions are higher than the Debian versions. We therefore extract the specific versions. However, while building the linux image, it prefers these system versions, so we must uninstall them or else while running `qemu-system` it cannot find `libgcc_s1.so.1`. Since `apt` and basically every other package besides `dpkg` relies on `libgcc-s1`, we have to temporarily delete it and reinstall it. Closes #616. Closes #557. We've already addressed the Qemu fixes, which will be applied automatically. Closes #517. Closes #417. Replaces #481. Co-authored-by: Alex Huszagh <ahuszagh@gmail.com>
Build failed: |
bors try --target mips-unknown-linux-gnu |
bors r=Emilgardis |
tryBuild succeeded: |
Build succeeded: |
Increment Ubuntu base image versions to 20.04.
Update linux-image script to latest kernel and debian versions.
Update by default to kernel version 5.10.0-8. This means updating our debian source to bullseye from buster. 32-bit big-endian mips was discontinued in bullseye, so we revert to buster. For some images, due to constantly updating linux kernel versions, we need to use wildcards otherwise the build step breaks. Since there may be more than one relevant package, we've added a function to manually expand wildcards and select the best kernel version,
max_kernel_version
. Likewise, on 32-bit big-endian mips, we need to specify the ncurses version.Created temporary symlinks for autconf and autom4te due to the build expecting a hard-coded version (2.69) of these binaries. Fixed the patch for
debian/rules
due to changed line numbers. Updated the patch to use dwarf rather than sjlj exceptions to patch the template file (debian/gcc-mingw-w64-i686.install.in
) sincedebian/gcc-mingw-w64-i686.install
is overwritten during the build.For
x86_64-unknown-linux-gnu
, building the linux image fails unless we download specific versions oflibgcc-s1
andlibstdc++6
, since the pre-installed Ubuntu versions are higher than the Debian versions. We therefore extract the specific versions. However, while building the linux image, it prefers these system versions, so we must uninstall them or else while runningqemu-system
it cannot findlibgcc_s1.so.1
. Sinceapt
and basically every other package besidesdpkg
relies onlibgcc-s1
, we have to temporarily delete it and reinstall it.Closes #616.
Closes #557. We've already addressed the Qemu fixes, which will be applied automatically.
Closes #517.
Closes #417.
Replaces #481.