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

Side by Side Diff: chrome_linux/installer/common/installer.include

Issue 33333002: Roll Linux reference build to official build 30.0.1599.33 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/reference_builds/
Patch Set: Created 7 years, 2 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
OLDNEW
(Empty)
1 # Recursively replace @@include@@ template variables with the referenced file,
2 # and write the resulting text to stdout.
3 process_template_includes() {
4 INCSTACK+="$1->"
5 # Includes are relative to the file that does the include.
6 INCDIR=$(dirname $1)
7 # Clear IFS so 'read' doesn't trim whitespace
8 local OLDIFS="$IFS"
9 IFS=''
10 while read -r LINE
11 do
12 INCLINE=$(sed -e '/^[[:space:]]*@@include@@/!d' <<<$LINE)
13 if [ -n "$INCLINE" ]; then
14 INCFILE=$(echo $INCLINE | sed -e "s#@@include@@\(.*\)#\1#")
15 # Simple filename match to detect cyclic includes.
16 CYCLE=$(sed -e "\#$INCFILE#"'!d' <<<$INCSTACK)
17 if [ "$CYCLE" ]; then
18 echo "ERROR: Possible cyclic include detected." 1>&2
19 echo "$INCSTACK$INCFILE" 1>&2
20 exit 1
21 fi
22 if [ ! -r "$INCDIR/$INCFILE" ]; then
23 echo "ERROR: Couldn't read include file: $INCDIR/$INCFILE" 1>&2
24 exit 1
25 fi
26 process_template_includes "$INCDIR/$INCFILE"
27 else
28 echo "$LINE"
29 fi
30 done < "$1"
31 IFS="$OLDIFS"
32 INCSTACK=${INCSTACK%"$1->"}
33 }
34
35 # Replace template variables (@@VARNAME@@) in the given template file. If a
36 # second argument is given, save the processed text to that filename, otherwise
37 # modify the template file in place.
38 process_template() (
39 # Don't worry if some of these substitution variables aren't set.
40 # Note that this function is run in a sub-shell so we don't leak this
41 # setting, since we still want unbound variables to be an error elsewhere.
42 set +u
43
44 local TMPLIN="$1"
45 if [ -z "$2" ]; then
46 local TMPLOUT="$TMPLIN"
47 else
48 local TMPLOUT="$2"
49 fi
50 # Process includes first so included text also gets substitutions.
51 TMPLINCL="$(process_template_includes "$TMPLIN")"
52 sed \
53 -e "s#@@PACKAGE@@#${PACKAGE}#g" \
54 -e "s#@@PACKAGE_FILENAME@@#${PACKAGE_FILENAME}#g" \
55 -e "s#@@PROGNAME@@#${PROGNAME}#g" \
56 -e "s#@@CHANNEL@@#${CHANNEL}#g" \
57 -e "s#@@COMPANY_FULLNAME@@#${COMPANY_FULLNAME}#g" \
58 -e "s#@@VERSION@@#${VERSION}#g" \
59 -e "s#@@PACKAGE_RELEASE@@#${PACKAGE_RELEASE}#g" \
60 -e "s#@@VERSIONFULL@@#${VERSIONFULL}#g" \
61 -e "s#@@INSTALLDIR@@#${INSTALLDIR}#g" \
62 -e "s#@@BUILDDIR@@#${BUILDDIR}#g" \
63 -e "s#@@STAGEDIR@@#${STAGEDIR}#g" \
64 -e "s#@@SCRIPTDIR@@#${SCRIPTDIR}#g" \
65 -e "s#@@MENUNAME@@#${MENUNAME}#g" \
66 -e "s#@@PRODUCTURL@@#${PRODUCTURL}#g" \
67 -e "s#@@PREDEPENDS@@#${PREDEPENDS}#g" \
68 -e "s#@@DEPENDS@@#${DEPENDS}#g" \
69 -e "s#@@PROVIDES@@#${PROVIDES}#g" \
70 -e "s#@@REPLACES@@#${REPLACES}#g" \
71 -e "s#@@CONFLICTS@@#${CONFLICTS}#g" \
72 -e "s#@@ARCHITECTURE@@#${ARCHITECTURE}#g" \
73 -e "s#@@MAINTNAME@@#${MAINTNAME}#g" \
74 -e "s#@@MAINTMAIL@@#${MAINTMAIL}#g" \
75 -e "s#@@REPOCONFIG@@#${REPOCONFIG}#g" \
76 -e "s#@@SHORTDESC@@#${SHORTDESC}#g" \
77 -e "s#@@FULLDESC@@#${FULLDESC}#g" \
78 -e "s#@@DEFAULT_FLAGS@@#${DEFAULT_FLAGS:-}#g" \
79 > "$TMPLOUT" <<< "$TMPLINCL"
80 )
81
82 # Setup the installation directory hierachy in the package staging area.
83 prep_staging_common() {
84 install -m 755 -d "${STAGEDIR}/${INSTALLDIR}" \
85 "${STAGEDIR}/usr/bin" \
86 "${STAGEDIR}/usr/share/applications" \
87 "${STAGEDIR}/usr/share/gnome-control-center/default-apps" \
88 "${STAGEDIR}/usr/share/man/man1"
89 }
90
91 get_version_info() {
92 source "${BUILDDIR}/installer/version.txt"
93 VERSION="${MAJOR}.${MINOR}.${BUILD}.${PATCH}"
94 # TODO(phajdan.jr): Provide a mechanism to pass a different package
95 # release number if needed. The meaning of it is to bump it for
96 # packaging-only changes while the underlying software has the same version.
97 # This corresponds to the Release field in RPM spec files and debian_revision
98 # component of the Version field for DEB control file.
99 # Generally with Chrome's fast release cycle it'd be more hassle to try
100 # to bump this number between releases.
101 PACKAGE_RELEASE="1"
102 }
103
104 stage_install_common() {
105 echo "Staging common install files in '${STAGEDIR}'..."
106
107 # TODO(mmoss) This assumes we built the static binaries. To support shared
108 # builds, we probably want an install target in scons so it can give us all
109 # the right files. See also:
110 # http://code.google.com/p/chromium/issues/detail?id=4451
111 #
112 # app
113 # We need to add the debug link so gdb knows to look for the symbols.
114 DEBUGFILE="${BUILDDIR}/${PROGNAME}.debug"
115 STRIPPEDFILE="${BUILDDIR}/${PROGNAME}.stripped"
116 eu-strip -o "${STRIPPEDFILE}" -f "${DEBUGFILE}" "${BUILDDIR}/${PROGNAME}"
117 install -m 755 "${STRIPPEDFILE}" "${STAGEDIR}/${INSTALLDIR}/${PROGNAME}"
118 rm "${DEBUGFILE}" "${STRIPPEDFILE}"
119
120 # resources
121 install -m 644 "${BUILDDIR}/${PROGNAME}.pak" "${STAGEDIR}/${INSTALLDIR}/"
122 install -m 644 "${BUILDDIR}/resources.pak" "${STAGEDIR}/${INSTALLDIR}/"
123 # TODO(mmoss): This has broken a couple times on adding new .pak files. Maybe
124 # we should flag all installer files in FILES.cfg and get them from there, so
125 # there's only one place people need to keep track of such things (and in
126 # only the public repository).
127 if [ -r "${BUILDDIR}/chrome_100_percent.pak" ]; then
128 install -m 644 "${BUILDDIR}/chrome_100_percent.pak" "${STAGEDIR}/${INSTALLDI R}/"
129 else
130 install -m 644 "${BUILDDIR}/theme_resources_100_percent.pak" "${STAGEDIR}/${ INSTALLDIR}/"
131 install -m 644 "${BUILDDIR}/ui_resources_100_percent.pak" "${STAGEDIR}/${INS TALLDIR}/"
132 fi
133
134 # sandbox
135 # Rename sandbox binary with hyphen instead of underscore because that's what
136 # the code looks for, but the build targets can't use hyphens (scons bug?)
137 install -m 4755 -s "${BUILDDIR}/${PROGNAME}_sandbox" \
138 "${STAGEDIR}/${INSTALLDIR}/${PROGNAME}-sandbox"
139
140 # l10n paks
141 cp -a "${BUILDDIR}/locales" "${STAGEDIR}/${INSTALLDIR}/"
142 find "${STAGEDIR}/${INSTALLDIR}/locales" -type f -exec chmod 644 '{}' \;
143 find "${STAGEDIR}/${INSTALLDIR}/locales" -type d -exec chmod 755 '{}' \;
144
145 # ffmpeg libs
146 install -m 644 -s "${BUILDDIR}/libffmpegsumo.so" "${STAGEDIR}/${INSTALLDIR}/"
147
148 # Widevine CDM.
149 if [ -f "${BUILDDIR}/libwidevinecdmadapter.so" ]; then
150 install -m 644 -s "${BUILDDIR}/libwidevinecdmadapter.so" "${STAGEDIR}/${INST ALLDIR}/"
151 install -m 644 "${BUILDDIR}/libwidevinecdm.so" "${STAGEDIR}/${INSTALLDIR}/"
152 fi
153
154 # Pepper Flash.
155 PEPPERFLASH_SRCDIR="${BUILDDIR}/PepperFlash"
156 PEPPERFLASH_DESTDIR="${STAGEDIR}/${INSTALLDIR}/PepperFlash"
157 install -m 755 -d "${PEPPERFLASH_DESTDIR}"
158 install -m 644 -s "${PEPPERFLASH_SRCDIR}/libpepflashplayer.so" \
159 "${PEPPERFLASH_DESTDIR}/"
160 install -m 644 "${PEPPERFLASH_SRCDIR}/manifest.json" \
161 "${PEPPERFLASH_DESTDIR}/"
162
163 # pdf plugin
164 if [ -f "${BUILDDIR}/libpdf.so" ]; then
165 install -m 644 -s "${BUILDDIR}/libpdf.so" "${STAGEDIR}/${INSTALLDIR}/"
166 fi
167
168 # peerconnection shared library
169 if [ -f "${BUILDDIR}/lib/libpeerconnection.so" ]; then
170 install -m 755 -d "${STAGEDIR}/${INSTALLDIR}/lib/"
171 install -m 644 -s "${BUILDDIR}/lib/libpeerconnection.so" "${STAGEDIR}/${INST ALLDIR}/lib/"
172 fi
173
174 # nacl pepper plugin
175 if [ -f "${BUILDDIR}/libppGoogleNaClPluginChrome.so" ]; then
176 install -m 644 -s "${BUILDDIR}/libppGoogleNaClPluginChrome.so" "${STAGEDIR}/ ${INSTALLDIR}/"
177 fi
178
179 # nacl_helper and nacl_helper_bootstrap
180 # Don't use "-s" (strip) because this runs binutils "strip", which
181 # mangles the special ELF program headers of nacl_helper_bootstrap.
182 # Explicitly use eu-strip instead, because it doesn't have that problem.
183 for file in nacl_helper nacl_helper_bootstrap; do
184 buildfile="${BUILDDIR}/${file}"
185 if [ -f "${buildfile}" ]; then
186 strippedfile="${buildfile}.stripped"
187 debugfile="${buildfile}.debug"
188 eu-strip -o "${strippedfile}" -f "${debugfile}" "${buildfile}"
189 install -m 755 "${strippedfile}" "${STAGEDIR}/${INSTALLDIR}/${file}"
190 fi
191 done
192 # Don't use "-s" (strip) because this would use the Linux toolchain to
193 # strip the NaCl binary, which has the potential to break it. It
194 # certainly resets the OSABI and ABIVERSION fields to non-NaCl values,
195 # although the NaCl IRT loader doesn't care about these fields. In any
196 # case, the IRT binaries are already stripped by NaCl's build process.
197 for filename in ${BUILDDIR}/nacl_irt_*.nexe; do
198 # Re-check the filename in case globbing matched nothing.
199 if [ -f "$filename" ]; then
200 install -m 644 "$filename" "${STAGEDIR}/${INSTALLDIR}/`basename "$filename "`"
201 fi
202 done
203
204 # default apps
205 if [ -d "${BUILDDIR}/default_apps" ]; then
206 cp -a "${BUILDDIR}/default_apps" "${STAGEDIR}/${INSTALLDIR}/"
207 find "${STAGEDIR}/${INSTALLDIR}/default_apps" -type d -exec chmod 755 '{}' \ ;
208 find "${STAGEDIR}/${INSTALLDIR}/default_apps" -type f -exec chmod 644 '{}' \ ;
209 fi
210
211 # launcher script and symlink
212 process_template "${BUILDDIR}/installer/common/wrapper" \
213 "${STAGEDIR}/${INSTALLDIR}/${PACKAGE}"
214 chmod 755 "${STAGEDIR}/${INSTALLDIR}/${PACKAGE}"
215 pushd "${STAGEDIR}/usr/bin/"
216 ln -snf "${INSTALLDIR}/${PACKAGE}" "${PACKAGE}"
217 popd
218
219 # app icons
220 install -m 644 \
221 "${BUILDDIR}/installer/theme/product_logo_"*.png \
222 "${BUILDDIR}/installer/theme/product_logo_32.xpm" \
223 "${STAGEDIR}/${INSTALLDIR}/"
224
225 # desktop integration
226 install -m 755 "${BUILDDIR}/xdg-mime" "${STAGEDIR}${INSTALLDIR}/"
227 install -m 755 "${BUILDDIR}/xdg-settings" "${STAGEDIR}${INSTALLDIR}/"
228 process_template "${BUILDDIR}/installer/common/desktop.template" \
229 "${STAGEDIR}/${INSTALLDIR}/${PACKAGE}.desktop"
230 chmod 644 "${STAGEDIR}/${INSTALLDIR}/${PACKAGE}.desktop"
231 process_template "${BUILDDIR}/installer/common/default-app.template" \
232 "${STAGEDIR}/usr/share/gnome-control-center/default-apps/${PACKAGE}.xml"
233 chmod 644 "${STAGEDIR}/usr/share/gnome-control-center/default-apps/${PACKAGE}. xml"
234 process_template "${BUILDDIR}/installer/common/default-app-block.template" \
235 "${STAGEDIR}${INSTALLDIR}/default-app-block"
236 chmod 644 "${STAGEDIR}${INSTALLDIR}/default-app-block"
237
238 # documentation
239 install -m 755 "${BUILDDIR}/${PROGNAME}.1" \
240 "${STAGEDIR}/usr/share/man/man1/${PACKAGE}.1"
241 }
OLDNEW
« no previous file with comments | « chrome_linux/installer/common/google-chrome.info ('k') | chrome_linux/installer/common/postinst.include » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698