mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 11:28:07 +00:00
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:
parent
4f9e6a7be2
commit
598be61d91
9 changed files with 162 additions and 209 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 ()
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
2
linphone-app/tools/sign_package.bat
Normal file
2
linphone-app/tools/sign_package.bat
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
set /p passphrase=<%1
|
||||
%2 sign /f %3 /p %passphrase% /t %4 %5
|
||||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue