File PKGBUILD of Package linphoneqt

# Fix for error: bsdtar: Failed to set default locale
# LANG=en_US.UTF-8 # not available, use C or POSIX
LANG=C
LC_ALL=${LANG}
# Get some information about the machine we are building on:
_numberOfProcessorsOnMachine=$(nproc)
_wantedJobs=$(echo "1.25*${_numberOfProcessorsOnMachine}" | bc -l)
_jobsIget=$(echo ${_wantedJobs} | awk '{print int($1+0.5)}')
_TOTAL_DISK=$(df -h --total | awk 'END{print $2}')
_FREEMEM=$(free --mega)
_TOTAL_MEM=$(free --total --mega | xargs | awk '{print $19"MB"}')
_TOTAL_RAM=$(free --total --mega | xargs | awk '{print $8"MB"}')
_TOTAL_SWAP=$(free --total --mega | xargs | awk '{print $15"MB"}')
_name=linphone
#pkgname=(linphone-desktop linphone)
pkgname=linphone-desktop
_pkgname=linphone-desktop
#_metapkgname=linphone-desktop
pkgver=5.2.0
pkgrel=1
arch=(x86_64 i686)
url='http://linphone.org'
license=(GPL)
# depends=() See the depends section in the separate packages on 
#            line 136 and line 175.
#makedepends=(cmake libdecaf glew zxing-cpp libyuv
#  qt5-svg qt5-quickcontrols qt5-quickcontrols2 qt5-graphicaleffects
#  qt5-tools qt5-declarative qt5-speech qt5-wayland qt5-webview 
#  liblinphone)
makedepends=(cmake python-pystache doxygen nasm yasm python-six
  'mediastreamer2>=5.3.1' 'liblinphone>=5.3.1' 'broadvoice16>=1.2'
  'bcmatroska2>=5.3.5' 'bcg729>=1.1.1' "bctoolbox>=5.3.5"
  "liboqs>=0.7.1" "postquantumcryptoengine>=5.3.0"
  qt5-base qt5-quickcontrols qt5-quickcontrols2 qt5-graphicaleffects
  qt5-svg qt5-tools qt5-declarative qt5-speech qt5-wayland qt5-webview
  'qt5-xcb-private-headers' qtkeychain-qt5
  boost mesa procps-ng bc patch libdecaf libebml xerces-c 'glew' 'gsm' 'gzip'
  'zxing-cpp' 'libyuv' 'inkscape' 'imagemagick' 'openblas' 'blas-openblas')
source=("${_pkgname}-${pkgver}.tar.bz2"
  linphoneqt-01-fix-no-git.patch
  linphoneqt-02-remove-bc_compute_full_version-usage.patch
  linphoneqt-03-icons.patch)
sha512sums=(SKIP SKIP SKIP SKIP)
sha256sums=(SKIP SKIP SKIP SKIP)
_uploaddir=/usr/src/packages/SOURCES
_sourcedir=/usr/src/packages/BUILD/${pkgname}/src/${pkgname}-${pkgver}
# srcdir is already defined as first package name in list ${pkgname}
# ${srcdir}=/usr/src/packages/BUILD/${pkgname}/src
_builddir=/usr/src/packages/BUILD/${pkgname}/build
_pkgdir=/usr/src/packages/BUILD/${pkgname}/pkg/${pkgname}
_installToDir=${_pkgdir}/usr

prepare() {
  echo "Move patching to build() section for verbose log output"
  # patch -d "${_sourcedir}" -p1 < fix.patch
  # patch -d "${_sourcedir}" --forward --strip=1 --input="${srcdir}/fix.patch"
  # patch -d "${_sourcedir}" --forward --strip=1 --input="${_uploaddir}/fix.patch"
  patch -d ${pkgname}-$pkgver -p1 < linphoneqt-01-fix-no-git.patch
  patch -d ${pkgname}-$pkgver -p1 < linphoneqt-02-remove-bc_compute_full_version-usage.patch
  #patch -d ${pkgname}-$pkgver -p1 < linphoneqt-03-icons.patch
  #patch -d "${_sourcedir}" -p1 < linphoneqt-fix-no-git.patch
  #patch -d "${_sourcedir}" -p1 < linphoneqt-0002-remove-bc_compute_full_version-usage.patch
  #patch -d "${_sourcedir}" -p1 < linphoneqt_fix_gcc12_error.patch
  #patch -d "${_sourcedir}" -p1 < linphoneqt-fix-Archlinux-compilation.patch
}

build() {
  echo
  echo "--- Enterings section build() ---"
  echo
  uploaddir=/usr/src/packages/SOURCES
  builddir=/usr/src/packages/BUILD/${_pkgname}/build
  _builddir=/usr/src/packages/BUILD/${_pkgname}/src/${_pkgname}-${pkgver}/OUTPUT
  sourcedir=/usr/src/packages/BUILD/${_pkgname}/src/${_pkgname}-${pkgver}
  echo uploaddir=$uploaddir
  echo sourcedir=$sourcedir
  echo \${srcdir}=${srcdir}
  echo builddir=$builddir
  echo \${_builddir}=${_builddir}
  echo pwd=$(pwd)
  echo _uploaddir=$_uploaddir
  echo _sourcedir=$_sourcedir
  echo srcdir=${srcdir}
  echo _builddir=$_builddir
  echo _pkgdir=$_pkgdir
  echo _installToDir=$_installToDir
  cd "${_sourcedir}"
  echo
  echo "--- Machine data we are building on ---"
  echo "Total disk: $_TOTAL_DISK"
  echo "Output of free -h:"
  echo "$_FREEMEM"
  echo "Total memory: $_TOTAL_MEM"
  echo "Total RAM: $_TOTAL_RAM"
  echo "Total SWAP: $_TOTAL_SWAP"
  echo "_numberOfProcessorsOnMachine=$_numberOfProcessorsOnMachine"
  echo "_wantedJobs=$_wantedJobs"
  echo "_jobsIget=$_jobsIget"
  echo "--- End machine data we are building on ---"
  #echo "--- List files ---"
  #echo "Avoid /usr/src/packages/BUILD/$pkgname/pkg"
  #echo "which will break compilation with \"permission denied\"."
  #find /usr/src/packages/SOURCES 2>/dev/null
  #find /usr/src/packages/BUILD/$pkgname/src 2>/dev/null
  #find /usr/lib 2>/dev/null
  #echo "--- End list files ---"
  echo
  # Fix the include path to <json/json.h> to <jsoncpp/json/json.h> :
  #MODIFY_FILE=/usr/src/packages/BUILD/include/linphone/FlexiAPIClient.hh; \
  #sed -i 's/#include <json\/json\.h>/#include <jsoncpp\/json\/json.h>/g' $MODIFY_FILE
  #MODIFY_FILE=/usr/src/packages/BUILD/src/FlexiAPIClient.cc; \
  #sed -i 's/#include <json\/json\.h>/#include <jsoncpp\/json\/json.h>/g' $MODIFY_FILE
  #MODIFY_FILE=/usr/src/packages/BUILD/tester/remote-provisioning-tester.cpp; \
  #sed -i 's/#include <json\/json\.h>/#include <jsoncpp\/json\/json.h>/g' $MODIFY_FILE
  #MODIFY_FILE=/usr/src/packages/BUILD/tester/flexiapiclient-tester.cpp; \
  #sed -i 's/#include <json\/json\.h>/#include <jsoncpp\/json\/json.h>/g' $MODIFY_FILE
  echo
  cd ${sourcedir}  
  # Fix building out-of-git
  echo '#define LINPHONE_QT_GIT_VERSION "${PROJECT_VERSION}"' >> linphone-app/src/config.h.cmake
  # Hardcode linphoneqt version
  echo "project(linphoneqt VERSION $pkgver)" > linphone-app/linphoneqt_version.cmake
  echo pwd=$(pwd)
  cp -v ${uploaddir}/${_name}.appdata.xml linphone.appdata.xml
  touch linphone-sdk/CMakeLists.txt
  #if [[ ${pkgver} = 5.1.[0-9]* ]]; then
  #  echo linphone-app/CMakeLists.txt
  #  echo "--------------------------------------------------------------"
  #  cat linphone-app/CMakeLists.txt
  #  echo "--------------------------------------------------------------"
  #  sed -i '/^add_custom_command/s@${CMAKE_INSTALL_PREFIX}/include/@%{buildroot}%{_includedir}/@;/^add_custom_command/s@${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/@%{buildroot}%{_libdir}/@' linphone-app/CMakeLists.txt
  #  sed -i '/\/ui/s@${qml_dir}@${CMAKE_CURRENT_SOURCE_DIR}/../&@' linphone-app/cmake_builder/linphone_package/CMakeLists.txt
  #  mkdir -p -v build/linphone-sdk/desktop/share/{,sounds}/linphone
  #fi
  # Adaptation from SPEC file (maybe obsolete):
  sed -i '/^add_custom_command/s@${CMAKE_INSTALL_PREFIX}/include/@/usr/src/packages/BUILD/linphone/pkg/linphone/usr/include/@;/^add_custom_command/s@${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/@/usr/src/packages/BUILD/linphone/pkg/linphone/usr/lib/@' linphone-app/CMakeLists.txt
  sed -i '/\/ui/s@${qml_dir}@${CMAKE_CURRENT_SOURCE_DIR}/../&@' linphone-app/cmake_builder/linphone_package/CMakeLists.txt
  # makepkg will stop after one diff command, but it is useful to see if sed suceeded.
  # echo "---------- diff linphone-app/CMakeLists.txt ----------"
  # diff -U 3 -dHBbrN -- linphone-app/CMakeLists.orig.txt linphone-app/CMakeLists.txt
  # diff -U 3 linphone-app/CMakeLists.orig.txt linphone-app/CMakeLists.txt
  # echo "---------- diff linphone-app/cmake_builder/linphone_package/CMakeLists.txt ----------"
  # diff -U 3 linphone-app/cmake_builder/linphone_package/CMakeLists.orig.txt linphone-app/cmake_builder/linphone_package/CMakeLists.txt
  # echo "---------- end diff ----------"
  # Previous CMAKE options that have been used:
  #  -DLINPHONE_OUTPUT_DIR="$PWD" \
  #  -DENABLE_QT_KEYCHAIN=OFF \
  #  -DCMAKE_LDFLAGS=" $LDFLAGS -ljsoncpp -lZXing -lyuv" \
  #  -DCMAKE_EXE_LINKER_FLAGS="-ljsoncpp -lZXing -lyuv" \
  #  -DCMAKE_BUILD_TYPE=Release \
  #  -DENABLE_UPDATE_CHECK=OFF \
  #  -DENABLE_STRICT=OFF \
  #  -DENABLE_STATIC=OFF
  #  -DCMAKE_MODULE_PATH="$$CMAKE_PREFIX_PATH;/usr/share/LinphoneCxx/cmake/;/usr/lib" \
  #  -DCMAKE_PREFIX_PATH="$$CMAKE_PREFIX_PATH;/usr/include/jsoncpp;/usr/share/LinphoneCxx/cmake/" \
  #which convert
  #which inkscape
  #find . -type f -name genicons_1.1.sh -exec {} \;
  #cmake -S ${sourcedir} -B ${builddir} \
  #  -DCMAKE_BUILD_PARALLEL_LEVEL=${_jobsIget} \
  #  -DCMAKE_INSTALL_PREFIX=/usr \
  #  -DLINPHONE_OUTPUT_DIR="$PWD" \
  #  -DCMAKE_VERBOSE_MAKEFILE=ON \
  #  -DENABLE_QT_KEYCHAIN=OFF \
  #  -DCMAKE_LDFLAGS=" $LDFLAGS -ljsoncpp -lZXing -lyuv" \
  #  -DCMAKE_EXE_LINKER_FLAGS="-ljsoncpp -lZXing -lyuv" \
  #  -DCMAKE_BUILD_TYPE=Release \
  #  -DENABLE_UPDATE_CHECK=OFF \
  #  -DENABLE_STRICT=OFF \
  #  -DENABLE_STATIC=OFF
  cmake -S "${_sourcedir}" -B "${_builddir}" \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DENABLE_UPDATE_CHECK=OFF \
    -DENABLE_STATIC=OFF \
    -DENABLE_QT_KEYCHAIN=NO
  cmake --build ${builddir} --parallel ${_jobsIget}
  echo "--- Show what was built ---"
  find ${builddir} 2>/dev/null
  echo "--- End show what was built ---"
  echo pwd=$(pwd)
  echo
  echo "Cleaning cmake_install.cmake files from linphone-sdk items..."
  sed -i 's/lib:\/usr\/src\/packages\/BUILD\/linphone-desktop\/build\/linphone-sdk\/desktop\///g' ${builddir}/linphone-app/cmake_builder/linphone_package/cmake_install.cmake
  sed -i '/linphone-sdk/d' ${builddir}/linphone-app/cmake_builder/linphone_package/cmake_install.cmake
  sed -i "s|$srcdir/build/OUTPUT|$pkgdir/usr|" ${builddir}/cmake_install.cmake
  echo "--- Show installed files from build section ---"
  echo "Check that these files are not missing in package $_pkgname."
  echo "If necessary, move these files to"
  echo "    ${_pkgdir}"
  echo
  find /usr/src/packages/BUILD/linphone
  echo "--- End show installed files from build section ---"
  echo "[OK] Cleaned cmake_install.cmake files"
  echo
  echo "--- Exiting section build() ---"
  echo
}

#package_linphone() {
#  pkgdesc='A free VoIP and video softphone based on the SIP protocol'
#  # TODO: Some dependencies can probably be moved to liblinphone and mediastreamer
#  depends=('liblinphone>=5.2.97' 'mediastreamer2>=5.2.95' 'bcg729' 'bcmatroska2'
#     'qt5-quickcontrols' 'qt5-quickcontrols2' 'qt5-graphicaleffects' 'qt5-svg' 'qt5-tools' 'qt5-speech'
#     'broadvoice16' 'gsm'
#     'glew' 'hicolor-icon-theme'  'jsoncpp' 'xerces-c' 'zxing-cpp' 'libdecaf')
#  echo
#  echo "--- Entering section package_linphone() ---"
#  echo
#  uploaddir=/usr/src/packages/SOURCES
#  builddir=/usr/src/packages/BUILD/${_pkgname}/build
#  _builddir=/usr/src/packages/BUILD/${_pkgname}/src/${_pkgname}-${pkgver}/OUTPUT
#  sourcedir=/usr/src/packages/BUILD/${_pkgname}/src/${_pkgname}-${pkgver}
#  echo uploaddir=$uploaddir
#  echo sourcedir=$sourcedir
#  echo \${srcdir}=${srcdir}
#  echo builddir=$builddir
#  echo \${_builddir}=${_builddir}
#  echo pkgdir=${pkgdir}
#  echo pwd=$(pwd)
#  echo
#  DESTDIR="${pkgdir}" cmake --install ${builddir} --strip
#  # Move files to the correct location
#  mkdir -p ${pkgdir}/usr
#  mv ${pkgdir}/usr/src/packages/BUILD/linphone-desktop/build/OUTPUT/* ${pkgdir}/usr
#  # Clean-up
#  rm -rf ${pkgdir}/usr/src
#  rm -v -f ${pkgdir}/usr/bin/qt.conf
#  echo
#  echo "--- Show what was built ---"
#  find ${pkgdir} 2>/dev/null
#  echo "--- End show what was built ---"
#  echo
#  echo "--- Exiting section package_linphone() ---"
#  echo
#}

#package_linphone-desktop() {
#  echo
#  echo "--- Entering section package_linphone-desktop() ---"
#  echo
#  pkgdesc='A free VoIP and video softphone (meta package)'
#  depends=("linphone>=${pkgver}")
#  echo
#  echo "--- Exiting section package_linphone-desktop() ---"
#  echo
#}

package_linphone-desktop() {
  echo _uploaddir=$_uploaddir
  echo _sourcedir=$_sourcedir
  echo srcdir=${srcdir}
  echo _builddir=$_builddir
  echo _pkgdir=$_pkgdir
  echo _installToDir=$_installToDir
  echo pkgdir=$pkgdir
  pkgdesc='A free VoIP and video softphone based on the SIP protocol'
  conflicts=("$_name")
  provides=("$_name=$pkgver")
  # TODO: Some dependencies can probably be moved to liblinphone, mediastreamer2 etc.
  # optional depends:  'mediastreamer2' 'bcmatroska2' 'bcg729' 'broadvoice16' 'gsm'
  #                    'glew' 'jsoncpp' 'xerces-c' 'libdecaf' 'zxing-cpp'
  depends=(liblinphone qt5-quickcontrols qt5-quickcontrols2 qt5-graphicaleffects
    qt5-svg qt5-tools qt5-speech hicolor-icon-theme)
  rm -rf "${pkgdir}"; mkdir -pv "${pkgdir}"
  cmake --install "${_builddir}" --config RelWithDebInfo --prefix "${_installToDir}"
  # cmake --install "${_builddir}" --config RelWithDebInfo --prefix "${_installToDir}" --strip
  # DESTDIR="${_installToDir}" cmake --install "${builddir}"
  # DESTDIR="${_installToDir}" cmake --install "${builddir}" --strip
  # echo "--- Show installed files ---"
  # find ${pkgdir} 2>/dev/null
  # echo "--- End show installed files ---"
  # Move files to the correct location if neccessary
  # mkdir -pv ${pkgdir}/usr
  # mv ${pkgdir}/usr/src/packages/BUILD/linphone/build/OUTPUT/* ${pkgdir}/usr
  # Clean-up
  rm -vrf ${pkgdir}/usr/src
  rm -vf ${pkgdir}/usr/bin/qt.conf
  # echo "--- Show packaged files in $_pkgname package ---"
  # find ${pkgdir} 2>/dev/null
  # echo "--- End show packaged files in $_pkgname package ---"
}

# openSUSE has renamed package linphone to linphone-desktop
# The meta package linphone-desktop is therefore no longer needed.
# 
#package_linphone-desktop() {
#  pkgdesc='A free VoIP and video softphone (meta package)'
#  conflicts=("${_metapkgname}")
#  provides=("${_metapkgname}=${pkgver}")
#  depends=("${_pkgname}>=${pkgver}")
#}
openSUSE Build Service is sponsored by