Bug#972287: libcoverart FTCBFS: does not build IMPORT_EXECUTABLES
Source: libcoverart
Version: 1.0.0+git20150706-9
Tags: patch
User: debian-cross@lists.debian.org
Usertags: ftcbfs
libcoverart fails to cross build from source, because it does not pass
previously built IMPORT_EXECUTABLES to cmake. This is necessary when
performing cross compilation. It's a separate cmake invocation with a
native toolchain and produces the make-c-interface program. Just adding
that pass does not exactly work though. libcoverart uses neon and neon
is not coinstallable, so we cannot provide it to the native build pass.
Thus my patch adds an option BUILD_IMPORT_EXECUTABLES_ONLY that
basically disables everything but make-c-interface. Building that tool
requires libxml2-dev (for the build architecture!), which was previously
missing from Build-Depends. The attached patch makes libcoverart cross
buildable. Please consider applying it.
Helmut
diff --minimal -Nru libcoverart-1.0.0+git20150706/debian/changelog libcoverart-1.0.0+git20150706/debian/changelog
--- libcoverart-1.0.0+git20150706/debian/changelog 2020-09-27 21:27:04.000000000 +0200
+++ libcoverart-1.0.0+git20150706/debian/changelog 2020-10-15 17:49:18.000000000 +0200
@@ -1,3 +1,10 @@
+libcoverart (1.0.0+git20150706-9.1) UNRELEASED; urgency=medium
+
+ * Non-maintainer upload.
+ * Fix FTCBFS: Build IMPORT_EXECUTABLES. (Closes: #-1)
+
+ -- Helmut Grohne <helmut@subdivi.de> Thu, 15 Oct 2020 17:49:18 +0200
+
libcoverart (1.0.0+git20150706-9) unstable; urgency=medium
[ Debian Janitor ]
diff --minimal -Nru libcoverart-1.0.0+git20150706/debian/control libcoverart-1.0.0+git20150706/debian/control
--- libcoverart-1.0.0+git20150706/debian/control 2020-09-27 21:25:21.000000000 +0200
+++ libcoverart-1.0.0+git20150706/debian/control 2020-10-15 17:49:18.000000000 +0200
@@ -7,7 +7,8 @@
debhelper-compat (= 13),
cmake,
libneon27-gnutls-dev | libneon-dev,
- libjansson-dev
+ libjansson-dev,
+ libxml2-dev:native,
Build-Depends-Indep:
doxygen,
graphviz
diff --minimal -Nru libcoverart-1.0.0+git20150706/debian/patches/cross.patch libcoverart-1.0.0+git20150706/debian/patches/cross.patch
--- libcoverart-1.0.0+git20150706/debian/patches/cross.patch 1970-01-01 01:00:00.000000000 +0100
+++ libcoverart-1.0.0+git20150706/debian/patches/cross.patch 2020-10-15 17:49:18.000000000 +0200
@@ -0,0 +1,41 @@
+--- libcoverart-1.0.0+git20150706.orig/CMakeLists.txt
++++ libcoverart-1.0.0+git20150706/CMakeLists.txt
+@@ -30,8 +30,10 @@
+ SET(coverartc_SOVERSION ${coverartc_SOVERSION_MAJOR})
+
+ SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
+-FIND_PACKAGE(Neon REQUIRED)
+-FIND_PACKAGE(Jansson REQUIRED)
++IF(NOT BUILD_IMPORT_EXECUTABLES_ONLY)
++ FIND_PACKAGE(Neon REQUIRED)
++ FIND_PACKAGE(Jansson REQUIRED)
++ENDIF()
+ IF(NOT CMAKE_CROSSCOMPILING)
+ FIND_PACKAGE(LibXml2 REQUIRED)
+ ENDIF(NOT CMAKE_CROSSCOMPILING)
+@@ -52,8 +54,10 @@
+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libcoverartcc.pc ${CMAKE_CURRENT_BINARY_DIR}/libcoverart.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
+
+ ADD_SUBDIRECTORY(src)
+-ADD_SUBDIRECTORY(tests)
+-ADD_SUBDIRECTORY(examples)
++IF(NOT BUILD_IMPORT_EXECUTABLES_ONLY)
++ ADD_SUBDIRECTORY(tests)
++ ADD_SUBDIRECTORY(examples)
++ENDIF()
+
+ ADD_CUSTOM_TARGET(docs
+ doxygen
+--- libcoverart-1.0.0+git20150706.orig/src/CMakeLists.txt
++++ libcoverart-1.0.0+git20150706/src/CMakeLists.txt
+@@ -32,6 +32,10 @@
+ EXPORT(TARGETS make-c-interface FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake )
+ ENDIF(NOT CMAKE_CROSSCOMPILING)
+
++IF(BUILD_IMPORT_EXECUTABLES_ONLY)
++ RETURN()
++ENDIF()
++
+ FILE(GLOB INC_FILES *.inc)
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/caa_c.cc ${CMAKE_CURRENT_BINARY_DIR}/caa_c.h ${CMAKE_CURRENT_BINARY_DIR}/../include/coverart/caa_c.h
diff --minimal -Nru libcoverart-1.0.0+git20150706/debian/patches/series libcoverart-1.0.0+git20150706/debian/patches/series
--- libcoverart-1.0.0+git20150706/debian/patches/series 2020-09-27 21:23:09.000000000 +0200
+++ libcoverart-1.0.0+git20150706/debian/patches/series 2020-10-15 17:49:18.000000000 +0200
@@ -3,3 +3,4 @@
0003-gcc-5.patch
0004-Use-const-when-catching-exceptions.patch
0005-Fix-build-with-cmake-3.18.patch
+cross.patch
diff --minimal -Nru libcoverart-1.0.0+git20150706/debian/rules libcoverart-1.0.0+git20150706/debian/rules
--- libcoverart-1.0.0+git20150706/debian/rules 2020-09-27 21:26:42.000000000 +0200
+++ libcoverart-1.0.0+git20150706/debian/rules 2020-10-15 17:49:18.000000000 +0200
@@ -2,11 +2,22 @@
include /usr/share/dpkg/architecture.mk
+FOR_BUILD = dpkg-architecture -a$(DEB_BUILD_ARCH) -f -c
+
%:
dh $@
+ifeq (,$(filter cross,$(DEB_BUILD_PROFILES)))
+execute_after_dh_auto_clean::
+ $(FOR_BUILD) dh_auto_clean
+endif
+
override_dh_auto_configure:
- dh_auto_configure -- -DLIB_SUFFIX=/$(DEB_HOST_MULTIARCH)
+ifneq (,$(filter cross,$(DEB_BUILD_PROFILES)))
+ $(FOR_BUILD) dh_auto_configure -- -DBUILD_IMPORT_EXECUTABLES_ONLY=TRUE
+ $(FOR_BUILD) dh_auto_build -- make-c-interface
+endif
+ dh_auto_configure -- -DLIB_SUFFIX=/$(DEB_HOST_MULTIARCH) $(if $(filter cross,$(DEB_BUILD_PROFILES)),-DIMPORT_EXECUTABLES=../obj-$(DEB_BUILD_GNU_TYPE)/ImportExecutables.cmake)
override_dh_auto_build-indep:
dh_auto_build -- docs
Reply to: