-
-
Notifications
You must be signed in to change notification settings - Fork 9.7k
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
Python virtualenv installs no longer reproducible #16012
Comments
Good catch, thanks @Bo98! |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
I believe this does. CC @branchvincent since I think you may have had a look at this. |
From quick glance, it looks like most official options for local directory would require splitting up wheel build and wheel install, e.g.
EDIT: Though I don't know if any quirks with build isolation given most other repository usage is done without isolation using their own packages. Alternative official option would require removing resources and letting
The hack would be to patching up |
Something like this would work for me 👍🏻 |
Trying on
Could be that it is using absolute (i.e. Also, not a regression, but when Python package builds shared library it stores path into binary. Our old Only way around this would be using a stable directory path. I'm guessing we don't do this for |
Do we do a
Will check and see where this happens |
Yes. Easiest way is probably purging RECORD entries if we want to get an s.gsub! %r{^(#{Regexp.escape("../../../bin/")}[^/,\n]*),sha256=.*,.*$}, "\\1,,", false
At least I was getting difference locally on back-to-back builds of I wanted to check if CI behaves the same but our bottle cache skips the 2nd build.
I get the same bottle when using @@ -31,9 +31,11 @@ class Cffi < Formula
end
def install
+ libexec.install buildpath.children
pythons.each do |python|
- system python, "-m", "pip", "install", *std_pip_args, "."
+ system python, "-m", "pip", "install", *std_pip_args, libexec
end
+ libexec.rmtree
end
test do |
Ok that It only works on GCC >= 8, LLVM Clang >= 10 and Apple Clang >= 12, though |
Oh right didn't realise there was two paths. What I said covers the |
The other path is just for checksum of first path. Diff should go away once EDIT: Or are you referring to another path embedded in |
I see what you mean. The |
Please try with #16860. |
I don't necessarily expect same checksums across different compiler/linker versions so we won't get an |
Works for Do we know if there are any potential scenarios this may need to be disabled? At least Debian has enabled Ref: https://git.dpkg.org/git/dpkg/dpkg.git/commit/?id=b60c243ba99b8483202a6f6a814476275204fdff
That's what I expect. The |
It should be at least safe enough to not worry about it until there's evidence that something breaks. I don't envision any particular issue |
Is there anything left here? Only thing left I can think of is doing version detection to enable |
brew doctor
outputVerification
brew doctor
output" above saysYour system is ready to brew.
and am still able to reproduce my issue.brew update
twice and am still able to reproduce my issue.brew install wget
. If they do, open an issue at https://github.com/Homebrew/homebrew-core/issues/new/choose instead.brew config
outputWhat were you trying to do (and why)?
Produce a reproducible bottle for a package containing a Python virtualenv.
What happened (include all command output)?
The package is no longer reproducible after a recent change:
What did you expect to happen?
References to the temp directory are not included.
Deleting or modifying this file is not sufficient on its own as it is hashed in
RECORD
. There's a few alternative solutions discussed in pypa/pip#11424.It's possible this issue also extends to regular non-venv
std_pip_args
installs but I have not tested this.Step-by-step reproduction instructions (by running
brew
commands)The text was updated successfully, but these errors were encountered: