| Index: remoting/host/installer/mac/do_signing.sh
|
| ===================================================================
|
| --- remoting/host/installer/mac/do_signing.sh (revision 149870)
|
| +++ remoting/host/installer/mac/do_signing.sh (working copy)
|
| @@ -5,8 +5,9 @@
|
| # found in the LICENSE file.
|
|
|
| # This script signs the Chromoting binaries, builds the Chrome Remote Desktop
|
| -# installer and then packages it into a .dmg. It requires that Iceberg be
|
| -# installed (for 'freeze').
|
| +# installer and then packages it into a .dmg. It requires that Packages be
|
| +# installed (for 'packagesbuild').
|
| +# Packages: http://s.sudre.free.fr/Software/Packages/about.html
|
| #
|
| # usage: sign_and_build.sh output_dir input_dir codesign_keychain codesign_id
|
| #
|
| @@ -25,46 +26,60 @@
|
|
|
| declare -a g_cleanup_dirs
|
|
|
| -# Binaries to sign.
|
| -ME2ME_HOST='PrivilegedHelperTools/org.chromium.chromoting.me2me_host.app'
|
| -UNINSTALLER='Applications/@@HOST_UNINSTALLER_NAME@@.app'
|
| -PREFPANE='PreferencePanes/org.chromium.chromoting.prefPane'
|
| +setup() {
|
| + local input_dir="${1}"
|
|
|
| -# The Chromoting Host installer is a meta-package that consists of 3
|
| -# components:
|
| -# * Chromoting Host Service package
|
| -# * Chromoting Host Uninstaller package
|
| -# * Keystone package (GoogleSoftwareUpdate - for Official builds only)
|
| -if $USE_ICEBERG ; then
|
| - PKGPROJ_HOST='ChromotingHost.packproj'
|
| - PKGPROJ_HOST_SERVICE='ChromotingHostService.packproj'
|
| - PKGPROJ_HOST_UNINSTALLER='ChromotingHostUninstaller.packproj'
|
| + # The file that contains the properties for this signing build.
|
| + # The file should contain only key=value pairs, one per line.
|
| + PROPS_FILENAME="${input_dir}/do_signing.props"
|
|
|
| - # Final (user-visible) mpkg name.
|
| - PKG_FINAL='@@HOST_PKG@@.mpkg'
|
| -else
|
| - PKGPROJ_HOST='ChromotingHost.pkgproj'
|
| - PKGPROJ_HOST_SERVICE='ChromotingHostService.pkgproj'
|
| - PKGPROJ_HOST_UNINSTALLER='ChromotingHostUninstaller.pkgproj'
|
| + # Individually load the properties for this build. Don't 'source' the file
|
| + # to guard against code accidentally being added to the props file.
|
| + HOST_UNINSTALLER_NAME=$(read_property "HOST_UNINSTALLER_NAME")
|
| + HOST_PKG=$(read_property "HOST_PKG")
|
| + DMG_VOLUME_NAME=$(read_property "DMG_VOLUME_NAME")
|
| + DMG_FILE_NAME=$(read_property "DMG_FILE_NAME")
|
|
|
| - # Final (user-visible) pkg name.
|
| - PKG_FINAL='@@HOST_PKG@@.pkg'
|
| -fi
|
| + # Binaries to sign.
|
| + ME2ME_HOST='PrivilegedHelperTools/org.chromium.chromoting.me2me_host.app'
|
| + UNINSTALLER="Applications/${HOST_UNINSTALLER_NAME}.app"
|
| + PREFPANE='PreferencePanes/org.chromium.chromoting.prefPane'
|
|
|
| -DMG_VOLUME_NAME='@@DMG_VOLUME_NAME@@'
|
| -DMG_FILE_NAME='@@DMG_FILE_NAME@@.dmg'
|
| + # The Chromoting Host installer is a meta-package that consists of 3
|
| + # components:
|
| + # * Chromoting Host Service package
|
| + # * Chromoting Host Uninstaller package
|
| + # * Keystone package (GoogleSoftwareUpdate - for Official builds only)
|
| + if $USE_ICEBERG ; then
|
| + PKGPROJ_HOST='ChromotingHost.packproj'
|
| + PKGPROJ_HOST_SERVICE='ChromotingHostService.packproj'
|
| + PKGPROJ_HOST_UNINSTALLER='ChromotingHostUninstaller.packproj'
|
|
|
| -# Temp directory for Iceberg output.
|
| -PKG_DIR=build
|
| -g_cleanup_dirs+=("${PKG_DIR}")
|
| + # Final (user-visible) mpkg name.
|
| + PKG_FINAL="${HOST_PKG}.mpkg"
|
| + else
|
| + PKGPROJ_HOST='ChromotingHost.pkgproj'
|
| + PKGPROJ_HOST_SERVICE='ChromotingHostService.pkgproj'
|
| + PKGPROJ_HOST_UNINSTALLER='ChromotingHostUninstaller.pkgproj'
|
|
|
| -# Temp directories for building the dmg.
|
| -DMG_TEMP_DIR="$(mktemp -d -t "${ME}"-dmg)"
|
| -g_cleanup_dirs+=("${DMG_TEMP_DIR}")
|
| + # Final (user-visible) pkg name.
|
| + PKG_FINAL="${HOST_PKG}.pkg"
|
| + fi
|
|
|
| -DMG_EMPTY_DIR="$(mktemp -d -t "${ME}"-empty)"
|
| -g_cleanup_dirs+=("${DMG_EMPTY_DIR}")
|
| + DMG_FILE_NAME="${DMG_FILE_NAME}.dmg"
|
|
|
| + # Temp directory for Packages output.
|
| + PKG_DIR=build
|
| + g_cleanup_dirs+=("${PKG_DIR}")
|
| +
|
| + # Temp directories for building the dmg.
|
| + DMG_TEMP_DIR="$(mktemp -d -t "${ME}"-dmg)"
|
| + g_cleanup_dirs+=("${DMG_TEMP_DIR}")
|
| +
|
| + DMG_EMPTY_DIR="$(mktemp -d -t "${ME}"-empty)"
|
| + g_cleanup_dirs+=("${DMG_EMPTY_DIR}")
|
| +}
|
| +
|
| err() {
|
| echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: ${@}" >&2
|
| }
|
| @@ -86,6 +101,13 @@
|
| fi
|
| }
|
|
|
| +# Read a single property from the properties file.
|
| +read_property() {
|
| + local property="${1}"
|
| + local filename="${PROPS_FILENAME}"
|
| + echo `grep "${property}" "${filename}" | tail -n 1 | cut -d "=" -f2-`
|
| +}
|
| +
|
| verify_clean_dir() {
|
| local dir="${1}"
|
| if [[ ! -d "${dir}" ]]; then
|
| @@ -191,6 +213,7 @@
|
| productsign_id="${5}"
|
| fi
|
|
|
| + setup "${input_dir}"
|
| verify_clean_dir "${output_dir}"
|
|
|
| sign_binaries "${input_dir}" "${keychain}" "${codesign_id}"
|
|
|