Mac – Why does installing Caffe via Macports install unrelated ports

installmacports

When installing the Caffe port from Macports, it also tries to install libgcc-devel, which takes hours to build. Curiously, I could not figure out which dependency needs this. I ran

port rdeps Caffe

and out came this (summary: there is no libgcc-develin there):

The following ports are dependencies of caffe @20150717_0+cpu+openblas+python27:
  google-glog
    gflags
  protobuf-cpp
    autoconf
      xz
        libiconv
          gperf
        gettext
          expat
          ncurses
    automake
    libtool
    zlib
  leveldb
    snappy
      lzo2
  lmdb
  boost
    bzip2
    icu
    python27
      openssl
      sqlite3
        libedit
      db48
      python_select
      python2_select
  hdf5
  opencv
    unzip
    cmake
      curl
        pkgconfig
        curl-ca-bundle
          perl5
            perl5.16
              gdbm
      libarchive
        libxml2
    libpng
    jpeg
    jasper
    tiff
    ilmbase
      gsed
    openexr
    ffmpeg
      gmake
      texinfo
        help2man
          perl5.22
          p5.22-locale-gettext
      libvpx
        yasm
      lame
      libvorbis
        libogg
      libopus
      libtheora
      libmodplug
      schroedinger
        orc
          coreutils
            gmp
      libass
        fribidi
          glib2
            libffi
        fontconfig
          freetype
        enca
      libbluray
      gnutls
        libidn
        libtasn1
        p11-kit
          desktop-file-utils
            popt
          libxslt
        nettle
      openjpeg15
        lcms2
        jbigkit
      speex
      libsdl
        xorg-libXext
          xorg-util-macros
          xorg-libX11
            xorg-xtrans
            xorg-bigreqsproto
            xorg-xcmiscproto
            xorg-xextproto
            xorg-xf86bigfontproto
            xorg-inputproto
            xorg-libXdmcp
              xorg-xproto
            xorg-libXau
            xorg-libxcb
              xorg-xcb-proto
              xorg-libpthread-stubs
            xorg-kbproto
        xorg-libXrandr
          xrender
            xorg-renderproto
          xorg-randrproto
      xorg-libXfixes
        xorg-fixesproto
      XviD
      x264
  szip
  OpenBLAS
    dragonegg-3.4-gcc-4.8
      llvm-3.4
        llvm_select
      gcc48
        cctools
          libunwind-headers
          llvm-3.5
            libcxx
        cloog
          isl
        ld64
          ld64-latest
            dyld-headers
            libmacho-headers
        libgcc
          libmpc
            mpfr
        gcc_select
  py27-cython
    cython_select
  py27-numpy
    gcc49
    fftw-3
    py27-nose
      py27-setuptools
      nosetests_select
  py27-scipy
    swig-python
      bison
        m4
        bison-runtime
      swig
        pcre
  py27-scikit-image
    py27-six
    py27-matplotlib
      qhull
      py27-dateutil
        py27-tz
      py27-parsing
      py27-pyobjc-cocoa
        py27-pyobjc
          py27-py2app
            py27-macholib
              py27-modulegraph
                py27-altgraph
      py27-tornado
        py27-backports-ssl_match_hostname
          py27-backports
        py27-certifi
      py27-tkinter
        tk
          tcl
      py27-cairo
        cairo
          libpixman
          xorg-xcb-util
    py27-networkx
      py27-decorator
    py27-Pillow
      lcms
      webp
      openjpeg
  py27-scikit-learn
  py27-ipython
    gzip
    py27-readline
    py27-scientific
      netcdf
    py27-zmq
      zmq
    py27-jinja2
      py27-markupsafe
    py27-requests
    py27-sphinx
      py27-docutils
        py27-roman
      py27-alabaster
      py27-babel
      py27-pygments
      py27-snowballstemmer
      py27-sphinx_rtd_theme
      sphinx_select
    py27-jsonschema
      py27-vcversioner
      py27-functools32
    py27-mistune
    ipython_select
  py27-h5py
    py27-pkgconfig
  py27-pandas
    py27-tables
      py27-numexpr
      blosc
    py27-bottleneck
  py27-protobuf
    py27-gflags
  py27-leveldb
  wget

Running

port rdeps --full caffe

lists libgcc several times, but not libgcc-devel.

So how come this port installs libgcc-devel although it does not depend on it?

Best Answer

Running port info libgcc-devel declares it to be just what one would expect: a pre-release libgcc beta which, likewise just as one would expect, conflicts with the current release version of libgcc.

I cannot help but believe the -devel installation you experienced was unintended. This is why: While it's already improbable enough that the Caffe devs would include a pre-release beta in the dependency chain of their product, and while that prospect becomes all the more unlikely when rdeps does not encounter libgcc-devel, it is clearly ludicrous to believe Caffe would take the risk of colliding with the real GNU compiler collection.

Not long ago, yet I forget the project, autotools (autoconf, automake) consistently misinterpreted OS X 10.10 kernels as 10.1 versions, and configured their builds for that environment.

What do you get when you run port rdependents libgcc-devel? Have you opened a ticket? Parsed the makefile?