-
Notifications
You must be signed in to change notification settings - Fork 16
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
Seems like synth is not seeing a package that it built, and therefore deletes packages that need it due to "failed dependency check" #212
Comments
it's a bug in the port. the port author has to fix it. |
the problem is subversion port lists 8 dependencies but for some reason only 7 of those are registered in the package. So subversion will fail the dep check every single time. |
often what happens is the makefile lists a file that's actually present on the system so it doesn't get built. |
here's the probable bug, gettext like you mention:
so gettext is only used for NLS The author needs to set "NLS_USES_ON=gettext" or whatever the syntax is for adding gettext ONLY IF NLS option is set on. That's the bug. |
OK, great, thanks - I'll try to get in touch with the port author to let them know. |
let me look a few minutes more to be sure. |
OK, will do. Thanks again. |
can you show me the options set for the subversion package you built? |
and do you have NLS turned off globally somehow that you know of? |
I'm not so sure it's gettext anymore because I think NLS_USES only adds gettext if NLS option is set on. |
I'm trying to figure out how to show the options that are set, but I saw your question about NLS, and I know the answer for that: Yes, I have it turned off in LiveSystem-make.conf. Here's the whole file:
Do you know of any reason why I shouldn't just turn it back on to try to get things working (as a short-term fix)? |
I think this is what you asked for?
|
yes, that's what I needed. |
FYI the freshports showing gettext is misleading. You can see the freshports version was built with NLS=ON so that's why it includes gettext. |
I'll try. But to be clear, you want to see that list for the svn package, right? |
yes, I want to see the libraries and run dependencies the svn package is asking for |
|
OK, I'll give it a shot and let you know what happens |
I'm not 100% sure it is python:env causing this. I may have to really dig into what's happening in the framework - hopefully I can reproduce it. I haven't used ports in years ... |
OK, thanks for letting me know. BTW I've been waiting on |
No luck - same thing:
|
Just to be explicit, the same details in |
okay. I might actually be glad about that. |
For what it's worth, I've done a manual |
so I was not able to reproduce using dports with the exact same profile makefile options. So I'll have to try again when I get access to the freebsd again. |
OK, I've reopened it. Regarding "I still think INFO is getting defined somehow", yes, I was trying to say that it was happening right there in that code, but I miswrote something important and garbled the message. When I wrote:
I meant:
That is, in that particular iteration, it set |
|
Oh, sorry, and:
Yes, at least for me.
I have it defined during my bash setup for interactive shells (as suggested here in the gnupg documentation):
I don't know. You're using an earlier version of FreeBSD; maybe something in the make system changed? Or maybe something in the Subversion makefile? Or maybe there's a bug in my bash startup, where I'm actually doing setting $GPG_AGENT_INFO for more than just interactive shells? I'll check on that. |
Hmmm - so if your local environment is affecting this (probably using the local pkg program) then I need to adjust synth to erase that environment first. so that would fall into the category of a bug. |
It's not just synth, though - this happens when I do a raw make from the command line too. The only difference is that synth cares that make is saying svn requires print/indexinfo but simultaneously svn was not compiled to refer to print/indexinfo (it decides to delete synth because of this). Make doesn't actually care that svn isn't compiled to refer to print/indexinfo, despite the fact that make itself is what decided svn should be compiled so. |
Do you have $GNUPG_AGENT_INFO set on your machine? I thought I remembered seeing it in one of your screenshots earlier, but I haven't yet been able to find it again just now. |
No. Anyway, that solves the mystery. I'm looking for command to test this theory, I just need a few minutes. |
okay, here's the test:
I did not need to use the absolute path. Maybe you have to, not sure. |
I don't use X. I'm not sure that that matters, but I want to point it out before deciding to issue that command just in case. |
I don't think it matters. TERM just needs some definition or synth complains |
OK, I'll try it and let you know. |
While waiting for the regeneration of the flavor index, I figured I might as well try this:
|
OK, first, control test just to be sure:
Behavior same as previously: (1) synth deletes subversion And now the test you asked for:
Behavior different than previously: (4) synth deletes subversion |
so that confirms your theory |
Thanks, but hold on, I'm not so sure that it's synth's problem... I'm in the middle of typing something up about this, but I just saw your comment and figured I should say something before finishing mine. |
So it seems like this is due to the combination of several factors, all of which are necessary for the problem to happen: (1) Subversion's makefile using the option GPG_AGENT (2) GNUPG-AGENT requiring (or at least suggesting, I dunno) the exported environment variable $GPG_AGENT_INFO (3) FreeBSD's make stuff deciding that since (A) GPG_AGENT is one of the options for Subversion, and (B) the environment variable $GPG_AGENT_INFO exists, it should therefore set the variable INFO to the value of $GPG_AGENT_INFO (4) FreeBSD's make stuff further deciding that since INFO is set, Subversion therefore requires print/indexinfo (5) Subversion not actually needing print/indexinfo (6) Synth deciding that since it was told Subversion needs print/indexinfo but that the Subversion executable as built does not actually need print/indexinfo, it should therefore delete Subversion From all that, it seems to me that Synth is doing exactly what it should be doing based upon what it has been told by make and upon what making Subversion actually results in. I gather that you're intending to change Synth so that it wipes out the local environment... but isn't that potentially problematic in the event that some port actually does require print/indexinfo? I guess I don't know enough about all this, but I'm wondering if perhaps the actual problem is that Make shouldn't be saying Subversion requires print/indexinfo. If GNUPG-AGENT requires it, then GNUPG-AGENT's make process should say so, not Subversion's -- even if that means that Subversion requires print/indexinfo indirectly. Am I mistaken here? |
yes, that's exactly what I going to do. You are correct in saying it's not strictly a synth issue because GNUPG-AGENT should affect ports live as well. But the whole point of synth is to control the environment as it does during the build. Really a builder should be opened for the make queries to avoid environment corruption, but it was easier to use the host make. So that's why I consider it a synth bug -- because it failed to control the environment. Plus I just realized that 2 major bug fixes were never published. 2.13 needs to come out anyway. |
OK, great. Thanks. In the meantime, doing the workaround's no big deal. Incidentally, just as another little point of evidence for the theory: All this did start happening right around the time that I started using GNUPG-AGENT with Subversion, so I guess that the problem (whatever it actually is at the lowest level) might have been very longstanding rather than due to something like a change in FreeBSD's make, or Subversion's makefile. |
yes, it just took a special combination to hit. |
The main builders had controlled environments, but not the scanners. Set the environment to PATH, TERM, USER, ROOT and LANG only. This should address the subversion port issues seen by Robert V.
I'll tag this v2.13 if you can verify it works. Go to the ports-mgmt/synth and modify the makefile by adding: then generate a new distinfo, build, and test. |
Great, thanks so very much! I will definitely give it a try and let you know, but I'm not very confident that I will be able to do so tonight. |
Works great! I think... I noticed one thing that I'm guessing might just be an unimportant thing caused by the abnormal way I did this (i.e. directly changing Synth's Makefile), but I figured I should run it past you to be sure. After having done a
So whatever "index" this is referring to was not updated as a part of all this. I am guessing that that's expected and nonproblematic, but again, I just want to run it past you to be sure. |
it's fine. The pkg program is checking the published ports index to try to determine which installed packages are out of date, and it's squawking that this port is newer than what's published. expected; not an issue. |
I tagged it and published it as a release. |
Will do. Once again, thanks very much! |
Everything is building OK for me, but when I do a
synth rebuild-repository
,synth
says that four items (which are all among those it just built) "failed dependency check" and deletes them from/var/synth/live_packages/All
. Three of them are failing the check simply because they depend upon the first. But for the first (subversion
), this is what06_obsolete_packages.log
says:At first, I thought
synth
was saying I was missing one of those, but I do have all of those packages, with those same versions (both installed on my machine and also within/var/synth/live_packages/All
). Then I noticed there are only seven listed, rather than the eight that the log message says. So, I went to the FreshPorts page for Subversion, which seems to show that the missing dependency isdevel/gettext-runtime
(forlibintl.so
). But again, I have the latest version of that (again, both installed on my machine and in/var/synth/live_packages/All
):And I don't think this matters with respect to the problem I'm facing, but I also have the actual required library package on my machine, and it was installed by the appropriate port:
So it seems like maybe
synth
can't see (or for some reason is ignoring) thegettext-runtime-0.21.1.pkg
that it just built?The text was updated successfully, but these errors were encountered: