Bug#836600: openal-soft FTCBFS: uses the build architecture compiler

Helmut Grohne helmut at subdivi.de
Sun Sep 4 12:23:50 UTC 2016


Source: openal-soft
Version: 1:1.17.2-1
Tags: patch
User: helmutg at debian.org
Usertags: rebootstrap

openal-soft fails to cross build from source, because it does not pass
cross tools to cmake and thus uses the build architecture compiler. In
the end, dh_strip fails operating on the generated objects with host
architecture tools.

I am attaching a patch that makes openal-soft cross buildable. I added
the --builddirectory flag to dh to be able to use dh_auto_configure,
which knows the required cross flags. That allows removing the
dh_auto_build override, which in turn makes parallel builds actually
work. I also had to replace the explicit cc invocations with
triplet-prefixed versions. In the end, the patch turned out simplifying
the build. I hope you can apply it as is.

Helmut
-------------- next part --------------
diff --minimal -Nru openal-soft-1.17.2/debian/changelog openal-soft-1.17.2/debian/changelog
--- openal-soft-1.17.2/debian/changelog	2016-03-21 09:04:11.000000000 +0100
+++ openal-soft-1.17.2/debian/changelog	2016-09-04 08:04:18.000000000 +0200
@@ -1,3 +1,13 @@
+openal-soft (1:1.17.2-1.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix FTCBFS: (Closes: #-1)
+    + Invoke cmake via dh_auto_configure
+    + Pass --builddirectory to dh
+    + Invoke triplet-prefixed CC from d/rules
+
+ -- Helmut Grohne <helmut at subdivi.de>  Sun, 04 Sep 2016 07:59:01 +0200
+
 openal-soft (1:1.17.2-1) unstable; urgency=medium
 
   * Team upload
diff --minimal -Nru openal-soft-1.17.2/debian/rules openal-soft-1.17.2/debian/rules
--- openal-soft-1.17.2/debian/rules	2016-03-21 09:04:11.000000000 +0100
+++ openal-soft-1.17.2/debian/rules	2016-09-04 14:16:52.000000000 +0200
@@ -10,14 +10,13 @@
 CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS)
 LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS)
 
-DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
-
-# For multiarch
-DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+include /usr/share/dpkg/architecture.mk
+ifeq ($(origin CC),default)
+	CC = $(DEB_HOST_GNU_TYPE)-gcc
+endif
 
 # Use this variable to allow options passed to cmake to be overridable
 DEB_CMAKE_OPTIONS ?= -DCMAKE_VERBOSE_MAKEFILE=ON \
-		-DCMAKE_INSTALL_PREFIX="/usr" \
 		-DLIB_SUFFIX="/$(DEB_HOST_MULTIARCH)" \
 		-DEXAMPLES=OFF \
 		..
@@ -32,18 +31,13 @@
 
 .PHONY: build
 %:
-	dh $@ --parallel
-
-build:
-	dh $@ --parallel
+	dh $@ --builddirectory=$(BUILD_TREE) --parallel
 
 override_dh_auto_clean:
 	rm -rf $(BUILD_TREE)
 
 override_dh_auto_configure:
-	mkdir -p $(BUILD_TREE)
-	cd $(BUILD_TREE) && \
-		cmake $(DEB_CMAKE_OPTIONS)
+	dh_auto_configure -- $(DEB_CMAKE_OPTIONS)
 
 override_dh_installchangelogs:
 	dh_installchangelogs ChangeLog 
@@ -56,11 +50,8 @@
 	${MAKE} -f /usr/share/cdbs/1/rules/utils.mk debian/stamp-copyright-check
 	rm debian/stamp-copyright-check
 
-override_dh_auto_build:
-	$(MAKE) --directory=$(BUILD_TREE)
-
 override_dh_auto_install:
-	$(MAKE) --directory=$(BUILD_TREE) install DESTDIR=$(CURDIR)/debian/tmp
+	dh_auto_install
 	install -d debian/tmp/etc/openal
 	install -m644 \
 		debian/tmp/usr/share/openal/alsoftrc.sample \
@@ -75,11 +66,11 @@
 
 debian/tmp/openal-soft-Recommends-dummy.so:
 	mkdir -p debian/tmp
-	cc -xc -shared -Wl,--no-as-needed -o $@ /dev/null $(DLOPENED_RECOMMENDS_LIBS)
+	$(CC) -xc -shared -Wl,--no-as-needed -o $@ /dev/null $(DLOPENED_RECOMMENDS_LIBS)
 
 debian/tmp/openal-soft-Suggests-dummy.so:
 	mkdir -p debian/tmp
-	cc -xc -shared -Wl,--no-as-needed -o $@ /dev/null $(DLOPENED_SUGGESTS_LIBS)
+	$(CC) -xc -shared -Wl,--no-as-needed -o $@ /dev/null $(DLOPENED_SUGGESTS_LIBS)
 
 get-orig-source:
 	$(dir $_)openal-soft-get-orig-source


More information about the Pkg-games-devel mailing list