christf / snapcastc

C implementation of snapcast focussing on audio quality and ease of maintenance.
GNU General Public License v3.0
43 stars 6 forks source link

Building on Fedora 34: multiple definition of `opuscodec' #68

Closed kdknigga closed 2 years ago

kdknigga commented 2 years ago

Hello,

I'm trying to build on Fedora 34 (cmake version 3.20.5, gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) and I'm getting a lot of messages about "multiple definition of `opuscodec'" and then the build fails.

CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):                                                                                                                                                                       
  Compatibility with CMake < 2.8.12 will be removed from a future version of                                                                                                                                                                  
  CMake.                                                                                                                                                                                                                                      

  Update the VERSION argument <min> value or use a ...<max> suffix to tell                                                                                                                                                                    
  CMake that the project does not need compatibility with older versions.

-- The C compiler identification is GNU 11.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 ALSA: /usr/lib64/libasound.so (found version "1.2.5.1")                                                                                                                                                                              
-- Configuring done                                                                                                                                                                                                                           
-- Generating done                                                                                                                                                                                                                            
-- Build files have been written to: /home/kris/git/snapcastc/build                                                                                                                                                                           
[ 20%] Building C object src/CMakeFiles/common_libs.dir/util.c.o                                                                                                                                                                              
[ 20%] Building C object src/CMakeFiles/server_deps.dir/clientmgr.c.o                                                                                                                                                                         
[ 20%] Building C object src/CMakeFiles/client_deps.dir/alsaplayer.c.o                                                                                                                                                                        
[ 20%] Building C object src/CMakeFiles/client_deps.dir/intercom_client.c.o                                                                                                                                                                   
[ 20%] Building C object src/CMakeFiles/server_deps.dir/intercom_srv.c.o                                                                                                                                                                      
[ 24%] Building C object src/CMakeFiles/common_libs.dir/taskqueue.c.o                                                                                                                                                                         
[ 28%] Building C object src/CMakeFiles/server_deps.dir/inputpipe.c.o                                                                                                                                                                         
[ 32%] Building C object src/CMakeFiles/client_deps.dir/pqueue.c.o                                                                                                                                                                            
[ 36%] Building C object src/CMakeFiles/common_libs.dir/timespec.c.o                                                                                                                                                                          
[ 40%] Building C object src/CMakeFiles/common_libs.dir/vector.c.o
[ 40%] Built target client_deps                                                                                        
[ 44%] Building C object src/CMakeFiles/common_libs.dir/syscallwrappers.c.o                 
[ 48%] Building C object src/CMakeFiles/common_libs.dir/intercom.c.o
[ 52%] Building C object src/CMakeFiles/server_deps.dir/socket.c.o                                                     
[ 56%] Building C object src/CMakeFiles/common_libs.dir/pcmchunk.c.o                         
[ 60%] Building C object src/CMakeFiles/common_libs.dir/opuscodec.c.o                  
[ 64%] Building C object src/CMakeFiles/server_deps.dir/jsonrpc.c.o
[ 68%] Building C object src/CMakeFiles/server_deps.dir/stream.c.o
[ 68%] Built target common_libs
[ 76%] Building C object src/CMakeFiles/snapcast-test-client.dir/client-test.c.o
[ 76%] Building C object src/CMakeFiles/snapcast-client.dir/client.c.o
[ 76%] Built target server_deps
[ 84%] Building C object src/CMakeFiles/snapcast-server.dir/server.c.o
[ 84%] Building C object src/CMakeFiles/snapcast-test-srv.dir/server-test.c.o
[ 88%] Linking C executable snapcast-test-client
[ 92%] Linking C executable snapcast-client
/usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
[ 96%] Linking C executable snapcast-test-srv
[100%] Linking C executable snapcast-server
/usr/bin/ld: CMakeFiles/server_deps.dir/intercom_srv.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/clientmgr.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/inputpipe.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/socket.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/stream.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/intercom_srv.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/clientmgr.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/inputpipe.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/socket.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/stream.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-test-client.dir/build.make:121: src/snapcast-test-client] Error 1
make[1]: *** [CMakeFiles/Makefile2:111: src/CMakeFiles/snapcast-test-client.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-client.dir/build.make:121: src/snapcast-client] Error 1
make[1]: *** [CMakeFiles/Makefile2:244: src/CMakeFiles/snapcast-client.dir/all] Error 2
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-test-srv.dir/build.make:127: src/snapcast-test-srv] Error 1
make[1]: *** [CMakeFiles/Makefile2:138: src/CMakeFiles/snapcast-test-srv.dir/all] Error 2
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-server.dir/build.make:127: src/snapcast-server] Error 1
make[1]: *** [CMakeFiles/Makefile2:165: src/CMakeFiles/snapcast-server.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
Consolidate compiler generated dependencies of target common_libs
[ 32%] Built target common_libs
Consolidate compiler generated dependencies of target client_deps
[ 44%] Built target client_deps
Consolidate compiler generated dependencies of target snapcast-test-client
[ 48%] Linking C executable snapcast-test-client
/usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-test-client.dir/build.make:121: src/snapcast-test-client] Error 1
make[1]: *** [CMakeFiles/Makefile2:111: src/CMakeFiles/snapcast-test-client.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Any ideas what could be the problem?

christf commented 2 years ago

That is interesting - I was able to reproduce this and after removing the test files this is still happeneing. I am not sure why this is happening. This will take a bit of time.

Am Mon, Oct 25, 2021 at 08:41:02AM -0700 schrieb Kris Knigga:

Hello,

I'm trying to build on Fedora 34 (cmake version 3.20.5, gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) and I'm getting a lot of messages about "multiple definition of `opuscodec'" and then the build fails.

CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
 Compatibility with CMake < 2.8.12 will be removed from a future version of
 CMake.

 Update the VERSION argument <min> value or use a ...<max> suffix to tell
 CMake that the project does not need compatibility with older versions.

-- The C compiler identification is GNU 11.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 ALSA: /usr/lib64/libasound.so (found version "1.2.5.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kris/git/snapcastc/build
[ 20%] Building C object src/CMakeFiles/common_libs.dir/util.c.o
[ 20%] Building C object src/CMakeFiles/server_deps.dir/clientmgr.c.o
[ 20%] Building C object src/CMakeFiles/client_deps.dir/alsaplayer.c.o
[ 20%] Building C object src/CMakeFiles/client_deps.dir/intercom_client.c.o
[ 20%] Building C object src/CMakeFiles/server_deps.dir/intercom_srv.c.o
[ 24%] Building C object src/CMakeFiles/common_libs.dir/taskqueue.c.o
[ 28%] Building C object src/CMakeFiles/server_deps.dir/inputpipe.c.o
[ 32%] Building C object src/CMakeFiles/client_deps.dir/pqueue.c.o
[ 36%] Building C object src/CMakeFiles/common_libs.dir/timespec.c.o
[ 40%] Building C object src/CMakeFiles/common_libs.dir/vector.c.o
[ 40%] Built target client_deps
[ 44%] Building C object src/CMakeFiles/common_libs.dir/syscallwrappers.c.o
[ 48%] Building C object src/CMakeFiles/common_libs.dir/intercom.c.o
[ 52%] Building C object src/CMakeFiles/server_deps.dir/socket.c.o
[ 56%] Building C object src/CMakeFiles/common_libs.dir/pcmchunk.c.o
[ 60%] Building C object src/CMakeFiles/common_libs.dir/opuscodec.c.o
[ 64%] Building C object src/CMakeFiles/server_deps.dir/jsonrpc.c.o
[ 68%] Building C object src/CMakeFiles/server_deps.dir/stream.c.o
[ 68%] Built target common_libs
[ 76%] Building C object src/CMakeFiles/snapcast-test-client.dir/client-test.c.o
[ 76%] Building C object src/CMakeFiles/snapcast-client.dir/client.c.o
[ 76%] Built target server_deps
[ 84%] Building C object src/CMakeFiles/snapcast-server.dir/server.c.o
[ 84%] Building C object src/CMakeFiles/snapcast-test-srv.dir/server-test.c.o
[ 88%] Linking C executable snapcast-test-client
[ 92%] Linking C executable snapcast-client
/usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
[ 96%] Linking C executable snapcast-test-srv
[100%] Linking C executable snapcast-server
/usr/bin/ld: CMakeFiles/server_deps.dir/intercom_srv.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/clientmgr.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/inputpipe.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/socket.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/stream.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/intercom_srv.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/clientmgr.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/inputpipe.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/socket.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/stream.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-test-client.dir/build.make:121: src/snapcast-test-client] Error 1
make[1]: *** [CMakeFiles/Makefile2:111: src/CMakeFiles/snapcast-test-client.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-client.dir/build.make:121: src/snapcast-client] Error 1
make[1]: *** [CMakeFiles/Makefile2:244: src/CMakeFiles/snapcast-client.dir/all] Error 2
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-test-srv.dir/build.make:127: src/snapcast-test-srv] Error 1
make[1]: *** [CMakeFiles/Makefile2:138: src/CMakeFiles/snapcast-test-srv.dir/all] Error 2
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-server.dir/build.make:127: src/snapcast-server] Error 1
make[1]: *** [CMakeFiles/Makefile2:165: src/CMakeFiles/snapcast-server.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
Consolidate compiler generated dependencies of target common_libs
[ 32%] Built target common_libs
Consolidate compiler generated dependencies of target client_deps
[ 44%] Built target client_deps
Consolidate compiler generated dependencies of target snapcast-test-client
[ 48%] Linking C executable snapcast-test-client
/usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-test-client.dir/build.make:121: src/snapcast-test-client] Error 1
make[1]: *** [CMakeFiles/Makefile2:111: src/CMakeFiles/snapcast-test-client.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Any ideas what could be the problem? -- () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments

kdknigga commented 2 years ago

As a test, I also tried clang with the same result. I'll try to work backwards to figure out how old of a toolchain I need to make it work.

On Mon, Oct 25, 2021, 18:42 Christof Schulze @.***> wrote:

That is interesting - I was able to reproduce this and after removing the test files this is still happeneing. I am not sure why this is happening. This will take a bit of time.

Am Mon, Oct 25, 2021 at 08:41:02AM -0700 schrieb Kris Knigga:

Hello,

I'm trying to build on Fedora 34 (cmake version 3.20.5, gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) and I'm getting a lot of messages about "multiple definition of `opuscodec'" and then the build fails.

CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version
of
CMake.

Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.

-- The C compiler identification is GNU 11.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 ALSA: /usr/lib64/libasound.so (found version "1.2.5.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kris/git/snapcastc/build
[ 20%] Building C object src/CMakeFiles/common_libs.dir/util.c.o
[ 20%] Building C object src/CMakeFiles/server_deps.dir/clientmgr.c.o
[ 20%] Building C object src/CMakeFiles/client_deps.dir/alsaplayer.c.o
[ 20%] Building C object
src/CMakeFiles/client_deps.dir/intercom_client.c.o
[ 20%] Building C object src/CMakeFiles/server_deps.dir/intercom_srv.c.o
[ 24%] Building C object src/CMakeFiles/common_libs.dir/taskqueue.c.o
[ 28%] Building C object src/CMakeFiles/server_deps.dir/inputpipe.c.o
[ 32%] Building C object src/CMakeFiles/client_deps.dir/pqueue.c.o
[ 36%] Building C object src/CMakeFiles/common_libs.dir/timespec.c.o
[ 40%] Building C object src/CMakeFiles/common_libs.dir/vector.c.o
[ 40%] Built target client_deps
[ 44%] Building C object
src/CMakeFiles/common_libs.dir/syscallwrappers.c.o
[ 48%] Building C object src/CMakeFiles/common_libs.dir/intercom.c.o
[ 52%] Building C object src/CMakeFiles/server_deps.dir/socket.c.o
[ 56%] Building C object src/CMakeFiles/common_libs.dir/pcmchunk.c.o
[ 60%] Building C object src/CMakeFiles/common_libs.dir/opuscodec.c.o
[ 64%] Building C object src/CMakeFiles/server_deps.dir/jsonrpc.c.o
[ 68%] Building C object src/CMakeFiles/server_deps.dir/stream.c.o
[ 68%] Built target common_libs
[ 76%] Building C object
src/CMakeFiles/snapcast-test-client.dir/client-test.c.o
[ 76%] Building C object src/CMakeFiles/snapcast-client.dir/client.c.o
[ 76%] Built target server_deps
[ 84%] Building C object src/CMakeFiles/snapcast-server.dir/server.c.o
[ 84%] Building C object
src/CMakeFiles/snapcast-test-srv.dir/server-test.c.o
[ 88%] Linking C executable snapcast-test-client
[ 92%] Linking C executable snapcast-client
/usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here
[ 96%] Linking C executable snapcast-test-srv
[100%] Linking C executable snapcast-server
/usr/bin/ld: CMakeFiles/server_deps.dir/intercom_srv.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined
here
/usr/bin/ld: CMakeFiles/server_deps.dir/clientmgr.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined
here
/usr/bin/ld: CMakeFiles/server_deps.dir/inputpipe.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined
here
/usr/bin/ld: CMakeFiles/server_deps.dir/socket.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined
here
/usr/bin/ld: CMakeFiles/server_deps.dir/stream.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined
here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined
here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined
here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined
here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined
here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined
here
/usr/bin/ld: CMakeFiles/server_deps.dir/intercom_srv.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/clientmgr.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/inputpipe.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/socket.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/server_deps.dir/stream.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-test-client.dir/build.make:121:
src/snapcast-test-client] Error 1
make[1]: *** [CMakeFiles/Makefile2:111:
src/CMakeFiles/snapcast-test-client.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-client.dir/build.make:121:
src/snapcast-client] Error 1
make[1]: *** [CMakeFiles/Makefile2:244:
src/CMakeFiles/snapcast-client.dir/all] Error 2
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-test-srv.dir/build.make:127:
src/snapcast-test-srv] Error 1
make[1]: *** [CMakeFiles/Makefile2:138:
src/CMakeFiles/snapcast-test-srv.dir/all] Error 2
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-server.dir/build.make:127:
src/snapcast-server] Error 1
make[1]: *** [CMakeFiles/Makefile2:165:
src/CMakeFiles/snapcast-server.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
Consolidate compiler generated dependencies of target common_libs
[ 32%] Built target common_libs
Consolidate compiler generated dependencies of target client_deps
[ 44%] Built target client_deps
Consolidate compiler generated dependencies of target snapcast-test-client
[ 48%] Linking C executable snapcast-test-client
/usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple
definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
/usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0):
multiple definition of `opuscodec';
CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first
defined here
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/snapcast-test-client.dir/build.make:121:
src/snapcast-test-client] Error 1
make[1]: *** [CMakeFiles/Makefile2:111:
src/CMakeFiles/snapcast-test-client.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Any ideas what could be the problem?

() ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/christf/snapcastc/issues/68#issuecomment-951423651, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADJX7QE5IKF2ZOOIKWR47ITUIXTPZANCNFSM5GVTF34Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

kdknigga commented 2 years ago

Ok, I think I found it.

If I go back to gcc 9 the compile works. I checked the changelog for gcc 10 (https://gcc.gnu.org/gcc-10/changes.html) and found this:

GCC now defaults to -fno-common. As a result, global variable accesses are more efficient on various targets. In C, global variables with multiple tentative definitions now result in linker errors. With -fcommon such definitions are silently merged during linking.

So, running cmake .. -DCMAKE_C_FLAGS="-fcommon"; make seems to fix the issue.

kdknigga commented 2 years ago

Here's another way I've found that makes the compiler happy:

diff --git a/src/pcmchunk.c b/src/pcmchunk.c
index 02a1142..4d9698e 100644
--- a/src/pcmchunk.c
+++ b/src/pcmchunk.c
@@ -34,7 +34,7 @@ int chunk_getduration_ms(pcmChunk *chunk) {                                                
 bool chunk_is_empty(pcmChunk *c) { return !(c && c->play_at_tv_sec); }                                      

 bool chunk_decode(pcmChunk *c) {
-       extern opuscodec_ctx opuscodec;
+       opuscodec_ctx opuscodec;
        if (c && c->codec == CODEC_OPUS) {
                decode_opus_handle(&opuscodec, c);
                return true;
diff --git a/src/stream.h b/src/stream.h
index b6a4958..39e75fa 100644
--- a/src/stream.h
+++ b/src/stream.h
@@ -12,7 +12,7 @@ enum codec { PCM = 1, OPUS, INVALID };                                                     
 enum protocol { PIPE = 1 };

 // this will be used in the client for decoding
-opuscodec_ctx opuscodec;
+extern opuscodec_ctx opuscodec;

 typedef struct {
        int efd;
christf commented 2 years ago

the first approach works. I have tested it locally. The second one does not work directly and may require more work as the client crashes:

eived 0.
chunk size is not equal to alsa init size - (re-)initializing with samples: 48000 sample size: 2, channels 2
Fatal (internal) error in ../src/opus_decoder.c, line 810: assertion failed: st->channels == 1 || st->channels == 2

I am not very happy with introducing such options but I will apply this for now to make the project build again. Thank you very much for digging through all this and coming up with two solutions!

kdknigga commented 2 years ago

Thank you very much for digging through all this and coming up with two solutions!

Well, one solution, at least. :) A solution that crashes isn't much of a solution. But maybe it's the first step towards a second solution.