Skip to content

Commit

Permalink
Redo pkg-config handling with library collecting
Browse files Browse the repository at this point in the history
pkg-config only handled PKG_CONFIG_SYSROOT_DIR as the stage dir
providing many issues when using packages from installdir for a part
and also build-packages from the host.

For a full implementation, elf dependency tracking from the host
to the snap is also implemented here

Add dependency tracking and use it to determine LD_LIBRARY_PATH.

Also unpacked stage-packages into an intermediate area in pull()
and copied them into installdir in build() to make per-step
cleaning work better.

LP: #1549570

Signed-off-by: Sergio Schvezov <sergio.schvezov@ubuntu.com>
Signed-off-by: Kyle Fazzari <kyle@canonical.com>
  • Loading branch information
sergiusens committed Mar 29, 2016
1 parent b18e4e9 commit 5ba5674
Show file tree
Hide file tree
Showing 14 changed files with 995 additions and 132 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Expand Up @@ -17,7 +17,7 @@ before_install:
- sudo apt-get -qq update
- sudo apt-get install -y python3-coverage python3-distutils-extra
install:
- pip install docopt fixtures flake8 jsonschema lxml mccabe petname pexpect python-apt pyxdg pyyaml py3-progressbar requests requests-oauthlib requests-toolbelt responses setuptools ssoclient testscenarios
- pip install docopt fixtures flake8 jsonschema lxml mccabe petname pexpect python-apt pyxdg pyyaml py3-progressbar requests requests-oauthlib requests-toolbelt responses setuptools ssoclient testscenarios file-magic
script:
- ./runtests.sh $TEST_SUITE
after_success:
Expand Down
11 changes: 11 additions & 0 deletions HACKING.md
Expand Up @@ -62,3 +62,14 @@ environment variables:
- **tests:** Tests, obviously. `unit` holds Python unit tests and `plainbox` holds plainbox integration tests.

- **snapcraft:** The Python module that houses the core snapcraft logic. The `plugins` subdirectory holds the code for each plugin.

### Updating library filter

To update the list of libraries that get excluded from inclusion into a
snap run:

./libraries/generate_lib_list.py libraries/<release>

e.g.; to update the list for 16.04,

./libraries/generate_lib_list.py libraries/16.04
3 changes: 3 additions & 0 deletions debian/control
Expand Up @@ -4,12 +4,14 @@ Priority: extra
Maintainer: Snapcraft Team <snappy-devel@lists.ubuntu.com>
Build-Depends: debhelper (>= 9),
dh-python,
pkg-config,
python3 (>= 3.4),
python3-apt,
python3-docopt,
python3-fixtures,
python3-jsonschema,
python3-lxml,
python3-magic,
python3-petname,
python3-pkg-resources,
python3-progressbar,
Expand All @@ -32,6 +34,7 @@ Depends: python3-apt,
python3-docopt,
python3-jsonschema,
python3-lxml,
python3-magic,
python3-petname,
python3-pkg-resources,
python3-progressbar,
Expand Down
9 changes: 1 addition & 8 deletions examples/godd/snapcraft.yaml
Expand Up @@ -14,11 +14,4 @@ parts:
plugin: go
source: https://github.com/mvo5/godd
source-type: git
build-packages: [gcc]
stage-packages: [libgudev-1.0-dev]
snap:
- usr/lib/x86_64-linux-gnu/libgudev-1.0.so*
- usr/lib/x86_64-linux-gnu/libobject-2.0.so*
- usr/lib/x86_64-linux-gnu/libglib-2.0.so*
- lib/x86_64-linux-gnu/libglib-2.0.so*
- bin/godd*
build-packages: [gcc, libgudev-1.0-dev]
3 changes: 1 addition & 2 deletions examples/opencv/snapcraft.yaml
Expand Up @@ -3,7 +3,7 @@ version: 1.0
summary: Use OpenCV and OpenGL
description: A simple OpenCV example

build-packages: [gcc, g++, libc6-dev]
build-packages: [gcc, g++, libc6-dev, libopencv-dev]

apps:
example:
Expand All @@ -13,4 +13,3 @@ parts:
example:
plugin: cmake
source: src
stage-packages: [libopencv-dev]
323 changes: 323 additions & 0 deletions libraries/16.04
@@ -0,0 +1,323 @@
Iso.pl
ld-linux-x86-64.so.2
ld-linux-x86-64.so.2
ld-linux.so.2
ld-linux.so.2
libBrokenLocale.so.1
libBrokenLocale.so.1
libGeoIP.so.1
libGeoIP.so.1.6.9
libacl.so.1
libacl.so.1.1.0
libanl.so.1
libanl.so.1
libapparmor.so.1
libapparmor.so.1.3.0
libapt-inst.so.2.0
libapt-inst.so.2.0.0
libapt-pkg.so.5.0
libapt-pkg.so.5.0.0
libasprintf.so.0
libasprintf.so.0.0.0
libattr.so.1
libattr.so.1.1.0
libaudit.so.1
libaudit.so.1.0.0
libblkid.so.1
libblkid.so.1.1.0
libbsd.so.0
libbsd.so.0.8.2
libbz2.so.1
libbz2.so.1.0
libbz2.so.1.0.4
libc.so.6
libc.so.6
libcap-ng.so.0
libcap-ng.so.0.0.0
libcap.so.2
libcap.so.2.24
libcgmanager.so.0
libcgmanager.so.0.0.0
libcidn.so.1
libcidn.so.1
libcom_err.so.2
libcom_err.so.2.1
libcrypt.so.1
libcrypt.so.1
libcrypto.so.1.0.0
libcryptsetup.so.4
libcryptsetup.so.4.6.0
libdbus-1.so.3
libdbus-1.so.3.14.6
libdebconfclient.so.0
libdebconfclient.so.0.0.0
libdevmapper.so.1.02.1
libdl.so.2
libdl.so.2
libdns.so.162
libdns.so.162.1.1
libe2p.so.2
libe2p.so.2.3
libedit.so.2
libedit.so.2.0.53
libefiboot.so.0
libefiboot.so.0.23
libefivar.so.0
libefivar.so.0.23
libestr.so.0
libestr.so.0.0.0
libexpat.so.1
libexpat.so.1.6.0
libexpatw.so.1
libexpatw.so.1.6.0
libext2fs.so.2
libext2fs.so.2.4
libfdisk.so.1
libfdisk.so.1.1.0
libffi.so.6
libffi.so.6.0.4
libform.so.5
libform.so.5.9
libformw.so.5
libformw.so.5.9
libfreetype.so.6
libfreetype.so.6.12.1
libfuse.so.2
libfuse.so.2.9.4
libfwup.so.0
libfwup.so.0.5
libgcc_s.so.1
libgcc_s.so.1
libgcrypt.so.20
libgcrypt.so.20.0.5
libgdbm.so.3
libgdbm.so.3.0.0
libgdbm_compat.so.3
libgdbm_compat.so.3.0.0
libgio-2.0.so.0
libgio-2.0.so.0.4706.0
libglib-2.0.so.0
libglib-2.0.so.0.4706.0
libgmodule-2.0.so.0
libgmodule-2.0.so.0.4706.0
libgmp.so.10
libgmp.so.10.3.0
libgnutls-openssl.so.27
libgnutls-openssl.so.27.0.2
libgnutls.so.30
libgnutls.so.30.6.1
libgobject-2.0.so.0
libgobject-2.0.so.0.4706.0
libgpg-error.so.0
libgpg-error.so.0.17.0
libgssapi_krb5.so.2
libgssapi_krb5.so.2.2
libgthread-2.0.so.0
libgthread-2.0.so.0.4706.0
libhistory.so.6
libhistory.so.6.3
libhogweed.so.4
libhogweed.so.4.2
libicudata.so.55
libicudata.so.55.1
libicui18n.so.55
libicui18n.so.55.1
libicuio.so.55
libicuio.so.55.1
libicule.so.55
libicule.so.55.1
libiculx.so.55
libiculx.so.55.1
libicutest.so.55
libicutest.so.55.1
libicutu.so.55
libicutu.so.55.1
libicuuc.so.55
libicuuc.so.55.1
libidn.so.11
libidn.so.11.6.15
libip4tc.so.0
libip4tc.so.0.1.0
libip6tc.so.0
libip6tc.so.0.1.0
libiptc.so.0
libiptc.so.0.0.0
libisc.so.160
libisc.so.160.0.0
libjson-c.so.2
libjson-c.so.2.0.0
libk5crypto.so.3
libk5crypto.so.3.1
libkeyutils.so.1
libkeyutils.so.1.5
libkmod.so.2
libkmod.so.2.3.0
libkrb5.so.3
libkrb5.so.3.3
libkrb5support.so.0
libkrb5support.so.0.1
liblockfile.so.1
liblockfile.so.1.0
liblz4.so.1
liblz4.so.1.7.1
liblzma.so.5
liblzma.so.5.0.0
liblzo2.so.2
liblzo2.so.2.0.0
libm.so.6
libm.so.6
libmenu.so.5
libmenu.so.5.9
libmenuw.so.5
libmenuw.so.5.9
libmnl.so.0
libmnl.so.0.1.0
libmount.so.1
libmount.so.1.1.0
libmpdec.so.2
libmpdec.so.2.4.1
libncurses.so.5
libncurses.so.5.9
libncursesw.so.5
libncursesw.so.5.9
libnetfilter_conntrack.so.3
libnetfilter_conntrack.so.3.5.0
libnettle.so.6
libnettle.so.6.2
libnewt.so.0.52
libnewt.so.0.52.18
libnfnetlink.so.0
libnfnetlink.so.0.2.0
libnih-dbus.so.1
libnih-dbus.so.1.0.0
libnih.so.1
libnih.so.1.0.0
libnl-3.so.200
libnl-3.so.200.22.0
libnl-genl-3.so.200
libnl-genl-3.so.200.22.0
libnsl.so.1
libnsl.so.1
libnss_compat.so.2
libnss_compat.so.2
libnss_dns.so.2
libnss_dns.so.2
libnss_extrausers.so.2
libnss_extrausers.so.2
libnss_files.so.2
libnss_files.so.2
libnss_hesiod.so.2
libnss_hesiod.so.2
libnss_myhostname.so.2
libnss_nis.so.2
libnss_nis.so.2
libnss_nisplus.so.2
libnss_nisplus.so.2
libopencryptoki.so.0
libopencryptoki.so.0
libopencryptoki.so.0.0.0
libopencryptoki.so.0.0.0
libp11-kit.so.0
libp11-kit.so.0.1.0
libpam.so.0
libpam.so.0.83.1
libpam_misc.so.0
libpam_misc.so.0.82.0
libpamc.so.0
libpamc.so.0.82.1
libpanel.so.5
libpanel.so.5.9
libpanelw.so.5
libpanelw.so.5.9
libparted.so.2
libparted.so.2.0.1
libpcap.so.0.8
libpcap.so.1.7.4
libpcre.so.3
libpcre.so.3.13.2
libpcreposix.so.3
libpcreposix.so.3.13.2
libpcsclite.so.1
libpcsclite.so.1.0.0
libpkcs11_cca.so.0
libpkcs11_cca.so.0
libpkcs11_cca.so.0.0.0
libpkcs11_cca.so.0.0.0
libpkcs11_sw.so.0
libpkcs11_sw.so.0
libpkcs11_sw.so.0.0.0
libpkcs11_sw.so.0.0.0
libpkcs11_tpm.so.0
libpkcs11_tpm.so.0
libpkcs11_tpm.so.0.0.0
libpkcs11_tpm.so.0.0.0
libpng12.so.0
libpng12.so.0
libpng12.so.0.54.0
libpopt.so.0
libpopt.so.0.0.0
libprocps.so.4
libprocps.so.4.0.0
libpthread.so.0
libpthread.so.0
libreadline.so.6
libreadline.so.6.3
libresolv.so.2
libresolv.so.2
librt.so.1
librt.so.1
libseccomp.so.2
libseccomp.so.2.2.3
libselinux.so.1
libsemanage.so.1
libsepol.so.1
libslang.so.2
libslang.so.2.3.0
libsmartcols.so.1
libsmartcols.so.1.1.0
libsqlite3.so.0
libsqlite3.so.0.8.6
libss.so.2
libss.so.2.0
libssl.so.1.0.0
libstdc++.so.6
libstdc++.so.6.0.21
libstdc++.so.6.0.21-gdb.py
libsudo_util.so.0
libsudo_util.so.0.0.0
libsystemd.so.0
libsystemd.so.0.14.0
libtasn1.so.6
libtasn1.so.6.5.1
libthread_db.so.1
libthread_db.so.1
libtic.so.5
libtic.so.5.9
libtinfo.so.5
libtinfo.so.5.9
libtpm_unseal.so.1
libtpm_unseal.so.1.0.0
libtspi.so.1
libtspi.so.1.2.0
libudev.so.1
libudev.so.1.6.4
libulockmgr.so.1
libulockmgr.so.1.0.1
libusb-0.1.so.4
libusb-0.1.so.4.4.4
libustr-1.0.so.1
libustr-1.0.so.1.0.4
libutil.so.1
libutil.so.1
libuuid.so.1
libuuid.so.1.3.0
libwrap.so.0
libwrap.so.0.7.6
libxml2.so.2
libxml2.so.2.9.3
libxtables.so.11
libxtables.so.11.0.0
libyaml-0.so.2
libyaml-0.so.2.0.4
libz.so.1
libz.so.1.2.8

0 comments on commit 5ba5674

Please sign in to comment.