Opened 7 years ago

#56245 new defect

rev-upgrade: Handling missing architectures on libraries

Reported by: raimue (Rainer Müller) Owned by:
Priority: Normal Milestone:
Component: base Version:
Keywords: Cc: neverpanic (Clemens Lang)
Port:

Description

When a port is active, but dependents expect it to be +universal, rev-upgrade currently wants to rebuild all these dependents. For example, for an experiment I removed the +universal variant from cairo temporarily.

$ sudo port rev-upgrade
--->  Scanning binaries for linking errors
--->  No broken files found.
$ sudo port -n upgrade --no-rev-upgrade --enforce-variants cairo -universal
--->  Computing dependencies for cairo
--->  Deactivating cairo @1.14.12_0+quartz+universal+x11
--->  Cleaning cairo
--->  Activating cairo @1.14.12_0+quartz+x11
--->  Cleaning cairo

I am aware that I broke some ports with that. To get a working system, all that would be needed is to activate cairo with the +universal variant again. However, rev-upgrade wants to reinstall all dependents instead:

$ sudo port rev-upgrade
--->  Scanning binaries for linking errors
--->  Found 56 broken files, matching files to ports
--->  Found 5 broken ports, determining rebuild order
You can always run 'port rev-upgrade' again to fix errors.
The following ports will be rebuilt:
 harfbuzz @1.7.6+universal
 pango @1.42.0+quartz+universal+x11
 gtk3 @3.22.29+universal+x11
 gstreamer1-gst-plugins-base @1.12.4+ogg+universal+x11
 gcc6 @6.4.0
Continue? [Y/n]:

While this would eventually give me a working system again, these rebuilds are not necessary. None of the binaries or libraries in these ports is actually broken, only cairo as a dependency is missing an architecture. (Not sure why gcc6 only appeared now, but that is due to use of libstdc++, which might be another bug.)

The relevant section from the attached log file seems to be:

DEBUG: Missing architecture i386 in file /opt/local/lib/libcairo.2.dylib
DEBUG: Marking /opt/local/lib/gstreamer-1.0/libgstpango.so as broken
DEBUG: Missing architecture i386 in file /opt/local/lib/libcairo.2.dylib
DEBUG: Marking /opt/local/bin/pango-view as broken
DEBUG: Missing architecture i386 in file /opt/local/lib/libcairo.2.dylib
DEBUG: Marking /opt/local/lib/libpangocairo-1.0.0.dylib as broken

The conclusion here is wrong. As pango is installed +universal and the pango libraries contain all expected architectures, the broken file is definitely /opt/local/lib/libcairo.2.dylib.

Attachments (1)

rev-upgrade-cairo-not-universal.log (286.4 KB) - added by raimue (Rainer Müller) 7 years ago.

Download all attachments as: .zip

Change History (1)

Changed 7 years ago by raimue (Rainer Müller)

Note: See TracTickets for help on using tickets.