Toolkit: Fix readdirent toolchain errors for reusable chroots#10222
Merged
dmcilvaney merged 1 commit intomicrosoft:3.0-devfrom Aug 23, 2024
Merged
Conversation
christopherco
approved these changes
Aug 22, 2024
jslobodzian
approved these changes
Aug 22, 2024
PawelWMS
approved these changes
Aug 22, 2024
nicogbg
approved these changes
Aug 23, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge Checklist
All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)
*-staticsubpackages, etc.) have had theirReleasetag incremented../cgmanifest.json,./toolkit/scripts/toolchain/cgmanifest.json,.github/workflows/cgmanifest.json)./LICENSES-AND-NOTICES/SPECS/data/licenses.json,./LICENSES-AND-NOTICES/SPECS/LICENSES-MAP.md,./LICENSES-AND-NOTICES/SPECS/LICENSE-EXCEPTIONS.PHOTON)*.signatures.jsonfilessudo make go-tidy-allandsudo make go-test-coveragepassSummary
When using the Docker compatible reusable chroots (
CHROOT_DIR=...), a number of mount points need to be established external to the toolkit. One set is./build/toolchain_rpms{x86_64,aarch64,noarch}:chroot-1/toolchainrpms/{x86_64,aarch64,noarch}(and similar for other chroots).As part of #9899 and #9963 the
$(STATUS_FLAGS_DIR)/toolchain_auto_cleanup.flagwas added which removes all toolchain rpms from the repo folder./build/toolchain_rpms(to remove the chance of unexpected conflicts with signatures or validation state). It simply removed the outer./build/toolchain_rpmsdirectory, breaking the mountpoints in the docker environment.Oddly, as the build runs, it re-creates the toolchain folder, and the mount points contained in it reappear, but are broken.

The
pkgworkertool has a functionremoveLibArchivesFromSystem()which walks the entirety of the chroot's filesystem looking for*.lafiles and removing them. The broken mount points are sufficiently "real" thatfilepath.Walk()will detect them and try to recursively walk them, but then hitsreaddirent /toolchainrpms/aarch64: no such file or directory(this is not unique to aarch64, it occurs on all three mounts).We can resolve this by preserving the directory structure of the toolchain folder when running the sanitization step, so the mounts will remain intact.
Change Log
find ... -exec rm ...in$(STATUS_FLAGS_DIR)/toolchain_auto_cleanup.flaginstead of a simplermto avoid breaking docker chroot mounts.Does this affect the toolchain?
NO
Associated issues
Test Methodology