Bug 210444 - comms/gnuradio: build fail
Summary: comms/gnuradio: build fail
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: amd64 Any
: --- Affects Some People
Assignee: hamradio (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-06-21 19:47 UTC by Ivan Rozhuk
Modified: 2016-12-28 00:18 UTC (History)
4 users (show)

See Also:
bugzilla: maintainer-feedback? (hamradio)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ivan Rozhuk 2016-06-21 19:47:52 UTC
...
/usr/bin/strip /tmp/ports/usr/ports/comms/gnuradio/work/stage/usr/local/lib/libgnuradio-qtgui.so.3.7.8
/usr/bin/strip /tmp/ports/usr/ports/comms/gnuradio/work/stage/usr/local/lib/libgnuradio-runtime.so.3.7.8
/usr/bin/strip /tmp/ports/usr/ports/comms/gnuradio/work/stage/usr/local/lib/libgnuradio-trellis.so.3.7.8
/usr/bin/strip /tmp/ports/usr/ports/comms/gnuradio/work/stage/usr/local/lib/libgnuradio-video-sdl.so.3.7.8
/usr/bin/strip /tmp/ports/usr/ports/comms/gnuradio/work/stage/usr/local/lib/libgnuradio-vocoder.so.3.7.8
/usr/bin/strip /tmp/ports/usr/ports/comms/gnuradio/work/stage/usr/local/lib/libgnuradio-wavelet.so.3.7.8
/usr/bin/strip /tmp/ports/usr/ports/comms/gnuradio/work/stage/usr/local/lib/libgnuradio-wxgui.so.3.7.8
/usr/bin/strip: '/tmp/ports/usr/ports/comms/gnuradio/work/stage/usr/local/lib/libgnuradio-wxgui.so.3.7.8': No such file
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/comms/gnuradio
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/comms/gnuradio
*** Error code 1

Stop.
make: stopped in /usr/ports/comms/gnuradio
Exit 1
Comment 1 takefu 2016-06-22 06:32:25 UTC
(In reply to rozhuk.im from comment #0)

Try the patch.
https://bz-attachments.freebsd.org/attachment.cgi?id=171189
Comment 2 Ivan Rozhuk 2016-06-24 22:02:35 UTC
better, but still fail:
....


Scanning dependencies of target gnuradio-wavelet
[ 73%] Building CXX object gr-wavelet/lib/CMakeFiles/gnuradio-wavelet.dir/squash_ff_impl.cc.o
[ 73%] Building CXX object gr-wavelet/lib/CMakeFiles/gnuradio-wavelet.dir/wavelet_ff_impl.cc.o
[ 73%] Building CXX object gr-filter/lib/CMakeFiles/gnuradio-filter.dir/interp_fir_filter_ccf_impl.cc.o
[ 73%] Building CXX object gr-wavelet/lib/CMakeFiles/gnuradio-wavelet.dir/wvps_ff_impl.cc.o
[ 74%] Building CXX object gr-filter/lib/CMakeFiles/gnuradio-filter.dir/interp_fir_filter_fcc_impl.cc.o
[ 74%] Linking CXX shared library libgnuradio-wavelet.so
[ 74%] Built target gnuradio-wavelet
[ 74%] Building CXX object gr-filter/lib/CMakeFiles/gnuradio-filter.dir/interp_fir_filter_fff_impl.cc.o
Scanning dependencies of target _fec_swig
[ 74%] Building CXX object gr-fec/swig/CMakeFiles/_fec_swig.dir/fec_swigPYTHON_wrap.cxx.o
In file included from /tmp/ports/usr/ports/comms/gnuradio/work/.build/gr-fec/swig/fec_swigPYTHON_wrap.cxx:4766:
In file included from /tmp/ports/usr/ports/comms/gnuradio/work/gnuradio-3.7.9.2/gr-fec/include/gnuradio/fec/polar_decoder_sc.h:28:
/tmp/ports/usr/ports/comms/gnuradio/work/gnuradio-3.7.9.2/gr-fec/include/gnuradio/fec/polar_decoder_common.h:71:47: warning: in-class initializer for static data member of type 'const float' is a GNU extension [-Wgnu-static-float-init]
        static BOOST_CONSTEXPR_OR_CONST float D_LLR_FACTOR = -2.19722458f;
                                              ^              ~~~~~~~~~~~~
[ 74%] Building CXX object gr-filter/lib/CMakeFiles/gnuradio-filter.dir/interp_fir_filter_fsf_impl.cc.o
[ 74%] Building CXX object gr-filter/lib/CMakeFiles/gnuradio-filter.dir/interp_fir_filter_scc_impl.cc.o
[ 74%] Building CXX object gr-filter/lib/CMakeFiles/gnuradio-filter.dir/rational_resampler_base_ccc_impl.cc.o
[ 74%] Building CXX object gr-filter/lib/CMakeFiles/gnuradio-filter.dir/rational_resampler_base_ccf_impl.cc.o
[ 74%] Building CXX object gr-filter/lib/CMakeFiles/gnuradio-filter.dir/rational_resampler_base_fcc_impl.cc.o
[ 74%] Building CXX object gr-filter/lib/CMakeFiles/gnuradio-filter.dir/rational_resampler_base_fff_impl.cc.o
[ 74%] Building CXX object gr-filter/lib/CMakeFiles/gnuradio-filter.dir/rational_resampler_base_fsf_impl.cc.o
1 warning generated.
[ 74%] Linking CXX shared module _fec_swig.so
/usr/bin/ld: cannot find -lgsl
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
--- gr-fec/swig/_fec_swig.so ---
*** [gr-fec/swig/_fec_swig.so] Error code 1

make[5]: stopped in /tmp/ports/usr/ports/comms/gnuradio/work/.build
1 error

make[5]: stopped in /tmp/ports/usr/ports/comms/gnuradio/work/.build
--- gr-fec/swig/CMakeFiles/_fec_swig.dir/all ---
*** [gr-fec/swig/CMakeFiles/_fec_swig.dir/all] Error code 2

make[4]: stopped in /tmp/ports/usr/ports/comms/gnuradio/work/.build
A failure has been detected in another branch of the parallel make

make[5]: stopped in /tmp/ports/usr/ports/comms/gnuradio/work/.build
--- gr-filter/lib/CMakeFiles/gnuradio-filter.dir/all ---
*** [gr-filter/lib/CMakeFiles/gnuradio-filter.dir/all] Error code 2

make[4]: stopped in /tmp/ports/usr/ports/comms/gnuradio/work/.build
2 errors

make[4]: stopped in /tmp/ports/usr/ports/comms/gnuradio/work/.build
*** [all] Error code 2

make[3]: stopped in /tmp/ports/usr/ports/comms/gnuradio/work/.build
1 error

make[3]: stopped in /tmp/ports/usr/ports/comms/gnuradio/work/.build
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/comms/gnuradio
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/comms/gnuradio
*** Error code 1

Stop.
make: stopped in /usr/ports/comms/gnuradio
Exit 1



gsl - GNU Scientific Library - installed, 1.16
Comment 3 Diane Bruce freebsd_committer freebsd_triage 2016-10-10 12:58:50 UTC
Latest update to gnuradio 3.7.9.2 should take care of this.
Thanks to @takefu for help with patches
Comment 4 gdinolt 2016-10-25 05:38:14 UTC
FreeBSD 11.0 Stable (revision 307683).  gnuradio-3.7.9.2 (revision r423657)

I can report that the -lgsl problem still persists.  It appears that when -lgsl appears in the creation of a .so (several places) via an invocation of  /usr/bin/c++, the directory /usr/local/lib/ is not referenced since it is not part of the default clang specs, hence -lgsl (libgsl.so) is not found.  (see c++ --print-search-dirs).  I was able to force through the build with a terrible kludge: I added 

SET(CMAKE_CXX_FLAGS = "${CMAKE_CXX_FLAGS} -L/usr/local/lib")

to the top level CMakefile.txt

One gets a number of "unused flags" warnings, but this works.  Maybe someone with an understanding of how cmake works will find a real fix.

I can also report that the "libgcc.so.1 not found" error still persists.  Using:

LD_LIBRARY_PATH=/usr/local/lib/gcc48 gnuradio-companion will get that program to execute.
Comment 5 Diane Bruce freebsd_committer freebsd_triage 2016-12-24 20:26:50 UTC
I've finally had some time to look at this. I understand the cmake system here a bit but I think your fix is good enough.

I also have a idea to solve the wrong libgcc_s problem. Stay tuned.
Comment 6 commit-hook freebsd_committer freebsd_triage 2016-12-26 18:28:59 UTC
A commit references this bug:

Author: db
Date: Mon Dec 26 18:28:46 UTC 2016
New revision: 429562
URL: https://svnweb.freebsd.org/changeset/ports/429562

Log:
  Bump PORT_REVISION as pkg-plist has changed.
  Fixed build on 10.1 but in the process found a bogus pkg-plist fixed.
  If DOCS was defined, the plist was wrong.
  Also cleaned up a dependency

  Fixed using https://cmake.org/cmake/help/v3.0/command/link_directories.html
  This shouldn't be necessary:

  "Note that this command is rarely necessary. Library locations returned by find_package() and find_library() are absolute paths. Pass these absolute library file paths directly to the target_link_libraries() command. CMake will ensure the linker finds them."

  The directory path appears to be in /usr/local/libdata/pkgconfig/gsl.pc
  so it would appear the swig handling code neglects to respect this.
  I'll dig into this sometime later.

  PR:		ports/210444
  Submitted by:	rozhuk.im@gmail.com

Changes:
  head/comms/gnuradio/Makefile
  head/comms/gnuradio/files/patch-CMakeLists.txt
  head/comms/gnuradio/files/patch-grc_scripts_gnuradio-companion
  head/comms/gnuradio/files/patch-volk_CMakeLists.txt
  head/comms/gnuradio/pkg-plist
Comment 7 Diane Bruce freebsd_committer freebsd_triage 2016-12-28 00:17:51 UTC
Note the problem with wrong libgcc_s is a deeper problem elsewhere. One suggested solution is to use LD_PRELOAD or LD_LIBRARY_PATH. man rtld.