awslabs / amazon-kinesis-video-streams-producer-sdk-cpp

Amazon Kinesis Video Streams Producer SDK for C++ is for developers to install and customize for their connected camera and other devices to securely stream video, audio, and time-encoded data to Kinesis Video Streams.
Apache License 2.0
374 stars 336 forks source link

Install Script Issue - Ubuntu 17.10 #34

Closed francoisdutoit closed 6 years ago

francoisdutoit commented 6 years ago

The below error occurs up during the install script execution

Makefile:1696: recipe for target 'stage1scan.c' failed make[2]: [stage1scan.c] Segmentation fault (core dumped) make[2]: Leaving directory '/home/francois/downloads/flex-2.6.4/src' Makefile:546: recipe for target 'all' failed make[1]: [all] Error 2 make[1]: Leaving directory '/home/francois/downloads/flex-2.6.4/src' Makefile:533: recipe for target 'all-recursive' failed make: *** [all-recursive] Error 1 francois@francois-VirtualBox:~$

unicornss commented 6 years ago

Hi @francoisdutoit We will check this in the Ubuntu version 17.10. In the meantime could you tell us the g++, gcc version in your system? Also, could you pl. try upgrading gcc, g++ and then run install-script again.

Thanks

francoisdutoit commented 6 years ago

Hi @unicornss ,

Here are the versions as requested. g++ (Ubuntu 7.2.0-8ubuntu3) 7.2.0 gcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0

I will try your suggestion and provide some feedback.

Thanks! :)

francoisdutoit commented 6 years ago

Hi @unicornss ,

The latest version is 7.3 - It's very new - 7.2 should be fine?

unicornss commented 6 years ago

Hi @francoisdutoit I am seeing the issue flex 2.6.4 and gcc 7.2.0 https://github.com/westes/flex/issues/219

Let me try flex 2.6.3 or 2.6.1 and update you soon.

francoisdutoit commented 6 years ago

Hi @unicornss, When I check the version of flex it shows 2.6.1 - however...when running the install script it does not find flex and downloads 2.6.4.... Could this be the issue?

unicornss commented 6 years ago

It seems the GCC version 7.2 is not able to compile the 2.6.4. In you case since you already have flex 2.6.1 you could comment out the flex section in the install-script and tell us how it goes.

To make it self-contained install-script creates a separate folder to download and compile the open source dependencies (amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local)

unicornss commented 6 years ago

@francoisdutoit I'm trying in Docker Ubuntu 17.10 to see if Flex 2.6.3 resolves the issue ( version conflict between GCC 7.2 and Flex 2.6.4)

# -----  libfl.2.dylib and libfl.2.so ---------------------
  if [ ! -f $DOWNLOADS/local/lib/libfl.2.dylib ]; then
    if [ ! -f $DOWNLOADS/local/lib/libfl.2.so ]; then
        if [ ! -f $DOWNLOADS/local/lib/libfl.so ]; then
          echo "flex not found. Installing"
          if [ ! -f $DOWNLOADS/flex-2.6.3.tar.gz ]; then
            cd $DOWNLOADS
            curl -L "https://github.com/westes/flex/releases/download/v2.6.3/flex-2.6.3.tar.gz" -o "flex-2.6.3.tar.xz"
          fi
          cd $DOWNLOADS
          tar -xvf flex-2.6.3.tar.xz
          cd $DOWNLOADS/flex-2.6.3
          ./configure --prefix=$DOWNLOADS/local  CFLAGS="-I$DOWNLOADS/local/include" LDFLAGS="-L$DOWNLOADS/local/lib"
          make
          make install
      fi
  fi
fi
francoisdutoit commented 6 years ago

Hi @unicornss,

Ok - so getting a bit further now - I commented out the flex section as well as any other section that points to already installed packages ( the ones I installed as per Install steps for Ubuntu 17.x ) But now getting an error as below -

[ 73%] Building CXX object CMakeFiles/producer.dir/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-pic/src/view/tst/ViewApiTest.cpp.o [ 74%] Building CXX object CMakeFiles/producer.dir/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-pic/src/view/tst/ViewTestFixture.cpp.o [ 75%] Building CXX object CMakeFiles/producer.dir/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/KinesisVideoProducer.cpp.o In file included from /home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/Auth.h:3:0, from /home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/AwsV4Signer.h:3, from /home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/DefaultCallbackProvider.h:6, from /home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/KinesisVideoProducer.h:9, from /home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/KinesisVideoProducer.cpp:1: **/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/Request.h:8:10: fatal error: curl/curl.h: No such file or directory

include <curl/curl.h>**

      ^~~~~~~~~~~~~

compilation terminated. CMakeFiles/producer.dir/build.make:1886: recipe for target 'CMakeFiles/producer.dir/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/KinesisVideoProducer.cpp.o' failed make[2]: *** [CMakeFiles/producer.dir/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/KinesisVideoProducer.cpp.o] Error 1 CMakeFiles/Makefile2:141: recipe for target 'CMakeFiles/producer.dir/all' failed francois@francois-VirtualBox:~/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build$ curl --version curl 7.55.1 (x86_64-pc-linux-gnu) libcurl/7.55.1 OpenSSL/1.0.2g zlib/1.2.11 libidn2/2.0.2 libpsl/0.18.0 (+libidn2/2.0.2) librtmp/2.3 Release-Date: 2017-08-14 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telneffrafrancois@frafrfrancfrfrancoisfranfrancois@francois@franfrancois@francfrancois@francois-VirtualBox:~/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build$

francoisdutoit commented 6 years ago

Hi @unicornss,

regarding above - also checked my curl version...

francois@francois-VirtualBox:~$ curl --version curl 7.55.1 (x86_64-pc-linux-gnu) libcurl/7.55.1 OpenSSL/1.0.2g zlib/1.2.11 libidn2/2.0.2 libpsl/0.18.0 (+libidn2/2.0.2) librtmp/2.3 Release-Date: 2017-08-14 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets HTTPS-proxy PSL

unicornss commented 6 years ago

Hi @francoisdutoit, you don't need to comment any sections in the install-script. The only change in ubuntu17.04 requires the Flex to be 2.6.3 (instead of 2.6.4). Please check out the latest install-script and should work with Flex 2.6.3. To set the Flex for 2.6.3.

 if [ ! -f $DOWNLOADS/local/lib/libfl.2.dylib ]; then
   if [ ! -f $DOWNLOADS/local/lib/libfl.2.so ]; then
       if [ ! -f $DOWNLOADS/local/lib/libfl.so ]; then
         echo "flex not found. Installing"
         if [ ! -f $DOWNLOADS/flex-2.6.3.tar.gz ]; then
           cd $DOWNLOADS
           curl -L "https://github.com/westes/flex/releases/download/v2.6.3/flex-2.6.3.tar.gz" -o "flex-2.6.3.tar.xz"
         fi
         cd $DOWNLOADS
         tar -xvf flex-2.6.3.tar.xz
         cd $DOWNLOADS/flex-2.6.3
         ./configure --prefix=$DOWNLOADS/local  CFLAGS="-I$DOWNLOADS/local/include" LDFLAGS="-L$DOWNLOADS/local/lib"
         make
         make install
     fi
 fi
fi

Please let us know how it goes. We will be updating the install-script to use Flex 2.6.3 so that it can work for Ubuntu 17.10 without any changes. Thanks.

francoisdutoit commented 6 years ago

Hi @unicornss,

Thanks - as mentioned above - the script is now running fine up to the point where I get the error mentioned in my last comment - Please see below...

"Ok - so getting a bit further now - I commented out the flex section as well as any other section that points to already installed packages ( the ones I installed as per Install steps for Ubuntu 17.x ) But now getting an error as below -

[ 73%] Building CXX object CMakeFiles/producer.dir/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-pic/src/view/tst/ViewApiTest.cpp.o [ 74%] Building CXX object CMakeFiles/producer.dir/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-pic/src/view/tst/ViewTestFixture.cpp.o [ 75%] Building CXX object CMakeFiles/producer.dir/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/KinesisVideoProducer.cpp.o In file included from /home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/Auth.h:3:0, from /home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/AwsV4Signer.h:3, from /home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/DefaultCallbackProvider.h:6, from /home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/KinesisVideoProducer.h:9, from /home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/KinesisVideoProducer.cpp:1: **/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/Request.h:8:10: fatal error: curl/curl.h: No such file or directory

include <curl/curl.h>**

^~~~~ compilation terminated. CMakeFiles/producer.dir/build.make:1886: recipe for target 'CMakeFiles/producer.dir/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/KinesisVideoProducer.cpp.o' failed make[2]: *** [CMakeFiles/producer.dir/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/KinesisVideoProducer.cpp.o] Error 1 CMakeFiles/Makefile2:141: recipe for target 'CMakeFiles/producer.dir/all' failed francois@francois-VirtualBox:/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build$ curl --version curl 7.55.1 (x86_64-pc-linux-gnu) libcurl/7.55.1 OpenSSL/1.0.2g zlib/1.2.11 libidn2/2.0.2 libpsl/0.18.0 (+libidn2/2.0.2) librtmp/2.3 Release-Date: 2017-08-14 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telneffrafrancois@frafrfrancfrfrancoisfranfrancois@francois@franfrancois@francfrancois@francois-VirtualBox:/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build$"

francoisdutoit commented 6 years ago

Hi @unicornss, If I only change that bit in the install script ( as per what you suggested ) I get the following

Checking util-linux at /home/francois/downloads/local/lib/libmount.dylib/.so m4 not found. Installing curl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

So if I comment out all the sections that refer to libraries that I already have installed - everything runs fine up to the point where I get the below error

**/home/francois/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer/src/Request.h:8:10: fatal error: curl/curl.h: No such file or directory

include <curl/curl.h>**

unicornss commented 6 years ago

The error you are seeing is because it does not have sources for curl . This is used (along with libssl) by Producer SDK to send streams to Kinesis. If these are commented out in the install-script then it will not download the curl and ssl dependencies.

sdk-downloads-dir-struct

I would suggest pull the latest sdk (install-script) and run again. To initiate a clean download and build you can use the troubleshooting instructions ...

rm -rf ./kinesis-video-native-build/CMakeCache.txt ./kinesis-video-native-build/CMakeFiles

and run

./kinesis-video-native-build/install-script

to rebuild and re-link the project. Let us know if you have questions.

francoisdutoit commented 6 years ago

Ok...So here is my plan now.....

  1. Clone repo
  2. Update install script to flex 2.6.3
  3. Run script Also ....I am not going to manually install any of prerequisites...... Ps : I Also have a fresh ubuntu installtion
francoisdutoit commented 6 years ago

Thanks again for all the help....lets hope it works this time ☺

unicornss commented 6 years ago

Perfect. Since you have latest Ubuntu installation, you do not need the build cache clean up. Thanks for notifying us the Flex version conflict (with GCC) in the latest Ubuntu 17.10.

francoisdutoit commented 6 years ago

Ok - so there is another error... but the build is going further now.... see below...

config.status: creating t/wrap/automake-1.15 GEN bin/automake GEN bin/aclocal GEN t/ax/shell-no-trail-bslash GEN t/ax/cc-no-c-o GEN runtest GEN doc/aclocal.1 GEN doc/automake.1 GEN lib/Automake/Config.pm GEN doc/aclocal-1.15.1 GEN doc/automake-1.15.1 help2man: can't get --help' info from automake-1.15 Try--no-discard-stderr' if option outputs to stderr Makefile:3687: recipe for target 'doc/automake-1.15.1' failed make: *** [doc/automake-1.15.1] Error 255 francois@francois-VirtualBox:~/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp$

unicornss commented 6 years ago

Great to see it progressed further. Could you try usingautomake 1.15.1 as below?

#--------aclocal, aclocal-1.15 (hard linked with aclocal), automake, and automake-1.15 (hard linked with automake)--
  if [ ! -f $DOWNLOADS/local/bin/automake ]; then
    echo "automake not found. Installing"
    if [ ! -f $DOWNLOADS/automake-1.15.1.tar.gz ]; then
      cd $DOWNLOADS
      curl -L "https://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gz" -o "automake-1.15.1.tar.xz"
    fi
    cd $DOWNLOADS
    tar -xvf automake-1.15.1.tar.xz
    cd $DOWNLOADS/automake-1.15.1
    ./configure --prefix=$DOWNLOADS/local  CFLAGS="-I$DOWNLOADS/local/include" LDFLAGS="-L$DOWNLOADS/local/lib"
    make
    make install
fi
francoisdutoit commented 6 years ago

Ok - so I have updated the script - but cant seem to get a clean install going...

cmake version 3.9.1 CMake suite maintained and supported by Kitware (kitware.com/cmake). Checking openssl at /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/downloads/local/lib/libssl.a Checking curl at /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/downloads/local/lib/libcurl.a Checking log4cplus at /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/downloads/local/lib/liblog4cplus.dylib/.so Checking gettext at /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/downloads/local/lib/libgettextlib.dylib/.so Checking libffi at /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/downloads/local/lib/libffi.a Checking pcre at /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/downloads/local/lib/libpcre.dylib/.so Checking zlib at /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/downloads/local/lib/libz.dylib/.so Checking iconv at /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/downloads/local/lib/libiconv.dylib/.so Checking util-linux at /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/downloads/local/lib/libmount.dylib/.so Checking glib at /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/downloads/local/lib/libglib-2.0.dylib/.so Checking googletest at /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/downloads/local/lib/libgtest.a automake not found. Installing curl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory francois@francois-VirtualBox:~/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp$

francoisdutoit commented 6 years ago

PS : I did run the below

rm -rf ./kinesis-video-native-build/CMakeCache.txt ./kinesis-video-native-build/CMakeFiles

and run

./kinesis-video-native-build/install-script

unicornss commented 6 years ago

Strange .. can you confirm if the package pkg-config is installed on your system? if not, you can install by using the following: apt-get install -y pkg-config

To resolve the shared library not found - you could try building after setting the LD_LIBRARY_PATH environment variable: export LD_LIBRARY_PATH=<your_sdk_kinesis_video_native_build_folder_path>/downloads/local/lib:$LD_LIBRARY_PATH

On a different note,

Thanks

francoisdutoit commented 6 years ago

For now I'll be running on Ubuntu accessing Onvif IP Camera - so yeah just want to be able to stream from an IP camera....

I did mange to get a new build going - and again the build went further - but failed at the below... [ 89%] Building CXX object CMakeFiles/KinesisVideoProducerJNI.dir/home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer-jni/src/source/com/amazonaws/kinesis/video/producer/jni/KinesisVideoClientWrapper.cpp.o In file included from /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer-jni/src/source/com/amazonaws/kinesis/video/producer/jni/KinesisVideoClientWrapper.cpp:5:0: /home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/../kinesis-video-producer-jni/src/include/com/amazonaws/kinesis/video/producer/jni/KinesisVideoClientWrapper.h:14:10: fatal error: jni.h: No such file or directory

include // Basic native API

      ^~~~~~~

compilation terminated. CMakeFiles/KinesisVideoProducerJNI.dir/build.make:62: recipe for target 'CMakeFiles/KinesisVideoProducerJNI.dir/home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer-jni/src/source/com/amazonaws/kinesis/video/producer/jni/KinesisVideoClientWrapper.cpp.o' failed make[2]: [CMakeFiles/KinesisVideoProducerJNI.dir/home/francois/Documents/Amazon/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-producer-jni/src/source/com/amazonaws/kinesis/video/producer/jni/KinesisVideoClientWrapper.cpp.o] Error 1 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/KinesisVideoProducerJNI.dir/all' failed make[1]: [CMakeFiles/KinesisVideoProducerJNI.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

francoisdutoit commented 6 years ago

PS: francois@francois-VirtualBox:~$ pkg-config --version 0.29.1

unicornss commented 6 years ago

Hi @francoisdutoit

Glad you are able to get the open source dependencies compiled for Ubuntu 17.10.

As referred in the https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/README.md

you have to Install Open JDK: sudo apt-get install openjdk-8-jdk

Set JAVA_HOME environment variable: export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

Run the build script: ./install-script

francoisdutoit commented 6 years ago

I have done that before building.... I just set the path again and trying another build...

francoisdutoit commented 6 years ago

It Built!!! :)

[100%] Linking CXX executable kinesis_video_gstreamer_sample_app [100%] Built target kinesis_video_gstreamer_sample_app


Success!!!


Thanks for all the help and quick response :)