dasch-swiss/sipi

Compile problems

benjamingeer opened this issue · 5 comments

With the latest develop on macOS, I get:

[ 76%] Linking CXX executable sipi
ld: library not found for -lidn
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I run brew install libidn and try again, and get:

[ 64%] Linking CXX executable sipi
Undefined symbols for architecture x86_64:
  "_RTMP_Alloc", referenced from:
      _rtmp_setup_connection in libcurl.a(libcurl_la-curl_rtmp.o)
  "_RTMP_Close", referenced from:
      _rtmp_disconnect in libcurl.a(libcurl_la-curl_rtmp.o)
  "_RTMP_Connect1", referenced from:
      _rtmp_connect in libcurl.a(libcurl_la-curl_rtmp.o)
  "_RTMP_ConnectStream", referenced from:
      _rtmp_do in libcurl.a(libcurl_la-curl_rtmp.o)
  "_RTMP_Free", referenced from:
      _rtmp_setup_connection in libcurl.a(libcurl_la-curl_rtmp.o)
      _rtmp_disconnect in libcurl.a(libcurl_la-curl_rtmp.o)
  "_RTMP_Init", referenced from:
      _rtmp_setup_connection in libcurl.a(libcurl_la-curl_rtmp.o)
  "_RTMP_Read", referenced from:
      _rtmp_recv in libcurl.a(libcurl_la-curl_rtmp.o)
  "_RTMP_SetBufferMS", referenced from:
      _rtmp_setup_connection in libcurl.a(libcurl_la-curl_rtmp.o)
  "_RTMP_SetupURL", referenced from:
      _rtmp_setup_connection in libcurl.a(libcurl_la-curl_rtmp.o)
  "_RTMP_Write", referenced from:
      _rtmp_send in libcurl.a(libcurl_la-curl_rtmp.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Yes, unfortunately there are to many moving parts when compiling on macOS. For now, please compile inside the Docker image, if you need to work on Sipi. Or you can try to move the order of the libraries supplied to the linker, but then it will probably break someone else. When I have more time, I will try to add building of all libraries inside the project, so that none are used from the local system. Then building under macOS should be less brittle.

If you only want to use Sipi with Knora, then the rule would be to use the published Docker images, since this is what will be used in production.

I think the linker is missing this library: https://linux.die.net/man/3/librtmp

First time that I see this symbol.

Reopening because I don't just need to run Sipi, I also need to develop Sipi.

@subotic @benjamingeer @peterfornaro I think we need to have SIPI running also outside docker in different environments. SIPI has a life outside the Knora/DaSCH-Universe (e.g. the University library Basel, Monestary St. Gallen, e-codices, Getty in Los Angeles etc.). Not all of these environments are dockerized. OS X is a BSD UNIX variant. I know that many server environments use BSD so this will be one of my next "adventures" to compile SIPI on a plain vanilla BSD 4.X (using parallels...).

I'm even crazy enough to think of windows (may be for my sabbatical? :-) – it should be possible using the posix environment ofwindows (did this with Cadwork software which I developed on Linux, but was and still is being used on windows...)

@lrosenth Yes, I agree. Then we need additional resources, as we already talked about, dedicated to Sipi and external to the DaSCH.