[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#734677: yet more info



Hi Lisandro.

Again, thanks for replying.


perezmeyer@gmail.com writes:

> Multiarch does not has support for arch-qualified headers yet

Are you sure this is true? The main debian wiki page
(https://wiki.debian.org/Multiarch) claims both library and header
support. What is missing? My debian/sid box has a

 /usr/include/x86_64-linux-gnu

directory, and there are headers there from various packages. This
directory also is in the default -I list of gcc.

In any case, I added logic to the earlier patch to ship qconfig.h in
this arch-specific directory. With that the packages build and look
reasonable. I haven't built on any other arch yet, so I haven't yet
tested the co-instability explicitly. Am I being too optimistic?

Thanks.

dima

>From 9b46cfe2a05121d305d2f745eb97191c1418a4d5 Mon Sep 17 00:00:00 2001
From: Dima Kogan <dima@oblong.com>
Date: Thu, 9 Jan 2014 00:27:39 -0800
Subject: [PATCH] QT5 -dev packages are now Multi-Arch:same

Mostly this is just a change in the debian/control tag, since the package
contents (mostly) already used the arch-specific paths and thus didn't conflict.

The only exception to this is

 /usr/include/qt5/QtCore/qconfig.h

This file contains arch-specific #defines. I ship this header to

 /usr/include/<deb_arch_triplet>

The rest of the headers go to /usr/include, as before. This patch also updates
the .pc file to look in this directory.
---
 debian/control                    |    9 +++++++++
 debian/qtbase5-dev.install-common |    4 +++-
 debian/rules                      |   14 ++++++++++++++
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/debian/control b/debian/control
index b1401f8..d3d136a 100644
--- a/debian/control
+++ b/debian/control
@@ -11,6 +11,7 @@ Uploaders: Fathi Boudra <fabo@debian.org>,
            Dmitry Shachnev <mitya57@gmail.com>
 Build-Depends: debhelper (>= 9),
                dpkg-dev (>= 1.16.1),
+               dh-exec,
                firebird-dev [amd64 armel i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sh4 sparc],
                freetds-dev,
                gdb,
@@ -263,6 +264,8 @@ Description: Qt 5 print support module
 
 Package: qtbase5-dev
 Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
 Section: libdevel
 Depends: libgl1-mesa-dev [!armel !armhf] | libgl-dev [!armel !armhf],
          libgles2-mesa-dev [armel armhf] | libgles2-dev [armel armhf],
@@ -296,6 +299,8 @@ Description: Qt 5 base development files
 
 Package: qtbase5-private-dev
 Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
 Section: libdevel
 Depends: qtbase5-dev (= ${binary:Version}), ${misc:Depends}
 Breaks: qtbase5-dev (<< 5.0.2+dfsg1-3~)
@@ -311,6 +316,8 @@ Description: Qt 5 base private development files
 
 Package: libqt5opengl5-dev
 Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
 Section: libdevel
 Depends: libqt5opengl5 (= ${binary:Version}),
          qtbase5-dev (= ${binary:Version}),
@@ -406,6 +413,8 @@ Description: Qt 5 base examples debugging symbols
 
 Package: qt5-default
 Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
 Depends: qtbase5-dev, qtchooser, ${misc:Depends}
 Conflicts: qt4-default
 Suggests: qt5-qmake, qtbase5-dev-tools
diff --git a/debian/qtbase5-dev.install-common b/debian/qtbase5-dev.install-common
index e4b1e39..bbe57d1 100644
--- a/debian/qtbase5-dev.install-common
+++ b/debian/qtbase5-dev.install-common
@@ -1,3 +1,5 @@
+#!/usr/bin/dh-exec
+
 usr/include/qt5/QtConcurrent/QtConcurrent
 usr/include/qt5/QtConcurrent/QtConcurrentDepends
 usr/include/qt5/QtConcurrent/QtConcurrentFilter
@@ -370,7 +372,7 @@ usr/include/qt5/QtCore/qconfig-medium.h
 usr/include/qt5/QtCore/qconfig-minimal.h
 usr/include/qt5/QtCore/qconfig-nacl.h
 usr/include/qt5/QtCore/qconfig-small.h
-usr/include/qt5/QtCore/qconfig.h
+usr/include/qt5/QtCore/qconfig.h usr/include/${DEB_HOST_MULTIARCH}/qt5/QtCore/
 usr/include/qt5/QtCore/qcontainerfwd.h
 usr/include/qt5/QtCore/qcontiguouscache.h
 usr/include/qt5/QtCore/qcoreapplication.h
diff --git a/debian/rules b/debian/rules
index b4e8a55..8309f63 100755
--- a/debian/rules
+++ b/debian/rules
@@ -197,6 +197,13 @@ ifeq ($(vendor),Ubuntu)
 	rm -rf po
 endif
 
+
+# add includedir_arch definition, and add it to -I
+define ADD_MULTIARCH_INCLUDES
+s{(includedir)=(\$${prefix}/include)(/.*)}{$$1=$$2$$3\n$$1_arch=$$2/$(DEB_HOST_MULTIARCH)$$3};	\
+s{(-I\$${includedir})(\S*)}{$$1$$2 -I\$${includedir_arch}$$2}g;
+endef
+
 override_dh_auto_install:
 	dh_auto_install -Smakefile -- INSTALL_ROOT=$(CURDIR)/debian/tmp/
 
@@ -204,6 +211,10 @@ override_dh_auto_install:
 	find $(CURDIR)/debian/tmp/usr/lib/*/pkgconfig -type f -name '*.pc' \
 		-exec perl -pi -e "s, -L$(CURDIR)/?\S+,,g" {} \;
 
+	# add the multi-arch include path to the pkgconfig files
+	find $(CURDIR)/debian/tmp/usr/lib/*/pkgconfig -type f -name '*.pc' \
+		-exec perl -pi -e '$(ADD_MULTIARCH_INCLUDES)' {} \;
+
 	# Add a configuration for qtchooser
 	mkdir -p $(CURDIR)/debian/tmp/usr/share/qtchooser
 	echo "/usr/lib/$(DEB_HOST_MULTIARCH)/qt5/bin" > $(CURDIR)/debian/tmp/usr/share/qtchooser/qt5-$(DEB_HOST_MULTIARCH).conf
@@ -251,6 +262,9 @@ override_dh_install:
 		cat debian/$$pkg.install-$(DEB_HOST_ARCH_OS) >> debian/$$pkg.install ; \
 	done
 
+	# I add the +x bit to allow dh-exec to work
+	chmod ug+x debian/qtbase5-dev.install
+
 	# Call dh_install normally. It will process .install, .install.ARCH
 	# and/or .install.OS files.
 	dh_install --fail-missing
-- 
1.7.10.4


Reply to: