libcapsule (0.20201022.0-0co1) upstream; urgency=medium [ Ludovico de Nittis ] * capture-libs: Skip libs with unmet dependencies when "if exists" flag is set. If we have the CAPTURE_FLAG_IF_EXISTS option flag, we should not propagate an error if we are not able to find some dependencies of a library. Instead we should just skip it. This fixes an error that some users reported because they had some leftover unused libraries from the NVIDIA proprietary driver, and libcapsule reported an error while trying to capture their (missing) dependencies. -- Simon McVittie <smcv@collabora.com> Thu, 22 Oct 2020 10:05:30 +0100 libcapsule (0.20200921.0-0co1) upstream; urgency=medium * debian: Delete files that were generated by gtk-doc during dist. This fixes failure to build from the tarball with gtk-doc >= 1.30, when the tarball was generated with older gtk-doc. -- Simon McVittie <smcv@collabora.com> Mon, 21 Sep 2020 19:17:22 +0100 libcapsule (0.20200908.0-0co1) upstream; urgency=medium [ Ludovico de Nittis ] * utils: Add public/private knowledge about symbol versions and symbols. We are now able to list the symbol versions and/or symbols that are known to be public/private. This is especially useful for comparing libraries that removed symbol versions, or symbols, from one release to another. As this already happened multiple times in the past, like for example with `libdrm_nouveau.so.2` or `libedit.so.2`. -- Simon McVittie <smcv@collabora.com> Tue, 08 Sep 2020 18:48:30 +0100 libcapsule (0.20200708.0-0co1) upstream; urgency=medium [ Ludovico de Nittis, Simon McVittie ] * utils: Add functions to compare symbols and versions with libelf. When two libraries have the same numeric tail we were not able to reliably determine which one was the newer. In particular, many distributions install libgcc_s.so.1 as a regular file, rather than a symlink to a versioned name, so library_cmp_by_name() can't work. [ Simon McVittie ] * ci: Run CI with UndefinedBehaviourSanitizer and AddressSanitizer * tests: Work around a binutils behaviour change (see #964457) * capture-libs: Make library comparison configurable on the command-line. This is primarily useful for testing and experimenting. * capture-libs: Add --library-knowledge option. This gives capsule-capture-libs a source of library-specific knowledge, which we can use to choose the correct library. (T16562) -- Simon McVittie <smcv@collabora.com> Wed, 08 Jul 2020 13:49:28 +0100 libcapsule (0.20200624.0-0co1) upstream; urgency=medium * ld-libs: Always clear ldlibs->needed entry if ld_lib_open() fails, fixing mishandling of libraries that are newer in the container but only for one architecture * build: Check that the compiler and --host are consistent * build: Silence unwanted warnings * Add basic Gitlab-CI on Debian (with deb-build-snapshot) and Arch Linux * capture-libs: Expand list of known ld.so names * capture-libs: Allow patterns to be read from a file * tests: Fix Debianisms * tests/capture-libs: Tolerate path to ld.so not being fully resolved * capsule-malloc: Remove duplicate typedef for mstate, for clang 8 * Distinguish between enabling the library and enabling shared libraries. Some tests for capsule-capture-libs will need to compile shared libraries, even if libcapsule itself is not built. * tests: Make older linkers happy with one of our test libraries * tests: Cope with newer versions of GNU make * debian: Tell git-version-gen that we are behaving as an upstream -- Simon McVittie <smcv@collabora.com> Wed, 24 Jun 2020 19:06:02 +0100 libcapsule (0.20190926.0-0co1) upstream; urgency=medium * utils: Add --help, --version and GNU argument parsing to all tools * capture-libs: Clarify by introducing more temporaries * capture-libs: Factor out library_cmp_by_name() * capture-libs: Treat unversioned libraries as in indeterminate order. This avoids always choosing the container version of libgcc_s.so.1 when using a Debian-derived container on Fedora, even if the host version is newer. -- Simon McVittie <smcv@collabora.com> Thu, 26 Sep 2019 16:45:42 +0100 libcapsule (0.20190724.0-0co1) upstream; urgency=medium * process_pt_dynamic: Add missing 'break' to DT_JMPREL case * safe_strncpy: Work around -Werror=stringop-truncation * Add some notes on building from git on older host systems * capture-libs: Fix a misleading debug message * capture-libs: Don't capture results of path-match if they are other ABIs -- Simon McVittie <smcv@collabora.com> Wed, 24 Jul 2019 17:13:32 +0100 libcapsule (0.20190402.0-0co1) upstream; urgency=medium * debian: Install tools with canonicalized multiarch prefix * debian: Build relocatable versions of libcapsule binary tools * debian: Use dh_missing --fail-missing * Build *.1 man pages with xsltproc even if gtk-doc is disabled * shim: Add a minimal fallback version of PKG_CHECK_VAR * Skip GLib tests when GLib is older than 2.38 -- Simon McVittie <smcv@collabora.com> Tue, 02 Apr 2019 17:32:19 +0100 libcapsule (0.20190130.0-0co1) upstream; urgency=medium * Be more compatible with older distributions: - debian: Be compatible with Ubuntu 14.04's dpkg - Compile on older glibc that didn't have secure_getenv() - dump: Avoid naming collision with basename() - capture-libs: Avoid shadowing global abs() - process-pt-dynamic: Don't print name of R_386_SIZE32 if undefined - devhelp2man: Add minimal support for older gtk-doc versions - debian: Install libglib2.0-dev if building documentation, as required by older gtk-doc versions - debian: Use macros from libcapsule itself to build libGL proxy - tests/utils.c: Tolerate archaic GLib versions * autogen.sh: Install macros into m4/ * capsule-init-project: Create m4/ * debian: Separate documentation into libcapsule-doc * debian: Don't build with fatal warnings * debian: Explicitly disable silent makefile rules, which debhelper didn't always do for us * build: Be more specific about the tokens we don't want to see, to future-proof against newer autoconf-archive versions * ci: Check out the right git repository * CapsuleTest: Tolerate bwrap not being installed at all * tests/capture-libs.pl: Make executable -- Simon McVittie <smcv@collabora.com> Wed, 30 Jan 2019 15:48:43 +0000 libcapsule (0.20180517.0-0co1) upstream; urgency=medium * build: Bundle updated m4 macros in source releases so that they can be built on older host OSs that do not have a recent autoconf-archive * capture-libs test: Cope with i686, cmov CPU capability flags * tests: Fix perl warnings for shadowing a local variable * Fix cross-compilation for i386 on amd64: - Architecture-qualify perl as :any - Only build GLib-based tests on amd64 since libglib2.0-dev was not multiarch co-installable until recently - tests: Work when compiling for i386 on amd64 * ci: Run autopkgtests on Debian stretch and SteamOS brewmaster -- Simon McVittie <smcv@collabora.com> Thu, 17 May 2018 21:35:21 +0100 libcapsule (0.20180430.0-0co1) upstream; urgency=medium [ Vivek Das Mohapatra ] * Fix a potential segfault in the ELF memory dumper * Replace the free/*alloc cluster inside the capsule * Improve API documentation * Improve debug output * debian: Ignore some package/build debris [ Simon McVittie ] * Add capture-libs tool and use it for tests/manual/gl.pl * Don't stop reading symbol tables at an unknown ELFW_ST_TYPE, ELFW_ST_BIND * Improve error propagation * Improve debug output * utils: Use getenv rather than secure_getenv to reduce glibc dependencies (libcapsule itself still uses secure_getenv) * libGL: Use the symbol set from GLVND libGL * libGL: Add shims for libXi, libgbm, libGLX, libEGL, libOpenGL, libGLESv2 * libGL: Don't exclude misc X libraries from encapsulation * tests/manual/gl.pl: Bind-mount more host files into the container * tests/manual/gl.pl: Merge /gl and /updates into /overrides * tests/manual/gl.pl: Make anything from the host available via /run/host * build: Install capsule-elf-dump * build: Consolidate lists of GL shims using patsubst * build: Add maintainer-update-gl-shims convenience target * build: Make host prefix for tools modifiable * build: Add a build option to add a -rpath to the tools * build: Allow shared library to be disabled, if you only want the tools * build: Don't run a test program, just link it, to help cross-compiling * ci: Add a Jenkinsfile to build libcapsule on SteamOS * debian: Add more test dependencies -- Simon McVittie <smcv@collabora.com> Mon, 30 Apr 2018 14:35:22 +0100 libcapsule (0.20171116.0-0co1) upstream; urgency=medium [ Vivek Das Mohapatra ] * Fix NULL dereferences after dlclose() * Improve dlsym() emulation [ Simon McVittie ] * tests/manual/gl.pl: Provide finer-grained control over libraries * tests/manual/gl.pl: Provide shortcuts for plausible approaches to Mesa and Nvidia graphics stacks * Adjust packaging so libcapsule-tools can be installed without libcapsule-dev, for better ability to test multiarch containers - capsule.pc has been replaced by libcapsule.pc (library) and libcapsule-tools.pc (tools) -- Simon McVittie <smcv@collabora.com> Thu, 16 Nov 2017 13:42:22 +0000 libcapsule (0.20171113.0-0co1) upstream; urgency=medium [ Vivek Das Mohapatra ] * Allow multiple encapsulated libraries, sharing one namespace per prefix * Generate working Autotools projects for libraries with hyphen/minus in their names * Handle DT_REL entries * Cope with shim libraries being dlclose()d [ Simon McVittie ] * Change capsule-init-project invocation so it can generate multiple shim libraries per Autotools project * Mark libcapsule as non-deletable so its exported functions can never disappear from library users' relocations * Always use the same dlopen() implementation outside the capsule * Automatically exclude glibc from encapsulation * Install libGL shims in a new libcapsule-libgl1-shims binary package * Install development tools into $(bindir) -- Simon McVittie <smcv@collabora.com> Mon, 13 Nov 2017 18:57:50 +0000 libcapsule (0.20171019.0-0co1) upstream; urgency=medium [ Vivek Das Mohapatra ] * Initial release -- Simon McVittie <smcv@collabora.com> Thu, 19 Oct 2017 16:18:55 +0100