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()