mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 11:28:07 +00:00
- Auto version from git
- Use specific runner on Centos7 - Move appimage script in app folder - Use git versionning for installer name - Add qt plugin to install with appimage - Reduce appimage size, remove duplicates - Notarization of DMG and codesigning for Apple
This commit is contained in:
parent
f1bf765fd6
commit
f5bedf0192
7 changed files with 113 additions and 35 deletions
|
|
@ -15,7 +15,7 @@
|
|||
echo $DEFAULT_MACOS_CMAKE_OPTIONS
|
||||
echo $CMAKE_OPTIONS
|
||||
echo $ADDITIONAL_BUILD_OPTIONS
|
||||
cmake .. -G "$CMAKE_GENERATOR" -DLINPHONESDK_PLATFORM=Desktop -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 $DEFAULT_MACOS_CMAKE_OPTIONS $XCODE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS
|
||||
cmake .. -G "$CMAKE_GENERATOR" -DLINPHONESDK_PLATFORM=Desktop -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 $DEFAULT_MACOS_CMAKE_OPTIONS $XCODE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS -DLINPHONE_BUILDER_SIGNING_IDENTITY="$MACOS_SIGNING_IDENTITY"
|
||||
cmake --build . --target all $LBC_NODEBUG_OPTIONS -- $ADDITIONAL_BUILD_OPTIONS
|
||||
ccache -s
|
||||
|
||||
|
|
@ -91,7 +91,8 @@ job-macosx-makefile-package:
|
|||
extends: job-macosx-makefile
|
||||
script:
|
||||
- *build_all_script
|
||||
- codesign --verbose -s "$MACOS_SIGNING_IDENTITY" OUTPUT/Packages/Linphone*.dmg
|
||||
- codesign --options runtime,library --verbose -s "$MACOS_SIGNING_IDENTITY" OUTPUT/Packages/Linphone*.dmg
|
||||
- ./../tools/app_notarization.sh
|
||||
artifacts:
|
||||
paths:
|
||||
- build/OUTPUT/Packages/Linphone*.dmg
|
||||
|
|
|
|||
|
|
@ -39,17 +39,17 @@ set(LINPHONE_QML_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../ui")
|
|||
# Build package version.
|
||||
# ==============================================================================
|
||||
|
||||
if (GIT_EXECUTABLE)
|
||||
if (GIT_EXECUTABLE AND NOT(APP_PROJECT_VERSION))
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} describe --always
|
||||
OUTPUT_VARIABLE LINPHONE_GIT_REVISION
|
||||
OUTPUT_VARIABLE APP_PROJECT_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../.."
|
||||
)
|
||||
else ()
|
||||
set(LINPHONE_GIT_REVISION "0.0.0")
|
||||
elseif (NOT(APP_PROJECT_VERSION))
|
||||
set(APP_PROJECT_VERSION "0.0.0")
|
||||
endif ()
|
||||
string(REGEX REPLACE "([0-9.]+)-?.*" "\\1" LINPHONE_VERSION "${LINPHONE_GIT_REVISION}")
|
||||
string(REGEX REPLACE "([0-9.]+)-?.*" "\\1" LINPHONE_VERSION "${APP_PROJECT_VERSION}")
|
||||
string(REPLACE "." ";" SPLITTED_LINPHONE_VERSION "${LINPHONE_VERSION}")
|
||||
list(LENGTH SPLITTED_LINPHONE_VERSION SPLITTED_LINPHONE_VERSION_LENGTH)
|
||||
list(GET SPLITTED_LINPHONE_VERSION 0 LINPHONE_MAJOR_VERSION)
|
||||
|
|
@ -80,7 +80,7 @@ endif ()
|
|||
# find_program(7Z_PROGRAM 7z PATHS "$ENV{ProgramFiles}/7-Zip")
|
||||
# if (7Z_PROGRAM)
|
||||
# execute_process(
|
||||
# COMMAND ${7Z_PROGRAM} a -tzip ${CMAKE_BINARY_DIR}/${EXECUTABLE_NAME}-sdk-${LINPHONE_GIT_REVISION}-win32.zip "@${EXECUTABLE_NAME}-sdk.list"
|
||||
# COMMAND ${7Z_PROGRAM} a -tzip ${CMAKE_BINARY_DIR}/${EXECUTABLE_NAME}-sdk-${APP_PROJECT_VERSION}-win32.zip "@${EXECUTABLE_NAME}-sdk.list"
|
||||
# WORKING_DIRECTORY ${LINPHONE_OUTPUT_DIR}
|
||||
# )
|
||||
# else ()
|
||||
|
|
@ -88,8 +88,8 @@ endif ()
|
|||
# endif ()
|
||||
#elseif (APPLE)
|
||||
# execute_process(
|
||||
# COMMAND rm -rf "${CMAKE_BINARY_DIR}/${EXECUTABLE_NAME}-sdk-${LINPHONE_GIT_REVISION}-mac.zip"
|
||||
# COMMAND zip -ry "${CMAKE_BINARY_DIR}/${EXECUTABLE_NAME}-sdk-${LINPHONE_GIT_REVISION}-mac.zip" . -i "@${EXECUTABLE_NAME}-sdk.list"
|
||||
# COMMAND rm -rf "${CMAKE_BINARY_DIR}/${EXECUTABLE_NAME}-sdk-${APP_PROJECT_VERSION}-mac.zip"
|
||||
# COMMAND zip -ry "${CMAKE_BINARY_DIR}/${EXECUTABLE_NAME}-sdk-${APP_PROJECT_VERSION}-mac.zip" . -i "@${EXECUTABLE_NAME}-sdk.list"
|
||||
# WORKING_DIRECTORY ${LINPHONE_OUTPUT_DIR}
|
||||
# )
|
||||
#endif ()
|
||||
|
|
@ -180,18 +180,12 @@ elseif (APPLE)
|
|||
install( CODE "execute_process(COMMAND ${DEPLOYQT_PROGRAM} \${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app -qmldir=${LINPHONE_QML_DIR})")
|
||||
endif()
|
||||
if (LINPHONE_BUILDER_SIGNING_IDENTITY)
|
||||
file(GLOB FRAMEWORKS_NAMES "${CMAKE_CURRENT_BINARY_DIR}/../../${APPLICATION_NAME}.app/Contents/Frameworks/*")
|
||||
foreach (FRAMEWORK ${FRAMEWORKS_NAMES})
|
||||
execute_process(COMMAND "codesign" "--verbose" "-s" "${LINPHONE_BUILDER_SIGNING_IDENTITY}" "${FRAMEWORK}")
|
||||
endforeach ()
|
||||
file(GLOB PLUGINS_NAMES "${CMAKE_CURRENT_BINARY_DIR}/../../${APPLICATION_NAME}.app/Contents/PlugIns/*")
|
||||
foreach (PLUGIN ${PLUGINS_NAMES})
|
||||
file(GLOB PLUGINS_FILES "${PLUGIN}/*")
|
||||
foreach (PLUGIN_FILE ${PLUGINS_FILES})
|
||||
execute_process(COMMAND "codesign" "--verbose" "-s" "${LINPHONE_BUILDER_SIGNING_IDENTITY}" "${PLUGIN_FILE}")
|
||||
endforeach ()
|
||||
endforeach ()
|
||||
execute_process(COMMAND "codesign" "--verbose" "-s" "${LINPHONE_BUILDER_SIGNING_IDENTITY}" "${CMAKE_CURRENT_BINARY_DIR}/../../${APPLICATION_NAME}.app")
|
||||
install(CODE "file(GLOB FRAMEWORKS_NAMES \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/Frameworks/*\")
|
||||
foreach (FRAMEWORK \${FRAMEWORKS_NAMES})
|
||||
execute_process(COMMAND \"codesign\" \"--options\" \"runtime,library\" \"--force\" \"--deep\" \"--verbose\" \"-s\" \"${LINPHONE_BUILDER_SIGNING_IDENTITY}\" \"\${FRAMEWORK}\")
|
||||
endforeach ()")
|
||||
install( CODE "execute_process(COMMAND \"codesign\" \"--force\" \"--deep\" \"--options\" \"runtime,library\" \"--verbose\" \"-s\" \"${LINPHONE_BUILDER_SIGNING_IDENTITY}\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/Frameworks/mediastreamer2.framework/Versions/A/Libraries/libmswebrtc.so\")")
|
||||
install( CODE "execute_process(COMMAND \"codesign\" \"--force\" \"--deep\" \"--options\" \"runtime,library\" \"--verbose\" \"-s\" \"${LINPHONE_BUILDER_SIGNING_IDENTITY}\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app\")")
|
||||
endif ()
|
||||
# install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_NAME}.app" DESTINATION "." USE_SOURCE_PERMISSIONS)
|
||||
|
||||
|
|
@ -199,7 +193,8 @@ else()# Not Windows and Apple
|
|||
foreach (LIBRARY ${SHARED_LIBRARIES})
|
||||
get_filename_component(LIBRARY_FILENAME ${LIBRARY} NAME)
|
||||
message("Changing RPATH of ${LIBRARY_FILENAME} from '${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}' to '$ORIGIN/../${CMAKE_INSTALL_LIBDIR}'")
|
||||
execute_process(COMMAND install_name_tool -rpath "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}" "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}" "${LIBRARY}")
|
||||
execute_process(COMMAND install_name_tool -rpath "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}" "$ORIGIN/../lib" "${LIBRARY}")
|
||||
execute_process(COMMAND install_name_tool -addrpath "$ORIGIN/../lib64" "${LIBRARY}")
|
||||
endforeach ()
|
||||
install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_BINDIR}/" DESTINATION "${CMAKE_INSTALL_BINDIR}" USE_SOURCE_PERMISSIONS)
|
||||
|
||||
|
|
@ -232,7 +227,7 @@ else()# Not Windows and Apple
|
|||
install(FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/belr/grammars/cpim_grammar" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/belr/grammars/")
|
||||
install(FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/belr/grammars/vcard_grammar" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/belr/grammars/")
|
||||
install(FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/linphone/rootca.pem" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}") #We use executable_name because of name folder that is not harmonized from the SDK
|
||||
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
endif ()
|
||||
|
||||
if (MSVC)
|
||||
|
|
@ -288,7 +283,7 @@ if(${ENABLE_APP_PACKAGING})
|
|||
set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico")
|
||||
|
||||
if (APPLE)
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${LINPHONE_GIT_REVISION}-mac")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${APP_PROJECT_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")
|
||||
|
|
@ -296,12 +291,12 @@ if(${ENABLE_APP_PACKAGING})
|
|||
message(STATUS "Set DragNDrop CPack generator in OUTPUT/Packages")
|
||||
elseif(NOT(WIN32))
|
||||
set(DO_APPIMAGE YES)
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${LINPHONE_GIT_REVISION}")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${APP_PROJECT_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}-${LINPHONE_GIT_REVISION}-win32")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${APP_PROJECT_VERSION}-win32")
|
||||
string(COMPARE EQUAL ${CPACK_GENERATOR} "NSIS" IS_NSIS)
|
||||
if (${IS_NSIS})
|
||||
set(PACKAGE_EXT "exe")
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ if (NOT "${CMAKE_INSTALL_PREFIX}" MATCHES .*/_CPack_Packages/.*)
|
|||
set(ENV QML_SOURCES_PATHS="@QML_SOURCES_PATHS@")
|
||||
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 -rfv "@CMAKE_CURRENT_SOURCE_DIR@/../../ui" "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@/.." )
|
||||
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.")
|
||||
|
|
|
|||
|
|
@ -25,12 +25,16 @@ BIN_SOURCE_DIR="OUTPUT/"
|
|||
|
||||
WORK_DIR="WORK/Packages/AppImageDir"
|
||||
|
||||
mkdir -p "${WORK_DIR}/app/"
|
||||
mkdir -p "${WORK_DIR}/usr/share"
|
||||
rm -rf ${WORK_DIR}/AppDir
|
||||
mkdir -p "${WORK_DIR}/AppDir/usr/"
|
||||
|
||||
cp -rfv "${BIN_SOURCE_DIR}"/* "${WORK_DIR}/app/"
|
||||
rm -rfv "${WORK_DIR}/app/Packages"
|
||||
cp -rfv "${WORK_DIR}/app/share" "${WORK_DIR}/usr/"
|
||||
#Copy all files from the output project
|
||||
cp -rf "${BIN_SOURCE_DIR}"/* "${WORK_DIR}/AppDir/usr/"
|
||||
#remove Packages folder : it is not part of the project
|
||||
rm -rf "${WORK_DIR}/AppDir/usr/Packages"
|
||||
#remove libraries : there are automatically found by linuxdeploy
|
||||
rm -rf "${WORK_DIR}/AppDir/usr/lib"
|
||||
rm -rf "${WORK_DIR}/AppDir/usr/lib64"
|
||||
|
||||
if [ -f "${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage" ]; then
|
||||
echo "linuxdeploy-x86_64.AppImage exists"
|
||||
|
|
@ -44,7 +48,8 @@ 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
|
||||
./${WORK_DIR}/AppBin/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 --plugin qt
|
||||
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
|
||||
|
||||
mkdir -p "${BIN_SOURCE_DIR}/Packages"
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 30d17ef6505f75f938943db373c6c617baa28028
|
||||
Subproject commit 2756e2e3d2e57944a8057d0c491dc2c67a8fce08
|
||||
77
tools/app_notarization.sh
Executable file
77
tools/app_notarization.sh
Executable file
|
|
@ -0,0 +1,77 @@
|
|||
#!/bin/bash
|
||||
|
||||
#Notarization for Mac. Launch it from the build folder
|
||||
|
||||
#rm notarize_result.plist
|
||||
FILES=OUTPUT/Packages/Linphone*.dmg
|
||||
for f in $FILES
|
||||
do
|
||||
linphone_file=$f
|
||||
done
|
||||
|
||||
echo "Uploading $linphone_file file with xcrun altool"
|
||||
xcrun altool --notarize-app --primary-bundle-id $MACOSX_SIGNING_IDENTIFIER -u "$MACOSX_SIGNING_MAIL" -p "$MACOSX_SIGNING_PASS" --asc-provider "$MACOSX_SIGNING_PROVIDER" --file $linphone_file --output-format xml > "notarize_result.plist"
|
||||
echo "dmg processed. Checking UUID"
|
||||
request_uuid="$("/usr/libexec/PlistBuddy" -c "Print notarization-upload:RequestUUID" notarize_result.plist)"
|
||||
echo "Notarization UUID: ${request_uuid}"
|
||||
#Get status from upload
|
||||
for (( ; ; ))
|
||||
do
|
||||
echo "Getting notarization status"
|
||||
xcrun altool --notarization-info "${request_uuid}" -u "$MACOSX_SIGNING_MAIL" -p "$MACOSX_SIGNING_PASS" --asc-provider "$MACOSX_SIGNING_PROVIDER" --output-format xml > "notarize_result2.plist"
|
||||
xcrun_result=$?
|
||||
if [ "${xcrun_result}" != "0" ]
|
||||
then
|
||||
echo "Notarization failed: ${xcrun_result}"
|
||||
cat "notarize_result2.plist"
|
||||
exit 1
|
||||
fi
|
||||
notarize_status="$("/usr/libexec/PlistBuddy" -c "Print notarization-info:Status" notarize_result2.plist)"
|
||||
if [[ "${notarize_status}" == *"in progress"* ]]; then
|
||||
echo "Waiting for notarization to complete: ${notarize_status}"
|
||||
sleep 20
|
||||
else
|
||||
echo "Notarization status: ${notarize_status}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
log_url="$("/usr/libexec/PlistBuddy" -c "Print notarization-info:LogFileURL" notarize_result2.plist)"
|
||||
echo "Notarization log URL: ${log_url}"
|
||||
|
||||
if [ "${notarize_status}" != "success" ]
|
||||
then
|
||||
echo "Notarization failed."
|
||||
if [ ! -z "${log_url}" ]
|
||||
then
|
||||
curl "${log_url}"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Stapling notarization result..."
|
||||
for (( ; ; ))
|
||||
do
|
||||
xcrun stapler staple -q $linphone_file
|
||||
stapler_result=$?
|
||||
if [ "${stapler_result}" = "65" ]
|
||||
then
|
||||
echo "Waiting for stapling to find record"
|
||||
sleep 10
|
||||
else
|
||||
echo "Stapler status: ${stapler_result}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
spctl --assess --type open --context context:primary-signature -v $linphone_file
|
||||
#validation_result=$?
|
||||
|
||||
echo "Validating image : $?"
|
||||
#if [ "${validation_result}" != 0 ]
|
||||
#then
|
||||
# echo "Failed to validate image: ${validation_result}"
|
||||
# curl "${log_url}"
|
||||
# exit 1
|
||||
#fi
|
||||
exit 0
|
||||
Binary file not shown.
Loading…
Add table
Reference in a new issue