Skip to content

haskell-modules/generic-builder.nix: use mktemp instead of TMPDIR#171685

Merged
maralorn merged 1 commit intoNixOS:haskell-updatesfrom
matthewbauer:use-mktemp-in-haskell-generic-builder
May 21, 2022
Merged

haskell-modules/generic-builder.nix: use mktemp instead of TMPDIR#171685
maralorn merged 1 commit intoNixOS:haskell-updatesfrom
matthewbauer:use-mktemp-in-haskell-generic-builder

Conversation

@matthewbauer
Copy link
Member

Using $TMPDIR here is problematic because it is not always cleared at
the end of each build, for instance when using "nix-shell --run
genericBuild". This can cause confusing errors when a nix-shell build
is trying to pull in dependencies from a previous build since it tries
to use older package conf files.

To fix, we can just use mktemp which will guarantee us a clean
directory for each build. Should have no effect in nix-build, but will
fix a common issue with using generic-builder in nix-shell.

Description of changes
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.05 Release Notes (or backporting 21.11 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.

Using $TMPDIR here is problematic because it is not always cleared at
the end of each build, for instance when using "nix-shell --run
genericBuild". This can cause confusing errors when a nix-shell build
is trying to pull in dependencies from a previous build since it tries
to use older package conf files.

To fix, we can just use mktemp which will guarantee us a clean
directory for each build. Should have no effect in nix-build, but will
fix a common issue with using generic-builder in nix-shell.
@matthewbauer matthewbauer requested a review from Ericson2314 May 5, 2022 17:03
@github-actions github-actions bot added the 6.topic: haskell General-purpose, statically typed, purely functional programming language label May 5, 2022
@ofborg ofborg bot added 10.rebuild-darwin: 501+ This PR causes many rebuilds on Darwin and should normally target the staging branches. 10.rebuild-darwin: 5001+ This PR causes many rebuilds on Darwin and must target the staging branches. 10.rebuild-linux: 501+ This PR causes many rebuilds on Linux and should normally target the staging branches. 10.rebuild-linux: 5001+ This PR causes many rebuilds on Linux and must target the staging branches. labels May 5, 2022
Copy link
Contributor

@9999years 9999years left a comment

Choose a reason for hiding this comment

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

LGTM

@sternenseemann
Copy link
Member

We should then maybe also deliberate cleaning up the temporary directory if nix-shell is to be an explicit use case.

@Artturin Artturin added the 12.approvals: 1 This PR was reviewed and approved by one person. label May 9, 2022
@Artturin
Copy link
Member

Artturin commented May 9, 2022

Needs to target staging
Check contributing.md for how to do that

@sternenseemann
Copy link
Member

sternenseemann commented May 10, 2022 via email

Copy link
Member

@sternenseemann sternenseemann left a comment

Choose a reason for hiding this comment

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

I think this is okay, it pollutes the temporary directory in case of interactive usage, but this was also the case before this change.

${optionalString (isLibrary && hyperlinkSource) "export PATH=${hscolour}/bin:$PATH"}

setupPackageConfDir="$TMPDIR/setup-package.conf.d"
builddir="$(mktemp -d)"
Copy link
Member

Choose a reason for hiding this comment

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

Can we set a meaningful template here (e.g. mentioning nix, pname,..?)

@sternenseemann sternenseemann changed the base branch from master to haskell-updates May 10, 2022 11:07
@Artturin Artturin added 12.approvals: 2 This PR was reviewed and approved by two persons. 12.approved-by: package-maintainer This PR was reviewed and approved by a maintainer listed in any of the changed packages. and removed 12.approvals: 1 This PR was reviewed and approved by one person. labels May 11, 2022
@maralorn maralorn merged commit 10dcd7d into NixOS:haskell-updates May 21, 2022
@maralorn
Copy link
Member

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

6.topic: haskell General-purpose, statically typed, purely functional programming language 10.rebuild-darwin: 501+ This PR causes many rebuilds on Darwin and should normally target the staging branches. 10.rebuild-darwin: 5001+ This PR causes many rebuilds on Darwin and must target the staging branches. 10.rebuild-linux: 501+ This PR causes many rebuilds on Linux and should normally target the staging branches. 10.rebuild-linux: 5001+ This PR causes many rebuilds on Linux and must target the staging branches. 12.approvals: 2 This PR was reviewed and approved by two persons. 12.approved-by: package-maintainer This PR was reviewed and approved by a maintainer listed in any of the changed packages.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants