Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
On Wednesday October 26 2016 18:50:33 Clemens Lang wrote: > On Wed, Oct 26, 2016 at 02:17:53AM +0200, René J.V. Bertin wrote: > > Yeah. There could be a check if the Portfile exists to catch the 1st > > possibility > > That would introduce a race condition, wouldn't it? Checking whether a > file exists before doing something with it is a classic mistake. That depends. I don't see how it would if you check before executing code that assumes the file exist: if {![file exists [$port portfile]/Portfile]} { ui_warn "[$port portfile]/Portfile] doesn't exist" } else { if {![catch {set mport [mportopen_installed ...] etc.} err]} { } else { ui_warn "Failed to run/parse Portfile from registry for $portspec ($err)" } } I'm more used to the effects of the classic mistake where you assume a bit too easily that a file always exists ;) > That information already exists, and you'll see it in debug mode. Yes, I know $errorInfo is output, but to be honest it's not always easy to find, for instance because the logfile is rewritten at least once during a `upgrade --force`. I find it more useful to obtain the succinct error message from catch and print that in the ui_warn call. R ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
Hi, On Wed, Oct 26, 2016 at 02:17:53AM +0200, René J.V. Bertin wrote: > Yeah. There could be a check if the Portfile exists to catch the 1st > possibility That would introduce a race condition, wouldn't it? Checking whether a file exists before doing something with it is a classic mistake. > and some more information about the error (if there was one) could be > useful too; the catch command can return a string with that > information. That information already exists, and you'll see it in debug mode. > > Additional files are not saved alongside the port. You should > > probably avoid depending on external files for the pre- and > > post-deactivate phases and running the Portfile. > > Or doing anything with them in the shared parts of the Portfile... That's what I meant when I said "running the Portfile". -- Clemens ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
Follow-up : I do NOT see the error (due to configure.optflags) when I do `port -n upgrade`. I think this suggests that `upgrade --force` does something recursive which is responsible for the substitution/dereferencing. R. ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
On Wednesday October 26 2016 00:25:14 Clemens Lang wrote: Hi, > The problem is that we don't see the difference. The code that procudes > the error is more or less > "source $filename" > which can fail either because the file isn't there, or because the code > in the file failed. Yeah. There could be a check if the Portfile exists to catch the 1st possibility, and some more information about the error (if there was one) could be useful too; the catch command can return a string with that information. > > PortGroup from the same directory as the main PortGroup, and that > > condition cannot hold for copies in the registry which all live in > > their own directory. > > So the behavior was actually correct. Yes. In fact, after fixing the offending code in my stuff I spent at least half an hour trying to figure which of the other recent modifications to my stuff could explain the error I ended up reporting. Has anyone been able to confirm this issue? For example: - port -n install foo configure.optflags="-Os -g" - port -nkvd upgrade --force foo configure.optflags="-Os -g" > Additional files are not saved alongside the port. You should probably > avoid depending on external files for the pre- and post-deactivate > phases and running the Portfile. Or doing anything with them in the shared parts of the Portfile... > We could argue that's a bug, but this has worked quite fell so far. As long as it doesn't make it impossible to do something that's absolutely necessary, it's not a bug but just as shortcoming ;) R. ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
Hi, On Wed, Oct 26, 2016 at 12:29:10AM +0200, René J.V. Bertin wrote: > The issue I mentioned that I fixed was such an example of an > oversight. I'd imposed the condition of reading a "companion" > PortGroup from the same directory as the main PortGroup, and that > condition cannot hold for copies in the registry which all live in > their own directory. So the behavior was actually correct. > But the configure.optflags issue is not due to an issue in a Portfile > or PortGroup. As far as I can tell it happens with every port; it just > goes unnoticed because most of the time people (presumably) don't > specify additional compiler flags. While the possiblity to set these flags on the command line exists, this is for development purposes only and unsupported. If you have a patch to fix this, I'm happy to apply it. > BTW: what is ${filespath} set to for ports executed from the registry? > If it doesn't point to the usual location there's probably room for a > mechanism to specify additional files to store in the registry port > dir. Additional files are not saved alongside the port. You should probably avoid depending on external files for the pre- and post-deactivate phases and running the Portfile. We could argue that's a bug, but this has worked quite fell so far. -- Clemens ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
On Tuesday October 25 2016 17:06:27 Ryan Schmidt wrote: Hi, > > As such, Portfiles or PortGroups that haven't been written carefully can > > trigger this warning from time to time. A common problem is checking for > > the presence of a file, or running a tool, and not catching the errors. > > Ah. So the error message is just wrong? There isn't actually a problem > opening the portfile from the registry; there's a problem running the > portfile that was successfully opened and read? Insofar as you can distinquish between reading, parsing and running the portfile, yes. The issue I mentioned that I fixed was such an example of an oversight. I'd imposed the condition of reading a "companion" PortGroup from the same directory as the main PortGroup, and that condition cannot hold for copies in the registry which all live in their own directory. But the configure.optflags issue is not due to an issue in a Portfile or PortGroup. As far as I can tell it happens with every port; it just goes unnoticed because most of the time people (presumably) don't specify additional compiler flags. BTW: what is ${filespath} set to for ports executed from the registry? If it doesn't point to the usual location there's probably room for a mechanism to specify additional files to store in the registry port dir. R. ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
Hi, On Tue, Oct 25, 2016 at 05:06:27PM -0500, Ryan Schmidt wrote: > Ah. So the error message is just wrong? There isn't actually a problem > opening the portfile from the registry; there's a problem running the > portfile that was successfully opened and read? Yes, unless of course you randomly deleted files in the path where MacPorts keeps those historic copies of Portfiles, or there's a bug in the code that maintains these files. The problem is that we don't see the difference. The code that procudes the error is more or less "source $filename" which can fail either because the file isn't there, or because the code in the file failed. -- Clemens ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
> On Oct 25, 2016, at 5:04 PM, Clemens Lang wrote: > > Hi, > > On Tue, Oct 25, 2016 at 08:34:31AM -0500, Ryan Schmidt wrote: >> I don't know the answers to your questions, but I wanted to mention >> that I also have noticed the "Failed to open portfile from registry" >> error far more often than seems normal to me. ("Never" would seem >> normal to me.) > > Interesting. The last time I've seen any of these messages is for the > last GHC upgrade, and they were indeed expected and could not be avoided > there. > > On Tue, Oct 25, 2016 at 07:17:23PM +0200, René J.V. Bertin wrote: >> Yes, never would seem normal, esp. if the Portfile is there when you >> check :) > > When a port is opened from registry, it does not use the state of the > Portfile that you currently have in your ports tree. It uses the state > of the Portfile as it was when you installed the port. This also applies > to PortGroups. > > As such, Portfiles or PortGroups that haven't been written carefully can > trigger this warning from time to time. A common problem is checking for > the presence of a file, or running a tool, and not catching the errors. Ah. So the error message is just wrong? There isn't actually a problem opening the portfile from the registry; there's a problem running the portfile that was successfully opened and read? ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
Hi, On Tue, Oct 25, 2016 at 08:34:31AM -0500, Ryan Schmidt wrote: > I don't know the answers to your questions, but I wanted to mention > that I also have noticed the "Failed to open portfile from registry" > error far more often than seems normal to me. ("Never" would seem > normal to me.) Interesting. The last time I've seen any of these messages is for the last GHC upgrade, and they were indeed expected and could not be avoided there. On Tue, Oct 25, 2016 at 07:17:23PM +0200, René J.V. Bertin wrote: > Yes, never would seem normal, esp. if the Portfile is there when you > check :) When a port is opened from registry, it does not use the state of the Portfile that you currently have in your ports tree. It uses the state of the Portfile as it was when you installed the port. This also applies to PortGroups. As such, Portfiles or PortGroups that haven't been written carefully can trigger this warning from time to time. A common problem is checking for the presence of a file, or running a tool, and not catching the errors. -- Clemens ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
> On Oct 25, 2016, at 1:17 PM, René J.V. Bertin wrote: > > I've looked into putting the offending statement (`$workername eval set > user_options($opt) $val`) in a loop, something like > > $workername eval set user_options($opt) "" > foreach v $val { >$workername eval set user_options($opt) "$user_options($opt) $v" > } > > but I haven't gotten that right yet. I haven't looked at the offending code, but I can tell you that this approach is inherently flawed and cannot work robustly. The issue is unwanted double substitution; the solution must prevent this, not work around it. vq ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
> On Oct 25, 2016, at 12:17 PM, René J.V. Bertin wrote: > > On Tuesday October 25 2016 08:34:31 Ryan Schmidt wrote: > >> I don't know the answers to your questions, but I wanted to mention that I >> also have noticed the "Failed to open portfile from registry" error far more >> often than seems normal to me. ("Never" would seem normal to me.) > > Yes, never would seem normal, esp. if the Portfile is there when you check :) > > Are you running base from SVN? Yes, trying to keep it updated every so often. > I've looked into putting the offending statement (`$workername eval set > user_options($opt) $val`) in a loop, something like > > $workername eval set user_options($opt) "" > foreach v $val { >$workername eval set user_options($opt) "$user_options($opt) $v" > } > > but I haven't gotten that right yet. > > R. ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
On Tuesday October 25 2016 08:34:31 Ryan Schmidt wrote: >I don't know the answers to your questions, but I wanted to mention that I >also have noticed the "Failed to open portfile from registry" error far more >often than seems normal to me. ("Never" would seem normal to me.) Yes, never would seem normal, esp. if the Portfile is there when you check :) Are you running base from SVN? I've looked into putting the offending statement (`$workername eval set user_options($opt) $val`) in a loop, something like $workername eval set user_options($opt) "" foreach v $val { $workername eval set user_options($opt) "$user_options($opt) $v" } but I haven't gotten that right yet. R. ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: "Failed to open portfile from registry" while reinstalling because of configure.optflags
> On Oct 25, 2016, at 7:30 AM, René J.V. Bertin wrote: > > I've been noticing "Failed to open portfile from registry" errors during > certain operations like reinstalling (port -n upgrade --force). I don't know the answers to your questions, but I wanted to mention that I also have noticed the "Failed to open portfile from registry" error far more often than seems normal to me. ("Never" would seem normal to me.) ___ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev
Re: Failed to open Portfile from registry
On Jun 26, 2012, at 21:46, Joshua Root wrote: > On 2012-6-27 11:38 , Ryan Schmidt wrote: >> Now that I've caught up on the commits and other messages of the day, I >> understand what's going on. A major change just took place for all of perl >> in MacPorts in r94655. This needed to be done, but it included a change to >> the perl5 portgroup that is incompatible with how that portgroup was used >> before: the perl5.branches option was removed; previous p5 ports relied on >> that option existing. So as with the previous time that we did a massive >> overhaul of perl in MacPorts two years ago, the existing perl5 1.0 portgroup >> should have been kept intact and a new perl5 1.1 portgroup created with >> these changes, to avoid these warning messages. >> >> Thankfully in this case the warnings are harmless and should just be ignored: >> >> http://lists.macosforge.org/pipermail/macports-users/2012-June/029578.html > > I guess we could put the default back for a while if the warning is > confusing people. I think it will confuse people and cause them to email the list or file tickets. At least there's a canonical response we can point them to on the users list now. But if we can easily prevent the warning by putting a perl5.branches default (empty?) into the portgroup that would be nice. ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
On 2012-6-27 11:38 , Ryan Schmidt wrote: > Now that I've caught up on the commits and other messages of the day, I > understand what's going on. A major change just took place for all of perl in > MacPorts in r94655. This needed to be done, but it included a change to the > perl5 portgroup that is incompatible with how that portgroup was used before: > the perl5.branches option was removed; previous p5 ports relied on that > option existing. So as with the previous time that we did a massive overhaul > of perl in MacPorts two years ago, the existing perl5 1.0 portgroup should > have been kept intact and a new perl5 1.1 portgroup created with these > changes, to avoid these warning messages. > > Thankfully in this case the warnings are harmless and should just be ignored: > > http://lists.macosforge.org/pipermail/macports-users/2012-June/029578.html I guess we could put the default back for a while if the warning is confusing people. - Josh ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
On Jun 26, 2012, at 20:09, Lawrence Velázquez wrote: > On Jun 26, 2012, at 12:37 p.m., Blair Zajac wrote: >> On 06/26/2012 09:03 AM, Sean Farley wrote: >>> On Tue, Jun 26, 2012 at 10:55 AM, Blair Zajac wrote: After updating my perl5 and p5* ports, removing outdated ports got these warnings. Are there any issues with my registry after seeing these? I've gotten them on 3 different systems that I've updated. >>> >>> By any chance, do you happen to have these in a custom / local repo on >>> your machine? >> >> No. I just use rsync to pick up port changes. > > I am also seeing these warnings, on selfupdate/upgrade. Now that I've caught up on the commits and other messages of the day, I understand what's going on. A major change just took place for all of perl in MacPorts in r94655. This needed to be done, but it included a change to the perl5 portgroup that is incompatible with how that portgroup was used before: the perl5.branches option was removed; previous p5 ports relied on that option existing. So as with the previous time that we did a massive overhaul of perl in MacPorts two years ago, the existing perl5 1.0 portgroup should have been kept intact and a new perl5 1.1 portgroup created with these changes, to avoid these warning messages. Thankfully in this case the warnings are harmless and should just be ignored: http://lists.macosforge.org/pipermail/macports-users/2012-June/029578.html ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
On Jun 26, 2012, at 12:37 p.m., Blair Zajac wrote: > On 06/26/2012 09:03 AM, Sean Farley wrote: >> On Tue, Jun 26, 2012 at 10:55 AM, Blair Zajac wrote: >>> After updating my perl5 and p5* ports, removing outdated ports got these >>> warnings. Are there any issues with my registry after seeing these? I've >>> gotten them on 3 different systems that I've updated. >> >> By any chance, do you happen to have these in a custom / local repo on >> your machine? > > No. I just use rsync to pick up port changes. I am also seeing these warnings, on selfupdate/upgrade. vq ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
Hi, my guess at this is that the old Portfile loaded from registry includes the (now modified) perl5 port group, but MacPorts fails to execute the Portfile because of an incompatible change in the group (I remember perl5.branches) being removed from the group, maybe it's a missing variable). Maybe the port group change should have gone into a new version of the perl5 group, say 1.1. I think we can ignore this for now, because afaik (correct me if I'm wrong) parsing the old Portfile is only required to run post-remove hooks, something probably no ports using the group define (TODO: verify this with a quick grep). -- Clemens mobile ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
On 06/26/2012 09:03 AM, Sean Farley wrote: On Tue, Jun 26, 2012 at 10:55 AM, Blair Zajac wrote: After updating my perl5 and p5* ports, removing outdated ports got these warnings. Are there any issues with my registry after seeing these? I've gotten them on 3 different systems that I've updated. By any chance, do you happen to have these in a custom / local repo on your machine? No. I just use rsync to pick up port changes. Blair ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
On Tue, Jun 26, 2012 at 10:55 AM, Blair Zajac wrote: > After updating my perl5 and p5* ports, removing outdated ports got these > warnings. Are there any issues with my registry after seeing these? I've > gotten them on 3 different systems that I've updated. By any chance, do you happen to have these in a custom / local repo on your machine? ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
On 2010-4-24 13:58 , Jeremy Lavergne wrote: > Right. > > The problem was because your sqlite db was created with a different schema in > a previous version of trunk (not 1.8.2), and each version of trunk may have a > new schema. So when you rebuilt after a cvs up, the software was trying to > use the db as if it had the new schema when it did not. That's not the reason. See Rainer's reply. - Josh ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
Right. The problem was because your sqlite db was created with a different schema in a previous version of trunk (not 1.8.2), and each version of trunk may have a new schema. So when you rebuilt after a cvs up, the software was trying to use the db as if it had the new schema when it did not. This is why, as jmr pointed out previously, that nuking the database allows it to be rebuilt using the new schema. On Apr 23, 2010, at 6:52 PM, Ryan Schmidt wrote: > So if I upgrade from 1.8.2 to trunk I won't see this error? smime.p7s Description: S/MIME cryptographic signature ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
On Apr 23, 2010, at 17:50, Jeremy Lavergne wrote: > It's trunk to trunk. > > Not release to release. So if I upgrade from 1.8.2 to trunk I won't see this error? ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
It's trunk to trunk. Not release to release. On Apr 23, 2010, at 6:46 PM, Ryan Schmidt wrote: > Ok. Is that really the experience we want for users? Users who upgrade from > one version of MacPorts to the next don't expect to get all these warnings > they didn't get before. If we keep this warning as is, I think we'll get to > explain this situation over and over on the mailing list. smime.p7s Description: S/MIME cryptographic signature ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
On Apr 23, 2010, at 17:42, Rainer Müller wrote: > On 2010-04-24 00:29 , Ryan Schmidt wrote: >> When upgrading a port in a MacPorts prefix that had been running a >> prior version of trunk and which I just updated to the latest, I get >> this warning: >> >> $ sudo /x86_64-10.6-mp/bin/port -u upgrade zlib >> ---> Computing dependencies for zlib >> ---> Fetching zlib >> ---> Verifying checksum(s) for zlib >> ---> Extracting zlib >> ---> Applying patches to zlib >> ---> Configuring zlib >> ---> Building zlib >> ---> Staging zlib into destroot >> ---> Computing dependencies for zlib >> ---> Installing zlib @1.2.5_0 >> Warning: Failed to open Portfile from registry for zlib @1.2.4_1 >> ---> Deactivating zlib @1.2.4_1 >> ---> Activating zlib @1.2.5_0 >> ---> Cleaning zlib >> Warning: Failed to execute portfile from registry for zlib @1.2.4_1 >> ---> Uninstalling zlib @1.2.4_1 >> >> >> Is this expected? > > Yes. After you converted your registry to the sqlite format there are no > Portfiles stored in the registry as that did not exist in the old > format. Conversion stores an empty string instead, resulting in this > warning as this is not a valid Portfile. Ok. Is that really the experience we want for users? Users who upgrade from one version of MacPorts to the next don't expect to get all these warnings they didn't get before. If we keep this warning as is, I think we'll get to explain this situation over and over on the mailing list. ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
Re: Failed to open Portfile from registry
On 2010-04-24 00:29 , Ryan Schmidt wrote: > When upgrading a port in a MacPorts prefix that had been running a > prior version of trunk and which I just updated to the latest, I get > this warning: > > $ sudo /x86_64-10.6-mp/bin/port -u upgrade zlib > ---> Computing dependencies for zlib > ---> Fetching zlib > ---> Verifying checksum(s) for zlib > ---> Extracting zlib > ---> Applying patches to zlib > ---> Configuring zlib > ---> Building zlib > ---> Staging zlib into destroot > ---> Computing dependencies for zlib > ---> Installing zlib @1.2.5_0 > Warning: Failed to open Portfile from registry for zlib @1.2.4_1 > ---> Deactivating zlib @1.2.4_1 > ---> Activating zlib @1.2.5_0 > ---> Cleaning zlib > Warning: Failed to execute portfile from registry for zlib @1.2.4_1 > ---> Uninstalling zlib @1.2.4_1 > > > Is this expected? Yes. After you converted your registry to the sqlite format there are no Portfiles stored in the registry as that did not exist in the old format. Conversion stores an empty string instead, resulting in this warning as this is not a valid Portfile. Rainer ___ macports-dev mailing list macports-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev