Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(290)

Unified Diff: remoting/host/installer/mac/do_signing.sh

Issue 10197005: [Chromoting] Sign, brand and version the me2me_host (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/host/installer/mac/build.sh ('k') | remoting/remoting.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/installer/mac/do_signing.sh
===================================================================
--- remoting/host/installer/mac/do_signing.sh (revision 0)
+++ remoting/host/installer/mac/do_signing.sh (working copy)
@@ -0,0 +1,159 @@
+#!/bin/sh
+
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# 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').
+#
+# usage: sign_and_build.sh output_dir input_dir codesign_keychain codesign_id
+#
+# The final disk image (dmg) is placed in |output_dir|.
+
+set -e -u
+
+# Binaries to sign.
+ME2ME_HOST=PrivilegedHelperTools/org.chromium.chromoting.me2me_host
+
+# Iceberg creates this directory to write its output.
+PKG_DIR=build
+
+# 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)
+PKGPROJ_HOST='ChromotingHost.packproj'
+PKGPROJ_HOST_SERVICE='ChromotingHostService.packproj'
+PKGPROJ_HOST_UNINSTALLER='ChromotingHostUninstaller.packproj'
+
+# Final mpkg name (for Official builds).
+PKG_FINAL='ChromeRemoteDesktopHost.mpkg'
+
+DMG_TEMP=dmg_tmp
+DMG_NAME='Chrome Remote Desktop'
+DMG_DIR="${DMG_TEMP}/${DMG_NAME}"
+DMG_FILENAME='Chrome Remote Desktop.dmg'
+
+ME="$(basename "${0}")"
+readonly ME
+
+err() {
+ echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: ${@}" >&2
+}
+
+err_exit() {
+ err "${@}"
+ exit 1
+}
+
+# shell_safe_path ensures that |path| is safe to pass to tools as a
+# command-line argument. If the first character in |path| is "-", "./" is
+# prepended to it. The possibly-modified |path| is output.
+shell_safe_path() {
+ local path="${1}"
+ if [[ "${path:0:1}" = "-" ]]; then
+ echo "./${path}"
+ else
+ echo "${path}"
+ fi
+}
+
+verify_empty_dir() {
+ local dir="${1}"
+ if [[ ! -d "${dir}" ]]; then
+ mkdir "${dir}"
+ fi
+
+ shopt -s nullglob dotglob
+ local dir_contents=("${dir}"/*)
+ shopt -u nullglob dotglob
+
+ if [[ ${#dir_contents[@]} -ne 0 ]]; then
+ err "output directory must be empty"
+ exit 1
+ fi
+}
+
+sign_binaries() {
+ local input_dir="${1}"
+ local keychain="${2}"
+ local id="${3}"
+
+ me2me_host="${input_dir}/${ME2ME_HOST}"
+ if [[ ! -f "${me2me_host}" ]]; then
+ err_exit "Input file doesn't exist: ${me2me_host}"
+ fi
+
+ echo Signing "${me2me_host}"
+ codesign -vv -s "${id}" --keychain "${keychain}" "${me2me_host}"
+
+ # Verify signing.
+ codesign -v "${me2me_host}"
+}
+
+build_package() {
+ local pkg="${1}"
+ echo "Building .pkg from ${pkg}"
+ freeze "${pkg}"
+}
+
+build_packages() {
+ local input_dir="${1}"
+ build_package "${input_dir}/${PKGPROJ_HOST_SERVICE}"
+ build_package "${input_dir}/${PKGPROJ_HOST_UNINSTALLER}"
+ build_package "${input_dir}/${PKGPROJ_HOST}"
+}
+
+build_dmg() {
+ local input_dir="${1}"
+ local output_dir="${2}"
+
+ # TODO(garykac): Change this to use the pkg-dmg script.
+
+ # Create the .dmg.
+ echo "Building .dmg..."
+ mkdir -p "${input_dir}/${DMG_DIR}/${PKG_FINAL}"
+ # Copy .mpkg installer.
+ ditto "${input_dir}/${PKG_DIR}/${PKG_FINAL}" \
+ "${input_dir}/${DMG_DIR}/${PKG_FINAL}"
+ # Copy .keystone_install script to top level of .dmg.
+ # Keystone calls this script during upgrades.
+ cp "${input_dir}/Scripts/keystone_install.sh" \
+ "${input_dir}/${DMG_DIR}/.keystone_install"
+ # Build the .dmg from the directory.
+ hdiutil create "${output_dir}/${DMG_FILENAME}" \
+ -srcfolder "${input_dir}/${DMG_DIR}" -ov -quiet
+
+ if [[ ! -f "${output_dir}/${DMG_FILENAME}" ]]; then
+ err_exit "Unable to create disk image: ${DMG_FILENAME}"
+ fi
+}
+
+usage() {
+ echo "Usage: ${ME}: output_dir input_dir codesign_keychain codesign_id" >&2
+}
+
+main() {
+ local output_dir="$(shell_safe_path "${1}")"
+ local input_dir="$(shell_safe_path "${2}")"
+ local codesign_keychain="$(shell_safe_path "${3}")"
+ local codesign_id="${4}"
+
+ verify_empty_dir "${output_dir}"
+
+ sign_binaries "${input_dir}" "${codesign_keychain}" "${codesign_id}"
+ build_packages "${input_dir}"
+ # TODO(garykac): Sign final .mpkg.
+ build_dmg "${input_dir}" "${output_dir}"
+}
+
+if [[ ${#} -ne 4 ]]; then
+ usage
+ exit 1
+fi
+
+main "${@}"
+exit ${?}
Property changes on: remoting/host/installer/mac/do_signing.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
« no previous file with comments | « remoting/host/installer/mac/build.sh ('k') | remoting/remoting.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698