source-highlight error after upgrade to 10.9

Ryan Schmidt ryandesign at macports.org
Wed Mar 5 19:31:13 PST 2014


On Mar 5, 2014, at 21:12, Jean-François Caron wrote:

> On Mar 5, 2014, at 18:38 , Ryan Schmidt wrote:
> 
>> On Mar 5, 2014, at 20:33, Jean-François Caron wrote:
>> 
>>> On Mar 5, 2014, at 18:19 , Ryan Schmidt wrote:
>>> 
>>>> otool -L /opt/local/lib/lib{boost_regex-mt,source-highlight.4}.dylib
>>> 
>>> Here is the output of those commands:
>>> 
>> As you can see from the “otool -L” output, libsource-highlight.4.dylib links with libstdc++, not libc++ as it should for Mavericks or later. As you can see from the “port installed” output, the reason for this is that the port was built on Lion (darwin 11), not Mavericks (darwin 13). This suggests you did not follow the instructions in the Migration page for uninstalling and reinstalling all ports, which is necessary after upgrading the OS X version, so you should do that now.
>> 
>> https://trac.macports.org/wiki/Migration
> 
> You caught me.  I did look at those instructions and saw that they were not very good, and “port upgrade outdated”  did re-install a large number of ports (though I didn’t check carefully that /all/ were reinstalled) so I assumed that those instructions were old and disused.  After all, wikis are where documentation goes to die and all that…

You’re not wrong about that. We have many outdated wiki pages. The Migration page is current, however.


> Why do the Migration instructions ask the user to manually sift through their entire list of ports, including lib dependencies?  Couldn’t it tell them just to extract the list of requested ports with “port echo requested”, and reinstall just the requested ports?  The current instructions will mess up users’ list of requested ports because it’s sometimes difficult to figure out if a port was installed /just because/ it’s a dependency, or because it was also wanted on its own.  
> 
> While I am guilty of assuming that I was smart enough to ignore instructions, instructions this tedious deserve to be ignored.
> 
> If there was a way to query the list of ports “as requested” i.e. with only the user-requested variants (not including default variants), then this migration would be trivial, and in the case of errors, it would likely be a short (or at least shorter) list of ports to deal with:
> 
> port echo as_requested > myports.txt
> ..uninstall all ports…
> sudo port install `cat myports.txt`
> 
> 
> I know I sound like a jerk with these comments, but c’mon..manually sorting through a list of possibly hundreds of ports to see which are dependencies?

I understand your frustration, and agree the instructions are tedious. Rebuilding all ports on a new major OS version is tedious but necessary to prevent problems such as the one you encountered. The instructions for how to rebuild all ports could perhaps yet be streamlined.

Recording and restoring only requested ports sounds perfectly reasonable. I’m not sure why the instructions don’t say to do that. Please give it a try if you can! If it fails, you can always start over with the full reinstall list.

I’d first examine the output of “port installed requested” and “port installed unrequested” and make sure the lists reflect your reality; you can use “sudo port setrequested” and “sudo port unsetrequested” to fix incorrect entries.

You can also use “port -v installed | grep -v 'darwin 13'” to find only those ports that were not built on Mavericks; since you already did reinstall many ports on Mavericks, this may reduce your list of ports to reinstall considerably.

In fact, ports that weren’t built on the current OS version should show up as outdated. For example, “port outdated” should currently show that source-highlight is outdated, and “sudo port upgrade source-highlight” should rebuild it, thus correcting this specific problem you wrote about.



More information about the macports-users mailing list