Opened 8 years ago

Last modified 5 years ago

#51298 assigned defect

Base does not prevent conflicting port activation when portfile from registry cannot be executed

Reported by: dstrubbe (David Strubbe) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: base Version: 2.3.4
Keywords: Cc: SickTeddyBear, ryandesign (Ryan Carsten Schmidt), W-E-Brown, akimd (Akim Demaille)
Port:

Description (last modified by dstrubbe (David Strubbe))

There is some kind of problem with libgcc and libgcc-devel, such that they cannot activate and deactivate cleanly in the presence of the other. Possibly this is related to the warnings that the Portfile from the registry could not be executed.

$ sudo port activate libgcc
--->  Computing dependencies for libgcc
Warning: Failed to execute portfile from registry for libgcc @5.2.0_0
--->  Activating libgcc @5.2.0_0
Error: port activate failed: Image error: /opt/local/lib/libgcc/libatomic.1.dylib is being used by the active libgcc-devel port.  Please deactivate this port first, or use 'port -f activate libgcc' to force the activation.
$ port installed libgcc
The following ports are currently installed:
  libgcc @5.2.0_0
$ sudo port -f deactivate libgcc-devel
$ sudo port install libgc
$ sudo port activate libgcc-devel  @6-20160410_0
--->  Computing dependencies for libgcc-devel
Warning: Failed to execute portfile from registry for libgcc-devel @6-20160410_0
--->  Activating libgcc-devel @6-20160410_0
Error: port activate failed: Image error: /opt/local/lib/libgcc/libatomic.1.dylib is being used by the active libgcc port.  Please deactivate this port first, or use 'port -f activate libgcc-devel' to force the activation.
$ port installed libgcc
libgcc @5.3.0_1 (active)

Change History (10)

comment:1 Changed 8 years ago by dstrubbe (David Strubbe)

Description: modified (diff)

For the record, this is with OSX 10.10.5.

comment:2 Changed 8 years ago by SickTeddyBear

Cc: amcgee@… added

Cc Me!

comment:3 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: ryandesign@… added

The libgcc and libgcc-devel ports are intentionally marked as conflicting with one another. They are drop-in replacements for one another, but intentionally only one or the other can be active at once.

I don't understand why MacPorts did not notify you of the conflict earlier in the process.

Your ports are outdated. The current version of libgcc is 6.1.0; the current version of libgcc-devel is 7-20160501. Run sudo port selfupdate to get these updates.

comment:4 Changed 8 years ago by W-E-Brown

Cc: webrown.cpp@… added

Cc Me!

comment:5 Changed 8 years ago by dstrubbe (David Strubbe)

Yes, I know they are conflicting; the fact that an appropriate message about that did not come up is the problem. My upgrade is blocked by #51245.

comment:6 in reply to:  5 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to dstrubbe@…:

Yes, I know they are conflicting; the fact that an appropriate message about that did not come up is the problem.

Well the ports declare the conflict. If MacPorts didn't notify you of it, that would be a bug in MacPorts base, though I don't think I've encountered it before.

comment:7 Changed 8 years ago by dstrubbe (David Strubbe)

Component: portsbase
Port: libgcc libgcc-devel removed

I ran with -d and I get:

DEBUG: Found Dependency: receipt exists for libgcc
DEBUG: Can't install libgcc-devel because conflicting ports are active: libgcc
    while executing
"_mporterrorifconflictsinstalled $mport"
    (procedure "mportdepends" line 17)
    invoked from within
"mportdepends $mport $target"
    (procedure "mportexec" line 48)
    invoked from within
"mportexec $mport $target"
Warning: Failed to execute portfile from registry for libgcc-devel @6-20160410_0
--->  Activating libgcc-devel @6-20160410_0

So, the "failure to execute the Portfie" is in fact the meaningful error, but which is not being shown to the user, and is not stopping the activation process. That is the base bug, evidently.

comment:8 Changed 7 years ago by akimd (Akim Demaille)

Cc: akimd added

comment:9 Changed 7 years ago by kurthindenburg (Kurt Hindenburg)

Owner: changed from mww@… to macports-tickets@…
Status: newassigned

comment:10 Changed 5 years ago by ryandesign (Ryan Carsten Schmidt)

Summary: libgcc and libgcc-devel interfereBase does not prevent conflicting port activation when portfile from registry cannot be executed
Note: See TracTickets for help on using tickets.