Skip to content

Make the toolchains directory location configurable #324

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

Merged
merged 8 commits into from
Apr 17, 2025

Conversation

cmcgee1024
Copy link
Member

@cmcgee1024 cmcgee1024 commented Apr 16, 2025

Using a new environment variable SWIFTLY_TOOLCHAINS_DIR that follows a similar pattern as SWIFTLY_HOME_DIR and SWIFTLY_BIN_DIR make it possible for the user to configure the toolchain location on init in the same way.

On macOS, this level of configuration requires a different approach to extracting the toolchain whenever the installation location is anything other than the default. Use the pkgutil utility of macOS to extract the toolchain in the location specified by the user. Installing the toolchains outside of the installer in a custom location means that Xcode may not be able to pick them up easily. Make a note of that in the init screen so that users are aware.

When using the init --no-modify-profile flag the init was skiping steps like installing the latest toolchain, and emitting the notes about updating the current shell environment. Separate this logic so that the user can have these steps performed with the flag.

This can help with #323 if you use pkgutil --extract and pkgutil --check-signature to extract swiftly, and then swiftly will install toolchains using a similar mechanism, provided that you customize the SWIFTLY_TOOLCHAINS_DIR to something other than the default.

Using a new environment variable SWIFTLY_TOOLCHAINS_DIR that
follows a similar pattern as SWIFTLY_HOME_DIR and SWIFTLY_BIN_DIR
make it possible for the user to configure the toolchain location
on init in the same way.

On macOS, this level of configuration requires a different approach
to extracting the toolchain whenever the installation location is
anything other than the default. Use the pkgutil utility of macOS
to extract the toolchain in the location specified by the user.
Installing the toolchains outside of the installer in a custom
location means that Xcode may not be able to pick them up easily.
Make a note of that in the init screen so that users are aware.

When using the init `--no-modify-profile` flag the init was skiping
steps like installing the latest toolchain, and emitting the notes
about updating the current shell environment. Separate this logic
so that the user can have these steps performed with the flag.
@cmcgee1024
Copy link
Member Author

@swift-ci test macOS

@cmcgee1024 cmcgee1024 marked this pull request as ready for review April 16, 2025 19:12
@cmcgee1024 cmcgee1024 added the release candidate This issue is a candidate for the next release label Apr 16, 2025
Copy link

@justice-adams-apple justice-adams-apple left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM do we want to add a test which sets the var?

@cmcgee1024 cmcgee1024 closed this Apr 17, 2025
@cmcgee1024 cmcgee1024 reopened this Apr 17, 2025
@cmcgee1024
Copy link
Member Author

@swift-ci test macOS

@cmcgee1024
Copy link
Member Author

LGTM do we want to add a test which sets the var?

I've added a new E2E test that installs swiftly in a custom location with a custom toolchains directory.

@cmcgee1024 cmcgee1024 merged commit 5583a8a into swiftlang:main Apr 17, 2025
23 checks passed
cmcgee1024 added a commit to cmcgee1024/swiftly that referenced this pull request Apr 18, 2025
Using a new environment variable SWIFTLY_TOOLCHAINS_DIR that
follows a similar pattern as SWIFTLY_HOME_DIR and SWIFTLY_BIN_DIR
make it possible for the user to configure the toolchain location
on init in the same way.

On macOS, this level of configuration requires a different approach
to extracting the toolchain whenever the installation location is
anything other than the default. Use the pkgutil utility of macOS
to extract the toolchain in the location specified by the user.
Installing the toolchains outside of the installer in a custom
location means that Xcode may not be able to pick them up easily.
Make a note of that in the init screen so that users are aware.

When using the init `--no-modify-profile` flag the init was skiping
steps like installing the latest toolchain, and emitting the notes
about updating the current shell environment. Separate this logic
so that the user can have these steps performed with the flag.

* Add an E2E test for testing swiftly installation in a custom location
cmcgee1024 added a commit that referenced this pull request Apr 18, 2025
Make the toolchains directory location configurable (#324)

Using a new environment variable SWIFTLY_TOOLCHAINS_DIR that
follows a similar pattern as SWIFTLY_HOME_DIR and SWIFTLY_BIN_DIR
make it possible for the user to configure the toolchain location
on init in the same way.

On macOS, this level of configuration requires a different approach
to extracting the toolchain whenever the installation location is
anything other than the default. Use the pkgutil utility of macOS
to extract the toolchain in the location specified by the user.
Installing the toolchains outside of the installer in a custom
location means that Xcode may not be able to pick them up easily.
Make a note of that in the init screen so that users are aware.

When using the init `--no-modify-profile` flag the init was skiping
steps like installing the latest toolchain, and emitting the notes
about updating the current shell environment. Separate this logic
so that the user can have these steps performed with the flag.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release candidate This issue is a candidate for the next release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants