diff mbox series

package/gnuradio: backport patch to fix INTERFACE_INCLUDE_DIRECTORIES

Message ID 20200827154903.1107968-1-gwenj@trabucayre.com
State Accepted
Headers show
Series package/gnuradio: backport patch to fix INTERFACE_INCLUDE_DIRECTORIES | expand

Commit Message

Gwenhael Goavec-Merou Aug. 27, 2020, 3:49 p.m. UTC
From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>

gnuradio-runtimeTargets.cmake and gnuradio-pmtTargets.cmake are filled
using CMAKE_INSTALL_PREFIX for INSTALL_INTERFACE.

Since CMAKE_INSTALL_PREFIX, in buildroot, is set to /usr, these files contains
path to host system.

With BR2_COMPILER_PARANOID_UNSAFE_PATH package using gnuradio fails with:
arm-linux-gnueabihf-g++: ERROR: unsafe header/library path used in cross-compilation: '-isystem' '/usr/include'

By simply providing 'include', produced .cmake contains:
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
instead of
INTERFACE_INCLUDE_DIRECTORIES "/usr/include"

[Upstream status: https://github.com/gnuradio/gnuradio/pull/3737]

Fix (many) gr-osmosdr build failure:
- http://autobuild.buildroot.net/results/66b76c07f15bb3e6db697c47796ae3dd15ecf4b9/

Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
---
 ...rdcode-INTERFACE_INCLUDE_DIRECTORIES.patch | 57 +++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 package/gnuradio/0003-gnuradio-runtime_pmt-dont-hardcode-INTERFACE_INCLUDE_DIRECTORIES.patch

Comments

Thomas Petazzoni Aug. 27, 2020, 9:18 p.m. UTC | #1
Hello,

On Thu, 27 Aug 2020 17:49:03 +0200
Gwenhael Goavec-Merou <gwenj@trabucayre.com> wrote:

> From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
> 
> gnuradio-runtimeTargets.cmake and gnuradio-pmtTargets.cmake are filled
> using CMAKE_INSTALL_PREFIX for INSTALL_INTERFACE.
> 
> Since CMAKE_INSTALL_PREFIX, in buildroot, is set to /usr, these files contains
> path to host system.
> 
> With BR2_COMPILER_PARANOID_UNSAFE_PATH package using gnuradio fails with:
> arm-linux-gnueabihf-g++: ERROR: unsafe header/library path used in cross-compilation: '-isystem' '/usr/include'
> 
> By simply providing 'include', produced .cmake contains:
> INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
> instead of
> INTERFACE_INCLUDE_DIRECTORIES "/usr/include"
> 
> [Upstream status: https://github.com/gnuradio/gnuradio/pull/3737]
> 
> Fix (many) gr-osmosdr build failure:
> - http://autobuild.buildroot.net/results/66b76c07f15bb3e6db697c47796ae3dd15ecf4b9/
> 
> Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>

I've applied to master, but I have a comment below.

> diff --git a/package/gnuradio/0003-gnuradio-runtime_pmt-dont-hardcode-INTERFACE_INCLUDE_DIRECTORIES.patch b/package/gnuradio/0003-gnuradio-runtime_pmt-dont-hardcode-INTERFACE_INCLUDE_DIRECTORIES.patch
> new file mode 100644
> index 0000000000..6b8987fa5f
> --- /dev/null
> +++ b/package/gnuradio/0003-gnuradio-runtime_pmt-dont-hardcode-INTERFACE_INCLUDE_DIRECTORIES.patch
> @@ -0,0 +1,57 @@
> +From 84dea8284c521f08508bb2dcbc99db3b5d3438fd Mon Sep 17 00:00:00 2001
> +From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
> +Date: Thu, 27 Aug 2020 17:32:09 +0200
> +Subject: [PATCH] gnuradio-runtime_pmt: dont hardcode
> + INTERFACE_INCLUDE_DIRECTORIES
> +
> +gnuradio-runtimeTargets.cmake and gnuradio-pmtTargets.cmake are filled
> +using CMAKE_INSTALL_PREFIX for INSTALL_INTERFACE.
> +
> +Since CMAKE_INSTALL_PREFIX, in buildroot, is set to /usr, these files contains
> +path to host system.
> +
> +With BR2_COMPILER_PARANOID_UNSAFE_PATH package using gnuradio fails with:
> +arm-linux-gnueabihf-g++: ERROR: unsafe header/library path used in cross-compilation: '-isystem' '/usr/include'

When you submit patches upstream, I recommend you to not mention
Buildroot or Buildroot-specific things in the commit logs. This often
makes upstream maintainers think that Buildroot is special, while here
the problem is general.

A better phrasing would have been something along those lines:

"""
When cross-compiling, it is normal to set CMAKE_INSTALL_PREFIX to /usr,
since gnuradio will be installed and executed from /usr on the target.

However, due to INSTALL_INTERFACE using CMAKE_INSTALL_PREFIX, an
-isystem /usr/include option is added by CMake when building gnuradio,
which is incorrect as at build time, the /usr/include headers are the
ones of the build machine, not the one of the target platform we're
cross-compiling for.
"""

This says the same thing, but without being Buildroot specific: it's a
general cross-compilation issue.

Best regards,

Thomas
Peter Korsgaard Aug. 28, 2020, 5:48 p.m. UTC | #2
>>>>> "Gwenhael" == Gwenhael Goavec-Merou <gwenj@trabucayre.com> writes:

 > From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
 > gnuradio-runtimeTargets.cmake and gnuradio-pmtTargets.cmake are filled
 > using CMAKE_INSTALL_PREFIX for INSTALL_INTERFACE.

 > Since CMAKE_INSTALL_PREFIX, in buildroot, is set to /usr, these files contains
 > path to host system.

 > With BR2_COMPILER_PARANOID_UNSAFE_PATH package using gnuradio fails with:
 > arm-linux-gnueabihf-g++: ERROR: unsafe header/library path used in
 > cross-compilation: '-isystem' '/usr/include'

 > By simply providing 'include', produced .cmake contains:
 > INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
 > instead of
 > INTERFACE_INCLUDE_DIRECTORIES "/usr/include"

 > [Upstream status: https://github.com/gnuradio/gnuradio/pull/3737]

 > Fix (many) gr-osmosdr build failure:
 > - http://autobuild.buildroot.net/results/66b76c07f15bb3e6db697c47796ae3dd15ecf4b9/

 > Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>

Committed to 2020.05.x, thanks.
diff mbox series

Patch

diff --git a/package/gnuradio/0003-gnuradio-runtime_pmt-dont-hardcode-INTERFACE_INCLUDE_DIRECTORIES.patch b/package/gnuradio/0003-gnuradio-runtime_pmt-dont-hardcode-INTERFACE_INCLUDE_DIRECTORIES.patch
new file mode 100644
index 0000000000..6b8987fa5f
--- /dev/null
+++ b/package/gnuradio/0003-gnuradio-runtime_pmt-dont-hardcode-INTERFACE_INCLUDE_DIRECTORIES.patch
@@ -0,0 +1,57 @@ 
+From 84dea8284c521f08508bb2dcbc99db3b5d3438fd Mon Sep 17 00:00:00 2001
+From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
+Date: Thu, 27 Aug 2020 17:32:09 +0200
+Subject: [PATCH] gnuradio-runtime_pmt: dont hardcode
+ INTERFACE_INCLUDE_DIRECTORIES
+
+gnuradio-runtimeTargets.cmake and gnuradio-pmtTargets.cmake are filled
+using CMAKE_INSTALL_PREFIX for INSTALL_INTERFACE.
+
+Since CMAKE_INSTALL_PREFIX, in buildroot, is set to /usr, these files contains
+path to host system.
+
+With BR2_COMPILER_PARANOID_UNSAFE_PATH package using gnuradio fails with:
+arm-linux-gnueabihf-g++: ERROR: unsafe header/library path used in cross-compilation: '-isystem' '/usr/include'
+
+By simply providing 'include', produced .cmake contains:
+INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
+instead of
+INTERFACE_INCLUDE_DIRECTORIES "/usr/include"
+
+[Upstream status: https://github.com/gnuradio/gnuradio/pull/3737]
+
+Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
+---
+ gnuradio-runtime/lib/CMakeLists.txt     | 2 +-
+ gnuradio-runtime/lib/pmt/CMakeLists.txt | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gnuradio-runtime/lib/CMakeLists.txt b/gnuradio-runtime/lib/CMakeLists.txt
+index 5aa90a5e1..fc32f473b 100644
+--- a/gnuradio-runtime/lib/CMakeLists.txt
++++ b/gnuradio-runtime/lib/CMakeLists.txt
+@@ -214,7 +214,7 @@ target_link_libraries(gnuradio-runtime PUBLIC
+ 
+ target_include_directories(gnuradio-runtime
+   PUBLIC
+-    $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>
++    $<INSTALL_INTERFACE:include>
+     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
+     $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/../include>
+   PRIVATE
+diff --git a/gnuradio-runtime/lib/pmt/CMakeLists.txt b/gnuradio-runtime/lib/pmt/CMakeLists.txt
+index 9fb98d0fc..6dfcd945c 100644
+--- a/gnuradio-runtime/lib/pmt/CMakeLists.txt
++++ b/gnuradio-runtime/lib/pmt/CMakeLists.txt
+@@ -33,7 +33,7 @@ target_link_libraries(gnuradio-pmt
+ 
+ target_include_directories(gnuradio-pmt
+   PUBLIC
+-  $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>
++  $<INSTALL_INTERFACE:include>
+   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../include>
+   PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/
+   )
+-- 
+2.26.2
+