Migration issue

Russell Jones russell.jones at physics.ox.ac.uk
Wed Jan 11 15:05:40 CET 2017

On 06/01/17 17:37, Adam Dershowitz wrote:
>> On Jan 6, 2017, at 9:49 AM, Russell Jones 
>> <russell.jones at physics.ox.ac.uk 
>> <mailto:russell.jones at physics.ox.ac.uk>> wrote:
>> On 06/01/17 14:28, Adam Dershowitz wrote:
>>> > On Jan 6, 2017, at 9:04 AM, Russell Jones 
>>> <russell.jones at physics.ox.ac.uk> wrote:
>>> >
>>> > On 06/01/17 13:22, Adam Dershowitz wrote:
>>> >> On Jan 6, 2017, at 2:20 AM, Ryan Schmidt 
>>> <ryandesign at macports.org> wrote:
>>> >>> On Jan 5, 2017, at 09:26, Adam Dershowitz wrote:
>>> >>>> I just tried what you suggested for py27-numpy and it just 
>>> activated without any error.
>>> >>> Yes, there will not be an error at activation time. However, if 
>>> you have anything installed that required py27-numpy to be 
>>> universal, it will now be broken.
>>> >>>> So, myports.txt has
>>> >>>>  py27-numpy @1.11.3_0+gfortran (active) platform='darwin 15' 
>>> archs='x86_64'
>>> >>>>
>>> >>>> And, after the migration it had installed both that and the 
>>> +universal variant.
>>> >>>> Yet, when I tried to activate the non-universal version it did 
>>> it without complaint.  So, I really don’t understand why the 
>>> +universal got built at all.
>>> >>>> Any suggestions?
>>> >>> I don't have any answers for you, beyond the usual reasons why a 
>>> port is installed universal, which are:
>>> >>>
>>> >>> - you explicitly asked for it to be installed universal
>>> >>> - you installed another port universal that depends on this port
>>> >>> - you installed another port that is 32-bit only, and you are on 
>>> a 64-bit machine, and the other port depends on this port (You can 
>>> check if the other port says "supported_archs i386 ppc" (or the 
>>> other way around))
>>> >>> - it enables the universal by default, and possibly requires the 
>>> universal variant to be used (You can check the portfile to see if 
>>> "default_variants +universal" appears)
>>> >> What seems really odd to me that I took I moved my myports.txt 
>>> from one machine to another.  So, I used one machine to generate 
>>> that list, and brought it to another machine to build.
>>> >> Both are MacBook pros (one new and one old) and that same list, 
>>> on the new machine, added a bunch of universal ports.  So, I don’t 
>>> see how any of the items in the list above could do that.  If it was 
>>> not universal on the old machine, why would it end up universal on 
>>> the new machine?
>>> >> Could going from 10.11 to 10.12 make something required to be 
>>> universal?  Or could going from Xcode 7 to 8 make a port universal? 
>>> Because otherwise, I just don’t see why they should be different.
>>> >> If anything, I would expect that the newer OS and newer hardware 
>>> should be able to do more things as 64 bit, so would require less 
>>> universal stuff.
>>> >>
>>> >> —Adam
>>> > Could you gzip and attach the list of ports from the old machine 
>>> and the output of "port installed requested"?
>>> >
>>> > The approach I suggested can't work, I now realize, as variants 
>>> aren't used for working out dependencies ( 
>>> https://trac.macports.org/wiki/FAQ#dependonvariant )
>>> >
>>> > Russell
>>> >
>>> Here are the two files.
>>> I don’t believe that I have ever intentionally installed anything 
>>> +universal.  So, I’m fairly sure that anything in this list that is 
>>> universal is because of 3, or 4 above.  But, when I then moved to 
>>> the new machine, it proceeded to make a bunch more things universal.
>>> As far as I’m concerned pretty much all of my ports should just be 
>>> installed with default variants, so few, if any, should be 
>>> universal. As everything is now working, this is not a big deal.  
>>> But, it does mean that upgrades often must be built, instead of 
>>> using the binary, which would be much faster and use less drive space.
>>> thanks,
>>> —Adam
>> It looks like the extra +universal stuff comes from the things that 
>> were marked +universal installing all their dependencies +universal, 
>> which is expected behaviour. It looks like the restore script just 
>> installs the things listed in the order given, so doesn't preserve 
>> the variants exactly (+universal satisfies a request to install with 
>> no variants, I think, though I'm unsure). You could search and 
>> replace +universal (i.e. remove all instances of it) in myports, then 
>> tear-down and redo the install, I guess.
>> Russell
> But, this list is from the old machine.  My question is why the new 
> machine ended up with a lot more +universal.  For example, the list 
> that I sent does not have +universal for py27-numpy, while the new 
> machine, that I used the above list to install, did end up with 
> +universal.
> If the prior machine did not require +universal, based on the 
> dependency tree, why would the new machine require it?  Or was 
> something broken on the old machine, where it really did require 
> +universal, but never actually installed it that way, and I happened 
> never to hit that bug?
> —Adam
Well, in the scenario I'm thinking of, it would be because something was 
built +universal that depended on py27-numpy before py27-numpy was 
checked for whether it's installed by itself. It's possible to install 
programs -universal that are depended on by others that are +universal 
without error or warning, as you've seen. It also seems that link 
checking doesn't pick it up. I'm not sure how one goes about using the 
32-bit portions of programs (as opposed to linking 32-bit binaries 
against them, which you do with the -m32 flag, IIRC) where the program 
is not 32-bit only. So it's possible you only ever used the 64-bit 
portions of the binaries and so didn't see any problems. I'll happily 
concede something else may be going on.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macports.org/pipermail/macports-users/attachments/20170111/e8f3b413/attachment.html>

More information about the macports-users mailing list