From 32df4b399a8c646255c1514b60dc4e521484b19a Mon Sep 17 00:00:00 2001 From: Thomas Eizinger Date: Fri, 21 Nov 2025 08:28:05 +1100 Subject: [PATCH] chore: modularize `.tool-versions` (#10919) Not all tools are needed for all parts of the codebase. In order to avoid installing all tools, we create nested `.tool-versions` files that list the specific dev-tools needed for a certain part of the product. --- .github/actions/setup-android/action.yml | 4 ++++ .github/actions/setup-elixir/action.yml | 2 ++ .github/workflows/_kotlin.yml | 1 - .tool-versions | 13 ------------- docs/CONTRIBUTING.md | 10 ++++++---- elixir/.tool-versions | 5 +++++ kotlin/android/.tool-versions | 2 ++ rust/.tool-versions | 2 ++ 8 files changed, 21 insertions(+), 18 deletions(-) create mode 100644 elixir/.tool-versions create mode 100644 kotlin/android/.tool-versions create mode 100644 rust/.tool-versions diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index cbd3ee3c6..72f6d68eb 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -7,6 +7,10 @@ inputs: runs: using: "composite" steps: + - uses: marocchino/tool-versions-action@18a164fa2b0db1cc1edf7305fcb17ace36d1c306 # v1.2.0 + with: + path: kotlin/android/.tool-versions + - uses: ./.github/actions/setup-rust with: targets: armv7-linux-androideabi aarch64-linux-android x86_64-linux-android i686-linux-android diff --git a/.github/actions/setup-elixir/action.yml b/.github/actions/setup-elixir/action.yml index 2e5887d47..9973dfd88 100644 --- a/.github/actions/setup-elixir/action.yml +++ b/.github/actions/setup-elixir/action.yml @@ -17,6 +17,8 @@ runs: - name: Tool Versions id: versions uses: marocchino/tool-versions-action@18a164fa2b0db1cc1edf7305fcb17ace36d1c306 # v1.2.0 + with: + path: elixir/.tool-versions - uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4 id: setup-beam with: diff --git a/.github/workflows/_kotlin.yml b/.github/workflows/_kotlin.yml index 968720a59..7046807a5 100644 --- a/.github/workflows/_kotlin.yml +++ b/.github/workflows/_kotlin.yml @@ -67,7 +67,6 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: fetch-tags: true # Otherwise we cannot embed the correct version into the build. - - uses: marocchino/tool-versions-action@18a164fa2b0db1cc1edf7305fcb17ace36d1c306 # v1.2.0 - uses: ./.github/actions/setup-android with: sccache_azure_connection_string: ${{ secrets.SCCACHE_AZURE_CONNECTION_STRING }} diff --git a/.tool-versions b/.tool-versions index c902d9443..21b28acb0 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,19 +1,6 @@ -# These are used for the dev environment. -# This should match the versions used in the built product. -nodejs 22.20.0 -elixir 1.18.4-otp-27 -erlang 27.3.4.1 - # Used for static analysis python 3.11.14 shfmt 3.9.0 # Used to lint Bash scripts shellcheck 0.9.0 - -# GUI client -pnpm 10.18.3 - -# Android app -java openjdk-17 -ktlint 1.7.1 diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 975a43e9e..f553067e1 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -137,11 +137,13 @@ environment setup. If you have not read the Docker Setup instructions we recommend following the directions listed there to get your Docker environment setup properly. -### asdf-vm Setup +### Developer tools -We use [asdf-vm](https://asdf-vm.com) to manage language versions for Firezone. -Install the language runtimes defined in the [.tool-versions](../.tool-versions) -file by running `asdf install` from the project root. +The versions for most tools and SDKs required for working on Firezone are managed +via `.tool-versions` files in the respective directories, i.e. Elixir tools in +[elixir/.tool-versions](../elixir/.tool-versions) etc. + +You can use any `.tool-versions`-compatible version manager for installing them. - Note: For a fresh install of `asdf` you will need to install some [asdf-plugins](https://asdf-vm.com/manage/plugins.html). e.g. `asdf plugin add nodejs && asdf install nodejs` to set up the NodeJS plugin and package. diff --git a/elixir/.tool-versions b/elixir/.tool-versions new file mode 100644 index 000000000..32b30eb7c --- /dev/null +++ b/elixir/.tool-versions @@ -0,0 +1,5 @@ +# These are used for the dev environment. +# This should match the versions used in the built product. +nodejs 22.20.0 +elixir 1.18.4-otp-27 +erlang 27.3.4.1 diff --git a/kotlin/android/.tool-versions b/kotlin/android/.tool-versions new file mode 100644 index 000000000..f073e53af --- /dev/null +++ b/kotlin/android/.tool-versions @@ -0,0 +1,2 @@ +java openjdk-17 +ktlint 1.7.1 diff --git a/rust/.tool-versions b/rust/.tool-versions new file mode 100644 index 000000000..9238ce667 --- /dev/null +++ b/rust/.tool-versions @@ -0,0 +1,2 @@ +# GUI client +pnpm 10.18.3