-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Add nix configuration for the rust-gpu toolchain #3027
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
Conversation
|
I'd merge this with the shaders togehter, since we'll be jumping rev quite a few more times |
|
I suggest merging this separately and updating the rev in your pr, this should not have a influence on other devs. |
|
@Firestar99 I will merge this right before #2985 when we actually need it. |
b9dde9a to
75bbe25
Compare
|
Converting to draft to prevent merging, for now, as I'm may have to update the rust-gpu rev quite a bit. |
.nix/flake.nix
Outdated
| execWithRustGPUEnvironment = pkgs.writeShellScriptBin "rust-gpu" '' | ||
| #!${pkgs.lib.getExe pkgs.bash} | ||
| filtered_args=() | ||
| for arg in "$@"; do | ||
| case "$arg" in | ||
| +nightly|+nightly-*) ;; | ||
| *) filtered_args+=("$arg") ;; | ||
| esac | ||
| done | ||
| export PATH="${pkgs.lib.makeBinPath [ rustGPUToolchainPkg pkgs.spirv-tools ]}:$PATH" | ||
| export RUSTC_CODEGEN_SPIRV_PATH="${rustc_codegen_spirv}/lib/librustc_codegen_spirv.so" | ||
| exec ${"\${filtered_args[@]}"} | ||
| ''; |
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.
It's so much easier to use RUSTUP_TOOLCHAIN for this, I was just asking @Firestar99 why the + syntax when the env var also works.
All you need in the script, if you want to have dynamic dispatch, is:
''
#!${pkgs.lib.getExe pkgs.bash}
exec "${toolchains}/${"\$"}{RUSTUP_TOOLCHAIN:-stable}/bin/$(basename "$0")" "$@"
''(I don't like that ${"\$"} but am not sure I can make it much nicer)
I suppose something different than what you are doing today is you would want to define toolchains as one of those sym trees with one directory per supported toolchain - maybe the oxalica overlay rust-bin has something along those lines? (it's been a while since I looked at it anyway)
Although, if cargo-gpu/spirv-builder switched to setting RUSTUP_TOOLCHAIN, the fact that this script only has to filter out the + syntax, makes me think the script can just go away? (since I guess there is no dynamic dispatch right now, just a pesky first argument)
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.
We don't want devs mistaking the pinned rust-gpu rust nightly toolchain for a normal nightly toolchain. We want a way to ensure that it is only ever usable to compile rust-gpu code. A wrapper script is the best way to ensure that in my opinion.
But getting rid of the filter logic would be great. Thanks for the comment.
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.
I just want to note that on master, we kill the RUSTUP_TOOLCHAIN env var. I'm unsure if my branch has these changes already or not, so we could see behaviour differences between now and me rebasing the branch.
Yes we do need a better solution for this, but since this has to work within the next week, it'll have to wait.
75bbe25 to
17e8fd1
Compare
ace6707 to
9735bfe
Compare
9735bfe to
ad83e7f
Compare
ad83e7f to
9735bfe
Compare
66f9e4c to
6c9ee70
Compare
17e8fd1 to
c2f4f47
Compare
6c9ee70 to
b68c3dc
Compare
c2f4f47 to
0fd1e87
Compare
0fd1e87 to
63d832e
Compare
63d832e to
0bdc23d
Compare
Requires #3096 and #3103
And we would follow a non-main rust-gpu rev currently!