From a0ed1d4c3827f44e6d34e25b37d38d41a73f04c8 Mon Sep 17 00:00:00 2001 From: Angelo Mantellini Date: Mon, 19 Mar 2018 17:28:16 +0100 Subject: corrections for android Change-Id: I9054be8a06bf54fee9766b173b04d33f28c7efbe Signed-off-by: Angelo Mantellini --- README.md | 2 + libdash/CMakeLists.txt | 23 +++-- libdash/scripts/build-package.sh | 210 ++++++++++++++++++++++++++++++++++++++ libdash/scripts/postinst | 42 ++++++++ libdash/scripts/version | 57 +++++++++++ libdash/source/helpers/Block.h | 2 + libdash/source/helpers/String.cpp | 2 +- libdash/source/helpers/String.h | 1 + 8 files changed, 329 insertions(+), 10 deletions(-) create mode 100644 libdash/scripts/build-package.sh create mode 100644 libdash/scripts/postinst create mode 100644 libdash/scripts/version diff --git a/README.md b/README.md index f71e1be1..193bbe77 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ Viper Player for ICN + ==================================================== + This application is designed to provide a tool to test the adaptation video streaming using the ICN protocol stack. Dependencies diff --git a/libdash/CMakeLists.txt b/libdash/CMakeLists.txt index 91353390..ea046547 100644 --- a/libdash/CMakeLists.txt +++ b/libdash/CMakeLists.txt @@ -3,15 +3,20 @@ project(libdash) if(ANDROID_API) - include_directories(${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.9/include) - include_directories(${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include) + set(CMAKE_FIND_ROOT_PATH "$ENV{CCNX_HOME};${CMAKE_FIND_ROOT_PATH}") + #include_directories(${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.9/include) + #include_directories(${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include) + message("ciao!!!") option(ANDROID "Build CP api based on ANDROID log lib" ON) - set(LIBXML2_INCLUDE_DIR "$ENV{DISTILLERY_ROOT_DIR}/external/libxml2_android/jni/libxml2/include") - set(LIBXML2_LIBRARIES "$ENV{DISTILLERY_ROOT_DIR}/usr/lib/libxml2.a") - set(CURL_INCLUDE_DIRS "$ENV{DISTILLERY_ROOT_DIR}/external/libcurl_android/jni/libcurl/include") - set(CURL_LIBRARIES "$ENV{DISTILLERY_ROOT_DIR}/usr/lib/libcurl.a" "$ENV{DISTILLERY_ROOT_DIR}/usr/lib/libcurl-library.a") - set(ANDROID_LIBRARIES "${ANDROID_NDK}/platforms/android-23/arch-arm/usr/lib/libz.a" "$ENV{NDK}/sources/cxx-stl/gnu-libstdc++/4.9/libs/$ENV{ABI}/libgnustl_shared.so" "${ANDROID_NDK}/platforms/android-23/arch-arm/usr/lib/liblog.so") - set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${ANDROID_C_FLAGS} -std=c++0x -g -DLOG_BUILD") + find_package(LibXml2 REQUIRED) + find_package(ZLIB REQUIRED) + find_package(CURL REQUIRED) + #set(LIBXML2_INCLUDE_DIR "$ENV{DISTILLERY_ROOT_DIR}/external/libxml2_android/jni/libxml2/include") + #set(LIBXML2_LIBRARIES "$ENV{DISTILLERY_ROOT_DIR}/usr/lib/libxml2.a") + #set(CURL_INCLUDE_DIRS "$ENV{DISTILLERY_ROOT_DIR}/external/libcurl_android/jni/libcurl/include") + #set(CURL_LIBRARIES "$ENV{DISTILLERY_ROOT_DIR}/usr/lib/libcurl.a" "$ENV{DISTILLERY_ROOT_DIR}/usr/lib/libcurl-library.a") + #set(ANDROID_LIBRARIES "$ENV{NDK}/sources/cxx-stl/gnu-libstdc++/4.9/libs/$ENV{ABI}/libgnustl_shared.so") + set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${ANDROID_C_FLAGS} -std=c++0x -g -DLOG_BUILD -DANDROID_STL=c++_shared") elseif (COMPILE_FOR_IOS) set(CMAKE_CXX_FLAGS "-std=c++0x -g -DLOG_BUILD") find_package(LibXml2 REQUIRED) @@ -185,7 +190,7 @@ include_directories(${WLIB_INCLUDE_DIRS}) include_directories(${CURL_INCLUDE_DIRS}) include_directories(include) -if (COMPILE_FOR_IOS OR COMPILE_FOR_IOS_SIMULATOR) +if (COMPILE_FOR_IOS OR COMPILE_FOR_IOS_SIMULATOR OR ANDROID_API) add_library(dash STATIC ${SOURCE_FILES}) else() add_library(dash SHARED ${SOURCE_FILES}) diff --git a/libdash/scripts/build-package.sh b/libdash/scripts/build-package.sh new file mode 100644 index 00000000..47f6a5f4 --- /dev/null +++ b/libdash/scripts/build-package.sh @@ -0,0 +1,210 @@ +#!/bin/bash +# basic build script example +set -euxo pipefail +IFS=$'\n\t' + +SCRIPT_PATH=$( cd "$(dirname "${BASH_SOURCE}")" ; pwd -P ) +APT_PATH=`which apt-get` || true +apt_get=${APT_PATH:-"/usr/local/bin/apt-get"} + +PACKAGE_NAME="VIPER" +VIPER_DEPS_UBUNTU="zlib1g-dev git-core build-essential libxml2-dev libcurl4-openssl-dev \ + qt57base qt57svg qt57charts-no-lgpl qt57multimedia libqtav-dev libicnet-dev \ + libavcodec-dev libavformat-dev libswscale-dev libavresample-dev libqml-module-qtav \ + qt57quickcontrols qt57quickcontrols2 libboost-system-dev" + +BUILD_TOOLS="build-essential doxygen" + +# Parameters: +# $1 = Distribution [Trusty / CentOS] +# +update_cmake_repo() { + + cat /etc/resolv.conf + echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf + cat /etc/resolv.conf + + CMAKE_INSTALL_SCRIPT_URL="https://cmake.org/files/v3.8/cmake-3.8.0-Linux-x86_64.sh" + CMAKE_INSTALL_SCRIPT="/tmp/install_cmake.sh" + curl ${CMAKE_INSTALL_SCRIPT_URL} > ${CMAKE_INSTALL_SCRIPT} + + sudo mkdir -p /opt/cmake + sudo bash ${CMAKE_INSTALL_SCRIPT} --skip-license --prefix=/opt/cmake + export PATH=/opt/cmake/bin:$PATH +} + +# Parameters: +# $1 = Distribution codename +# +update_qt_repo() { + DISTRIBUTION_CODENAME=$1 + + if [ "$DISTRIBUTION_CODENAME" != "trusty" ] && [ "$DISTRIBUTION_CODENAME" != "xenial" ]; then + echo "No valid distribution specified when calling 'update_qt_repo'. Exiting.." + exit -1 + fi + + sudo ${apt_get} install -y --allow-unauthenticated software-properties-common + sudo add-apt-repository --yes ppa:beineri/opt-qt571-$DISTRIBUTION_CODENAME + + wget -q -O - http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add - + sudo sh -c "echo 'deb http://archive.getdeb.net/ubuntu xenial-getdeb apps' >> /etc/apt/sources.list.d/getdeb.list" + + sudo ${apt_get} update +} + +# Parameters: +# $1 = Distribution id +# $2 = Distribution codename +# +update_fdio_repo() { + DISTRIB_ID=$1 + DISTRIB_CODENAME=$2 + + NEXUS_PROXY=${NEXUSPROXY:-"http://nexus.fd.io"} + REPO_CICN_URL="" + REPO_VPP_URL="" + + if [ "$DISTRIB_ID" == "Ubuntu" ]; then + + if [ "$DISTRIB_CODENAME" == "xenial" ]; then + REPO_VPP_URL="${NEXUS_PROXY}/content/repositories/fd.io.stable.1701.ubuntu.xenial.main/" + REPO=${REPO_NAME:-"master.ubuntu.xenial.main"} + REPO_CICN_URL="${NEXUS_PROXY}/content/repositories/fd.io.${REPO}" + elif [ "$DISTRIB_CODENAME" == "trusty" ]; then + REPO_VPP_URL="${NEXUS_PROXY}/content/repositories/fd.io.stable.1701.ubuntu.trusty.main/" + REPO=${REPO_NAME:-"master.ubuntu.trusty.main"} + REPO_CICN_URL="${NEXUS_PROXY}/content/repositories/fd.io.${REPO}" + else + echo "Distribution $DISTRIB_CODENAME is not supported" + exit -1 + fi + + echo "deb ${REPO_VPP_URL} ./" | sudo tee /etc/apt/sources.list.d/99fd.io.list + echo "deb ${REPO_CICN_URL} ./" | sudo tee /etc/apt/sources.list.d/99fd.io.master.list + + elif [ "$DISTRIB_ID" == "CentOS" ]; then + REPO_VPP_URL="${NEXUS_PROXY}/content/repositories/fd.io.centos7/" + REPO=${REPO_NAME:-"master.centos7"} + REPO_CICN_URL="${NEXUS_PROXY}/content/repositories/fd.io.${REPO}" + + sudo cat << EOF > fdio.repo +[fdio-vpp-master] +name=fd.io master branch latest merge +baseurl=${REPO_VPP_URL} +enabled=1 +gpgcheck=0 + +[fdio-cicn-master] +name=fd.io master branch latest merge +baseurl=${REPO_CICN_URL} +enabled=1 +gpgcheck=0 +EOF + sudo mv fdio.repo /etc/yum.repos.d/fdio.repo + else + echo "Distribution $DISTRIB_CODENAME is not supported" + exit -1 + fi + +} + +setup() { + + DISTRIB_ID=$1 + DISTRIB_CODENAME=$2 + + update_cmake_repo + update_fdio_repo $DISTRIB_ID $DISTRIB_CODENAME + + if [ "$DISTRIB_ID" == "Ubuntu" ]; then + sudo ${apt_get} update || true + fi +} + +ARCHITECTURE=`uname -m` + +# Figure out what system we are running on +if [ -f /etc/lsb-release ];then + + . /etc/lsb-release + DEB=ON + RPM=OFF + + if [ "$ARCHITECTURE" == "x86_64" ]; then + ARCHITECTURE="amd64" + fi + +elif [ -f /etc/redhat-release ];then + + sudo yum install -y redhat-lsb + DISTRIB_ID=`lsb_release -si` + DISTRIB_RELEASE=`lsb_release -sr` + DISTRIB_CODENAME=`lsb_release -sc` + DISTRIB_DESCRIPTION=`lsb_release -sd` + + DEB=OFF + RPM=ON +else + echo "ERROR: System configuration not recognized. Build failed" + exit -1 +fi + +echo ARCHITECTURE: $ARCHITECTURE +echo DISTRIB_ID: $DISTRIB_ID +echo DISTRIB_RELEASE: $DISTRIB_RELEASE +echo DISTRIB_CODENAME: $DISTRIB_CODENAME +echo DISTRIB_DESCRIPTION: $DISTRIB_DESCRIPTION + +setup $DISTRIB_ID $DISTRIB_CODENAME + +# Install deps + +if [ $DISTRIB_ID == "Ubuntu" ]; then + update_qt_repo $DISTRIB_CODENAME + echo $BUILD_TOOLS $VIPER_DEPS_UBUNTU | xargs sudo ${apt_get} install -y --allow-unauthenticated +else + echo "This package is currently supported only for ubuntu. Exiting.." + exit -1 +fi + +# Create links + +sudo ln -sf /usr/include/x86_64-linux-gnu/qt5/QtAV /opt/qt57/include/QtAV +sudo ln -sf /usr/include/x86_64-linux-gnu/qt5/QtAVWidgets /opt/qt57/include/QtAVWidgets +sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/av.prf /opt/qt57/mkspecs/features/av.prf +sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/avwidgets.prf /opt/qt57/mkspecs/features/avwidgets.prf +sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_avwidgets.pri /opt/qt57/mkspecs/modules/qt_lib_avwidgets.pri +sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_av.pri /opt/qt57/mkspecs/modules/qt_lib_av.pri +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAV.prl /opt/qt57/lib/libQtAV.prl +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAVWidgets.prl /opt/qt57/lib/libQtAVWidgets.prl +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAVWidgets.so /opt/qt57/lib/libQt5AVWidgets.so +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQt5AV.so /opt/qt57/lib/libQt5AV.so +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAV.so /opt/qt57/lib/libQtAV.so +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQt5AVWidgets.so /opt/qt57/lib/libQtAVWidgets.so +sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/qml/QtAV /opt/qt57/qml/QtAV + +# Compile libdash + +build() { + mkdir -p build + cd build + rm -rf * + cmake -DCMAKE_INSTALL_PREFIX=/usr -DRPM_PACKAGE=$RPM -DDEB_PACKAGE=$DEB -DDISTRIBUTION=$DISTRIB_CODENAME -DARCHITECTURE=$ARCHITECTURE .. + make +} + +# Build libdash +pushd $SCRIPT_PATH/../libdash +build +make package +sudo make install +find . -not -name '*.deb' -not -name '*.rpm' -print0 | xargs -0 rm -rf -- || true +popd + +# Build viper +pushd $SCRIPT_PATH/.. +build +make package +find . -not -name '*.deb' -not -name '*.rpm' -print0 | xargs -0 rm -rf -- || true +popd diff --git a/libdash/scripts/postinst b/libdash/scripts/postinst new file mode 100644 index 00000000..9499e8c2 --- /dev/null +++ b/libdash/scripts/postinst @@ -0,0 +1,42 @@ +#!/bin/bash + +echo "Executing post install script." + +sudo ln -sf /usr/include/x86_64-linux-gnu/qt5/QtAV /opt/qt57/include/QtAV +echo "sudo ln -sf /usr/include/x86_64-linux-gnu/qt5/QtAV /opt/qt57/include/QtAV" + +sudo ln -sf /usr/include/x86_64-linux-gnu/qt5/QtAVWidgets /opt/qt57/include/QtAVWidgets +echo "sudo ln -sf /usr/include/x86_64-linux-gnu/qt5/QtAVWidgets /opt/qt57/include/QtAVWidgets" + +sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/av.prf /opt/qt57/mkspecs/features/av.prf +echo "sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/av.prf /opt/qt57/mkspecs/features/av.prf" + +sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/avwidgets.prf /opt/qt57/mkspecs/features/avwidgets.prf +echo "sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/avwidgets.prf /opt/qt57/mkspecs/features/avwidgets.prf" + +sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_avwidgets.pri /opt/qt57/mkspecs/modules/qt_lib_avwidgets.pri +echo "sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_avwidgets.pri /opt/qt57/mkspecs/modules/qt_lib_avwidgets.pri" + +sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_av.pri /opt/qt57/mkspecs/modules/qt_lib_av.pri +echo "sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_av.pri /opt/qt57/mkspecs/modules/qt_lib_av.pri" + +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAV.prl /opt/qt57/lib/libQtAV.prl +echo "sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAV.prl /opt/qt57/lib/libQtAV.prl" + +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAVWidgets.prl /opt/qt57/lib/libQtAVWidgets.prl +echo "sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAVWidgets.prl /opt/qt57/lib/libQtAVWidgets.prl" + +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAVWidgets.so /opt/qt57/lib/libQt5AVWidgets.so +echo "sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAVWidgets.so /opt/qt57/lib/libQt5AVWidgets.so" + +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQt5AV.so /opt/qt57/lib/libQt5AV.so +echo "sudo ln -sf /usr/lib/x86_64-linux-gnu/libQt5AV.so /opt/qt57/lib/libQt5AV.so" + +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAV.so /opt/qt57/lib/libQtAV.so +echo "sudo ln -sf /usr/lib/x86_64-linux-gnu/libQtAV.so /opt/qt57/lib/libQtAV.so" + +sudo ln -sf /usr/lib/x86_64-linux-gnu/libQt5AVWidgets.so /opt/qt57/lib/libQtAVWidgets.so +echo "sudo ln -sf /usr/lib/x86_64-linux-gnu/libQt5AVWidgets.so /opt/qt57/lib/libQtAVWidgets.so" + +sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/qml/QtAV /opt/qt57/qml/QtAV +echo "sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/qml/QtAV /opt/qt57/qml/QtAV" \ No newline at end of file diff --git a/libdash/scripts/version b/libdash/scripts/version new file mode 100644 index 00000000..ca73c6af --- /dev/null +++ b/libdash/scripts/version @@ -0,0 +1,57 @@ +#!/bin/bash + +path=$( cd "$(dirname "${BASH_SOURCE}")" ; pwd -P ) +version_prefix="libdash-v" + +cd "$path" + +git rev-parse 2> /dev/null +if [ $? == 0 ]; then + vstring=$(git describe --dirty --match "$version_prefix*" | sed "s/$version_prefix//") +elif [ -f .version ]; then + vstring=$(cat .version) +else + if [ -f ../rpm/*.gz ]; then + vstring=$(ls ../rpm/*.gz) + else + exit 1 + fi +fi + +TAG=$(echo ${vstring} | cut -d- -f1 | sed -e "s/$version_prefix//") +ADD=$(echo ${vstring} | cut -s -d- -f2) + +git rev-parse 2> /dev/null +if [ $? == 0 ]; then + CMT=$(git describe --dirty --match "$version_prefix*" | sed "s/$version_prefix//" | cut -s -d- -f3,4) +else + CMT=$(echo ${vstring} | cut -s -d- -f3,4) +fi +CMTR=$(echo $CMT | sed 's/-/_/') + +if [ -n "${BUILD_NUMBER}" ]; then + BLD="~b${BUILD_NUMBER}" +else + BLD="~b1" +fi + +if [ "$1" = "rpm-version" ]; then + echo ${TAG} + exit +fi + +if [ "$1" = "rpm-release" ]; then + [ -z "${ADD}" ] && echo release && exit + echo ${ADD}${CMTR:+~${CMTR}}${BLD} + exit +fi + + if [ -n "${ADD}" ]; then + if [ "$1" = "rpm-string" ]; then + echo ${TAG}-${ADD}${CMTR:+~${CMTR}}${BLD} + else + echo ${TAG}-${ADD}${CMT:+~${CMT}}${BLD} + fi + else + echo ${TAG}-release +fi \ No newline at end of file diff --git a/libdash/source/helpers/Block.h b/libdash/source/helpers/Block.h index 9f8f9577..81fef50a 100644 --- a/libdash/source/helpers/Block.h +++ b/libdash/source/helpers/Block.h @@ -15,6 +15,8 @@ #include "config.h" #include #include +#include +#include namespace dash { diff --git a/libdash/source/helpers/String.cpp b/libdash/source/helpers/String.cpp index 53da5592..e8ee5432 100644 --- a/libdash/source/helpers/String.cpp +++ b/libdash/source/helpers/String.cpp @@ -10,7 +10,7 @@ *****************************************************************************/ #include "String.h" - + using namespace dash::helpers; void String::Split (const std::string &s, char delim, std::vector& vector) diff --git a/libdash/source/helpers/String.h b/libdash/source/helpers/String.h index b2aa955a..bcf3a41a 100644 --- a/libdash/source/helpers/String.h +++ b/libdash/source/helpers/String.h @@ -17,6 +17,7 @@ #include #include #include +#include namespace dash { -- cgit 1.2.3-korg