Skip to content

allow fetchpatch everywhere, without restrictions#188587

Closed
ghost wants to merge 15 commits intostagingfrom
unknown repository
Closed

allow fetchpatch everywhere, without restrictions#188587
ghost wants to merge 15 commits intostagingfrom
unknown repository

Conversation

@ghost
Copy link

@ghost ghost commented Aug 28, 2022

Description of changes

This PR eliminates all restrictions on the use of fetchpatch, and makes a point of using it in the earliest part of the stdenv bootstrap (i.e. binutils) to demonstrate the functionality and serve as a regression test going forward.

If this merges it can be followed by a treewide to delete all of the (untested and untestable) "cannot use fetchpatch" comments.

See also NixOS/nix#7052; if you are running Nix >=2.12 you can revert the last two commits in this series.

Things done
  • Built (stdenv) on platform(s)
    • x86_64-linux
    • powerpc64le-linux
  • 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/)
  • Fits CONTRIBUTING.md.

@github-actions github-actions bot added 6.topic: fetch Fetchers (e.g. fetchgit, fetchsvn, ...) 6.topic: stdenv Standard environment labels Aug 28, 2022
@ghost

This comment was marked as resolved.

@ghost ghost closed this Aug 28, 2022
@ghost ghost reopened this Sep 16, 2022
@ofborg ofborg bot added the 2.status: merge conflict This PR has merge conflicts with the target branch label Sep 16, 2022
@ofborg ofborg bot removed the 2.status: merge conflict This PR has merge conflicts with the target branch label Sep 16, 2022
This commit assumes that NixOS/nix#7052 merges.  If it
has not yet merged and you did not cherry-pick it into your copy of Nix, revert
this commit before testing.
@ghost ghost marked this pull request as ready for review September 16, 2022 08:18
@ghost ghost mentioned this pull request Sep 16, 2022
Copy link
Member

@SuperSandro2000 SuperSandro2000 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 we must drop 30a099f until the minimal nix version contains that fix :/

In addition to that can you do a treewide change to remove the warnings that fetchpatch cannot be used?

Comment on lines +198 to +201
# the parts of patchutils used by fetchpatch do not
# require perl, so we could eliminate this by patching
# patchutils' build scripts...
perl = bootstrapTools;
Copy link
Member

Choose a reason for hiding this comment

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

I am not sure if bootstrapTools contains anything related to perl. If not then I think it would be cleaner to exclude it like makeWrapper.

Copy link
Author

Choose a reason for hiding this comment

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

The bootstrapTools contain a copy of perl. Mainly because autoconf/automake need it.

I would love to eliminate perl from the bootstrapTools. I tried a while back and while it is probably possible it is a very major undertaking. If it ever were eliminated we could (as my comment explains) apply a small patch to patchutils to drop all the parts of it that need perl (fetchpatch doesn't use those parts).

Adam Joseph and others added 5 commits September 16, 2022 17:47
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
@ghost
Copy link
Author

ghost commented Sep 16, 2022

I think we must drop 30a099f until the minimal nix version contains that fix :/

I have reverted 30a099f.

NixOS/nix#7052 just merged, so "minimal nix version" for 30a099f is now known to be "2.12".

Keep in mind that this PR still needs impure-derivations which is a Nix 2.8+ feature, so "minimal nix version" for the PR as a whole cannot go any lower than that -- unless there's some trick for adding a postFetch to <nix/fetchurl.nix> in older versions of Nix.

In addition to that can you do a treewide change to remove the warnings that fetchpatch cannot be used?

Yes, once this PR is deemed mergeable I would be happy to do that (and squash these commits too). But a treewide like that will accrue tons of merge conflicts if is is left sitting unmerged, so I'd rather wait until "the last minute" to push that commit into this PR.

@ghost ghost requested a review from SuperSandro2000 September 16, 2022 17:54
The method for signaling that `__impure` is desired went through a few minor
revisions between this PR being filed and NixOS/nix#7052
being merged.  This commit accounts for those changes so the "pre-Nix-2.12
emulation" uses the same interface that Nix 2.12 will use.

See also: NixOS/nix#7052 (comment)
@SuperSandro2000
Copy link
Member

@ofborg eval

@ghost
Copy link
Author

ghost commented Oct 3, 2022

@ofborg eval

@SuperSandro2000, please see the giant text at the very top of the PR.

If there were some way I could add <blink> tags to it, I would.

@ghost
Copy link
Author

ghost commented Oct 4, 2022

I guess I should draftify this until/if impure-derivations is stabilized.

That may be years in the future, when this patch no longer applies, but I'm cool with that. I just wanted to prove that this was possible.

@ghost ghost marked this pull request as draft October 4, 2022 08:12
@ghost ghost mentioned this pull request Jan 7, 2023
2 tasks
Minion3665 pushed a commit to Minion3665/nix that referenced this pull request Feb 23, 2023
This commit adds an optional `__impure` parameter to fetchurl.nix, which allows
the caller to use `libfetcher`'s fetcher in an impure derivation.  This allows
nixpkgs' patch-normalizing fetcher (fetchpatch) to be rewritten to use nix's
internal fetchurl, thereby eliminating the awkward "you can't use fetchpatch
here" banners scattered all over the place.

See also: NixOS/nixpkgs#188587
@ghost
Copy link
Author

ghost commented Nov 12, 2023

This needs ca-derivations, and it looks like we're still a very long way from being able to use those.

@ghost ghost closed this Nov 12, 2023
@ghost ghost deleted the pr/fetchpatch/boot branch January 23, 2024 06:47
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

6.topic: fetch Fetchers (e.g. fetchgit, fetchsvn, ...) 6.topic: stdenv Standard environment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant