Package: libclang-common-3.8-dev
Version: 1:3.8.1-2

Hello,

this is a continuation of Bug Report 771380 (since I dont think it
will be fixed back there).
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771380
The issue is that you can only install 1 architecture version of the
libraries, producing an i386 executable with sanitizer or rt library
would need the i386 version installed - this is not possible, atleast
nor as long the amd64 version is installed.
The solution is to split up the architecture-dependend files into a
own package and set the multiarch flags correctly.

I did a patch to demonstrate this, I am sure you might find better names.

Thus, installing clang with the i386 libraries could be done simpy by:
apt-get install clang-3.8 libclang-common-3.8-dev:i386

Kind Regards,
Norbert
diff -burN oldfiles/control newfiles/control
--- oldfiles/control	2016-06-30 14:52:42.000000000 +0200
+++ newfiles/control	2016-07-02 23:47:15.050271000 +0200
@@ -141,9 +141,10 @@
 
 Package: libclang-common-3.8-dev
 Architecture: any
+Multi-Arch: same
 Section: libdevel
-Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm3.8 (= ${binary:Version})
-Description: clang library - Common development package
+Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm3.8 (= ${binary:Version}), libclang-headers-3.8-dev (= ${binary:Version})
+Description: clang library - Common development libraries
  Clang project is a C, C++, Objective C and Objective C++ front-end
  for the LLVM compiler. Its goal is to offer a replacement to the GNU Compiler
  Collection (GCC).
@@ -152,9 +153,24 @@
  well as the upcoming C++14 standard, and some parts of the fledgling C++1z
  standard, and is considered a production-quality C++ compiler.
  .
- This package contains the clang generic headers and some libraries
+ This package contains the static clang target libraries
  (profiling, etc).
 
+Package: libclang-headers-3.8-dev
+Architecture: all
+Multi-Arch: foreign
+Section: libdevel
+Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm3.8 (= ${binary:Version})
+Description: clang library - Common development headers
+ Clang project is a C, C++, Objective C and Objective C++ front-end
+ for the LLVM compiler. Its goal is to offer a replacement to the GNU Compiler
+ Collection (GCC).
+ .
+ Clang fully implements all published ISO C++ standards including C++11, as
+ well as the upcoming C++14 standard, and some parts of the fledgling C++1z
+ standard, and is considered a production-quality C++ compiler.
+ .
+ This package contains the clang generic headers
 
 Package: python-clang-3.8
 Section: python
diff -burN oldfiles/libclang-common-X.Y-dev.install.in newfiles/libclang-common-X.Y-dev.install.in
--- oldfiles/libclang-common-X.Y-dev.install.in	2016-03-04 17:55:18.000000000 +0100
+++ newfiles/libclang-common-X.Y-dev.install.in	2016-07-02 23:23:33.000000000 +0200
@@ -1,7 +1,7 @@
-usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/include
+#usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/include
 
 usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/lib
-usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/*.txt
+#usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/*.txt
 
 #usr/lib/clang/@LLVM_VERSION_FULL@/lib             /usr/lib/clang/@LLVM_VERSION@/
 #usr/lib/clang/@LLVM_VERSION_FULL@/include/         /usr/include/clang/@LLVM_VERSION@/
diff -burN oldfiles/libclang-common-X.Y-dev.links.in newfiles/libclang-common-X.Y-dev.links.in
--- oldfiles/libclang-common-X.Y-dev.links.in	2016-03-04 17:55:18.000000000 +0100
+++ newfiles/libclang-common-X.Y-dev.links.in	1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/include usr/include/clang/@LLVM_VERSION@/include
-usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/include usr/lib/clang/@LLVM_VERSION@/include
-usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/lib usr/lib/clang/@LLVM_VERSION@/lib
-usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/include usr/include/clang/@LLVM_VERSION_FULL@/include
-usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/include usr/lib/clang/@LLVM_VERSION_FULL@/include
-usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/lib usr/lib/clang/@LLVM_VERSION_FULL@/lib
-
diff -burN oldfiles/libclang-headers-X.Y-dev.install.in newfiles/libclang-headers-X.Y-dev.install.in
--- oldfiles/libclang-headers-X.Y-dev.install.in	1970-01-01 01:00:00.000000000 +0100
+++ newfiles/libclang-headers-X.Y-dev.install.in	2016-07-03 01:26:04.901696000 +0200
@@ -0,0 +1,7 @@
+usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/include
+
+#usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/lib
+usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/*.txt
+
+#usr/lib/clang/@LLVM_VERSION_FULL@/lib             /usr/lib/clang/@LLVM_VERSION@/
+#usr/lib/clang/@LLVM_VERSION_FULL@/include/         /usr/include/clang/@LLVM_VERSION@/
diff -burN oldfiles/libclang-headers-X.Y-dev.links.in newfiles/libclang-headers-X.Y-dev.links.in
--- oldfiles/libclang-headers-X.Y-dev.links.in	1970-01-01 01:00:00.000000000 +0100
+++ newfiles/libclang-headers-X.Y-dev.links.in	2016-03-04 17:55:18.000000000 +0100
@@ -0,0 +1,7 @@
+usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/include usr/include/clang/@LLVM_VERSION@/include
+usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/include usr/lib/clang/@LLVM_VERSION@/include
+usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/lib usr/lib/clang/@LLVM_VERSION@/lib
+usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/include usr/include/clang/@LLVM_VERSION_FULL@/include
+usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/include usr/lib/clang/@LLVM_VERSION_FULL@/include
+usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION_FULL@/lib usr/lib/clang/@LLVM_VERSION_FULL@/lib
+
diff -burN oldfiles/rules newfiles/rules
--- oldfiles/rules	2016-06-26 08:33:04.000000000 +0200
+++ newfiles/rules	2016-07-03 10:36:33.325230000 +0200
@@ -420,12 +420,12 @@
 
 # Manage the polly files. Sometimes, we build them. Sometimes not.
 	if test "$(POLLY_ENABLE)" = yes; then \
-		mkdir -p $(CURDIR)/debian/libclang-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/ $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly/; \
+		mkdir -p $(CURDIR)/debian/libclang-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/ $(CURDIR)/debian/libclang-headers-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly/; \
 		mv -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libpolly* \
 		$(CURDIR)/debian/libclang-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/; \
-		rm -rf $(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly; \
+		rm -rf $(CURDIR)/debian/libclang-headers-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/polly; \
 		mv -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/include/polly/ \
-		$(CURDIR)/debian/libclang-common-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/; \
+		$(CURDIR)/debian/libclang-headers-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/include/; \
 	fi
 
 # Delete the target build directory to save some space on the build systems

Reply via email to