On 09/02/2017 03:18 PM, Umesh Singla wrote: > On Thu, Jun 15, 2017 at 12:05 AM, Mojca Miklavec <[email protected] > <mailto:[email protected]>> wrote: > > On 14 June 2017 at 05:47, Umesh Singla wrote: > > > > Okay, since there's already a OS comparison made, which I think can be > > directly used here. But to clarify, just the OS check? a check on > x86_64/ppc > > changes is also needed. > > And potentially cxx_stdlib? > > > How can such a check be made possible? All we have at present is here, [0]. It > doesn't compare stored values and current platform values. Are you suggesting > a > manual check while migration?
I do not think we need any special check at migration, as a rebuild will always use the current setting in macports.conf. However, after editing the default cxx_stdlib in macports.conf all affected ports need to be rebuild and linked with the new default to avoid problems later when installing new ports. The following goes beyond your GSoC project, but I think it fits into this discussion. Back in May, I published an experiment on my GitHub repo that I had lying around. This adds functionality to stores the cxx_stdlib option in registry, such that 'port outdated' will consider ports as outdated if the registry entry does not match the cxx_stdlib option in macports.conf. This was originally written to support switching the cxx_stdlib from libstdc++ to libc++ on old releases of OS X in order to support C++11. However, I personally lost interest to support legacy systems any longer and do not run any of them any more. https://github.com/raimue/macports-base/commit/c4386f8c5be01e3f8eeba9e351373df860d9d8ab WARNING: Do not install this commit/branch over your regular prefix as it will upgrade the SQLite registry.db and make it incompatible with MacPorts 2.4.x or master! I am not sure how useful this experiment is yet, because this approach still has a number of problems and shortcomings: * show stopper: cxx_stdlib is stored for all ports, not only those actually linking against the C++ stdlib * cxx_stdlib cannot be changed separately for a single port This might be necessary for some ports that want to link against system frameworks and do not link against anything else. Such a port is now always be considered outdated. * I did not know/think of libstdc++ vs. macports-libstdc++ * archivefetch does not yet respect cxx_stdlib in any way For some of these problems, I don't know how they should be solved, especially the first show stopper. But maybe this helps to get the ball rolling a bit more. Rainer
