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

Side by Side Diff: remoting/host/installer/mac/do_signing.sh

Issue 10243015: [Chromoting] Sign uninstaller and fixup user-visible package and dmg names. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | remoting/remoting.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/sh 1 #!/bin/sh
2 2
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # This script signs the Chromoting binaries, builds the Chrome Remote Desktop 7 # This script signs the Chromoting binaries, builds the Chrome Remote Desktop
8 # installer and then packages it into a .dmg. It requires that Iceberg be 8 # installer and then packages it into a .dmg. It requires that Iceberg be
9 # installed (for 'freeze'). 9 # installed (for 'freeze').
10 # 10 #
11 # usage: sign_and_build.sh output_dir input_dir codesign_keychain codesign_id 11 # usage: sign_and_build.sh output_dir input_dir codesign_keychain codesign_id
12 # 12 #
13 # The final disk image (dmg) is placed in |output_dir|. 13 # The final disk image (dmg) is placed in |output_dir|.
14 14
15 set -e -u 15 set -e -u
16 16
17 # Binaries to sign. 17 # Binaries to sign.
18 ME2ME_HOST=PrivilegedHelperTools/org.chromium.chromoting.me2me_host 18 ME2ME_HOST='PrivilegedHelperTools/org.chromium.chromoting.me2me_host'
19 UNINSTALLER='Applications/@@HOST_UNINSTALLER_NAME@@.app'
19 20
20 # Iceberg creates this directory to write its output. 21 # Iceberg creates this directory to write its output.
21 PKG_DIR=build 22 PKG_DIR=build
22 23
23 # The Chromoting Host installer is a meta-package that consists of 3 24 # The Chromoting Host installer is a meta-package that consists of 3
24 # components: 25 # components:
25 # * Chromoting Host Service package 26 # * Chromoting Host Service package
26 # * Chromoting Host Uninstaller package 27 # * Chromoting Host Uninstaller package
27 # * Keystone package(GoogleSoftwareUpdate - for Official builds only) 28 # * Keystone package(GoogleSoftwareUpdate - for Official builds only)
28 PKGPROJ_HOST='ChromotingHost.packproj' 29 PKGPROJ_HOST='ChromotingHost.packproj'
29 PKGPROJ_HOST_SERVICE='ChromotingHostService.packproj' 30 PKGPROJ_HOST_SERVICE='ChromotingHostService.packproj'
30 PKGPROJ_HOST_UNINSTALLER='ChromotingHostUninstaller.packproj' 31 PKGPROJ_HOST_UNINSTALLER='ChromotingHostUninstaller.packproj'
31 32
32 # Final mpkg name (for Official builds). 33 # Final (user-visible) mpkg name.
33 PKG_FINAL='ChromeRemoteDesktopHost.mpkg' 34 PKG_FINAL='@@HOST_PKG@@.mpkg'
34 35
35 DMG_TEMP=dmg_tmp 36 DMG_TEMP=dmg_tmp
36 DMG_NAME='Chrome Remote Desktop' 37 DMG_NAME='@@DMG_NAME@@'
37 DMG_DIR="${DMG_TEMP}/${DMG_NAME}" 38 DMG_DIR="${DMG_TEMP}/${DMG_NAME}"
38 DMG_FILENAME='Chrome Remote Desktop.dmg' 39 DMG_FILENAME='@@DMG_NAME@@.dmg'
39 40
40 ME="$(basename "${0}")" 41 ME="$(basename "${0}")"
41 readonly ME 42 readonly ME
42 43
43 err() { 44 err() {
44 echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: ${@}" >&2 45 echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: ${@}" >&2
45 } 46 }
46 47
47 err_exit() { 48 err_exit() {
48 err "${@}" 49 err "${@}"
(...skipping 16 matching lines...) Expand all
65 local dir="${1}" 66 local dir="${1}"
66 if [[ ! -d "${dir}" ]]; then 67 if [[ ! -d "${dir}" ]]; then
67 mkdir "${dir}" 68 mkdir "${dir}"
68 fi 69 fi
69 70
70 shopt -s nullglob dotglob 71 shopt -s nullglob dotglob
71 local dir_contents=("${dir}"/*) 72 local dir_contents=("${dir}"/*)
72 shopt -u nullglob dotglob 73 shopt -u nullglob dotglob
73 74
74 if [[ ${#dir_contents[@]} -ne 0 ]]; then 75 if [[ ${#dir_contents[@]} -ne 0 ]]; then
75 err "output directory must be empty" 76 err "Output directory must be empty"
76 exit 1 77 exit 1
77 fi 78 fi
78 } 79 }
79 80
81 sign() {
82 local name="${1}"
83 local keychain="${2}"
84 local id="${3}"
85
86 if [[ ! -e "${name}" ]]; then
87 err_exit "Input file doesn't exist: ${name}"
88 fi
89
90 echo Signing "${name}"
91 codesign -vv -s "${id}" --keychain "${keychain}" "${name}"
92 codesign -v "${name}"
93 }
94
80 sign_binaries() { 95 sign_binaries() {
81 local input_dir="${1}" 96 local input_dir="${1}"
82 local keychain="${2}" 97 local keychain="${2}"
83 local id="${3}" 98 local id="${3}"
84 99
85 me2me_host="${input_dir}/${ME2ME_HOST}" 100 sign "${input_dir}/${ME2ME_HOST}" "${keychain}" "${id}"
86 if [[ ! -f "${me2me_host}" ]]; then 101 sign "${input_dir}/${UNINSTALLER}" "${keychain}" "${id}"
87 err_exit "Input file doesn't exist: ${me2me_host}"
88 fi
89
90 echo Signing "${me2me_host}"
91 codesign -vv -s "${id}" --keychain "${keychain}" "${me2me_host}"
92
93 # Verify signing.
94 codesign -v "${me2me_host}"
95 } 102 }
96 103
97 build_package() { 104 build_package() {
98 local pkg="${1}" 105 local pkg="${1}"
99 echo "Building .pkg from ${pkg}" 106 echo "Building .pkg from ${pkg}"
100 freeze "${pkg}" 107 freeze "${pkg}"
101 } 108 }
102 109
103 build_packages() { 110 build_packages() {
104 local input_dir="${1}" 111 local input_dir="${1}"
105 build_package "${input_dir}/${PKGPROJ_HOST_SERVICE}" 112 build_package "${input_dir}/${PKGPROJ_HOST_SERVICE}"
106 build_package "${input_dir}/${PKGPROJ_HOST_UNINSTALLER}" 113 build_package "${input_dir}/${PKGPROJ_HOST_UNINSTALLER}"
107 build_package "${input_dir}/${PKGPROJ_HOST}" 114 build_package "${input_dir}/${PKGPROJ_HOST}"
108 } 115 }
109 116
110 build_dmg() { 117 build_dmg() {
111 local input_dir="${1}" 118 local input_dir="${1}"
112 local output_dir="${2}" 119 local output_dir="${2}"
113 120
114 # TODO(garykac): Change this to use the pkg-dmg script. 121 # TODO(garykac): Change this to use the pkg-dmg script.
115 122
116 # Create the .dmg. 123 # Create the .dmg.
117 echo "Building .dmg..." 124 echo "Building .dmg..."
118 mkdir -p "${input_dir}/${DMG_DIR}/${PKG_FINAL}" 125 mkdir -p "${input_dir}/${DMG_DIR}/${PKG_FINAL}"
119 # Copy .mpkg installer. 126 # Copy .mpkg installer.
127 echo "Copying ${input_dir}/${PKG_DIR}/${PKG_FINAL}"
120 ditto "${input_dir}/${PKG_DIR}/${PKG_FINAL}" \ 128 ditto "${input_dir}/${PKG_DIR}/${PKG_FINAL}" \
121 "${input_dir}/${DMG_DIR}/${PKG_FINAL}" 129 "${input_dir}/${DMG_DIR}/${PKG_FINAL}"
122 # Copy .keystone_install script to top level of .dmg. 130 # Copy .keystone_install script to top level of .dmg.
123 # Keystone calls this script during upgrades. 131 # Keystone calls this script during upgrades.
124 cp "${input_dir}/Scripts/keystone_install.sh" \ 132 cp "${input_dir}/Scripts/keystone_install.sh" \
125 "${input_dir}/${DMG_DIR}/.keystone_install" 133 "${input_dir}/${DMG_DIR}/.keystone_install"
126 # Build the .dmg from the directory. 134 # Build the .dmg from the directory.
127 hdiutil create "${output_dir}/${DMG_FILENAME}" \ 135 hdiutil create "${output_dir}/${DMG_FILENAME}" \
128 -srcfolder "${input_dir}/${DMG_DIR}" -ov -quiet 136 -srcfolder "${input_dir}/${DMG_DIR}" -ov -quiet
129 137
(...skipping 20 matching lines...) Expand all
150 build_dmg "${input_dir}" "${output_dir}" 158 build_dmg "${input_dir}" "${output_dir}"
151 } 159 }
152 160
153 if [[ ${#} -ne 4 ]]; then 161 if [[ ${#} -ne 4 ]]; then
154 usage 162 usage
155 exit 1 163 exit 1
156 fi 164 fi
157 165
158 main "${@}" 166 main "${@}"
159 exit ${?} 167 exit ${?}
OLDNEW
« no previous file with comments | « no previous file | remoting/remoting.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698