Migration issue
Mojca Miklavec
mojca at macports.org
Wed Dec 16 15:20:47 PST 2015
Hi,
On 16 December 2015 at 23:33, Mojca Miklavec wrote:
> On 16 December 2015 at 21:50, Ryan Schmidt wrote:
>>> On Dec 16, 2015, at 10:58 AM, Mojca Miklavec wrote:
>>>
>>> Dear Adam,
>>>
>>> On 16 December 2015 at 17:34, Adam Dershowitz wrote:
>>>> I did a selfupdate. I uninstalled per5, perl5.16 and perl5.22
>>>> Next, I installed perl5 +perl5_16
>>>> Next I installed perl5.16 +universal
>>>>
>>>> Then I did 5.22 and had the problem again:
>>>>
>>>> sudo port install perl5.22 +universal
>>>> ---> Computing dependencies for perl5.22
>>>> ---> Fetching archive for perl5.22
>>>> ---> Attempting to fetch
>>>> perl5.22-5.22.1_0+universal.darwin_15.i386-x86_64.tbz2 from
>>>> http://packages.macports.org/perl5.22
>>>> ---> Attempting to fetch
>>>> perl5.22-5.22.1_0+universal.darwin_15.i386-x86_64.tbz2 from
>>>> http://lil.fr.packages.macports.org/perl5.22
>>>> ---> Attempting to fetch
>>>> perl5.22-5.22.1_0+universal.darwin_15.i386-x86_64.tbz2 from
>>>> http://nue.de.packages.macports.org/macports/packages/perl5.22
>>>> ---> Fetching distfiles for perl5.22
>>>> ---> Verifying checksums for perl5.22
>>>> ---> Extracting perl5.22
>>>> ---> Applying patches to perl5.22
>>>> ---> Configuring perl5.22
>>>> ---> Building perl5.22
>>>> ---> Staging perl5.22 into destroot
>>>> ---> Installing perl5.22 @5.22.1_0+universal
>>>> ---> Activating perl5.22 @5.22.1_0+universal
>>>> Error: org.macports.activate for port perl5.22 returned: Image error:
>>>> /opt/local/bin/c2ph-5.22 is being used by the active perl5.16 port. Please
>>>> deactivate this port first, or use 'port -f activate perl5.22' to force the
>>>> activation.
>>>> Please see the log file for port perl5.22 for details:
>>>>
>>>> /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_perl5/perl5.22/main.log
>>>> To report a bug, follow the instructions in the guide:
>>>> http://guide.macports.org/#project.tickets
>>>> Error: Processing of port perl5.22 failed
>>>>
>>>> I did the check that you asked and I see a whole bunch of stuff:
>>>>
>>>> port contents perl5.16 | grep 5.22
>>>> /opt/local/bin/a2p-5.22
>>>> /opt/local/bin/c2ph-5.22
>>> ...
>>>
>>> I need to investigate that. That shouldn't have happened.
>>
>> I don't see the above, but I do see this:
>>
>>
>> $ port installed perl5
>> The following ports are currently installed:
>> perl5 @5.22.1_0+perl5_22 (active)
>> $ port destroot perl5.16 +universal
>> ---> Computing dependencies for perl5.16
>> ---> Fetching distfiles for perl5.16
>> ---> Verifying checksums for perl5.16
>> ---> Extracting perl5.16
>> ---> Applying patches to perl5.16
>> ---> Configuring perl5.16
>> ---> Building perl5.16
>> ---> Staging perl5.16 into destroot
>> $ port log perl5.16 | grep '5\.22'
>> DEBUG: system: cd /opt/local/var/macports/build/_Users_rschmidt_macports_dports_lang_perl5/perl5.16/work/perl-5.16.3 && ed - /opt/local/var/macports/build/_Users_rschmidt_macports_dports_lang_perl5/perl5.16/work/perl-5.16.3/config.h < /Users/rschmidt/macports/dports/lang/perl5/files/5.22/config.h.ed
>>
>>
>> That shouldn't have happened either. The 5.16 and 5.22 versions of config.h.ed happen to be the same, but the intention was obviously to use the correct version, and that's not happening.
>>
>> Combining multiple ports into a single port is fraught with peril; the php port is a rather extreme example, possibly even an antipattern.
>>
>> My initial attempt at understanding the problem goes something like this:
>>
>> In this case, you've got a foreach loop in which you're defining subports. However when you define a block inside a subport, such as the post-configure block that runs the ed script when the universal variant is chosen, the block gets stored verbatim for later use, without any variables (such as (${perl5.major}) being expanded. The variables get expanded later, when the block is actually used, in this case after the configure phase. By that time, the foreach loop is long over, and all of the variables over which the foreach loop was looping are now set to their ending values, rather than the intended value.
>>
>> However, that doesn't explain why, for me, the same is not happening in the post-destroot phase.
>
> Oh, this reminded me on the following thread from the past:
> https://lists.macosforge.org/pipermail/macports-dev/2013-July/023498.html
I was able to reproduce the problem and fix it with
https://trac.macports.org/changeset/143653
but I'm not sure if that is everything that was needed.
If someone can confirm that (force)uninstalling and reinstalling
perl5.16 now works as intended and that no leftovers from 5.22 remain
in "port contents perl5.16", we should revbump the ports (increase the
third number in perl5.versions_info for perl < 5.22).
Mojca
More information about the macports-users
mailing list