Bug#889925: valac is unusable for cross-compilation

Helmut Grohne helmut at subdivi.de
Tue Dec 10 21:36:23 GMT 2019


Control: tags -1 + pending

On Tue, Oct 01, 2019 at 08:47:07PM +0200, Helmut Grohne wrote:
> 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?

I've slightly updated the previous .debdiff and uploaded it to
delayed/10. It'll target experimental first to clear NEW. I'll upload to
unstable afterwards. Please tell if I should delay it any longer. I'm
attaching the updated .debdiff.

Helmut
-------------- next part --------------
diff --minimal -Nru vala-0.46.5/debian/changelog vala-0.46.5/debian/changelog
--- vala-0.46.5/debian/changelog	2019-11-19 10:42:51.000000000 +0100
+++ vala-0.46.5/debian/changelog	2019-12-10 16:34:29.000000000 +0100
@@ -1,3 +1,11 @@
+vala (0.46.5-1.1) experimental; 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>  Tue, 10 Dec 2019 16:34:29 +0100
+
 vala (0.46.5-1) unstable; urgency=medium
 
   * New upstream release
diff --minimal -Nru vala-0.46.5/debian/control vala-0.46.5/debian/control
--- vala-0.46.5/debian/control	2019-11-19 10:42:51.000000000 +0100
+++ vala-0.46.5/debian/control	2019-12-10 16:34:29.000000000 +0100
@@ -24,12 +24,53 @@
 Vcs-Browser: https://salsa.debian.org/gnome-team/vala
 Homepage: https://wiki.gnome.org/Projects/Vala/
 
+Package: libvalacodegen-0.46-0
+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.5-1.1~)
+Replaces: valac (<< 0.46.5-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 library. 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-0 (= ${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.5-1.1~)
+Replaces: valac (<< 0.46.5-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-0 (= ${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,
@@ -118,6 +159,7 @@
 Architecture: any
 Depends: ${shlibs:Depends},
          libvaladoc-0.46-0 (= ${binary:Version}),
+         libvalacodegen-0.46-0 (= ${binary:Version}),
          valac (= ${binary:Version}),
          ${misc:Depends}
 Multi-Arch: foreign
@@ -132,6 +174,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          libvala-0.46-0 (= ${binary:Version}),
+         libvalacodegen-0.46-0 (= ${binary:Version}),
          ${misc:Depends},
          libvaladoc-0.46-data
 Description: API documentation generator for vala (library)
diff --minimal -Nru vala-0.46.5/debian/control.in vala-0.46.5/debian/control.in
--- vala-0.46.5/debian/control.in	2019-11-19 10:42:51.000000000 +0100
+++ vala-0.46.5/debian/control.in	2019-12-10 16:34:29.000000000 +0100
@@ -20,12 +20,53 @@
 Vcs-Browser: https://salsa.debian.org/gnome-team/vala
 Homepage: https://wiki.gnome.org/Projects/Vala/
 
+Package: libvalacodegen-0.46-0
+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.5-1.1~)
+Replaces: valac (<< 0.46.5-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 library. 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-0 (= ${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.5-1.1~)
+Replaces: valac (<< 0.46.5-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-0 (= ${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,
@@ -114,6 +155,7 @@
 Architecture: any
 Depends: ${shlibs:Depends},
          libvaladoc-0.46-0 (= ${binary:Version}),
+         libvalacodegen-0.46-0 (= ${binary:Version}),
          valac (= ${binary:Version}),
          ${misc:Depends}
 Multi-Arch: foreign
@@ -128,6 +170,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          libvala-0.46-0 (= ${binary:Version}),
+         libvalacodegen-0.46-0 (= ${binary:Version}),
          ${misc:Depends},
          libvaladoc-0.46-data
 Description: API documentation generator for vala (library)
diff --minimal -Nru vala-0.46.5/debian/libvalacodegen-0.46-0.install vala-0.46.5/debian/libvalacodegen-0.46-0.install
--- vala-0.46.5/debian/libvalacodegen-0.46-0.install	1970-01-01 01:00:00.000000000 +0100
+++ vala-0.46.5/debian/libvalacodegen-0.46-0.install	2019-12-10 16:27:29.000000000 +0100
@@ -0,0 +1 @@
+usr/lib/*/vala-*/libvalaccodegen.so*
diff --minimal -Nru vala-0.46.5/debian/rules vala-0.46.5/debian/rules
--- vala-0.46.5/debian/rules	2019-11-19 10:42:51.000000000 +0100
+++ vala-0.46.5/debian/rules	2019-12-10 16:34:29.000000000 +0100
@@ -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,11 @@
 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 valac-$(VALAVER).1.gz debian/valac/usr/share/man/man1/${DEB_HOST_GNU_TYPE}-valac-$(VALAVER).1.gz
+	ln -s ${DEB_HOST_GNU_TYPE}-valac-$(VALAVER) debian/valac/usr/bin/${DEB_HOST_GNU_TYPE}-valac
+	ln -s ${DEB_HOST_GNU_TYPE}-valac-$(VALAVER).1.gz debian/valac/usr/share/man/man1/${DEB_HOST_GNU_TYPE}-valac.1.gz
 
 override_dh_missing:
 	dh_missing --fail-missing
diff --minimal -Nru vala-0.46.5/debian/valac-bin.install vala-0.46.5/debian/valac-bin.install
--- vala-0.46.5/debian/valac-bin.install	1970-01-01 01:00:00.000000000 +0100
+++ vala-0.46.5/debian/valac-bin.install	2019-12-10 16:34:29.000000000 +0100
@@ -0,0 +1,4 @@
+usr/bin/vala
+usr/bin/vala-0.*
+usr/bin/valac*
+usr/share/man/man1/valac*
diff --minimal -Nru vala-0.46.5/debian/valac-bin.links vala-0.46.5/debian/valac-bin.links
--- vala-0.46.5/debian/valac-bin.links	1970-01-01 01:00:00.000000000 +0100
+++ vala-0.46.5/debian/valac-bin.links	2019-11-19 10:42:51.000000000 +0100
@@ -0,0 +1 @@
+/usr/share/man/man1/valac.1.gz /usr/share/man/man1/vala.1.gz
diff --minimal -Nru vala-0.46.5/debian/valac-bin.lintian-overrides vala-0.46.5/debian/valac-bin.lintian-overrides
--- vala-0.46.5/debian/valac-bin.lintian-overrides	1970-01-01 01:00:00.000000000 +0100
+++ vala-0.46.5/debian/valac-bin.lintian-overrides	2019-12-10 16:34:29.000000000 +0100
@@ -0,0 +1,2 @@
+# private library only used by valac
+binary-or-shlib-defines-rpath usr/bin/valac-* /usr/lib/*/vala-*
diff --minimal -Nru vala-0.46.5/debian/valac.install vala-0.46.5/debian/valac.install
--- vala-0.46.5/debian/valac.install	2019-11-19 10:42:51.000000000 +0100
+++ vala-0.46.5/debian/valac.install	2019-12-10 16:34:29.000000000 +0100
@@ -1,13 +1,8 @@
-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*
diff --minimal -Nru vala-0.46.5/debian/valac.links vala-0.46.5/debian/valac.links
--- vala-0.46.5/debian/valac.links	2019-11-19 10:42:51.000000000 +0100
+++ vala-0.46.5/debian/valac.links	1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-/usr/share/man/man1/valac.1.gz /usr/share/man/man1/vala.1.gz


More information about the pkg-gnome-maintainers mailing list