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