Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#48461 closed defect (invalid)

Installing caffe installs libgcc-devel despite not depending on it.

Reported by: jrd-freak@… Owned by: humem (humem)
Priority: Normal Milestone:
Component: ports Version: 2.3.3
Keywords: Cc: Ionic (Mihai Moldovan)
Port: caffe

Description

When runnign sudo port install caffe, I spent hours building libgcc-devel for some reason. I could not believe it really depends on it, so I ran port rdeps --full caffe | grep libgcc-devel. There is no libgcc-devel in the output.

See my question on apple.SE: http://apple.stackexchange.com/q/197287/96765.

Attached the full rdeps of caffe

Attachments (1)

rdeps_caffe.txt (644.4 KB) - added by jrd-freak@… 9 years ago.

Download all attachments as: .zip

Change History (8)

Changed 9 years ago by jrd-freak@…

Attachment: rdeps_caffe.txt added

comment:1 Changed 9 years ago by mf2k (Frank Schima)

Cc: hum@… removed
Keywords: dependencies removed
Owner: changed from macports-tickets@… to hum@…

comment:2 Changed 9 years ago by Ionic (Mihai Moldovan)

There's some stuff depending on libcgcc. Note that libgcc and libgcc-devel are mutually exclusive and you probably have gcc6 installed, which depends on libgcc-devel.

comment:3 in reply to:  2 Changed 9 years ago by jrd-freak@…

Replying to ionic@…:

There's some stuff depending on libcgcc. Note that libgcc and libgcc-devel are mutually exclusive and you probably have gcc6 installed, which depends on libgcc-devel.

Indeed I have. So this means I cannot install libgcc and libgcc-devel is used in place of libgcc wherever something depends on it?

comment:4 Changed 9 years ago by Ionic (Mihai Moldovan)

Yes, exactly. That is, If the dependencies are set up correctly. But if a port tries to install libgcc directly and is not also satisfied by libgcc-devel, it's most likely a bug.

Can I close this as invalid?

comment:5 Changed 9 years ago by jrd-freak@…

I suppose so, as this is ultimately user error. I wonder though how exactly I could have found out about it. Does installing libgcc-devel inform me at some point that it will deactivate libgcc? I do not remember, but I did not have to do anything to resolve the conflict, as far as I remember. Also, is it generally the case that such beta-ports are used as drop-in replacements in conflict situations or is it just libgcc? Where can I find documentation on the topic?

comment:6 Changed 9 years ago by Ionic (Mihai Moldovan)

Resolution: invalid
Status: newclosed

Maybe you never had libgcc installed? What does port installed libgcc say?

I'm not sure whether conflicting ports get automatically deactivated, AFAIK that's only true for replaced ports.

GCC is a bit special, in that the libraries are split off into libgcc* ports. We currently have libgcc (which is the libraries taken off the current stable version - 5.2), libgcc45 (from GCC 4.5, legacy) and libgcc-devel (from GCC 6 - currently unreleased.)

Naturally, all GCC ports depend upon some libgcc port, but most are satisfied by both libgcc and libgcc-devel. libgcc45 is special in the sense that it is co-installable with the other two and does not conflict with them, but it's also only needed for gcc45 (and maybe other non-GCC ports, but I haven't checked.)

gcc6 currently (hard) depends on libgcc-devel. This will change once a stable version of gcc6 is released. Once that's true, libgcc will be updated to provide the libraries of GCC 6, while libgcc-devel will be providing libraries of GCC 7. gcc6 will depend on either libgcc or libgcc-devel and gcc7 will depend on libgcc-devel only.

comment:7 Changed 9 years ago by Ionic (Mihai Moldovan)

Cc: ionic@… added

More specifically, take gcc5 for instance. It has this depends line: path:lib/libgcc/libgcc_s.1.dylib:libgcc.

This means that, as long as the file ${prefix}/lib/libgcc/libgcc_s.1.dylib exists (which both libgcc and libgcc-devel provide - hence the conflict), the dependency is satisfied. Otherwise, libgcc will be installed automatically.

(CC'ing myself, because I closed the ticket.)

Note: See TracTickets for help on using tickets.