From 97334f4cc945ec6c77eb9ccb9091b3377337a2dc Mon Sep 17 00:00:00 2001 From: Simon McVittie <smcv@collabora.com> Date: Fri, 10 Nov 2017 16:02:46 +0000 Subject: [PATCH] debian: Install libGL shims in /usr/lib/*/libcapsule/shims It's undesirable to do this as part of the upstream build, because libtool doesn't let us decouple the target directory from the rpath; but we can do it in a package build. Signed-off-by: Simon McVittie <smcv@collabora.com> --- data/capsule-mkstublib | 5 ++-- debian/.gitignore | 2 ++ debian/libcapsule-dev.examples | 1 + debian/libcapsule-tests.install | 1 + debian/rules | 42 +++++++++++++++++++++++++++++++++ 5 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 debian/libcapsule-dev.examples diff --git a/data/capsule-mkstublib b/data/capsule-mkstublib index 6dd127c70..435f4b643 100755 --- a/data/capsule-mkstublib +++ b/data/capsule-mkstublib @@ -30,6 +30,9 @@ usage () cat << EOF Usage: $me [OPTIONS] TARGET EXCLUDES EXPORTS OUTPUT [DSO-VERSION [TREE]]" Options: + --capsule-pkgdatadir=PATH + Use supporting files from PATH + [default: libcapsule's \${pkgdatadir}] --capsule-symbols-tool=PATH Use replacement capsule-symbols(1) --symbols-from=PATH Use symbols from this file @@ -173,8 +176,6 @@ then symbol_file=${proxy_src%.c}.symbols; fi -sharedir=$($PKG_CONFIG --variable=makeinc capsule) - exec >$proxy_src.tmp; echo '#include "capsule/capsule-shim.h"' diff --git a/debian/.gitignore b/debian/.gitignore index ac17ff818..8d3085c41 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -3,6 +3,8 @@ /*.substvars /autoreconf* /files +/libGL-proxy/ +/libGL-proxy-build/ /libcapsule-dev /libcapsule-dev-bin /libcapsule-tests diff --git a/debian/libcapsule-dev.examples b/debian/libcapsule-dev.examples new file mode 100644 index 000000000..06bcb71ab --- /dev/null +++ b/debian/libcapsule-dev.examples @@ -0,0 +1 @@ +debian/libGL-proxy diff --git a/debian/libcapsule-tests.install b/debian/libcapsule-tests.install index c564fec23..f7923db25 100644 --- a/debian/libcapsule-tests.install +++ b/debian/libcapsule-tests.install @@ -1,2 +1,3 @@ +usr/lib/*/libcapsule/shims usr/lib/libcapsule/installed-tests/libcapsule usr/share/installed-tests/libcapsule diff --git a/debian/rules b/debian/rules index c42c51417..5dd1d6515 100755 --- a/debian/rules +++ b/debian/rules @@ -10,8 +10,50 @@ confflags = --libexecdir=\$${exec_prefix}/lib/libcapsule --enable-gtk-doc override_dh_auto_configure: dh_auto_configure -- $(confflags) +proxy_vars = \ + CAPSULE_CFLAGS="-I$(CURDIR)" \ + CAPSULE_LIBS="-L$(CURDIR)/.libs -lcapsule" \ + CAPSULE_MKINC="$(CURDIR)/data" \ + CAPSULE_MKSTUBLIB_TOOL="$(CURDIR)/data/capsule-mkstublib" \ + CAPSULE_SYMBOLS_TOOL="$(CURDIR)/capsule-symbols" \ + CAPSULE_VERSION_TOOL="$(CURDIR)/capsule-version" \ + $(NULL) + +override_dh_auto_build: + dh_auto_build + $(proxy_vars) ./data/capsule-init-project \ + --capsule-pkgdatadir="$(CURDIR)/data" \ + --destination="$(CURDIR)/debian/libGL-proxy" \ + --no-autoreconf \ + --package-name=libGL-proxy \ + --search-tree=/nonexistent \ + --symbols-from-dir="$(CURDIR)/examples/shim" \ + libGL.so.1/1 \ + libX11.so.6/6 \ + libXext.so.6/6 \ + libxcb-dri2.so.0/0 \ + libxcb-glx.so.0/0 \ + libxcb-present.so.0/0 \ + libxcb-sync.so.1/1 \ + libxcb.so.1/1 \ + $(NULL) + # Copy it, so we can install the original source as an example + cp -a debian/libGL-proxy debian/libGL-proxy-build + cd debian/libGL-proxy-build && autoreconf -fi + cd debian/libGL-proxy-build && ./configure --prefix=/usr $(proxy_vars) + $(MAKE) -C debian/libGL-proxy-build V=1 $(proxy_vars) + +override_dh_auto_install: + dh_auto_install + $(MAKE) -C debian/libGL-proxy-build install V=1 $(proxy_vars) \ + DESTDIR=$(CURDIR)/debian/libGL-proxy-build/shims + install -d debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libcapsule/shims + mv debian/libGL-proxy-build/shims/usr/lib/* \ + debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libcapsule/shims + override_dh_install: rm -f debian/tmp/usr/lib/*/*.la + rm -f debian/tmp/usr/lib/*/libcapsule/shims/*.la find debian/tmp/usr/lib/libcapsule/installed-tests -name '*.la' -print -delete # Only keep the architecture-qualified version, delete the unprefixed # version, so we can be Multi-Arch: same -- GitLab