Skip to content

Problem occurs during the compilation of AOSP 9.0.0-r76 within Ubuntu 26.04 Docker container resulting in comm: file 1 is not in sorted order #12972

Description

@robertkirkman

These commands fail for me,

Tip

these commands download and build bionic libc and 15 other packages from the userspace of AOSP. The typical time it takes my computer to run the script from start to the point of the uutils-related error occurring is 45 minutes

reproduction script
git clone https://github.com/termux/termux-packages.git
cd termux-packages
git checkout 1e211ee1271a25ee0561e4f01570d7b164ed20a7
git apply -v << 'EOF'
diff --git a/packages/aosp-libs/build.sh b/packages/aosp-libs/build.sh
index 2b985a337b..f8aa973e8d 100644
--- a/packages/aosp-libs/build.sh
+++ b/packages/aosp-libs/build.sh
@@ -43,15 +43,24 @@ termux_step_get_source() {
 		export LD_LIBRARY_PATH="${TMP_CHECKOUT}/prefix/lib/x86_64-linux-gnu:${TMP_CHECKOUT}/prefix/usr/lib/x86_64-linux-gnu"
 		export PATH="${TMP_CHECKOUT}/prefix/usr/bin:${PATH//$HOME\/.cargo\/bin/}"
 
-		local -a ubuntu_packages=(
-			"libncurses5"
+		# libtinfo5 for running prebuilts/clang/host/linux-x86/clang-4691093/bin/clang++.real
+		# and libncurses5 for running prebuilts/clang-tools/linux-x86/bin/header-abi-dumper
+		local -a ubuntu_jammy_packages=(
 			"libtinfo5"
+			"libncurses5"
+		)
+
+		# for running repo (the source control client for AOSP's source control system)
+		local -a ubuntu_modern_packages=(
 			"openssh-client"
 		)
 
 		DESTINATION="${TMP_CHECKOUT}/prefix" \
 		UBUNTU_RELEASE=jammy \
-		termux_download_ubuntu_packages "${ubuntu_packages[@]}"
+		termux_download_ubuntu_packages "${ubuntu_jammy_packages[@]}"
+
+		DESTINATION="${TMP_CHECKOUT}/prefix" \
+		termux_download_ubuntu_packages "${ubuntu_modern_packages[@]}"
 
 		termux_download https://storage.googleapis.com/git-repo-downloads/repo "${TERMUX_PKG_CACHEDIR}/repo" SKIP_CHECKSUM
 		chmod +x "${TERMUX_PKG_CACHEDIR}/repo"
@@ -93,8 +102,10 @@ termux_step_host_build() {
 		b62c0e7937551d0cc02b8fd5cb0f544f9405bafc9a54d3808ed4594812edef43
 	tar xf "${TERMUX_PKG_CACHEDIR}/python2.tar.xz" --strip-components=1 -C "${PYTHON2_WORKDIR}"
 	pushd "${PYTHON2_WORKDIR}"
+	export CFLAGS="-std=gnu11"
 	./configure --prefix="${PYTHON2_INSTALLDIR}"
 	make install
+	unset CFLAGS
 	popd
 	export PATH="${PYTHON2_INSTALLDIR}/bin:${PATH}"
 	python2 -m ensurepip
diff --git a/scripts/Dockerfile b/scripts/Dockerfile
index d85e2c7a62..592609c87a 100644
--- a/scripts/Dockerfile
+++ b/scripts/Dockerfile
@@ -4,7 +4,7 @@
 #	docker push ghcr.io/termux/package-builder
 # This is done after changing this file or any of the
 # scripts/setup-{ubuntu,android-sdk,cgct}.sh setup scripts.
-FROM ubuntu:24.04
+FROM ubuntu:26.04
 
 # Fix locale to avoid warnings:
 ENV LANG=en_US.UTF-8
diff --git a/scripts/build/termux_download_ubuntu_packages.sh b/scripts/build/termux_download_ubuntu_packages.sh
index e89b6304a5..065fb30ee7 100755
--- a/scripts/build/termux_download_ubuntu_packages.sh
+++ b/scripts/build/termux_download_ubuntu_packages.sh
@@ -26,7 +26,7 @@ termux_download_ubuntu_packages() {
 	: "${DESTINATION:="$TERMUX_PKG_HOSTBUILD_DIR/ubuntu_packages"}"
 	: "${ARCHITECTURE:=amd64}"
 	: "${MIRROR_URL:="https://archive.ubuntu.com/ubuntu"}"
-	: "${UBUNTU_RELEASE:=noble}" # Default to latest Ubuntu LTS, currently 24.04 Noble Numbat
+	: "${UBUNTU_RELEASE:=resolute}" # Default to latest Ubuntu LTS, currently 26.04 Resolute Raccoon
 
 	mkdir -p "$DESTINATION"
 
diff --git a/scripts/run-docker.sh b/scripts/run-docker.sh
index 9a786716c5..7247eb0c34 100755
--- a/scripts/run-docker.sh
+++ b/scripts/run-docker.sh
@@ -2,8 +2,8 @@
 set -euo pipefail
 
 TERMUX_SCRIPTDIR=$(cd "$(realpath "$(dirname "$0")")"; cd ..; pwd)
-: ${TERMUX_BUILDER_IMAGE_NAME:=ghcr.io/termux/package-builder}
-: ${CONTAINER_NAME:=termux-package-builder}
+: ${TERMUX_BUILDER_IMAGE_NAME:=termux-package-builder-26.04}
+: ${CONTAINER_NAME:=termux-package-builder-26.04}
 : ${TERMUX_DOCKER_RUN_EXTRA_ARGS:=}
 : ${TERMUX_DOCKER_EXEC_EXTRA_ARGS:=}
 BUILDSCRIPT_NAME=build-package.sh
diff --git a/scripts/setup-ubuntu.sh b/scripts/setup-ubuntu.sh
index e8348270c1..f01c68b9f8 100755
--- a/scripts/setup-ubuntu.sh
+++ b/scripts/setup-ubuntu.sh
@@ -72,7 +72,7 @@ PACKAGES+=" xmltoman"
 PACKAGES+=" python3-pip"
 PACKAGES+=" python3-setuptools"
 PACKAGES+=" python-wheel-common"
-PACKAGES+=" python3.12-venv"
+PACKAGES+=" python3.14-venv"
 
 # Needed by package bc.
 PACKAGES+=" ed"
@@ -220,7 +220,7 @@ PACKAGES+=" gtk-doc-tools"
 PACKAGES+=" happy"
 PACKAGES+=" itstool"
 PACKAGES+=" libdbus-glib-1-dev-bin"
-PACKAGES+=" libgdk-pixbuf2.0-dev"
+PACKAGES+=" libgdk-pixbuf-xlib-2.0-dev"
 PACKAGES+=" python3-html5lib"
 PACKAGES+=" python3-xcbgen"
 PACKAGES+=" sassc"
EOF
docker build -t termux-package-builder-26.04 scripts
scripts/run-docker.sh ./build-package.sh -I -f aosp-libs
error message
[ 94% 8102/8584] //external/libunwind:libunwind clang src/mi/dyn-register.c
[ 94% 8103/8584] //external/libunwind:libunwind clang src/mi/backtrace.c
[ 94% 8104/8584] //external/libunwind:libunwind clang src/mi/Lget_proc_info_by_ip.c
[ 94% 8105/8584] target Strip (mini debug info): ld-android (out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so)
FAILED: out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so 
/bin/bash -c "(rm -f out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.dynsyms out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.funcsyms out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.keep_symbols out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.debug out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo.xz ) && (if prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-strip --strip-all -R .comment out/target/product/generic_arm64/symbols/system/lib64/ld-android.so -o out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so; then prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-objcopy --only-keep-debug out/target/product/generic_arm64/symbols/system/lib64/ld-android.so out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.debug && prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-nm -D out/target/product/generic_arm64/symbols/system/lib64/ld-android.so --format=posix --defined-only | awk '{ print \$1 }' | sort >out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.dynsyms && prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-nm out/target/product/generic_arm64/symbols/system/lib64/ld-android.so --format=posix --defined-only | awk '{ if (\$2 == \"T\" || \$2 == \"t\" || \$2 == \"D\") print \$1 }' | sort >out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.funcsyms && comm -13 out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.dynsyms out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.funcsyms >out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.keep_symbols && echo >>out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.keep_symbols && prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-objcopy --rename-section .debug_frame=saved_debug_frame out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.debug out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo && prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols=out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.keep_symbols out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo && prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-objcopy --rename-section saved_debug_frame=.debug_frame out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo && rm -f out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo.xz && xz out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo && prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-objcopy --add-section .gnu_debugdata=out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo.xz out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so; else cp -f out/target/product/generic_arm64/symbols/system/lib64/ld-android.so out/target/product/generic_arm64/obj/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so; fi )"
comm: file 1 is not in sorted order
comm: file 2 is not in sorted order
comm: input is not in sorted order
[ 94% 8106/8584] target Strip (mini debug info): ld-android_32 (out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so)
FAILED: out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so 
/bin/bash -c "(rm -f out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.dynsyms out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.funcsyms out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.keep_symbols out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.debug out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo.xz ) && (if prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-strip --strip-all -R .comment out/target/product/generic_arm64/symbols/system/lib/ld-android.so -o out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so; then prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objcopy --only-keep-debug out/target/product/generic_arm64/symbols/system/lib/ld-android.so out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.debug && prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-nm -D out/target/product/generic_arm64/symbols/system/lib/ld-android.so --format=posix --defined-only | awk '{ print \$1 }' | sort >out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.dynsyms && prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-nm out/target/product/generic_arm64/symbols/system/lib/ld-android.so --format=posix --defined-only | awk '{ if (\$2 == \"T\" || \$2 == \"t\" || \$2 == \"D\") print \$1 }' | sort >out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.funcsyms && comm -13 out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.dynsyms out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.funcsyms >out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.keep_symbols && echo >>out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.keep_symbols && prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objcopy --rename-section .debug_frame=saved_debug_frame out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.debug out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo && prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols=out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.keep_symbols out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo && prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objcopy --rename-section saved_debug_frame=.debug_frame out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo && rm -f out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo.xz && xz out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo && prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objcopy --add-section .gnu_debugdata=out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so.mini_debuginfo.xz out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so; else cp -f out/target/product/generic_arm64/symbols/system/lib/ld-android.so out/target/product/generic_arm64/obj_arm/SHARED_LIBRARIES/ld-android_intermediates/ld-android.so; fi )"
comm: file 1 is not in sorted order
comm: file 2 is not in sorted order
comm: input is not in sorted order
[ 94% 8107/8584] //external/libunwind:libunwind clang src/mi/Lget_reg.c
[ 94% 8108/8584] //external/lzma/C:liblzma clang XzEnc.c [arm]
[ 94% 8109/8584] //external/libunwind:libunwind clang src/mi/Lput_dynamic_unwind_info.c
[ 94% 8110/8584] target Prebuilt: liblzma (out/target/product/generic_arm64/obj/SHARED_LIBRARIES/liblzma_intermediates/LINKED/liblzma.so)
[ 94% 8111/8584] //bionic/libdl:libdl header-abi-linker libdl.so.lsdump
[ 94% 8112/8584] //bionic/libdl:libdl generate toc libdl.so
[ 94% 8113/8584] //bionic/libdl:libdl link libdl.so [arm]
[ 94% 8114/8584] //external/lzma/C:liblzma clang XzIn.c [arm]
[ 94% 8115/8584] //external/libunwind:libunwind clang src/mi/Lset_reg.c
[ 94% 8116/8584] //external/libunwind:libunwind clang src/mi/Gset_reg.c
[ 94% 8117/8584] //external/libunwind:libunwind clang src/mi/dyn-cancel.c
[ 94% 8118/8584] //external/libunwind:libunwind clang src/mi/Gget_reg.c
[ 94% 8119/8584] //external/lzma/C:liblzma clang Sha256.c [arm]
[ 94% 8120/8584] //external/libunwind:libunwind clang src/mi/Lset_fpreg.c
[ 94% 8121/8584] //external/lzma/C:liblzma clang XzDec.c [arm]
[ 94% 8122/8584] //external/libunwind:libunwind clang src/mi/Gget_fpreg.c
[ 94% 8123/8584] //external/libunwind:libunwind clang src/mi/Gget_proc_name.c
[ 94% 8124/8584] //external/lzma/C:liblzma generate toc liblzma.so
[ 94% 8125/8584] //external/lzma/C:liblzma clang LzmaDec.c [arm]
[ 94% 8126/8584] //external/libunwind:libunwind clang src/mi/Lget_fpreg.c
[ 94% 8127/8584] //external/libunwind:libunwind clang src/mi/Gget_accessors.c
[ 94% 8128/8584] //external/libunwind:libunwind clang src/mi/Gput_dynamic_unwind_info.c
[ 94% 8129/8584] //external/libunwind:libunwind clang src/mi/Gdyn-extract.c
[ 94% 8130/8584] //external/libunwind:libunwind clang src/mi/Gset_caching_policy.c
[ 94% 8131/8584] //external/libunwind:libunwind clang src/mi/Gfind_dynamic_proc_info.c
[ 94% 8132/8584] //external/libunwind:libunwind clang src/mi/Gset_fpreg.c
[ 94% 8133/8584] //external/libunwind:libunwind clang src/mi/Lset_caching_policy.c
[ 94% 8134/8584] //external/libunwind:libunwind clang src/mi/Gdestroy_addr_space.c
[ 94% 8135/8584] //external/libunwind:libunwind clang src/mi/Gget_proc_info_by_ip.c
[ 94% 8136/8584] //external/lzma/C:liblzma clang Ppmd7.c [arm]
[ 94% 8137/8584] //external/libunwind:libunwind clang src/mi/Gdyn-remote.c
[ 94% 8138/8584] //external/lzma/C:liblzma clang LzmaEnc.c [arm]
ninja: build stopped: subcommand failed.
23:52:04 ninja failed with: exit status 1

but if I use this:

switch to gnu coreutils quick and dirty in our environment
scripts/run-docker.sh sudo apt-get update
scripts/run-docker.sh sudo apt-get remove build-essential coreutils-from-uutils gobject-introspection-bin gobject-introspection --allow-remove-essential
scripts/run-docker.sh ./build-package.sh -I -f aosp-libs

then it works.

I understand that this is an example that uses our large build system, not an MRE. If you would like me to try to set up a more minimal example, please let me know what the farthest I should try to go on my own is, for example, if I build AOSP 9.0.0-r76 cleanly without patches or unnecessary dependencies in a single Dockerfile with FROM ubuntu:26.04 would that be far enough, or do I need to try to copy out and isolate the specific snippets of AOSP source code that reproduce the error when run with uutils coreutils?

Reproducible with uutils coreutils 0.8.0-0ubuntu3: always
Reproducible with GNU coreutils: never
uutils coreutils version: 0.8.0-0ubuntu3
GNU coreutils version compared today: 9.7-3ubuntu2 (all GNU coreutils versions from at least the last 4 years work)

I don't really understand what the best way to test uutils coreutils main branch instead of stable release in Ubuntu 26.04 would be, so if that is necessary please let me know what I should do.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions