Add code signing support for Linux and Windows

- Add Signing info in CI : use Key for Linux, folder for Windows
- Update create appimage for takking account of key
- Use appimagetool in addition of linuxdeploy for code signing step if needed
This commit is contained in:
Julien Wadel 2020-05-11 09:19:03 +02:00
parent 4f9e6a7be2
commit 598be61d91
9 changed files with 162 additions and 209 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

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

View file

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

View file

@ -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 <http://www.gnu.org/licenses/>.
#
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)

View file

@ -19,6 +19,11 @@
## along with this program. If not, see <http://www.gnu.org/licenses/>.
##
# 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"

View file

@ -0,0 +1,2 @@
set /p passphrase=<%1
%2 sign /f %3 /p %passphrase% /t %4 %5

View file

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