On Mon, Sep 20, 2021 at 6:05 PM Simon McVittie <s...@debian.org> wrote:
>
> Control: tags -1 = moreinfo
>
> On Mon, 20 Sep 2021 at 17:29:34 +0200, Alfonso Sanchez-Beato wrote:
> > On Mon, Sep 20, 2021 at 5:05 PM Simon McVittie <s...@debian.org> wrote:
> > > libpango-1.0.so.0 depends on libgio-2.0.so.0, which depends on
> > > libmount.so.1, which is only available as a shared library
> >
> > I do not see a dependency on libgio when I run ldd on
> > libpango-1.0.so.0, although it does depend on libglib-2.0.so.0 and
> > libgobject-2.0.so.0.
>
> Maybe the dependency was only introduced in a recent version? It's
> certainly there in Debian unstable, which is the only suite where adding
> static libraries would be in-scope for Debian (other than experimental,
> but there's currently no version of pango1.0 in experimental), for at
> least amd64 and i386.

Right, I double checked and indeed the latest in unstable has that dependency.

>
> > Besides, it is possible to compile statically against libpango and
> > still compile dynamically against some of its dependencies.
> ...
> > > More generally, configurations that aren't actively tested typically
> > > don't work, so if I enable static linking in a particular package,
> > > I would want to have at least superficial autopkgtest coverage for it
> > > (see debian/tests/build-static and debian/tests/build in src:glib2.0 for
> > > an example)
> >
> > I will be happy to provide such a test if that is the blocker for landing 
> > this.
>
> If this is something that works in unstable, then please do.

Please see the new attached patch.

>
>     smcv

Thanks,
Alfonso
diff -Nru pango1.0-1.48.10+ds1/debian/changelog pango1.0-1.48.10+ds1/debian/changelog
--- pango1.0-1.48.10+ds1/debian/changelog	2021-09-17 09:54:40.000000000 +0000
+++ pango1.0-1.48.10+ds1/debian/changelog	2021-09-22 14:10:13.000000000 +0000
@@ -1,3 +1,15 @@
+pango1.0 (1.48.10+ds1-2) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Include archive files to allow static compilation of the libraries
+    - d/rules: Build also archive files for static compilation
+    - d/libpango1.0-dev.install: Include archive files
+    - d/tests/build: Add --static option
+    - d/tests/build-static: Exercise static linking
+    - d/tests/control: Add build-static test
+
+ -- Alfonso Sanchez-Beato (email Canonical) <alfonso.sanchez-be...@canonical.com>  Wed, 22 Sep 2021 14:10:13 +0000
+
 pango1.0 (1.48.10+ds1-1) unstable; urgency=medium
 
   * Team upload
diff -Nru pango1.0-1.48.10+ds1/debian/libpango1.0-dev.install pango1.0-1.48.10+ds1/debian/libpango1.0-dev.install
--- pango1.0-1.48.10+ds1/debian/libpango1.0-dev.install	2021-09-17 09:54:40.000000000 +0000
+++ pango1.0-1.48.10+ds1/debian/libpango1.0-dev.install	2021-09-22 14:06:45.000000000 +0000
@@ -1,4 +1,5 @@
 usr/include
+usr/lib/*/*.a
 usr/lib/*/*.so
 usr/lib/*/pkgconfig/*.pc
 usr/share/gir-1.0
diff -Nru pango1.0-1.48.10+ds1/debian/rules pango1.0-1.48.10+ds1/debian/rules
--- pango1.0-1.48.10+ds1/debian/rules	2021-09-17 09:54:40.000000000 +0000
+++ pango1.0-1.48.10+ds1/debian/rules	2021-09-22 14:06:45.000000000 +0000
@@ -21,6 +21,7 @@
 		-Dauto_features=enabled \
 		-Dgtk_doc=$(with_docs) \
 		-Dinstall-tests=true \
+		-Ddefault_library=both \
 		$(NULL)
 
 override_dh_auto_test-arch:
diff -Nru pango1.0-1.48.10+ds1/debian/tests/build pango1.0-1.48.10+ds1/debian/tests/build
--- pango1.0-1.48.10+ds1/debian/tests/build	2021-09-17 09:54:40.000000000 +0000
+++ pango1.0-1.48.10+ds1/debian/tests/build	2021-09-22 14:10:13.000000000 +0000
@@ -1,11 +1,36 @@
 #!/bin/sh
 # autopkgtest check: Builds a small application against libcairo2-dev, checking
 # if it compiles, links and runs successfully.
-# Author: Rafał Cieślak <rafalcieslak...@ubuntu.com> 
+# Authors: Rafał Cieślak <rafalcieslak...@ubuntu.com>,
+#          Alfonso Sánchez-Beato <alfonso.sanchez-be...@canonical.com>
 
 set -e
 set -u
 
+mode=dynamic
+
+getopt_temp="$(getopt -o '' --long 'static' -n debian/tests/build -- "$@")"
+eval set -- "$getopt_temp"
+
+while true; do
+    case "$1" in
+        (--static)
+            mode=static
+            shift
+            continue
+            ;;
+
+        (--)
+            shift
+            break
+            ;;
+
+        (*)
+            echo "getopt: Internal error" >&2
+            exit 2
+    esac
+done
+
 WORKDIR=$(mktemp -d)
 cleanup () {
     rm -fr "$WORKDIR"
@@ -31,9 +56,26 @@
 }
 EOF
 
-# Deliberately word-splitting, that's how pkg-config works:
-# shellcheck disable=SC2046
-"${CROSS_COMPILE}gcc" -o build_test build_test.c $("${CROSS_COMPILE}pkg-config" --cflags --libs pango)
+
+case "$mode" in
+    (static)
+        # Compile all statically but libgraphite and libmount, that do not have
+        # static version yet.
+        flags=$("${CROSS_COMPILE}pkg-config" --cflags --static --libs pango)
+        flags=$(echo "$flags" | sed 's/-lgraphite2//')
+        flags=$(echo "$flags" | sed 's/-lmount//')
+        # Deliberately word-splitting, that's how pkg-config works:
+        # shellcheck disable=SC2086
+        "${CROSS_COMPILE}gcc" -o build_test build_test.c -Wl,-Bstatic $flags -Wl,-Bdynamic -lgcc_s -lgraphite2 -lmount
+        ;;
+    (dynamic)
+        # Deliberately word-splitting, that's how pkg-config works:
+        # shellcheck disable=SC2046
+        "${CROSS_COMPILE}gcc" -o build_test build_test.c $("${CROSS_COMPILE}pkg-config" --cflags --libs pango)
+        ;;
+esac
+
+
 echo "build: OK"
 [ -x build_test ]
 ./build_test
diff -Nru pango1.0-1.48.10+ds1/debian/tests/build-static pango1.0-1.48.10+ds1/debian/tests/build-static
--- pango1.0-1.48.10+ds1/debian/tests/build-static	1970-01-01 00:00:00.000000000 +0000
+++ pango1.0-1.48.10+ds1/debian/tests/build-static	2021-09-22 14:10:13.000000000 +0000
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec debian/tests/build --static
diff -Nru pango1.0-1.48.10+ds1/debian/tests/control pango1.0-1.48.10+ds1/debian/tests/control
--- pango1.0-1.48.10+ds1/debian/tests/control	2021-09-17 09:54:40.000000000 +0000
+++ pango1.0-1.48.10+ds1/debian/tests/control	2021-09-22 14:10:13.000000000 +0000
@@ -1,4 +1,4 @@
-Tests: build
+Tests: build build-static
 Depends: build-essential, libpango1.0-dev, pkg-config
 Restrictions: superficial
 

Reply via email to