Uploaded image for project: 'Data Management'
  1. Data Management
  2. DM-3231

use pkg-config to link against thirdparty dependencies

    Details

    • Type: Story
    • Status: In Progress
    • Resolution: Unresolved
    • Fix Version/s: None
    • Component/s: Continuous Integration
    • Labels:
      None

      Description

      A number of the third-party dependencies provide a .pc file which is installed as part of the standard eupspkg build. While not all of these are linked against directly (some are deps of deps), this appears to be reasonable place to start an incremental conversion from sconsUtils .cfg -> pkg-config.

      .pc files which are already present:

      ./Linux64/cfitsio/3360.lsst1/lib/pkgconfig/cfitsio.pc
      ./Linux64/wcslib/4.14+7/lib/pkgconfig/wcslib.pc
      ./Linux64/apr/1.3.3.lsst2/lib/pkgconfig/apr-1.pc
      ./Linux64/libevent/2.0.16-stable-1-g7e53c5e/lib/pkgconfig/libevent.pc
      ./Linux64/libevent/2.0.16-stable-1-g7e53c5e/lib/pkgconfig/libevent_pthreads.pc
      ./Linux64/libevent/2.0.16-stable-1-g7e53c5e/lib/pkgconfig/libevent_openssl.pc
      ./Linux64/fftw/3.3.3/lib/pkgconfig/fftw3.pc
      ./Linux64/anaconda/2.2.0/lib/pkgconfig/cairo-fc.pc
      ...
      ./Linux64/anaconda/2.2.0/lib/pkgconfig/zlib.pc
      ./Linux64/gsl/1.16.lsst1/lib/pkgconfig/gsl.pc
      ./Linux64/apr_util/1.3.4.lsst2/lib/pkgconfig/apr-util-1.pc
      ./Linux64/mysqlproxy/0.8.2+7/lib/pkgconfig/mysql-proxy.pc
      ./Linux64/mysqlproxy/0.8.2+7/lib/pkgconfig/mysql-chassis.pc
      ./Linux64/log4cxx/0.10.0.lsst3/lib/pkgconfig/liblog4cxx.pc
      ./Linux64/protobuf/2.4.1.lsst1+3/lib/pkgconfig/protobuf.pc
      ./Linux64/protobuf/2.4.1.lsst1+3/lib/pkgconfig/protobuf-lite.pc
      ./Linux64/activemqcpp/10.1/lib/pkgconfig/activemq-cpp.pc
      

      The `pkgconfig` package will need to be added to the system deps list. It should be generally present on any linux distro. We should double check that this is also the case with homebrew.

      `pkg-config` uses `$PKG_CONFIG_PATH to search for .pc files. A snippet similar to the following will need to be added to the .table files for eups products which provide a .pc.

      envPrepend(PKG_CONFIG_PATH, ${PRODUCT_DIR}/lib/pkgconfig)
      

      scons has some minimal support for parsing the output from pkg-config but compile flag merging will need to be tested. E.g.

      https://bitbucket.org/scons/scons/wiki/UsingPkgConfig

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jhoblitt Joshua Hoblitt
                Reporter:
                jhoblitt Joshua Hoblitt
                Watchers:
                Darko Jevremovic, Frossie Economou, Joshua Hoblitt, Kian-Tat Lim, Tim Jenness
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:

                  Summary Panel