Skip to content

Fresh Build errors out on SU_SPECTTUNER_CHANNEL_TIME_DOMAIN undeclared #99

@jlpoolen

Description

@jlpoolen

I'm running Gentoo Linux on a Raspberry Pi5. I was able to install SigDigger using Gentoo's portage packaging system, but have had an extremely difficult time getting SigDigger to find my 2 RTL-SDRs connected to the Pi. I've gone back and forth with Gentoo's ebuilds and created my own custom ebuild because I found that there were some version/path issues in the library. My efforts to work within Gentoo's packages did not bear fruit. It looks like the problem is at the soapy level.

So, I decided to try a from-the-wild install of SigDigger and its dependencies and followed your instructions on the SigDigger site:

   % git clone --recursive https://github.com/BatchDrake/sigutils
   % cd sigutils && mkdir -p build && cd build && cmake .. && make && sudo make install && cd ../..
   % git clone --recursive https://github.com/BatchDrake/suscan
   % cd suscan && mkdir -p build && cd build && cmake .. && make && sudo make install && cd ../..
   % git clone https://github.com/BatchDrake/SuWidgets
   % cd SuWidgets && qmake6 SuWidgetsLib.pro && make && sudo make install && cd ..
   % git clone https://github.com/BatchDrake/SigDigger
   % cd SigDigger && qmake6 SigDigger.pro && make && sudo make install && cd ..

I succeeded in building and installing sigutils. I'm getting hung up on suscan. I figure you have been refactoring some of your variables and maybe something has been overlooked that is causing suscan to fail. Here's my attempt:

jlpoole@rpi5 /usr/local/src $ sudo rm -r suscan
jlpoole@rpi5 /usr/local/src $ git clone --recursive https://github.com/BatchDrake/suscan
Cloning into 'suscan'...
remote: Enumerating objects: 8733, done.
remote: Counting objects: 100% (1882/1882), done.
remote: Compressing objects: 100% (712/712), done.
remote: Total 8733 (delta 1284), reused 1693 (delta 1132), pack-reused 6851 (from 1)
Receiving objects: 100% (8733/8733), 5.12 MiB | 11.73 MiB/s, done.
Resolving deltas: 100% (6505/6505), done.
Submodule 'cmake/cmake-relativefilemacro' (https://github.com/antoniovazquezblanco/cmake-relativefilemacro.git) registered for path 'cmake/cmake-relativefilemacro'
Cloning into '/usr/local/src/suscan/cmake/cmake-relativefilemacro'...
remote: Enumerating objects: 15, done.        
remote: Counting objects: 100% (15/15), done.        
remote: Compressing objects: 100% (12/12), done.        
remote: Total 15 (delta 4), reused 13 (delta 3), pack-reused 0 (from 0)        
Receiving objects: 100% (15/15), done.
Resolving deltas: 100% (4/4), done.
Submodule path 'cmake/cmake-relativefilemacro': checked out '3d0e4c529dd5d83920e4299fecfb4355a4b9113c'
jlpoole@rpi5 /usr/local/src $ cd suscan && mkdir -p build && cd build && cmake ..
CMake Deprecation Warning at CMakeLists.txt:21 (cmake_minimum_required):
  Compatibility with CMake < 3.10 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value.  Or, use the <min>...<max> syntax
  to tell CMake that the project requires at least <min> but has been updated
  to work with policies introduced by <max> or earlier.


-- The C compiler identification is GNU 14.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "2.4.3")
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found ZLIB: /usr/lib64/libz.so (found version "1.3.1")
-- Checking for module 'sigutils>=0.1'
--   Found sigutils, version 0.3.0
-- Checking for module 'sndfile>=1.0.2'
--   Found sndfile, version 1.2.2
-- Checking for module 'fftw3f>=3.0'
--   Found fftw3f, version 3.3.10
-- Checking for module 'SoapySDR>=0.5.0'
--   Found SoapySDR, version 0.8.1
-- Checking for module 'libxml-2.0>=2.9.0'
--   Found libxml-2.0, version 2.13.6
-- Checking for module 'volk>=1.0'
--   Found volk, version 3.1
-- Checking for module 'json-c>=0.13'
--   Found json-c, version 0.18
-- Checking for module 'alsa>=1.2'
--   Found alsa, version 1.2.13
-- Checking for module 'portaudio-2.0>=19'
--   Found portaudio-2.0, version 19
-- Found CppCheck: /usr/bin/cppcheck
CppCheck found. Use cppcheck-analysis targets to run it
Cppcheck analysis already added
-- Configuring done (0.8s)
-- Generating done (0.1s)
-- Build files have been written to: /usr/local/src/suscan/build
jlpoole@rpi5 /usr/local/src/suscan/build $ make
[  0%] Building C object CMakeFiles/suscan.dir/util/bpe.c.o
[  0%] Building C object CMakeFiles/suscan.dir/util/cbor.c.o
[  1%] Building C object CMakeFiles/suscan.dir/util/cfg.c.o
[  1%] Building C object CMakeFiles/suscan.dir/util/com.c.o
[  2%] Building C object CMakeFiles/suscan.dir/util/compat.c.o
[  2%] Building C object CMakeFiles/suscan.dir/util/confdb.c.o
[  3%] Building C object CMakeFiles/suscan.dir/util/deserialize-xml.c.o
[  3%] Building C object CMakeFiles/suscan.dir/util/deserialize-yaml.c.o
[  4%] Building C object CMakeFiles/suscan.dir/util/hashlist.c.o
[  4%] Building C object CMakeFiles/suscan.dir/util/list.c.o
[  5%] Building C object CMakeFiles/suscan.dir/util/object.c.o
[  5%] Building C object CMakeFiles/suscan.dir/util/rbtree.c.o
[  6%] Building C object CMakeFiles/suscan.dir/util/serialize-xml.c.o
[  6%] Building C object CMakeFiles/suscan.dir/util/serialize-yaml.c.o
[  7%] Building C object CMakeFiles/suscan.dir/util/sha256.c.o
[  7%] Building C object CMakeFiles/suscan.dir/util/strmap.c.o
[  8%] Building C object CMakeFiles/suscan.dir/util/urlhelpers.c.o
[  8%] Building C object CMakeFiles/suscan.dir/yaml/api.c.o
[  9%] Building C object CMakeFiles/suscan.dir/yaml/dumper.c.o
[  9%] Building C object CMakeFiles/suscan.dir/yaml/emitter.c.o
[ 10%] Building C object CMakeFiles/suscan.dir/yaml/loader.c.o
[ 10%] Building C object CMakeFiles/suscan.dir/yaml/parser.c.o
[ 11%] Building C object CMakeFiles/suscan.dir/yaml/reader.c.o
[ 11%] Building C object CMakeFiles/suscan.dir/yaml/scanner.c.o
[ 12%] Building C object CMakeFiles/suscan.dir/yaml/writer.c.o
[ 12%] Building C object CMakeFiles/suscan.dir/analyzer/inspector/factory.c.o
[ 13%] Building C object CMakeFiles/suscan.dir/analyzer/inspector/inspector.c.o
/usr/local/src/suscan/analyzer/inspector/inspector.c:66:5: error: unknown type name 'su_specttuner_channel_data_func_t'; did you mean 'su_specttuner_channel_t'?
   66 |     su_specttuner_channel_data_func_t on_data,
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |     su_specttuner_channel_t
/usr/local/src/suscan/analyzer/inspector/inspector.c:67:5: error: unknown type name 'su_specttuner_channel_new_freq_func_t'
   67 |     su_specttuner_channel_new_freq_func_t on_new_freq,
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/sigutils/sigutils/block.h:28,
                 from /usr/include/sigutils/sigutils/sigutils.h:23,
                 from /usr/local/src/suscan/analyzer/inspector/inspector.c:28:
/usr/local/src/suscan/analyzer/inspector/inspector.c: In function 'suscan_sc_inspector_factory_open':
/usr/local/src/suscan/analyzer/inspector/inspector.c:211:13: error: implicit declaration of function 'suscan_inspector_open_sc_channel_ex'; did you mean 'suscan_inspector_open_sc_close_channel'? [-Wimplicit-function-declaration]
  211 |     schan = suscan_inspector_open_sc_channel_ex(
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sigutils/sigutils/defs.h:102:9: note: in definition of macro 'SU_TRYCATCH'
  102 |   if (!(expr)) {                         \
      |         ^~~~
/usr/local/src/suscan/analyzer/inspector/inspector.c:211:11: error: assignment to 'su_specttuner_channel_t *' {aka 'struct sigutils_specttuner_channel *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
  211 |     schan = suscan_inspector_open_sc_channel_ex(
      |           ^
/usr/include/sigutils/sigutils/defs.h:102:9: note: in definition of macro 'SU_TRYCATCH'
  102 |   if (!(expr)) {                         \
      |         ^~~~
/usr/local/src/suscan/analyzer/inspector/inspector.c:232:32: error: implicit declaration of function 'su_specttuner_uses_early_windowing' [-Wimplicit-function-declaration]
  232 |   samp_info->early_windowing = su_specttuner_uses_early_windowing(self->sc_stuner);
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/src/suscan/analyzer/inspector/inspector.c: In function 'suscan_sc_inspector_factory_set_domain':
/usr/local/src/suscan/analyzer/inspector/inspector.c:347:3: error: implicit declaration of function 'su_specttuner_channel_set_domain'; did you mean 'su_specttuner_channel_get_delta_f'? [-Wimplicit-function-declaration]
  347 |   su_specttuner_channel_set_domain(
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |   su_specttuner_channel_get_delta_f
/usr/local/src/suscan/analyzer/inspector/inspector.c:350:7: error: 'SU_SPECTTUNER_CHANNEL_FREQUENCY_DOMAIN' undeclared (first use in this function)
  350 |     ? SU_SPECTTUNER_CHANNEL_FREQUENCY_DOMAIN
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/src/suscan/analyzer/inspector/inspector.c:350:7: note: each undeclared identifier is reported only once for each function it appears in
/usr/local/src/suscan/analyzer/inspector/inspector.c:351:7: error: 'SU_SPECTTUNER_CHANNEL_TIME_DOMAIN' undeclared (first use in this function)
  351 |     : SU_SPECTTUNER_CHANNEL_TIME_DOMAIN);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/suscan.dir/build.make:443: CMakeFiles/suscan.dir/analyzer/inspector/inspector.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:163: CMakeFiles/suscan.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
jlpoole@rpi5 /usr/local/src/suscan/build $ git log -1
commit 39aca1a6d6651ab3ec7b704c706dd857e741804c (HEAD -> master, origin/master, origin/HEAD)
Author: Gonzalo José Carracedo Carballal <BatchDrake@gmail.com>
Date:   Sat Feb 1 13:12:45 2025 +0100

    Fix uninitialized variable in makeprof command
jlpoole@rpi5 /usr/local/src/suscan/build $ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
jlpoole@rpi5 /usr/local/src/suscan/build $ 

I do have the STL_SDRs working and have been using them with other programs; in fact I have dedicated one for a specific frequency, 119.1 MHz, of our local airport tower, and have placed a UDP server on it then a UDP->TCP/IP server under than for programs such as openwebrx+ that cannot connect to a UDP server. I very much would like to see SigDigger work, your "with love" quip in the credits demonstrates an ethos in a developer that should be encouraged and rewarded. So I bring the above to your attention with the hope it will not distract you from getting your 0.4 release out the door.

I figure that at a minimum, suscan should build, especially since it seems to with Gentoo's package:

jlpoole@rpi5 /usr/local/src/suscan/build $ eix suscan
[I] net-wireless/suscan
     Available versions:  (~*)0.3.0
     Installed versions:  0.3.0(15:39:15 05/05/25)
     Homepage:            https://github.com/BatchDrake/suscan
     Description:         a realtime DSP processing library

jlpoole@rpi5 /usr/local/src/suscan/build $ 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions