diff --git a/.gitlab-ci-files/job-linux-desktop-centos7.yml b/.gitlab-ci-files/job-linux-desktop-centos7.yml index 5750c4807..8e5e02c2d 100644 --- a/.gitlab-ci-files/job-linux-desktop-centos7.yml +++ b/.gitlab-ci-files/job-linux-desktop-centos7.yml @@ -1,3 +1,4 @@ + #job-centos7-makefile-gcc: # tags: [ "docker" ] @@ -71,11 +72,26 @@ job-centos7-ninja-gcc-package: - $NIGHTLY_MASTER - $DEPLOY_LINUX variables: - CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES + CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DLINPHONE_BUILDER_SIGNING_PASSPHRASE=$GPG_SIGNING_PASS CMAKE_GENERATOR: Ninja CC: gcc CXX: g++ extends: .job-linux-desktop + script: + - echo "$GPG_SIGNING_PUB" > file.key && sed -i 's/\r /\n/g' file.key && chmod 600 file.key + - gpg --import file.key + - echo "$GPG_SIGNING_KEY" > file.key && sed -i 's/\r /\n/g' file.key && chmod 600 file.key + - gpg --import file.key + - cmake --version + - export CC=$CC + - export CXX=$CXX + - mkdir -p build/OUTPUT + - echo $CMAKE_GENERATOR + - echo $DEFAULT_LINUX_CMAKE_OPTIONS + - echo $CMAKE_SANITIZER_OPTIONS + - cd build + - cmake .. -G "$CMAKE_GENERATOR" -DCMAKE_VERBOSE_MAKEFILE=ON -DLINPHONESDK_PLATFORM=Desktop $DEFAULT_LINUX_CMAKE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS $CMAKE_SANITIZER_OPTIONS + - cmake --build . --target all $LBC_NODEBUG_OPTIONS artifacts: paths: - build/OUTPUT/Packages/*.AppImage @@ -101,12 +117,24 @@ job-centos7-ninja-gcc-deploy: # Debug ################################################# -job-centos7-debug: +job-centos7-debug-nuc: stage: deploy tags: [ "docker-test-centos7-liblinphone-nuc" ] #image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-centos:7 image: gitlab.linphone.org:4567/bc/public/linphone-desktop/bc-dev-centos7-qt-fuse-wget:5.12.5 dependencies: [] + only: + variables: + - $DEBUG_CENTOS7_NUC + script: + - sleep 10m + +job-centos7-debug: + stage: deploy + tags: [ "docker" ] + #image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-centos:7 + image: gitlab.linphone.org:4567/bc/public/linphone-desktop/bc-dev-centos7-qt-fuse-wget:5.12.5 + dependencies: [] only: variables: - $DEBUG_CENTOS7 diff --git a/.gitlab-ci-files/job-linux-desktop.yml b/.gitlab-ci-files/job-linux-desktop.yml index 978b600e9..6c3950528 100644 --- a/.gitlab-ci-files/job-linux-desktop.yml +++ b/.gitlab-ci-files/job-linux-desktop.yml @@ -2,22 +2,23 @@ # BUILD ################################################# +.build_all_linux_script: &build_all_linux_script | + cmake --version + export CC=$CC + export CXX=$CXX + mkdir -p build/OUTPUT + echo $CMAKE_GENERATOR + echo $DEFAULT_LINUX_CMAKE_OPTIONS + echo $CMAKE_SANITIZER_OPTIONS + cd build + cmake .. -G "$CMAKE_GENERATOR" -DCMAKE_VERBOSE_MAKEFILE=ON -DLINPHONESDK_PLATFORM=Desktop $DEFAULT_LINUX_CMAKE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS $CMAKE_SANITIZER_OPTIONS + cmake --build . --target all $LBC_NODEBUG_OPTIONS + .job-linux-desktop: stage: build extends: .linux-prepare script: - - cmake --version - - export CC=$CC - - export CXX=$CXX - - mkdir -p build/OUTPUT - - echo $CMAKE_GENERATOR - - echo $DEFAULT_LINUX_CMAKE_OPTIONS - - echo $CMAKE_OPTIONS - - echo $CMAKE_SANITIZER_OPTIONS -# SDK Building - - cd build - - cmake .. -G "$CMAKE_GENERATOR" -DCMAKE_VERBOSE_MAKEFILE=ON -DLINPHONESDK_PLATFORM=Desktop $DEFAULT_LINUX_CMAKE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS $CMAKE_SANITIZER_OPTIONS - - cmake --build . --target all $LBC_NODEBUG_OPTIONS + - *build_all_linux_script artifacts: paths: - build/OUTPUT diff --git a/.gitlab-ci-files/job-windows-desktop.yml b/.gitlab-ci-files/job-windows-desktop.yml index ad948e878..1fcc76cce 100644 --- a/.gitlab-ci-files/job-windows-desktop.yml +++ b/.gitlab-ci-files/job-windows-desktop.yml @@ -2,46 +2,17 @@ # BUILD ################################################# - - -################################################# -# VS2015 -################################################# -#Wedo not need vs2015 anymore - -#job-windows-vs2015: -# -# extends: .job-prepare -# stage: build -# tags: [ "windows" ] -# except: -# refs: -# - feature/peioMergeCi -# -# except: -# variables: -# - $DEPLOY_RUN_ANDROID -# - $DEPLOY_RUN_IOS -# variables: -# CMAKE_OPTIONS: -DENABLE_LIME_X3DH=NO -# -# script: -# - mkdir build-desktop -# - cd build-desktop -# - cmake .. -G "Visual Studio 14 2015" -DLINPHONESDK_PLATFORM=Desktop -DCMAKE_BUILD_TYPE=Release %DEFAULT_CMAKE_OPTIONS% %CMAKE_OPTIONS% -# - cmake --build . --target sdk --config Release -- /maxcpucount - -#job-windows-vs2015-novideo: -# -# only: -# - schedules -# except: -# variables: -# - $DEPLOY_RUN_ANDROID -# - $FAST_LINUX_TESTS -# variables: -# CMAKE_OPTIONS: -DENABLE_VIDEO=NO -# extends: job-windows-vs2015 +.build_all_windows_script: &build_all_windows_script | + SET Qt5_DIR=C:\Qt\5.12.5\msvc2017\lib\cmake + SET PATH=%PATH%;C:\Qt\5.12.5\msvc2017\bin + IF EXIST build RMDIR /S /Q build + mkdir build + cd build + mkdir OUTPUT + C:\PROGRA~1\Python37\Scripts\cl -s + cmake .. -G "Visual Studio 15 2017" -DLINPHONESDK_PLATFORM=Desktop -DCMAKE_BUILD_TYPE=Release %DEFAULT_WINDOWS_CMAKE_OPTIONS% %CMAKE_OPTIONS% + cmake --build . --target ALL_BUILD --config Release %LBC_NODEBUG_OPTIONS% -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false + C:\PROGRA~1\Python37\Scripts\cl -s .job-windows-vs2017: extends: .job-prepare @@ -50,20 +21,7 @@ variables: CMAKE_OPTIONS: -DENABLE_LIME_X3DH=NO -DENABLE_UNIT_TESTS=ON script: - - SET Qt5_DIR=C:\Qt\5.12.5\msvc2017\lib\cmake - - SET PATH=%PATH%;C:\Qt\5.12.5\msvc2017\bin - - IF EXIST build RMDIR /S /Q build - - mkdir build - - cd build - - mkdir OUTPUT -#SDK Building - #we launch the msvc-cl wrapper located in python scripts folder - #this wrapper relays only needed calls to the real compiler - #cache stats display - - C:\PROGRA~1\Python37\Scripts\cl -s - - cmake .. -G "Visual Studio 15 2017" -DLINPHONESDK_PLATFORM=Desktop -DENABLE_CSHARP_WRAPPER=YES -DCMAKE_BUILD_TYPE=Release %DEFAULT_WINDOWS_CMAKE_OPTIONS% %CMAKE_OPTIONS% - - cmake --build . --target ALL_BUILD --config Release %LBC_NODEBUG_OPTIONS% -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false - - C:\PROGRA~1\Python37\Scripts\cl -s + - *build_all_windows_script artifacts: paths: - build\OUTPUT @@ -112,21 +70,9 @@ job-windows-vs2017-package: - $NIGHTLY_MASTER - $DEPLOY_WINDOWS variables: - CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES + CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_WINDOWS_SIGNING_DIR=$WINDOWS_SIGNING_DIRECTORY script: - - SET Qt5_DIR=C:\Qt\5.12.5\msvc2017\lib\cmake - - SET PATH=%PATH%;C:\Qt\5.12.5\msvc2017\bin - - IF EXIST build RMDIR /S /Q build - - mkdir build - - cd build - - mkdir OUTPUT -#SDK Building - #we launch the msvc-cl wrapper located in python scripts folder - #this wrapper relays only needed calls to the real compiler - #cache stats display - - C:\PROGRA~1\Python37\Scripts\cl -s - - cmake .. -G "Visual Studio 15 2017" -DLINPHONESDK_PLATFORM=Desktop -DENABLE_CSHARP_WRAPPER=YES -DCMAKE_BUILD_TYPE=Release -DENABLE_APP_PACKAGING=YES %DEFAULT_WINDOWS_CMAKE_OPTIONS% %CMAKE_OPTIONS% - - cmake --build . --target ALL_BUILD --config Release %LBC_NODEBUG_OPTIONS% -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false + - *build_all_windows_script - C:\PROGRA~1\Python37\Scripts\cl -s - mkdir "%CI_PROJECT_DIR%/results" - cd OUTPUT diff --git a/linphone-app/cmake_builder/linphone_package/CMakeLists.txt b/linphone-app/cmake_builder/linphone_package/CMakeLists.txt index 39c45061d..6441b51b3 100644 --- a/linphone-app/cmake_builder/linphone_package/CMakeLists.txt +++ b/linphone-app/cmake_builder/linphone_package/CMakeLists.txt @@ -299,88 +299,86 @@ if(${ENABLE_APP_PACKAGING}) set(CPACK_PACKAGE_VERSION_MAJOR ${LINPHONE_MAJOR_VERSION}) set(CPACK_PACKAGE_VERSION_MINOR ${LINPHONE_MINOR_VERSION}) if (LINPHONE_MICRO_VERSION) - set(CPACK_PACKAGE_VERSION_PATCH ${LINPHONE_MICRO_VERSION}) + set(CPACK_PACKAGE_VERSION_PATCH ${LINPHONE_MICRO_VERSION}) endif () set(CPACK_PACKAGE_EXECUTABLES "${EXECUTABLE_NAME};${APPLICATION_NAME}") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/../../../LICENSE.txt") set(CPACK_PACKAGE_INSTALL_DIRECTORY "${APPLICATION_NAME}") set(CPACK_PACKAGE_DIRECTORY "${CMAKE_INSTALL_PREFIX}/Packages") set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") + set(PERFORM_SIGNING 0) if (APPLE) - set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PACKAGE_VERSION}-mac") - set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_CURRENT_SOURCE_DIR}/macos/background_dmg.jpg") - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/linphone_dmg.scpt.in" "${CMAKE_CURRENT_BINARY_DIR}/linphone_dmg.scpt" @ONLY) - set(CPACK_DMG_DS_STORE_SETUP_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/linphone_dmg.scpt") - set(CPACK_BINARY_DRAGNDROP ON) - message(STATUS "Set DragNDrop CPack generator in OUTPUT/Packages") + set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PACKAGE_VERSION}-mac") + set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_CURRENT_SOURCE_DIR}/macos/background_dmg.jpg") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/linphone_dmg.scpt.in" "${CMAKE_CURRENT_BINARY_DIR}/linphone_dmg.scpt" @ONLY) + set(CPACK_DMG_DS_STORE_SETUP_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/linphone_dmg.scpt") + set(CPACK_BINARY_DRAGNDROP ON) + message(STATUS "Set DragNDrop CPack generator in OUTPUT/Packages") elseif(NOT(WIN32)) - set(DO_APPIMAGE YES) - set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PACKAGE_VERSION}") - message(STATUS "Set AppImage CPack generator in OUTPUT/Packages") + set(DO_APPIMAGE YES) + set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PACKAGE_VERSION}") + message(STATUS "Set AppImage CPack generator in OUTPUT/Packages") else() - set(CPACK_GENERATOR "NSIS") - set(DO_GENERATOR YES) - set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PACKAGE_VERSION}-win32") - string(COMPARE EQUAL ${CPACK_GENERATOR} "NSIS" IS_NSIS) - if (${IS_NSIS}) - set(PACKAGE_EXT "exe") - # Use magic `NSIS.template.in` template from the current source directory to force uninstallation - # and ensure that linphone is not running before installation. - set(CPACK_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/windows") - set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\windows\\\\nsis_banner.bmp") - set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") - set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") - set(CPACK_NSIS_DISPLAY_NAME "${APPLICATION_NAME}") - if (LINPHONE_MICRO_VERSION) - set(CPACK_NSIS_PACKAGE_NAME "${APPLICATION_NAME} ${LINPHONE_MAJOR_VERSION}.${LINPHONE_MINOR_VERSION}.${LINPHONE_MICRO_VERSION}") - else () - set(CPACK_NSIS_PACKAGE_NAME "${APPLICATION_NAME} ${LINPHONE_MAJOR_VERSION}.${LINPHONE_MINOR_VERSION}") - endif () - set(CPACK_NSIS_URL_INFO_ABOUT ${APPLICATION_URL}) - - file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}" DOS_STYLE_BINARY_DIR) - string(REPLACE "\\" "\\\\" ESCAPED_DOS_STYLE_BINARY_DIR "${DOS_STYLE_BINARY_DIR}") - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/install.nsi.in" "${CMAKE_CURRENT_BINARY_DIR}/install.nsi" @ONLY) - set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "!include \\\"${ESCAPED_DOS_STYLE_BINARY_DIR}\\\\install.nsi\\\"") - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/uninstall.nsi.in" "${CMAKE_CURRENT_BINARY_DIR}/uninstall.nsi" @ONLY) - set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "!include \\\"${ESCAPED_DOS_STYLE_BINARY_DIR}\\\\uninstall.nsi\\\"") - set(CPACK_NSIS_EXECUTABLES_DIRECTORY "bin") - set(CPACK_NSIS_MUI_FINISHPAGE_RUN "${EXECUTABLE_NAME}.exe") - message(STATUS "Set NSIS CPack generator in OUTPUT/Packages") - else () - set(PACKAGE_EXT "msi") - - set(CPACK_WIX_UPGRADE_GUID "C748668E-53D0-4088-A548-E33A76615A3B") - set(CPACK_WIX_PRODUCT_ICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") - set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "${APPLICATION_URL}") - message(STATUS "Set MSI CPack generator in OUTPUT/Packages") - # TODO: Deal with install/uninstall.nsi - endif () - - # Sign the installer. - set(TIMESTAMP_URL "http://timestamp.verisign.com/scripts/timestamp.dll") - set(PFX_FILE "${CMAKE_CURRENT_SOURCE_DIR}/sign/linphone.pfx") - set(PASSPHRASE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/sign/passphrase.txt") - get_filename_component(WINSDK_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows;CurrentInstallFolder]" REALPATH CACHE) - find_package(PythonInterp) - find_program(SIGNTOOL signtool PATHS ${WINSDK_DIR}/${CMAKE_INSTALL_BINDIR}) - set(SIGNTOOL_COMMAND "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/windows/signtool.py") - set(PERFORM_SIGNING 0) - if (EXISTS ${PFX_FILE}) - if (SIGNTOOL) - set(SIGNTOOL_COMMAND "${SIGNTOOL_COMMAND} signtool sign /f ${PFX_FILE}") - set(SIGNTOOL_COMMAND "${SIGNTOOL_COMMAND} /p ${PASSPHRASE_FILE}") - set(SIGNTOOL_COMMAND "${SIGNTOOL_COMMAND} /t ${TIMESTAMP_URL}") - message("Found signtool and certificate ${PFX_FILE}") - set(PERFORM_SIGNING 1) - else () - message(STATUS "Could not find signtool! Code signing disabled (${SIGNTOOL})") - endif () - else () - message(STATUS "No signtool certificate found; assuming development machine (${PFX_FILE})") - endif () - endif () + set(CPACK_GENERATOR "NSIS") + set(DO_GENERATOR YES) + set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PACKAGE_VERSION}-win32") + string(COMPARE EQUAL ${CPACK_GENERATOR} "NSIS" IS_NSIS) + if (${IS_NSIS}) + set(PACKAGE_EXT "exe") + # Use magic `NSIS.template.in` template from the current source directory to force uninstallation + # and ensure that linphone is not running before installation. + set(CPACK_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/windows") + set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\windows\\\\nsis_banner.bmp") + set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") + set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") + set(CPACK_NSIS_DISPLAY_NAME "${APPLICATION_NAME}") + if (LINPHONE_MICRO_VERSION) + set(CPACK_NSIS_PACKAGE_NAME "${APPLICATION_NAME} ${LINPHONE_MAJOR_VERSION}.${LINPHONE_MINOR_VERSION}.${LINPHONE_MICRO_VERSION}") + else () + set(CPACK_NSIS_PACKAGE_NAME "${APPLICATION_NAME} ${LINPHONE_MAJOR_VERSION}.${LINPHONE_MINOR_VERSION}") + endif () + set(CPACK_NSIS_URL_INFO_ABOUT ${APPLICATION_URL}) + + file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}" DOS_STYLE_BINARY_DIR) + string(REPLACE "\\" "\\\\" ESCAPED_DOS_STYLE_BINARY_DIR "${DOS_STYLE_BINARY_DIR}") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/install.nsi.in" "${CMAKE_CURRENT_BINARY_DIR}/install.nsi" @ONLY) + set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "!include \\\"${ESCAPED_DOS_STYLE_BINARY_DIR}\\\\install.nsi\\\"") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/uninstall.nsi.in" "${CMAKE_CURRENT_BINARY_DIR}/uninstall.nsi" @ONLY) + set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "!include \\\"${ESCAPED_DOS_STYLE_BINARY_DIR}\\\\uninstall.nsi\\\"") + set(CPACK_NSIS_EXECUTABLES_DIRECTORY "bin") + set(CPACK_NSIS_MUI_FINISHPAGE_RUN "${EXECUTABLE_NAME}.exe") + message(STATUS "Set NSIS CPack generator in OUTPUT/Packages") + else () + set(PACKAGE_EXT "msi") + + set(CPACK_WIX_UPGRADE_GUID "C748668E-53D0-4088-A548-E33A76615A3B") + set(CPACK_WIX_PRODUCT_ICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") + set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "${APPLICATION_URL}") + message(STATUS "Set MSI CPack generator in OUTPUT/Packages") + # TODO: Deal with install/uninstall.nsi + endif () + + if(LINPHONE_WINDOWS_SIGNING_DIR) + # Sign the installer. + set(TIMESTAMP_URL "http://timestamp.verisign.com/scripts/timestamp.dll") + set(PFX_FILE "${LINPHONE_WINDOWS_SIGNING_DIR}/linphone.pfx") + set(PASSPHRASE_FILE "${LINPHONE_WINDOWS_SIGNING_DIR}/passphrase.txt") + get_filename_component(WINSDK_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows;CurrentInstallFolder]" REALPATH CACHE) + find_program(SIGNTOOL signtool PATHS ${WINSDK_DIR}/${CMAKE_INSTALL_BINDIR}) + if (EXISTS ${PFX_FILE}) + if (SIGNTOOL) + set(SIGNTOOL_COMMAND ${SIGNTOOL}) + message("Found signtool and certificate ${PFX_FILE}") + set(PERFORM_SIGNING 1) + else () + message(STATUS "Could not find signtool! Code signing disabled (${SIGNTOOL})") + endif () + else () + message(STATUS "No signtool certificate found; assuming development machine (${PFX_FILE})") + endif () + endif () + endif() configure_file("${CMAKE_CURRENT_SOURCE_DIR}/packaging.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/packaging.cmake" @ONLY) install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/packaging.cmake") include(CPack) diff --git a/linphone-app/cmake_builder/linphone_package/packaging.cmake.in b/linphone-app/cmake_builder/linphone_package/packaging.cmake.in index 48a0899d6..c8b3852bb 100644 --- a/linphone-app/cmake_builder/linphone_package/packaging.cmake.in +++ b/linphone-app/cmake_builder/linphone_package/packaging.cmake.in @@ -63,18 +63,18 @@ if (NOT "${CMAKE_INSTALL_PREFIX}" MATCHES .*/_CPack_Packages/.*) set(ENV QML_MODULES_PATHS="@QML_MODULES_PATHS@") execute_process( COMMAND mkdir -p "WORK/Packages/AppImageDir/" WORKING_DIRECTORY "@CMAKE_INSTALL_PREFIX@/..") execute_process( COMMAND cp -rf "@CMAKE_CURRENT_SOURCE_DIR@/../../ui" "WORK/Packages/AppImageDir/" WORKING_DIRECTORY "@CMAKE_INSTALL_PREFIX@/..") - execute_process( COMMAND "@CMAKE_CURRENT_SOURCE_DIR@/../../tools/create_appimage.sh" @CPACK_PACKAGE_FILE_NAME@ RESULT_VARIABLE CPACK_COMMAND_RESULT WORKING_DIRECTORY "@CMAKE_INSTALL_PREFIX@/.." ) + execute_process( COMMAND "@CMAKE_CURRENT_SOURCE_DIR@/../../tools/create_appimage.sh" @CPACK_PACKAGE_FILE_NAME@ @LINPHONE_BUILDER_SIGNING_IDENTITY@ @LINPHONE_BUILDER_SIGNING_PASSPHRASE@ RESULT_VARIABLE CPACK_COMMAND_RESULT WORKING_DIRECTORY "@CMAKE_INSTALL_PREFIX@/.." ) if(CPACK_COMMAND_RESULT) message(FATAL_ERROR "Failed to create AppImage package with this command : '@CMAKE_CURRENT_SOURCE_DIR@/../../tools/create_appimage.sh @APP_PROJECT_VERSION@' at @CMAKE_INSTALL_PREFIX@/..\nMaybe the .appimage already exists and is running. Please remove the file before packaging if it is the case.") endif() endif() if (@PERFORM_SIGNING@) execute_process( - COMMAND @SIGNTOOL_COMMAND@ @CMAKE_CURRENT_BINARY_DIR@/@CPACK_PACKAGE_FILE_NAME@.@PACKAGE_EXT@ - RESULT_VARIABLE SIGNING_RESULT + COMMAND "@CMAKE_CURRENT_SOURCE_DIR@/../../tools/sign_package.bat" "@PASSPHRASE_FILE@" "@SIGNTOOL_COMMAND@" "@PFX_FILE@" "@TIMESTAMP_URL@" @CPACK_PACKAGE_FILE_NAME@.@PACKAGE_EXT@ + RESULT_VARIABLE SIGNING_RESULT WORKING_DIRECTORY "@CPACK_PACKAGE_DIRECTORY@" ) if(SIGNING_RESULT) - message(FATAL_ERROR "Failed to sign the package!") + message(FATAL_ERROR "Failed to sign the package! ${SIGNING_RESULT} ${RESULT_VARIABLE}") endif() endif () diff --git a/linphone-app/cmake_builder/linphone_package/windows/signtool.py b/linphone-app/cmake_builder/linphone_package/windows/signtool.py deleted file mode 100644 index 18f20b828..000000000 --- a/linphone-app/cmake_builder/linphone_package/windows/signtool.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# -# Copyright (c) 2010-2020 Belledonne Communications SARL. -# -# This file is part of linphone-desktop -# (see https://www.linphone.org). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -import os, sys -import subprocess -class PassFile: - def __init__(self, file): - self.file = file - def password(self, v): - file = open(self.file, "r"); - line = file.readline().strip() - file.close() - return line - -if __name__ == '__main__': - if len(sys.argv) <= 2: - sys.exit(0) - for i,arg in enumerate(sys.argv): - if arg == "/p": - if (i + 1) == len(sys.argv): - print "Missing password argument" - sys.exit(3) - try: - sys.argv[i+1] = PassFile(sys.argv[i+1]).password(None) - except IOError: - print "Password file not found" - sys.exit(3) - actual_args = sys.argv[1:] - ret = subprocess.call(actual_args) - sys.exit(ret) diff --git a/linphone-app/tools/create_appimage.sh b/linphone-app/tools/create_appimage.sh index 64b89b77c..888aa572c 100755 --- a/linphone-app/tools/create_appimage.sh +++ b/linphone-app/tools/create_appimage.sh @@ -19,6 +19,11 @@ ## along with this program. If not, see . ## +# Arguments : +# $1 = Output Filename +# $2 = Key of the code sign (optional but mendatory if code signing) +# $3 = Passphrase of the code sign (Optional) + APP_NAME="linphone" BIN_SOURCE_DIR="OUTPUT/" @@ -48,9 +53,29 @@ else wget -P "${WORK_DIR}/AppBin" https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage chmod +x "${WORK_DIR}/AppBin/linuxdeploy-plugin-qt-x86_64.AppImage" fi + + + export QML_SOURCES_PATHS=${QML_SOURCES_PATHS}:${WORK_DIR}/.. -./${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage --appdir=${WORK_DIR}/AppDir -e ${WORK_DIR}/AppDir/usr/bin/linphone --output appimage --desktop-file=${WORK_DIR}/AppDir/usr/share/applications/linphone.desktop -i ${WORK_DIR}/AppDir/usr/share/icons/hicolor/scalable/apps/linphone.svg --plugin qt -#./linuxdeploy-x86_64.AppImage --appdir=${WORK_DIR}/ -e ${WORK_DIR}/app/bin/linphone --output appimage --desktop-file=${WORK_DIR}/app/share/applications/linphone.desktop -i ${WORK_DIR}/app/share/icons/hicolor/scalable/apps/linphone.svg +echo "-- Generating AppDir for AppImage" +if [ -z "$2" ]; then + ./${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage --appdir=${WORK_DIR}/AppDir -e ${WORK_DIR}/AppDir/usr/bin/linphone --output appimage --desktop-file=${WORK_DIR}/AppDir/usr/share/applications/linphone.desktop -i ${WORK_DIR}/AppDir/usr/share/icons/hicolor/scalable/apps/linphone.svg --plugin qt +else + if [ -f "${WORK_DIR}/AppBin/appimagetool-x86_64.AppImage" ]; then + echo "appimagetool-x86_64.AppImage exists" + else + wget -P "${WORK_DIR}/AppBin" https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage + chmod +x "${WORK_DIR}/AppBin/appimagetool-x86_64.AppImage" + fi + ./${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage --appdir=${WORK_DIR}/AppDir -e ${WORK_DIR}/AppDir/usr/bin/linphone --desktop-file=${WORK_DIR}/AppDir/usr/share/applications/linphone.desktop -i ${WORK_DIR}/AppDir/usr/share/icons/hicolor/scalable/apps/linphone.svg --plugin qt + #./linuxdeploy-x86_64.AppImage --appdir=${WORK_DIR}/ -e ${WORK_DIR}/app/bin/linphone --output appimage --desktop-file=${WORK_DIR}/app/share/applications/linphone.desktop -i ${WORK_DIR}/app/share/icons/hicolor/scalable/apps/linphone.svg + echo "-- Code Signing of AppImage" + if [ -z "$3" ]; then + ./${WORK_DIR}/AppBin/appimagetool-x86_64.AppImage ${WORK_DIR}/AppDir --sign --sign-key $2 + else + ./${WORK_DIR}/AppBin/appimagetool-x86_64.AppImage ${WORK_DIR}/AppDir --sign --sign-key $2 --sign-args "--pinentry-mode loopback --passphrase $3" + fi +fi mkdir -p "${BIN_SOURCE_DIR}/Packages" mv Linphone*.AppImage "${BIN_SOURCE_DIR}/Packages/$1.AppImage" diff --git a/linphone-app/tools/sign_package.bat b/linphone-app/tools/sign_package.bat new file mode 100644 index 000000000..0b10670cd --- /dev/null +++ b/linphone-app/tools/sign_package.bat @@ -0,0 +1,2 @@ +set /p passphrase=<%1 +%2 sign /f %3 /p %passphrase% /t %4 %5 \ No newline at end of file diff --git a/linphone-app/ui/views/App/Calls/CallsWindow.qml b/linphone-app/ui/views/App/Calls/CallsWindow.qml index 2e507c0bd..10c21d671 100644 --- a/linphone-app/ui/views/App/Calls/CallsWindow.qml +++ b/linphone-app/ui/views/App/Calls/CallsWindow.qml @@ -18,7 +18,7 @@ Window { // --------------------------------------------------------------------------- // `{}` is a workaround to avoid `TypeError: Cannot read property...` when calls list is empty - readonly property var call: (calls.selectedCall?calls.selectedCall:{ + readonly property var call: ( calls.selectedCall?calls.selectedCall:{ callError: '', isOutgoing: true, recording: false, @@ -28,7 +28,7 @@ Window { type: false, updating: true, videoEnabled: false - }) + }); readonly property bool chatIsOpened: !rightPaned.isClosed()