Chromium Code Reviews| Index: tools/hermetic_cygwin/make_hermetic_cygwin.sh |
| =================================================================== |
| --- tools/hermetic_cygwin/make_hermetic_cygwin.sh (revision 0) |
| +++ tools/hermetic_cygwin/make_hermetic_cygwin.sh (revision 0) |
| @@ -0,0 +1,206 @@ |
| +#!/bin/bash |
| +# Copyright 2010, Google Inc. |
| +# All rights reserved. |
| +# |
| +# Redistribution and use in source and binary forms, with or without |
| +# modification, are permitted provided that the following conditions are |
| +# met: |
| +# |
| +# * Redistributions of source code must retain the above copyright |
| +# notice, this list of conditions and the following disclaimer. |
| +# * Redistributions in binary form must reproduce the above |
| +# copyright notice, this list of conditions and the following disclaimer |
| +# in the documentation and/or other materials provided with the |
| +# distribution. |
| +# * Neither the name of Google Inc. nor the names of its |
| +# contributors may be used to endorse or promote products derived from |
| +# this software without specific prior written permission. |
| +# |
| +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| + |
| +declare NSIS=0 verboase=0 |
| + |
| +while getopts "nv" flag ; do |
| + case "$flag" in |
| + n) NSIS=1 ;; |
| + v) verbose=1 ;; |
| + ?) cat <<END |
| + Usage: $0 [-n] [-v] |
| + Flags: |
| + -n: run NSIS to create actual installer |
| + -v: be more verbose when processing data |
| + Place CygWin decription file (setup.ini) in current directory, run script. |
| + You'll get: |
| + 1. Downloaded binary files in subdirectory "packages" |
| + 2. Downloaded source files in subdirectory "packages.src" |
| + 3. Unpacked files in subdirectory "packages.unpacked" |
| + 4. Setup log files in subdirectory "setup" |
| + 5. Ready to use file make_installer.nsi for NSIS installer |
| + setup.ini is here: http://mirrors.kernel.org/sourceware/cygwin/setup.ini |
| + It's not downloaded by script to keep it hermetic. |
| + |
| + NSIS file format is described here: http://nsis.sourceforge.net/Docs |
| +END |
| + exit 1;; |
| + esac |
| +done |
| + |
| +declare CygWin=0 |
| +if [[ "`uname -s`" != "Darwin" ]] ; then |
| + if [[ "`uname -o`" = "Cygwin" ]] ; then |
| + CygWin=1 |
| + declare need_restart=0 |
| + if ((BASH_VERSINFO[0]<4)) ; then |
| + need_restart=1 |
| + fi |
| + if ((NSIS)) && ! [ -x NSIS/makensis.exe ] && ! [ -x /bin/7z ] ; then |
| + need_restart=1 |
| + fi |
| + fi |
| +fi |
| + |
| +if ((need_restart)) ; then |
|
dpolukhin
2010/04/28 13:16:08
Add comment that it may happen only in Cygwin.
|
| + if ! [ -x "$PWD/hermetic_cygwin/bin/7z" ] && ! [ -x "$PWD/hermetic_cygwin/bin/7z.exe" ] ; then |
| + wget http://build.chromium.org/mirror/nacl/cygwin_mirror/hermetic_cygwin_1_7_5-1_0.exe -O cygwin_mini_setup.exe |
| + chmod a+x cygwin_mini_setup.exe |
| + "`cygpath $COMSPEC`" /C start /WAIT ".\\cygwin_mini_setup" /CYGPORT /S "/D=`cygpath -w $PWD/hermetic_cygwin`" |
| + fi |
| + exec "`cygpath $COMSPEC`" /C "`cygpath -w $PWD/hermetic_cygwin/bin/bash`" "`cygpath -w $0`" "$@" |
| +fi |
| + |
| +if ((BASH_VERSINFO[0]<4)) ; then |
| + echo "You need Bash4 to use this script" >&2 |
| + exit 1 |
| +fi |
| + |
| +if ((NSIS)) && ((CygWin)) && ! [ -d NSIS ] ; then |
| + 7z -oNSIS x ../../../third_party/NSIS/nsis-2.45.1-Unicode-setup.exe |
| + mkdir -p NSIS/Contrib/Graphics/{Checks,Header,Icons,Wizard} |
| + for dirname in Checks Header Icons Wizard ; do |
| + mv NSIS/\$_OUTDIR/$dirname/* NSIS/Contrib/Graphics/$dirname |
| + done |
| + rmdir NSIS/\$_OUTDIR/{Checks,Header,Icons,Wizard,} |
| + rm NSIS/\$PLUGINSDIR/* |
| + rmdir NSIS/\$PLUGINSDIR |
| + mkdir -p "MkLink/nsis" |
| + cp -aiv "NSIS/Examples/Plugin/nsis/*" "Mklink/nsis" |
| + cp -aiv "MkLink/Release Unicode/MkLink.dll" "NSIS/Plugins" |
| +fi |
| + |
| +declare -A description packages |
| +. "${0/.sh/.conf}" |
| +. "`dirname \"$0\"`"/make_installer.inc |
| + |
| +CYGWIN_VERSION=1.7.5-1.0 |
| + |
| +mkdir -p packages{,.src,.unpacked} setup |
| + |
| +parse_setup_ini |
| +fix_setup_inf_info |
| +rm setup/*.lst.gz |
| +download_package "Base" "`seq -s ' ' \"$((${#packages[@]}+3))\"`" |
| +download_addon_packages 2 |
| +if ((include_all_packages)) ; then |
| + download_all_packages 1 |
| +else |
| + for pkgname in "${!sectionin[@]}" ; do |
| + sectionin["$pkgname"]=" 1${sectionin[$pkgname]}" |
| + done |
| + for pkgname in "${!seed[@]}" ; do |
| + seed["$pkgname"]=" 1${seed[$pkgname]}" |
| + done |
| +fi |
| +fill_required_packages |
| +fill_filetype_info |
| + |
| +( |
| + cat <<END |
| +RequestExecutionLevel user |
| +SetCompressor $compressor |
| +SetCompressorDictSize 128 |
| +Name "Hermetic CygWin" |
| +OutFile hermetic_cygwin_${CYGWIN_VERSION//./_}.exe |
| +END |
| + declare_nsis_variables |
| + cat <<END |
| + |
| +InstallDir "c:\\cygwin" |
| + |
| +!include "MUI2.nsh" |
| +!include "Sections.nsh" |
| + |
| +!define MUI_HEADERIMAGE |
| +!define MUI_WELCOMEFINISHPAGE_BITMAP "\${NSISDIR}\\Contrib\\Graphics\\Wizard\\win.bmp" |
| + |
| +!define MUI_WELCOMEPAGE_TITLE "Welcome to Hermetic CygWin" |
| +!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Hermetic CygWin $CYGWIN_VERSION.\$\\r\$\\n\$\\r\$\\nHermetic CygWin is simple and reliable way to install pre-defined version of CygWin.\$\\r\$\\n\$\\r\$\\n\$_CLICK" |
| + |
| +!define MUI_COMPONENTSPAGE_SMALLDESC |
| + |
| +!insertmacro MUI_PAGE_WELCOME |
| +!insertmacro MUI_PAGE_COMPONENTS |
| +!insertmacro MUI_PAGE_DIRECTORY |
| +!insertmacro MUI_PAGE_INSTFILES |
| + |
| +!define MUI_FINISHPAGE_LINK "Visit the Native Client site for the news, FAQs and support" |
| +!define MUI_FINISHPAGE_LINK_LOCATION "http://code.google.com/p/nativeclient-sdk/wiki/GettingStarted" |
| + |
| +!insertmacro MUI_PAGE_FINISH |
| + |
| +!insertmacro MUI_LANGUAGE "English" |
| + |
| +Section "" sec_Preinstall |
| + SectionIn `seq -s ' ' $((${#packages[@]}+3))` |
| + Push \$R0 |
| + CreateDirectory "\$INSTDIR\\etc" |
| + CreateDirectory "\$INSTDIR\\etc\\setup" |
| + FileOpen \$R0 \$INSTDIR\\postinstall.sh w |
| + FileWrite \$R0 'export PATH=/usr/local/bin:/usr/bin:/bin\$\nexport CYGWIN="\$\$CYGWIN nodosfilewarning"\$\n' |
| + FileClose \$R0 |
| + FileOpen \$R0 \$INSTDIR\\etc\\setup\\installed.log w |
| + FileWrite \$R0 "INSTALLED.DB 2\$\n" |
| + FileClose \$R0 |
| + Pop \$R0 |
| +SectionEnd |
| +END |
| + generate_section_list |
| + cat <<END |
| +Section "" sec_PostInstall |
| + SectionIn `seq -s ' ' $((${#packages[@]}+3))` |
| + Push \$R0 |
| + Push \$R1 |
| + FileOpen \$R0 \$INSTDIR\\postinstall.sh a |
| + FileSeek \$R0 0 END |
| + FileWrite \$R0 "/bin/sort /etc/setup/installed.log -o /etc/setup/installed.db\$\nrm /etc/setup/installed.log\$\n" |
| + FileClose \$R0 |
| + SetOutPath \$INSTDIR |
| + nsExec::ExecToLog '"bin\\bash" -c ./postinstall.sh' |
| + Delete \$INSTDIR\\postinstall.sh |
| + FileOpen \$R0 \$INSTDIR\\CygWin.bat w |
| + StrCpy \$R1 \$INSTDIR 1 |
| + FileWrite \$R0 "@echo off\$\r\$\n\$\r\$\n\$R1:$\r\$\nchdir \$INSTDIR\$\r\$\nbash --login -i$\r\$\n" |
| + FileClose \$R0 |
| + Pop \$R1 |
| + Pop \$R0 |
| +SectionEnd |
| +END |
| + generate_init_function 2 |
| + generate_onselchange_function |
| +) > make_hermetic_cygwin.nsi |
| +if ((NSIS)) ; then |
| + if [ -e NSIS/makensis.exe ] ; then |
| + NSIS/makensis.exe /V2 make_hermetic_cygwin.nsi |
| + else |
| + makensis /V2 make_hermetic_cygwin.nsi |
| + fi |
| +fi |
| Property changes on: tools/hermetic_cygwin/make_hermetic_cygwin.sh |
| ___________________________________________________________________ |
| Added: svn:eol-style |
| + LF |