Bug#889925: valac is unusable for cross-compilation

Helmut Grohne helmut at subdivi.de
Tue Oct 1 19:47:07 BST 2019


Control: tags -1 + patch

Hi,

On Thu, Jul 04, 2019 at 12:44:59AM +0200, Helmut Grohne wrote:
> Let me try to summarize consensus:
> 
>  * There should be an implementation-detail package called valac-bin.
>  * valac-bin should be Multi-Arch: foreign.
>  * valac-bin should contain the (versioned) valac executable
>  * valac should depend on valac-bin.
>  * valac should ship a /usr/bin/${DEB_HOST_GNU_TYPE}-valac wrapper
>    script.

Lacking further input, I've now implemented the consensus in a minimal
way.

I am introducing another package libvalacodegen-0.46. It contains
libvalacodegen.so, because both /usr/bin/valac and /usr/bin/vapigen link
it. For the latter, we're not yet sure whether it should be M-A:foreign
and the question does not currently seem relevant. Still that means that
libvalacodegen.so can reside in neither valac nor valac-bin. I'm adding
another M-A:same package for it.

Apart from that I am closely sticking to the consensus. In particular,
everything that used to work with the old valac package continues to
work, because it depends on all packages that received files from it.

Do you see any issus with this approach?

Helmut
-------------- next part --------------
diff --minimal -Nru vala-0.46.1/debian/changelog vala-0.46.1/debian/changelog
--- vala-0.46.1/debian/changelog	2019-09-16 09:17:15.000000000 +0200
+++ vala-0.46.1/debian/changelog	2019-09-30 21:01:59.000000000 +0200
@@ -1,3 +1,11 @@
+vala (0.46.1-1.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Move valac to a M-A:foreign package and add cross wrappers. (Closes:
+    #889925)
+
+ -- Helmut Grohne <helmut at subdivi.de>  Mon, 30 Sep 2019 21:01:59 +0200
+
 vala (0.46.1-1) unstable; urgency=medium
 
   * New upstream release
diff --minimal -Nru vala-0.46.1/debian/control vala-0.46.1/debian/control
--- vala-0.46.1/debian/control	2019-09-16 09:17:15.000000000 +0200
+++ vala-0.46.1/debian/control	2019-09-30 21:01:59.000000000 +0200
@@ -24,12 +24,53 @@
 Vcs-Browser: https://salsa.debian.org/gnome-team/vala
 Homepage: https://wiki.gnome.org/Projects/Vala/
 
+Package: libvalacodegen-0.46
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends},
+         ${misc:Depends},
+Conflicts: valac-0.12, valac-0.14, valac-0.16, valac-0.18, valac-0.20,
+           valac-0.22, valac-0.24, valac-0.26, valac-0.28, valac-0.30
+Breaks: valac (<< 0.46.1-1.1~)
+Replaces: valac (<< 0.46.1-1.1~)
+Description: internal package for C# like language for the GObject system
+ Vala is a new programming language that aims to bring modern programming
+ language features to GNOME developers without imposing any additional
+ runtime requirements and without using a different ABI compared to
+ applications and libraries written in C.
+ .
+ This package contains the libvalacodegen shared libary. It should not normally
+ be used directly.
+
+Package: valac-bin
+Architecture: any
+Multi-Arch: foreign
+Depends: ${shlibs:Depends},
+         libvala-0.46-0 (= ${binary:Version}),
+         libvalacodegen-0.46 (= ${binary:Version}),
+         ${misc:Depends},
+Conflicts: valac-0.12, valac-0.14, valac-0.16, valac-0.18, valac-0.20,
+           valac-0.22, valac-0.24, valac-0.26, valac-0.28, valac-0.30
+Breaks: valac (<< 0.46.1-1.1~)
+Replaces: valac (<< 0.46.1-1.1~)
+Description: internal package for C# like language for the GObject system
+ Vala is a new programming language that aims to bring modern programming
+ language features to GNOME developers without imposing any additional
+ runtime requirements and without using a different ABI compared to
+ applications and libraries written in C.
+ .
+ This particular package is an implementation detail of the vala packaging.
+ It should not be installed directly and there should be no dependencies
+ on it. Refer to the valac package instead.
+
 Package: valac
 Architecture: any
 Depends: ${shlibs:Depends},
          libvala-0.46-0 (= ${binary:Version}),
+         libvalacodegen-0.46 (= ${binary:Version}),
          libglib2.0-dev (>= 2.48),
          valac-0.46-vapi,
+         valac-bin (= ${binary:Version}),
          ${misc:Depends}
 Recommends: gcc
 Conflicts: valac-0.12, valac-0.14, valac-0.16, valac-0.18, valac-0.20,
diff --minimal -Nru vala-0.46.1/debian/control.in vala-0.46.1/debian/control.in
--- vala-0.46.1/debian/control.in	2019-09-16 09:17:15.000000000 +0200
+++ vala-0.46.1/debian/control.in	2019-09-30 21:01:59.000000000 +0200
@@ -20,12 +20,53 @@
 Vcs-Browser: https://salsa.debian.org/gnome-team/vala
 Homepage: https://wiki.gnome.org/Projects/Vala/
 
+Package: libvalacodegen-0.46
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends},
+         ${misc:Depends},
+Conflicts: valac-0.12, valac-0.14, valac-0.16, valac-0.18, valac-0.20,
+           valac-0.22, valac-0.24, valac-0.26, valac-0.28, valac-0.30
+Breaks: valac (<< 0.46.1-1.1~)
+Replaces: valac (<< 0.46.1-1.1~)
+Description: internal package for C# like language for the GObject system
+ Vala is a new programming language that aims to bring modern programming
+ language features to GNOME developers without imposing any additional
+ runtime requirements and without using a different ABI compared to
+ applications and libraries written in C.
+ .
+ This package contains the libvalacodegen shared libary. It should not normally
+ be used directly.
+
+Package: valac-bin
+Architecture: any
+Multi-Arch: foreign
+Depends: ${shlibs:Depends},
+         libvala-0.46-0 (= ${binary:Version}),
+         libvalacodegen-0.46 (= ${binary:Version}),
+         ${misc:Depends},
+Conflicts: valac-0.12, valac-0.14, valac-0.16, valac-0.18, valac-0.20,
+           valac-0.22, valac-0.24, valac-0.26, valac-0.28, valac-0.30
+Breaks: valac (<< 0.46.1-1.1~)
+Replaces: valac (<< 0.46.1-1.1~)
+Description: internal package for C# like language for the GObject system
+ Vala is a new programming language that aims to bring modern programming
+ language features to GNOME developers without imposing any additional
+ runtime requirements and without using a different ABI compared to
+ applications and libraries written in C.
+ .
+ This particular package is an implementation detail of the vala packaging.
+ It should not be installed directly and there should be no dependencies
+ on it. Refer to the valac package instead.
+
 Package: valac
 Architecture: any
 Depends: ${shlibs:Depends},
          libvala-0.46-0 (= ${binary:Version}),
+         libvalacodegen-0.46 (= ${binary:Version}),
          libglib2.0-dev (>= 2.48),
          valac-0.46-vapi,
+         valac-bin (= ${binary:Version}),
          ${misc:Depends}
 Recommends: gcc
 Conflicts: valac-0.12, valac-0.14, valac-0.16, valac-0.18, valac-0.20,
diff --minimal -Nru vala-0.46.1/debian/libvalacodegen-0.46.install vala-0.46.1/debian/libvalacodegen-0.46.install
--- vala-0.46.1/debian/libvalacodegen-0.46.install	1970-01-01 01:00:00.000000000 +0100
+++ vala-0.46.1/debian/libvalacodegen-0.46.install	2019-09-30 21:01:59.000000000 +0200
@@ -0,0 +1 @@
+usr/lib/*/vala-*/libvalaccodegen.so*
diff --minimal -Nru vala-0.46.1/debian/rules vala-0.46.1/debian/rules
--- vala-0.46.1/debian/rules	2019-09-16 09:17:15.000000000 +0200
+++ vala-0.46.1/debian/rules	2019-09-30 21:01:59.000000000 +0200
@@ -3,6 +3,8 @@
 export DEB_BUILD_MAINT_OPTIONS = hardening=+all
 export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 -Wl,-z,defs -Wl,--as-needed
 export DEB_CFLAGS_MAINT_APPEND = -Wall
+include /usr/share/dpkg/architecture.mk
+include /usr/share/dpkg/pkg-info.mk
 
 DEB_PARALLEL_JOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
 ifneq (,$(DEB_PARALLEL_JOBS))
@@ -11,6 +13,9 @@
 DEB_MAKE_PARALLEL =
 endif
 
+VALAVER = $(shell echo '$(DEB_VERSION_UPSTREAM)' | sed -e 's/\([0-9]\+\.[0-9]\+\).*/\1/')
+
+
 %:
 	dh $@ --with gnome
 
@@ -32,13 +37,13 @@
 
 override_dh_auto_configure: bootstrap
 	find -name '*.vala.stamp' -delete
-	LD_LIBRARY_PATH="$(CURDIR)/bootstrap/install/usr/lib/$(DEB_HOST_MULTIARCH):$(CURDIR)/bootstrap/install/usr/lib/$(DEB_HOST_MULTIARCH)/vala-0.46:$$LD_LIBRARY_PATH" \
+	LD_LIBRARY_PATH="$(CURDIR)/bootstrap/install/usr/lib/$(DEB_HOST_MULTIARCH):$(CURDIR)/bootstrap/install/usr/lib/$(DEB_HOST_MULTIARCH)/vala-$(VALAVER):$$LD_LIBRARY_PATH" \
 		dh_auto_configure -- \
 			VALAC="$(CURDIR)/bootstrap/install/usr/bin/valac" \
 			--enable-unversioned
 
 override_dh_auto_build:
-	LD_LIBRARY_PATH="$(CURDIR)/bootstrap/install/usr/lib/$(DEB_HOST_MULTIARCH):$(CURDIR)/bootstrap/install/usr/lib/$(DEB_HOST_MULTIARCH)/vala-0.46:$$LD_LIBRARY_PATH" \
+	LD_LIBRARY_PATH="$(CURDIR)/bootstrap/install/usr/lib/$(DEB_HOST_MULTIARCH):$(CURDIR)/bootstrap/install/usr/lib/$(DEB_HOST_MULTIARCH)/vala-$(VALAVER):$$LD_LIBRARY_PATH" \
 		dh_auto_build
 
 # Make testsuite failures non-fatal for these architectures. The DBus
@@ -56,6 +61,9 @@
 override_dh_install:
 	find debian -name '*.la' -print -delete
 	dh_install
+	printf '#!/bin/sh\nexec valac-$(VALAVER) "--cc=$${CC:-${DEB_HOST_GNU_TYPE}-gcc}" "--pkg-config=$${PKG_CONFIG:-${DEB_HOST_GNU_TYPE}-pkg-config}" "$$@"\n' > debian/valac/usr/bin/${DEB_HOST_GNU_TYPE}-valac-$(VALAVER)
+	chmod 755 debian/valac/usr/bin/${DEB_HOST_GNU_TYPE}-valac-$(VALAVER)
+	ln -s ${DEB_HOST_GNU_TYPE}-valac-$(VALAVER) debian/valac/usr/bin/${DEB_HOST_GNU_TYPE}-valac
 
 override_dh_missing:
 	dh_missing --fail-missing
diff --minimal -Nru vala-0.46.1/debian/valac-bin.install vala-0.46.1/debian/valac-bin.install
--- vala-0.46.1/debian/valac-bin.install	1970-01-01 01:00:00.000000000 +0100
+++ vala-0.46.1/debian/valac-bin.install	2019-09-30 21:01:59.000000000 +0200
@@ -0,0 +1,2 @@
+usr/bin/valac*
+usr/share/man/man1/valac*
diff --minimal -Nru vala-0.46.1/debian/valac.install vala-0.46.1/debian/valac.install
--- vala-0.46.1/debian/valac.install	2019-09-16 09:17:15.000000000 +0200
+++ vala-0.46.1/debian/valac.install	2019-09-30 21:01:59.000000000 +0200
@@ -1,13 +1,10 @@
 usr/bin/vala
 usr/bin/vala-*
 usr/bin/vala-gen-introspect*
-usr/bin/valac*
 usr/bin/vapi*
 usr/share/aclocal/
 usr/share/vala/Makefile.vapigen
 usr/share/man/man1/vala-gen-introspect*
-usr/share/man/man1/valac*
 usr/share/man/man1/vapigen*
 usr/lib/*/pkgconfig/vapigen*.pc
 usr/lib/*/vala-*/gen-introspect-*
-usr/lib/*/vala-*/libvalaccodegen.so*


More information about the pkg-gnome-maintainers mailing list