sccn / liblsl

C++ lsl library for multi-modal time-synched data transmission over the local network
Other
107 stars 63 forks source link

Failed to compile liblsl using gcc 13.1.1 20230429 #193

Closed florin-pop closed 1 year ago

florin-pop commented 1 year ago

On Arch Linux I was installing LSL until recently from Arch User Repository. This simply checks out the repo, runs cmake and defines the installation location (See PKGBUILD). The build started failing recently with the error: ISO C++ forbids declaration of ‘uint32_t’ with no type.

I am using gcc 13.1.1 20230429 and I noticed that commenting out this line of code made the build succeed. I didn't investigate the root cause, but wanted to share the experience in case someone else encounters the same issue or in case you know how the best way this should be handled.

Thank you for all the great work you put into making this library possible.

florin-pop commented 1 year ago

Build log:

[florin@archlinux ~]$ yay -S liblsl
AUR Explicit (1): liblsl-1.16.1-1
:: (1/1) Downloaded PKGBUILD: liblsl
  1 liblsl                                   (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> 
  1 liblsl                                   (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> 
==> Making package: liblsl 1.16.1-1 (Sat 06 May 2023 07:22:00 AM CEST)
==> Retrieving sources...
  -> Cloning liblsl-1.16.1 git repo...
Cloning into bare repository '/home/florin/.cache/yay/liblsl/liblsl-1.16.1'...
remote: Enumerating objects: 28306, done.
remote: Counting objects: 100% (3000/3000), done.
remote: Compressing objects: 100% (1131/1131), done.
remote: Total 28306 (delta 1998), reused 2689 (delta 1838), pack-reused 25306
Receiving objects: 100% (28306/28306), 16.48 MiB | 10.40 MiB/s, done.
Resolving deltas: 100% (19809/19809), done.
==> Validating source files with md5sums...
    liblsl-1.16.1 ... Skipped
:: (1/1) Parsing SRCINFO: liblsl
==> Making package: liblsl 1.16.1-1 (Sat 06 May 2023 07:22:04 AM CEST)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Updating liblsl-1.16.1 git repo...
==> Validating source files with md5sums...
    liblsl-1.16.1 ... Skipped
==> Removing existing $srcdir/ directory...
==> Extracting sources...
  -> Creating working copy of liblsl-1.16.1 git repo...
Cloning into 'liblsl-1.16.1'...
done.
Switched to a new branch 'makepkg'
==> Sources are ready.
==> Making package: liblsl 1.16.1-1 (Sat 06 May 2023 07:22:05 AM CEST)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> WARNING: Using existing $srcdir/ tree
==> Starting build()...
-- The C compiler identification is GNU 13.1.1
-- The CXX compiler identification is GNU 13.1.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
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using bundled pugixml
-- Found Git: /usr/bin/git (found version "2.40.1") 
-- Git version information: makepkg/v1.16.1
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Using bundled Boost
-- Looking for clock_gettime
-- Looking for clock_gettime - found
-- Included LSL CMake helpers, rev. 15, /home/florin/.cache/yay/liblsl/src/liblsl-1.16.1/cmake
-- Detected architecture: amd64
-- Installing Components: liblsl
-- Configuring done (0.5s)
-- Generating done (0.0s)
-- Build files have been written to: /home/florin/.cache/yay/liblsl/src/liblsl-1.16.1/build
make: Entering directory '/home/florin/.cache/yay/liblsl/src/liblsl-1.16.1/build'
[  2%] Building CXX object CMakeFiles/lslobj.dir/src/api_config.cpp.o
[  5%] Building CXX object CMakeFiles/lslobj.dir/src/cancellation.cpp.o
[  8%] Building CXX object CMakeFiles/lslobj.dir/src/common.cpp.o
[ 11%] Building CXX object CMakeFiles/lslobj.dir/src/consumer_queue.cpp.o
[ 14%] Building CXX object CMakeFiles/lslobj.dir/src/data_receiver.cpp.o
[ 17%] Building CXX object CMakeFiles/lslobj.dir/src/info_receiver.cpp.o
[ 20%] Building CXX object CMakeFiles/lslobj.dir/src/inlet_connection.cpp.o
[ 22%] Building CXX object CMakeFiles/lslobj.dir/src/lsl_resolver_c.cpp.o
[ 25%] Building CXX object CMakeFiles/lslobj.dir/src/lsl_inlet_c.cpp.o
[ 28%] Building CXX object CMakeFiles/lslobj.dir/src/lsl_outlet_c.cpp.o
[ 31%] Building CXX object CMakeFiles/lslobj.dir/src/lsl_streaminfo_c.cpp.o
[ 34%] Building CXX object CMakeFiles/lslobj.dir/src/lsl_xml_element_c.cpp.o
[ 37%] Building CXX object CMakeFiles/lslobj.dir/src/netinterfaces.cpp.o
[ 40%] Building CXX object CMakeFiles/lslobj.dir/src/resolver_impl.cpp.o
[ 42%] Building CXX object CMakeFiles/lslobj.dir/src/resolve_attempt_udp.cpp.o
[ 45%] Building CXX object CMakeFiles/lslobj.dir/src/sample.cpp.o
[ 48%] Building CXX object CMakeFiles/lslobj.dir/src/send_buffer.cpp.o
[ 51%] Building CXX object CMakeFiles/lslobj.dir/src/socket_utils.cpp.o
[ 54%] Building CXX object CMakeFiles/lslobj.dir/src/stream_info_impl.cpp.o
[ 57%] Building CXX object CMakeFiles/lslobj.dir/src/stream_outlet_impl.cpp.o
[ 60%] Building CXX object CMakeFiles/lslobj.dir/src/tcp_server.cpp.o
[ 62%] Building CXX object CMakeFiles/lslobj.dir/src/time_postprocessor.cpp.o
[ 65%] Building CXX object CMakeFiles/lslobj.dir/src/time_receiver.cpp.o
[ 68%] Building CXX object CMakeFiles/lslobj.dir/src/udp_server.cpp.o
[ 71%] Building CXX object CMakeFiles/lslobj.dir/src/util/cast.cpp.o
/home/florin/.cache/yay/liblsl/src/liblsl-1.16.1/src/util/cast.cpp:39:10: error: ISO C++ forbids declaration of ‘uint32_t’ with no type [-fpermissive]
   39 | template uint32_t from_string(const std::string &);
      |          ^~~~~~~~
/home/florin/.cache/yay/liblsl/src/liblsl-1.16.1/src/util/cast.cpp:39:10: error: ‘uint32_t’ is not a template function
/home/florin/.cache/yay/liblsl/src/liblsl-1.16.1/src/util/cast.cpp:39:18: error: expected ‘;’ before ‘from_string’
   39 | template uint32_t from_string(const std::string &);
      |                  ^~~~~~~~~~~~
      |                  ;
make[2]: *** [CMakeFiles/lslobj.dir/build.make:412: CMakeFiles/lslobj.dir/src/util/cast.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:87: CMakeFiles/lslobj.dir/all] Error 2
make: *** [Makefile:156: all] Error 2
make: Leaving directory '/home/florin/.cache/yay/liblsl/src/liblsl-1.16.1/build'
==> ERROR: A failure occurred in build().
    Aborting...
 -> error making: liblsl-exit status 4
 -> Failed to install the following packages. Manual intervention is required:
liblsl - exit status 4
tstenner commented 1 year ago

This should be fixed by a6f3175f509f0da345e259c494d6c6bfe73b4ff7.