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

Fix extendModules anonymous module numbering #177080

Closed
wants to merge 2 commits into from

Conversation

roberth
Copy link
Member

@roberth roberth commented Jun 9, 2022

Description of changes

Found a bug while working on #176557. This is a follow-up on #168778. Wish I found the simplification right away.

Quoting the commit message:

evalModules / extendModules has enough information to perform the
numbering by itself, making extendModules safe and simplifying
submoduleWith.

The extensionOffset was supposed to be an implementation detail
of evalModules/extendModules all along.

Zooming out a bit, the number of + operations should match the
number of extendModules calls, which can be more than the number
of submoduleWith calls, which is less related to the problem being
solved by extensionOffset, as it can defer that responsibility
to extendModules.

Things done
  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
  • 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/)
  • 22.11 Release Notes (or backporting 22.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
    • (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes
  • Fits CONTRIBUTING.md.

evalModules / extendModules has enough information to perform the
numbering by itself, making extendModules safe and simplifying
submoduleWith.

The `extensionOffset` was supposed to be an implementation detail
of `evalModules`/`extendModules` all along.

Zooming out a bit, the number of `+` operations should match the
number of `extendModules` calls, which can be more than the number
of `submoduleWith` calls, which is less related to the problem being
solved by `extensionOffset`, as it can defer that responsibility
to `extendModules`.
@roberth
Copy link
Member Author

roberth commented Jun 10, 2022

This is insufficient. The keys still collide where they shouldn't, probably when more than one option value extends the modules in the same file. Adding loc seems like it might have helped, but it is not necessary. See #177157 for a simpler solution.

@roberth roberth closed this Jun 10, 2022
roberth added a commit to hercules-ci/nixpkgs that referenced this pull request Jun 13, 2022
Tried to make it work in NixOS#177080 but that still didn't solve all
cases in practice (wip NixOS#176557). Found a simpler solution:
don't number anonymous modules at all. Keys are assigned at a
later stage anyway. We don't have to reinvent that solution in
submoduleWith.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant