-
-
Notifications
You must be signed in to change notification settings - Fork 49
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
Use build profile in build hash #1425
Conversation
Rooted in that default build profiles were used first and later the actual profiles caused different folders to be used, in turn causing errors with the conflicting CRATE_ALIRE_PREFIX variables.
2607df4
to
3455674
Compare
Trace.Debug (" build hashing: " & Rel.Milestone.TTY_Image); | ||
|
||
-- Build profile | ||
Add ("profile", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the end we my not have "build_profile" in the hash since there is a separate object dir depending on the profile, at least in Alire generated gpr files.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alright, I'm going to merge it as is for now, as it is trivial to remove later on.
* Debug when folder deletion fails * Trivial safeguard in `Force_Delete` (alire-project#1422) * Refactor Alire.Shared into Alire.Toolchains (alire-project#1423) * Use build profile in build hash (alire-project#1425) * Compute hash using build profile * Fix problem with multiple hashes in one run Rooted in that default build profiles were used first and later the actual profiles caused different folders to be used, in turn causing errors with the conflicting CRATE_ALIRE_PREFIX variables. * Write hash inputs to build dirs * Testsuite additions and fixes * Self-review * Update pins and dependencies * MacOS; export PATH variables for includes and libraries. (alire-project#1420) * MacOS; export PATH variables for includes and libraries. Homebrew and MacPorts install include files and libraries in places where GCC won't look by default. GCC will use these environment variables if set: C_INCLUDE_PATH for C includes CPLUS_INCLUDE_PATH for C++ includes LIBRARY_PATH for libraries Both of the distribution managers place (symbolic links to) include files in ${top_level}/include and libraries in ${top_level}/lib. For Homebrew on Intel silicon, top_level is normally /usr/local. For Homebrew on Apple silicon, top_level is normally /opt/homebrew. For MacPorts, top_level is normally /opt/local * src/alire/alire-platforms-current.ads (Load_Environment): add note on macOS use. * src/alire/os_macos/alire-platforms-current__macos.adb (context): added Alire.Environment (was limited), Ada.Directories. (Brew_Access): new. (Homebrew_Present): if Brew_Access is not null. (Detected_Distribution): made into an expression function. (Containing_Containing_Dir): new, used in Distribution_Root. (Distribution_Root): reworked. (Load_Environment): if either distribution is present, arrange to export the environment variables to suit. * Update testsuite to match new macOS distribution detection. * testsuite/drivers/helpers.py (distribution): if on macOS, check whether the distribution management tool is on the PATH. We used to check for the environment variable HOMEBREW_PREFIX, but users don't have to arrange for this to be set in order to run Homebrew. First, if 'brew' is found, the distribution is Homebrew. If not and 'port' is found, the distribution is MacPorts. Otherwise, the distribution is unknown. * In the macOS CI workflow, run the test script once only. * .github/workflows/ci-macos.yml (Run test script): remove the second call, which set up HOMEBREW_PREFIX (now no longer used by alr), and remove the note '(without Homebrew)' in the first. * Add Windows alternatives * More comprehensive Windows switches * Don't raise on deletion failure --------- Co-authored-by: Simon Wright <[email protected]>
This would be the first realistic albeit incomplete step towards the shared builds. This adds the actual computation of the hash, but for the moment relying only on the build profile, so we can discuss any changes before adding the remaining factors.
To have some traceability, the inputs to the hash function are stored in
cache/builds/<crate>/alire/build_hash_inputs
and so it also can be used in tests to verify the hash computation.