azurelinux
azurelinux copied to clipboard
Early WIP of tooling improvements
This is a very early WIP Of some tooling improvements.
I am planning to continue developing these and will split them into separate PRs when they are more ready for review.
High level changes:
- Refactor Makefiles so we can selectively disable
$(shell ...)commands when we are running in--dry-runmode (aka when computing targets for tab-completion in the shell, etc.) by adding theshell_real_build_onlyfunction. - Move all toolchain RPMs to live excusively in
./build/toolchain_rpmsto fix the need forcopy-toolchain-rpmsextra command to resolve cycles, and fix the constant undesirable rebuilding of the worker chroot.- Update
specreaderto know about the toolchain manifest and accurately point package RPM paths to this folder. - Add a new local repo which targets this location (in addition to
.build/rpm_cacheand./out/RPMSfor use with therpmclonerpackage. - Prioritize pulling from this directory over other sources
- When
REBUILD_TOOLS=ycopy these packages into./out/RPMSas well to maintain current functionality.
- Update
- Fix the fetchers so they actually check if they have already pulled a package into the cache. Currently this flow only works for the Docker based reusable chroots (which look to
cacheRepoID = "upstream-cache-repo") while the normal build flow only enables the existing cache (fetcherRepoID = "fetcher-cloned-repo") when we enable"*".tdnftends to prefer contancting PMC instead of looking to the local repo (unclear why). This massively improves performance of the fetches when the cache is already hydrated from a previous build.