<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Sep 3, 2017 at 5:17 PM, Rainer Müller <span dir="ltr"><<a href="mailto:raimue@macports.org" target="_blank">raimue@macports.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 2017-09-02 19:38, Umesh Singla wrote:<br>
> As stupid as it seems but I don't see any cxx_stdlib option in my<br>
> macports.conf (see attached). Option $macports::cxx_stdlib seems to be<br>
> configured while mportinit (which means runtime, I guess) depending on<br>
> $os_platform and $os_major. So, it should suffice not to check for it.<br>
<br>
Not all of our bootstrap_options are listed in the default config file,<br>
but they would be recognized if you added them.<br>
<br>
<a href="https://github.com/macports/macports-base/blob/v2.4.1/src/macports1.0/macports.tcl#L48-L59" rel="noreferrer" target="_blank">https://github.com/macports/<wbr>macports-base/blob/v2.4.1/src/<wbr>macports1.0/macports.tcl#L48-<wbr>L59</a><br>
<br>
> The fact that surprises me is that even $mapcorts::build_arch is left to<br>
> configure on runtime depending on again, only $os_platform, $os_arch and<br>
> $os_major and they are NOT stored anywhere (macports.conf or<br>
> macports::autoconf namespace). All these options come from $tcl_platform<br>
> which will change as soon as the platform changes. So, this says that<br>
> only the check like this:<br>
><br>
> {($os_platform ne $macports::autoconf::os_<wbr>platform) || ($os_major !=<br>
> $macports::autoconf::os_major)<wbr>}<br>
><br>
> should be enough for suggesting to migrate. I'm not able to find any way<br>
> to include the check on, as quoted in migration guide, "architecture<br>
> migrations (e.g., from PowerPC to Intel)" which could be helpful.<br>
<br>
Isn't his exactly what we are already using to print the link to the<br>
Migration wiki page?<br></blockquote><div><br></div><div>Yes, it is. That's why I asked if the condition was always enough in the first place to check for the need of migration and having a forced and --nosync selfupdate for migration we require now to embed.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> Also, if it is, I can simply add migrate action to run `-f selfupdate`<br>
> because it seems that selfupdate.tcl handles downloading and installing<br>
> a appropriate macports-base release. Any help is appreciated.<br>
<br>
selfupdate should detect the platform change as an indicator to<br>
reinstall instead of requiring a forced rebuild. In that case, it should<br>
also skip syncing the ports tree.</blockquote><div><br></div><div>This makes it easy for migration. We can simply run selfupdate with f and nosync from the migration.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
>     The following goes beyond your GSoC project, but I think it fits<br>
>     into this<br>
>     discussion. Back in May, I published an experiment on my GitHub repo<br>
>     that I had<br>
>     lying around. This adds functionality to stores the cxx_stdlib option in<br>
>     registry, such that 'port outdated' will consider ports as outdated<br>
>     if the<br>
>     registry entry does not match the cxx_stdlib option in macports.conf.<br>
><br>
>     This was originally written to support switching the cxx_stdlib from<br>
>     libstdc++<br>
>     to libc++ on old releases of OS X in order to support C++11. However, I<br>
>     personally lost interest to support legacy systems any longer and do<br>
>     not run any<br>
>     of them any more.<br>
><br>
>     <a href="https://github.com/raimue/macports-base/commit/c4386f8c5be01e3f8eeba9e351373df860d9d8ab" rel="noreferrer" target="_blank">https://github.com/raimue/<wbr>macports-base/commit/<wbr>c4386f8c5be01e3f8eeba9e351373d<wbr>f860d9d8ab</a><br>
>     <<a href="https://github.com/raimue/macports-base/commit/c4386f8c5be01e3f8eeba9e351373df860d9d8ab" rel="noreferrer" target="_blank">https://github.com/raimue/<wbr>macports-base/commit/<wbr>c4386f8c5be01e3f8eeba9e351373d<wbr>f860d9d8ab</a>><br>
><br>
>     WARNING: Do not install this commit/branch over your regular prefix as<br>
>     it will upgrade the SQLite registry.db and make it incompatible with<br>
>     MacPorts 2.4.x or master!<br>
><br>
><br>
> Sure, this is a helpful point to keep in mind. Though, any reasons to<br>
> not switch to libc++?<br>
<br>
As I understand it, to support C++11 the only way is to switch to<br>
libc++. This would be quite easy for new installations by simply<br>
switching the default of cxx_stdlib. However, as it is an incompatible<br>
change, this would break all existing installations, therefore a way to<br>
convert these existing installations should be implemented first.<br>
The other option to switch would be to just change the default of<br>
cxx_stdlib with the next 2.x release, wipe all existing binary packages<br>
and ask all existing users on legacy systems to uninstall, then<br>
reinstall all their ports. Less work for developers, much frustration<br>
for users.</blockquote></div></div></div>