Skip to content
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

rustc: generate config.toml from attrset #342627

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft

Conversation

kiike
Copy link
Member

@kiike kiike commented Sep 17, 2024

Description of changes

This PR changes the way rustc is configured during bootstrapping. At the moment, the configuration is done by passing configureFlags to the configure, a Python script that adapts an example TOML file. This script is considered by upstream as a shim, and although it can pretty much set any arbitrary key-value pair using the --set flags, this is error-prone as the script doesn't use a proper TOML parser. For instance, we regularly encountered errors during writing (due to configure) or reading (bootstrap) with a target architecture with a dot in it (thumbv8m.main-none-eabi).

According to upstream, the true configuration interface for rustc is the config.toml. As such, in this PR I propose having a configuration attrset that is serialized into a config.toml file.

At first sight, this change can be considered superfluous. However I think having a more direct interface to the config.toml file can be a better tool to avoid errors and ultimately to increase reproducibility, as the generated file is the true configuration source.

Things done

Right now I tested this with a cross-compilation for a nitrokey-3 firmware.

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 👍 reaction to pull requests you find important.

@wegank wegank added the 2.status: merge conflict This PR has merge conflicts with the target branch label Sep 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2.status: merge conflict This PR has merge conflicts with the target branch 6.topic: rust
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants