Marcus,
  I think I have found the issue, just not a correct solution yet.  Based
on the bug report:
https://cmake.org/Bug/print_bug_page.php?bug_id=14367
Which is  marked as not a bug, but explains the issue I am seeing very
well.
gnuradio-runtime.swig/CMakeLists.txt uses an absolute path for the
DESTINATION ( or something that gets turned into an absolute path) in the
lines:
install(
  TARGETS runtime_swig
  EXPORT runtime_swig-export
  DESTINATION ${GR_PYTHON_DIR}/gnuradio/gr
  )

The DESTINATION should point to a relative path, based on the above bug
report.

For testing I changed the last line to:
DESTINATION lib/python3.5/site-packages/gnuradio/gr
And rebuild gnuradio for cross-compiling.
I then build OOT modules gr-iio from my fork and gr-paint38, both
successful built.  I have not tried executing the code yet.

I am not sure of the correct way to create a variable which will point to
the relative path only of GR_PYTHON_DIR within the CMake process, and I
think that is what is needed to correctly fix the issue. This may show up
because the installed path is /usr/lib/... on the sysroot and not an actual
PREFIX.

Thanks
Toby

On Mon, May 20, 2019 at 1:44 PM Toby Flynn <campingandski...@gmail.com>
wrote:

> Marcus,
>    The last file differences I sent are in a file created from
> CMakeLists.txt, lines 74-78.  Swig builds with no issues, it is when I link
> an OOT that the file _runtime_swig.so cannot be found because the
> runtime_swigTargets-release.cmake file has the wrong directory location,
> somehow it lost the variable which allows for a PREFIX, ${_IMPORT_PREFIX}.
> Looking at the difference it may be that _IMPORT_PREFIX is not getting set
> correctly somewhere.  I am still working on this issue.
>
> Toby
>
> On Mon, May 20, 2019 at 11:55 AM Müller, Marcus (CEL) <muel...@kit.edu>
> wrote:
>
>> Hi Toby,
>>
>> I don't really doubt it's a CMake issue; to be precise, I think it's an
>> issue in the triangle between CMake, CMake instructing SWIG and
>> detecting the right Python libs along the way.
>>
>> Anyway, I'll take a minute to literally parse your email :)
>>
>> Thanks!
>> Marcus
>>
>> On Mon, 2019-05-20 at 09:09 -0400, Toby Flynn wrote:
>> > Marcus,
>> >    I think what you want to see if the configuration for CMake, the
>> actual build line is fairly normal.  This is the contents of the file which
>> configures CMake.  I believe this is a CMake issue, not a Python issue.
>>  It is only the creation of one .cmake file which leads to OOT building
>> errors.
>> > Thanks
>> > Toby
>> >
>> > # CMake system name must be something like "Linux".
>> > # This is important for cross-compiling.
>> >
>> > set( CMAKE_SYSTEM_NAME Linux )
>> > set( CMAKE_SYSTEM_PROCESSOR aarch64 )
>> > set( CMAKE_C_COMPILER aarch64-poky-linux-gcc )
>> > set( CMAKE_CXX_COMPILER aarch64-poky-linux-g++ )
>> > set( CMAKE_ASM_COMPILER aarch64-poky-linux-gcc )
>> > set( CMAKE_AR aarch64-poky-linux-ar CACHE FILEPATH "Archiver" )
>> > set( CMAKE_C_FLAGS "
>> --sysroot=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot
>> -O2 -pipe -g -feliminate-unused-debug-types
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0=/usr/src/debug/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot=
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot-native=
>>
>> --sysroot=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot"
>> CACHE STRING "CFLAGS" )
>> > set( CMAKE_CXX_FLAGS "
>> --sysroot=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot
>> -O2 -pipe -g -feliminate-unused-debug-types
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0=/usr/src/debug/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot=
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot-native=
>> -fvisibility-inlines-hidden
>>  
>> --sysroot=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot"
>> CACHE STRING "CXXFLAGS" )
>> > set( CMAKE_ASM_FLAGS "
>> --sysroot=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot
>> -O2 -pipe -g -feliminate-unused-debug-types
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0=/usr/src/debug/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot=
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot-native=
>>
>> --sysroot=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot"
>> CACHE STRING "ASM FLAGS" )
>> > set( CMAKE_C_FLAGS_RELEASE "-DNDEBUG" CACHE STRING "Additional CFLAGS
>> for release" )
>> > set( CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG" CACHE STRING "Additional
>> CXXFLAGS for release" )
>> > set( CMAKE_ASM_FLAGS_RELEASE "-DNDEBUG" CACHE STRING "Additional ASM
>> FLAGS for release" )
>> > set( CMAKE_C_LINK_FLAGS "
>> --sysroot=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot
>> -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed" CACHE STRING "LDFLAGS" )
>> > set( CMAKE_CXX_LINK_FLAGS "
>> --sysroot=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot
>> -O2 -pipe -g -feliminate-unused-debug-types
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0=/usr/src/debug/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot=
>> -fdebug-prefix-map=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot-native=
>> -fvisibility-inlines-hidden
>>  
>> --sysroot=/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot
>> -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed" CACHE STRING "LDFLAGS" )
>> >
>> > # only search in the paths provided so cmake doesnt pick
>> > # up libraries and tools from the native build machine
>> > set( CMAKE_FIND_ROOT_PATH
>> /home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot
>> /home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot-native
>>   )
>> > set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY )
>> > set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY )
>> > set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
>> > set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
>> >
>> > # Use qt.conf settings
>> > set( ENV{QT_CONF_PATH}
>> /home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/qt.conf
>> )
>> >
>> > # We need to set the rpath to the correct directory as cmake does not
>> provide any
>> > # directory as rpath by default
>> > set( CMAKE_INSTALL_RPATH  )
>> >
>> > # Use native cmake modules
>> > list(APPEND CMAKE_MODULE_PATH
>> "/home/builduser/Development/38test/ultra/oe/build/tmp/work/aarch64-poky-linux/gnuradio/3.8.0+gitAUTOINC+72aa97daab-r0/recipe-sysroot/usr/share/cmake/Modules/")
>> >
>> > # add for non /usr/lib libdir, e.g. /usr/lib64
>> > set( CMAKE_LIBRARY_PATH /usr/lib /lib)
>> >
>> >
>> > On Fri, May 17, 2019 at 4:46 PM Müller, Marcus (CEL) <muel...@kit.edu>
>> wrote:
>> > > Hi Toby,
>> > >
>> > > what's the verbatim cmake command line Yocto is executing?
>> > >
>> > > Since it's impossible for the build system to know by itself what the
>> > > target python will be, unless you tell it which, we'll have to figure
>> > > out a way to consistently set Python used during CMake, Python used
>> > > during build, and Python used on target.
>> > > It's a complicated thing, actually – the python that the build system
>> > > internally (a lot!) doesn't have to be the one the used to link SWIG
>> > > files against.
>> > > So, I see no way but to set the PYTHON_LIBRARIES and
>> > > PYTHON_INCLUDE_DIRS explitly in the cmake command line. (If anyone
>> > > could point me towards an easier solution that doesn't trade project
>> > > sanity for having one argument fewer in a OE layer, I'd be very
>> happy.)
>> > >
>> > > Now, I don't know if all this is related to your problem. But then
>> > > again, I don't know anything about the OOT module you're trying to
>> > > build. So far, we don't have overly many 3.8-compatible OOTs, so if
>> you
>> > > can point us to the one you're working with, that would be highly
>> > > appreciated. One of the main reasons of breakage is that the old CMake
>> > > constructs we used to employ in GNU Radio have been replaced by more
>> > > modern CMake patterns, which especially means that the notion of
>> > > component dependencies and hence install targets has changed.
>> > >
>> > > Best regards,
>> > > Marcus
>> > >
>> > > On Fri, 2019-05-17 at 13:21 -0400, Toby Flynn wrote:
>> > > > I am attempting to install OOT modules using a Yocto/Openembedded
>> > > > enviroment and the latest GNURadio 3.8.  This process was working
>> > > > before the latest cmake changes to 3.8 were incorporated.  I am now
>> > > > having issues with the cross-complitaion.  I have tracked the issue
>> > > > down to a file I believe is created by cmake:
>> > > > build/gnuradio-
>> > > >
>> runtime/swig/CMakeFiles/Export/lib/cmake/gnuradio/runtime_swigTargets
>> > > > -release.cmake
>> > > >
>> > > > When building directly on a computer this file has difference, line
>> > > > 10 than the one build using Yocto.
>> > > > Direct build on a computer the line is:
>> > > > IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/python3.6/dist-
>> > > > packages/gnuradio/gr/_runtime_swig.so"
>> > > >
>> > > > On the Yocto build the line is:
>> > > >
>> > > > IMPORTED_LOCATION_RELEASE "/usr/lib/python3.5/site-
>> > > > packages/gnuradio/gr/_runtime_swig.so"
>> > > >
>> > > > The missing ${_IMPORT_PREFIX} leads to cmake issues since
>> > > > _runtime_swig.so cannot be found.
>> > > >
>> > > > Does anyone have a suggestion for something I can try to fix the
>> > > > issue.
>> > > >
>> > > > Thanks
>> > > > Toby
>> > > >
>> > > >
>> > > > _______________________________________________
>> > > > Discuss-gnuradio mailing list
>> > > > Discuss-gnuradio@gnu.org
>> > > > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to