Skip to content

buildRebar3: enable deterministic builds#434713

Merged
adamcstephens merged 2 commits intoNixOS:masterfrom
kivikakk:push-wxktrznwnptp
Aug 18, 2025
Merged

buildRebar3: enable deterministic builds#434713
adamcstephens merged 2 commits intoNixOS:masterfrom
kivikakk:push-wxktrznwnptp

Conversation

@kivikakk
Copy link
Member

The motivation is similar to (and implementation taken partly from) #271288 --- some rebar3-compiled .beam files contain debug information exposing references to .hrl files from the Erlang distribution it was compiled with. This results in unnecessary store references.

See also #423588 change to Elixir's generic-builder.nix where the same option is used when building to avoid the same issue.

I'll drop a nixpkgs-review output in a moment — AFAICT there are some current failures in master.

Things done

  • Built a package that has a rebar3 dependency, and checked the result was free of references to Erlang, on platform:
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • Tested, as applicable:
  • Ran nixpkgs-review on this PR. See nixpkgs-review usage.
  • Tested basic functionality of all binary files, usually in ./result/bin/.
  • Nixpkgs Release Notes
    • Package update: when the change is major or breaking.
  • NixOS Release Notes
    • Module addition: when adding a new NixOS module.
    • Module update: when the change is significant.
  • Fits CONTRIBUTING.md, pkgs/README.md, maintainers/README.md and other READMEs.

Add a 👍 reaction to pull requests you find important.

debugInfoFlag is no longer referenced by anything, as of
aef59d8.
The motivation is similar to (and implementation taken partly from)
NixOS#271288 --- some rebar3-compiled `.beam` files contain debug information
exposing references to `.hrl` files from the Erlang distribution it
was compiled with.  This results in unnecessary store references.

See also NixOS#423588's change to Elixir's `generic-builder.nix` where the
same option is used when building to avoid the same issue.
@nixpkgs-ci nixpkgs-ci bot added 10.rebuild-linux: 11-100 This PR causes between 11 and 100 packages to rebuild on Linux. 10.rebuild-darwin: 11-100 This PR causes between 11 and 100 packages to rebuild on Darwin. 6.topic: erlang General-purpose, concurrent, functional high-level programming language labels Aug 18, 2025
@kivikakk
Copy link
Member Author

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 434713
Commit: bccaba9e26dd936fab88777155f57aee0d1ee41c


aarch64-darwin

❌ 10 packages failed to build:
  • beam28Packages.elvis-erlang
  • beam28Packages.erlang-ls
  • beam28Packages.pc
  • beam28Packages.rebar3-nix
  • beam28Packages.rebar3-proper
  • beamMinimal28Packages.elvis-erlang
  • beamMinimal28Packages.erlang-ls
  • beamMinimal28Packages.pc
  • beamMinimal28Packages.rebar3-nix
  • beamMinimal28Packages.rebar3-proper
✅ 28 packages built:
  • akkoma
  • beam26Packages.elvis-erlang
  • beam26Packages.erlang-ls
  • beam26Packages.lfe (beam26Packages.lfe_2_1)
  • beam26Packages.pc
  • beam26Packages.rebar3-nix
  • beam26Packages.rebar3-proper
  • elvis-erlang (beam27Packages.elvis-erlang)
  • erlang-ls (beam27Packages.erlang-ls)
  • lfe (beam27Packages.lfe, lfe_2_1)
  • beam27Packages.pc
  • beam27Packages.rebar3-nix
  • beam27Packages.rebar3-proper
  • beamMinimal26Packages.elvis-erlang
  • beamMinimal26Packages.erlang-ls
  • beamMinimal26Packages.lfe (beamMinimal26Packages.lfe_2_1)
  • beamMinimal26Packages.pc
  • beamMinimal26Packages.rebar3-nix
  • beamMinimal26Packages.rebar3-proper
  • beamMinimal27Packages.elvis-erlang
  • beamMinimal27Packages.erlang-ls
  • beamMinimal27Packages.lfe (beamMinimal27Packages.lfe_2_1)
  • beamMinimal27Packages.pc
  • beamMinimal27Packages.rebar3-nix
  • beamMinimal27Packages.rebar3-proper
  • mobilizon
  • pinchflat
  • pleroma

@nix-owners nix-owners bot requested review from dlesl and minijackson August 18, 2025 11:56
@adamcstephens adamcstephens changed the title buildRebar3: deterministic builds, please buildRebar3: deterministic builds Aug 18, 2025
@adamcstephens adamcstephens changed the title buildRebar3: deterministic builds buildRebar3: enable deterministic builds Aug 18, 2025
Copy link
Contributor

@adamcstephens adamcstephens left a comment

Choose a reason for hiding this comment

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

The OTP 28 packages are broken on main, so that can be a different fix.

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 434713


x86_64-linux

❌ 10 packages failed to build:
  • beam28Packages.elvis-erlang
  • beam28Packages.erlang-ls
  • beam28Packages.pc
  • beam28Packages.rebar3-nix
  • beam28Packages.rebar3-proper
  • beamMinimal28Packages.elvis-erlang
  • beamMinimal28Packages.erlang-ls
  • beamMinimal28Packages.pc
  • beamMinimal28Packages.rebar3-nix
  • beamMinimal28Packages.rebar3-proper
✅ 30 packages built:
  • akkoma
  • beam26Packages.elvis-erlang
  • beam26Packages.erlang-ls
  • beam26Packages.lfe
  • beam26Packages.pc
  • beam26Packages.rebar3-nix
  • beam26Packages.rebar3-proper
  • beam27Packages.elvis-erlang
  • beam27Packages.erlang-ls
  • beam27Packages.lfe
  • beam27Packages.pc
  • beam27Packages.rebar3-nix
  • beam27Packages.rebar3-proper
  • beamMinimal26Packages.elvis-erlang
  • beamMinimal26Packages.erlang-ls
  • beamMinimal26Packages.lfe
  • beamMinimal26Packages.pc
  • beamMinimal26Packages.rebar3-nix
  • beamMinimal26Packages.rebar3-proper
  • beamMinimal27Packages.elvis-erlang
  • beamMinimal27Packages.erlang-ls
  • beamMinimal27Packages.lfe
  • beamMinimal27Packages.pc
  • beamMinimal27Packages.rebar3-nix
  • beamMinimal27Packages.rebar3-proper
  • ejabberd
  • mobilizon
  • nixpkgs-manual
  • pinchflat
  • pleroma

aarch64-linux

❌ 13 packages failed to build:
  • beam27Packages.erlang-ls
  • beam28Packages.elvis-erlang
  • beam28Packages.erlang-ls
  • beam28Packages.pc
  • beam28Packages.rebar3-nix
  • beam28Packages.rebar3-proper
  • beamMinimal26Packages.erlang-ls
  • beamMinimal27Packages.erlang-ls
  • beamMinimal28Packages.elvis-erlang
  • beamMinimal28Packages.erlang-ls
  • beamMinimal28Packages.pc
  • beamMinimal28Packages.rebar3-nix
  • beamMinimal28Packages.rebar3-proper
✅ 27 packages built:
  • akkoma
  • beam26Packages.elvis-erlang
  • beam26Packages.erlang-ls
  • beam26Packages.lfe
  • beam26Packages.pc
  • beam26Packages.rebar3-nix
  • beam26Packages.rebar3-proper
  • beam27Packages.elvis-erlang
  • beam27Packages.lfe
  • beam27Packages.pc
  • beam27Packages.rebar3-nix
  • beam27Packages.rebar3-proper
  • beamMinimal26Packages.elvis-erlang
  • beamMinimal26Packages.lfe
  • beamMinimal26Packages.pc
  • beamMinimal26Packages.rebar3-nix
  • beamMinimal26Packages.rebar3-proper
  • beamMinimal27Packages.elvis-erlang
  • beamMinimal27Packages.lfe
  • beamMinimal27Packages.pc
  • beamMinimal27Packages.rebar3-nix
  • beamMinimal27Packages.rebar3-proper
  • ejabberd
  • mobilizon
  • nixpkgs-manual
  • pinchflat
  • pleroma

@adamcstephens adamcstephens merged commit e4a689c into NixOS:master Aug 18, 2025
30 of 33 checks passed
@kivikakk
Copy link
Member Author

Thanks! 😊

@kivikakk kivikakk deleted the push-wxktrznwnptp branch August 19, 2025 00:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

6.topic: erlang General-purpose, concurrent, functional high-level programming language 10.rebuild-darwin: 11-100 This PR causes between 11 and 100 packages to rebuild on Darwin. 10.rebuild-linux: 11-100 This PR causes between 11 and 100 packages to rebuild on Linux.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants