| Index: tools/hermetic_cygwin/make_installer.inc
|
| ===================================================================
|
| --- tools/hermetic_cygwin/make_installer.inc (revision 0)
|
| +++ tools/hermetic_cygwin/make_installer.inc (revision 0)
|
| @@ -0,0 +1,975 @@
|
| +# 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.
|
| +
|
| +
|
| +# Information from setup.ini
|
| +declare -A sdesc ldesc category required requires prefix version install source
|
| +# Contents of categories
|
| +declare -A category_contents
|
| +# Packagenames: in request order and in install order
|
| +declare -A allinstpackages instpackages reqpackages sectionin seed
|
| +declare -a allinstalledpackages
|
| +# Filetype info
|
| +declare -A filetype
|
| +# Sanitized names cache
|
| +declare -A sanitized_name
|
| +
|
| +parse_setup_ini() {
|
| + if ((verbose)) ; then echo "Parsing setup.ini..." >&2 ; fi
|
| + local package line acceptmode=0 sdescmode=0 ldescmode=0
|
| + while read -r line ; do
|
| + if [[ "${line:0:1}" = "@" ]] ; then
|
| + package="${line:2}"
|
| + acceptmode=1
|
| + sdescmode=0
|
| + ldescmode=0
|
| + if ((verbose)) ; then echo "Package: \"$package\"..." >&2 ; fi
|
| + elif [[ "$line" = "[prev]" ]] || [[ "$line" = "[test]" ]] ; then
|
| + acceptmode=0
|
| + elif ((acceptmode)) ; then
|
| + if ((sdescmode)) ; then
|
| + sdesc["$package"]="${sdesc[$package]} $line"
|
| + if [[ "$line" = *\"* ]] ; then
|
| + sdescmode=0
|
| + fi
|
| + elif ((ldescmode)) ; then
|
| + ldesc["$package"]="${ldesc[$package]} $line"
|
| + if [[ "$line" = *\"* ]] ; then
|
| + ldescmode=0
|
| + fi
|
| + elif [[ "${line:0:6}" = "sdesc:" ]] ; then
|
| + sdesc["$package"]="${line:7}"
|
| + if [[ "${line:7}" = *\"*\"* ]] ; then
|
| + sdescmode=0
|
| + else
|
| + sdescmode=1
|
| + fi
|
| + ldescmode=0
|
| + elif [[ "${line:0:6}" = "ldesc:" ]] ; then
|
| + ldesc["$package"]="${line:7}"
|
| + sdescmode=0
|
| + if [[ "${line:7}" = *\"*\"* ]] ; then
|
| + ldescmode=0
|
| + else
|
| + ldescmode=1
|
| + fi
|
| + elif [[ "${line:0:9}" = "category:" ]] ; then
|
| + category["$package"]="${line:10}"
|
| + for catname in ${category["$package"]} ; do
|
| + category_contents["$catname"]="${category_contents[$catname]} $package"
|
| + done
|
| + sdescmode=0
|
| + ldescmode=0
|
| + elif [[ "${line:0:9}" = "requires:" ]] ; then
|
| + requires["$package"]="${line:10}"
|
| + sdescmode=0
|
| + ldescmode=0
|
| + elif [[ "${line:0:8}" = "version:" ]] ; then
|
| + version["$package"]="${line:9}"
|
| + sdescmode=0
|
| + ldescmode=0
|
| + elif [[ "${line:0:8}" = "install:" ]] ; then
|
| + install["$package"]="${line:9}"
|
| + sdescmode=0
|
| + ldescmode=0
|
| + elif [[ "${line:0:7}" = "source:" ]] ; then
|
| + source["$package"]="${line:8}"
|
| + sdescmode=0
|
| + ldescmode=0
|
| + elif [[ "$line" != "" ]] &&
|
| + [[ "$line" != "#"* ]] ; then
|
| + echo "Unknown tag in \"$line\"" >&2
|
| + exit 1
|
| + fi
|
| + fi
|
| + done < setup.ini
|
| +}
|
| +
|
| +fix_setup_inf_info() {
|
| + version["bash"]="4.1.5-0"
|
| + requires["bash"]="cygwin libintl8 libncurses10 libreadline7 _update-info-dir"
|
| + install["bash"]="release/bash/bash-4.1.5-0.tar.bz2 1132678 24a05f9c3e7ca0b14fe5e55fc92a1d93"
|
| + source["bash"]="release/bash/bash-4.1.5-0-src.tar.bz2 6653288 e59479e2ef9b14bdf662709a2d5b0223"
|
| + version["libreadline7"]="6.1.2-0"
|
| + install["libreadline7"]="release/readline/libreadline7/libreadline7-6.1.2-0.tar.bz2 89945 afd3ec6a01c015572ff9602cb4bdc794"
|
| + source["libreadline7"]="release/readline/readline-6.1.2-0-src.tar.bz2 2283352 509b85aa6f723fac3b453f7c84ca3361"
|
| + version["readline"]="6.1.2-0"
|
| + install["readline"]="release/readline/readline-6.1.2-0.tar.bz2 288160 f16eeccbb99b41d9128d56ddc5d4ad3c"
|
| + source["readline"]="release/readline/readline-6.1.2-0-src.tar.bz2 2283352 509b85aa6f723fac3b453f7c84ca3361"
|
| + requires["coreutils"]="${requires[coreutils]} dash grep patch sed"
|
| + requires["dash"]="${requires[dash]} cygwin"
|
| + requires["libcloog-devel"]="${requires[libcloog-devel]} ppl-devel"
|
| + requires["zlib-devel"]="${requires[libcloog-devel]} zlib"
|
| +}
|
| +
|
| +download_package_dependences() {
|
| + # $1 = name of the package; function is recursive
|
| + # $2 - Section No
|
| + local pkgname
|
| + local instname="${install[$1]/.tar.bz2*/.tar.bz2}"
|
| + local srcname="${source[$1]/.tar.bz2*/.tar.bz2}"
|
| + if [[ "$instname" != "" ]] ; then
|
| + if ((verbose)) ; then ( echo ; echo -n "Package: \"$1\"..." ) >&2 ; fi
|
| + if [ ! -e packages/"`basename \"$instname\"`" ] ; then
|
| + if wget http://build.chromium.org/mirror/nacl/cygwin_mirror/packages/"`basename \"$instname\"`" -O packages/"`basename \"$instname\"`" ||
|
| + wget "$mirror_prefix/$instname" -O packages/"`basename \"$instname\"`" ; then
|
| + if ! [[ "${install[$1]}" = "${install[$1]/.tar.bz2*/.tar.bz2} `
|
| + stat -c "%s" packages/\"\`basename \\\"$instname\\\"\`\"` `
|
| + md5sum -b packages/\"\`basename \\\"$instname\\\"\`\" | cut -b -32`" ]] ; then
|
| + echo "Wrong file downloaded: expected ${install[$1]}" >&2
|
| + exit 1
|
| + fi
|
| + else
|
| + # Wget should have complained for us
|
| + exit $?
|
| + fi
|
| + fi
|
| + if [ ! -e packages.unpacked/"`basename \"$instname\"`" ] ; then
|
| + mkdir -p packages.unpacked/"`basename \"$instname\"`"
|
| + if ! tar xSvpf {packages,-Cpackages.unpacked}/"`basename \"$instname\"`" ; then
|
| + # Tar should have complained for us
|
| + exit $?
|
| + fi
|
| + if [[ "$pkgname" = "WindowMaker" ]] ; then
|
| + mv packages.unpacked/"`basename \"$instname\"`"/usr/share/WindowMaker/Icons/{,tmp}defaultAppIcon.tiff
|
| + rm packages.unpacked/"`basename \"$instname\"`"/usr/share/WindowMaker/Icons/DefaultAppIcon.tiff 2> /dev/null
|
| + mv packages.unpacked/"`basename \"$instname\"`"/usr/share/WindowMaker/Icons/{tmp,}defaultAppIcon.tiff
|
| + elif [[ "$pkgname" = "lilypond-doc" ]] ; then
|
| + mv packages.unpacked/"`basename \"$instname\"`"/usr/share/doc/lilypond/html/Documentation/user/lilypond-learning/{,tmp}Lilypond_002dbook-templates.de.html
|
| + rm packages.unpacked/"`basename \"$instname\"`"/usr/share/doc/lilypond/html/Documentation/user/lilypond-learning/lilypond_002dbook-templates.de.html
|
| + mv packages.unpacked/"`basename \"$instname\"`"/usr/share/doc/lilypond/html/Documentation/user/lilypond-learning/{tmp,}Lilypond_002dbook-templates.de.html
|
| + elif [[ "$pkgname" = "ruby" ]] ; then
|
| + mv packages.unpacked/"`basename \"$instname\"`"/usr/share/ri/1.8/system/Exception2MessageMapper/{,tmp}Fail-i.yaml
|
| + rm packages.unpacked/"`basename \"$instname\"`"/usr/share/ri/1.8/system/Exception2MessageMapper/fail-i.yaml
|
| + mv packages.unpacked/"`basename \"$instname\"`"/usr/share/ri/1.8/system/Exception2MessageMapper/{tmp,}Fail-i.yaml
|
| + mv packages.unpacked/"`basename \"$instname\"`"/usr/share/ri/1.8/system/REXML/Parsers/XPathParser/{,tmp}Predicate-i.yaml
|
| + rm packages.unpacked/"`basename \"$instname\"`"/usr/share/ri/1.8/system/REXML/Parsers/XPathParser/predicate-i.yaml
|
| + mv packages.unpacked/"`basename \"$instname\"`"/usr/share/ri/1.8/system/REXML/Parsers/XPathParser/{tmp,}tmpPredicate-i.yaml
|
| + fi
|
| + fi
|
| + if [ ! -e setup/"$1".lst.gz ] ; then
|
| + if ! rm -f setup/"$1".lst ; then
|
| + # Rm should have complained for us
|
| + exit $?
|
| + fi
|
| + if ! tar tf {packages,-Cpackages.unpacked}/"`basename \"$instname\"`" > setup/"$1".lst ; then
|
| + # Tar should have complained for us
|
| + exit $?
|
| + fi
|
| + if ! gzip -9 setup/"$1".lst ; then
|
| + # Gzip should have complained for us
|
| + exit $?
|
| + fi
|
| + fi
|
| + fi
|
| + if [[ "$srcname" != "" ]] ; then
|
| + if [ ! -e packages.src/"`basename \"$srcname\"`" ] ; then
|
| + if wget http://build.chromium.org/mirror/nacl/cygwin_mirror/packages.src/"`basename \"$srcname\"`" -O packages.src/"`basename \"$srcname\"`" ||
|
| + wget "$mirror_prefix/$srcname" -O packages.src/"`basename \"$srcname\"`" ; then
|
| + if ! [[ "${source[$1]}" = "${source[$1]/.tar.bz2*/.tar.bz2} `
|
| + stat -c "%s" packages.src/\"\`basename \\\"$srcname\\\"\`\"` `
|
| + md5sum -b packages.src/\"\`basename \\\"$srcname\\\"\`\" | cut -b -32`" ]] ; then
|
| + echo "Wrong file downloaded: expected ${install[$1]}" >&2
|
| + exit 1
|
| + fi
|
| + else
|
| + # Wget should have complained for us
|
| + exit $?
|
| + fi
|
| + fi
|
| + fi
|
| + reqpackages["$1"]="present"
|
| + sectionin["$1"]="${sectionin[$1]} $2"
|
| + for pkgname in ${requires["$1"]} ; do
|
| + if [[ "${reqpackages[$pkgname]}" = "present" ]] ; then
|
| + if ((verbose)) ; then echo -n "." >&2 ; fi
|
| + else
|
| + download_package_dependences "$pkgname" "$2"
|
| + fi
|
| + done
|
| + if [[ "${allinstpackages[$1]}" != "present" ]] ; then
|
| + allinstpackages["$1"]="present"
|
| + allinstalledpackages=(${allinstalledpackages[@]} "$1")
|
| + fi
|
| +}
|
| +
|
| +download_package() {
|
| + # $1 - Category name
|
| + # $2 - Section No
|
| + if ((verbose)) ; then echo -n "Downloading packages in \"$1\"..." >&2 ; fi
|
| + local pkgname
|
| + reqpackages=()
|
| + for pkgname in ${category_contents["$1"]} ; do
|
| + if [[ "${reqpackages[$pkgname]}" != "present" ]] ; then
|
| + download_package_dependences "$pkgname" "$2"
|
| + fi
|
| + seed["$pkgname"]="${seed[$pkgname]} $2"
|
| + done
|
| + if ((verbose)) ; then echo >&2 ; fi
|
| +}
|
| +
|
| +download_all_packages() {
|
| + # $1 - Section No
|
| + local secname
|
| + for secname in "${!category_contents[@]}" ; do
|
| + if [ "$secname" != "_obsolete" ] ; then
|
| + download_package "$secname" "$1"
|
| + fi
|
| + done
|
| +}
|
| +
|
| +download_addon_packages() {
|
| + # $1 - Start SectionN
|
| + local insttype pkgname sectionN="$1"
|
| + if ((verbose)) ; then echo -n "Downloading addon packages..." >&2 ; fi
|
| + if [[ "$defpackage" = "Full" ]] ; then
|
| + definsttype="$((sectionN-1))"
|
| + fi
|
| + local IFS=$'\n'
|
| + for insttype in `
|
| + for insttype in "${!packages[@]}" ; do
|
| + echo $insttype
|
| + done | sort
|
| + ` ; do
|
| + if [[ "$defpackage" = "$insttype" ]] ; then
|
| + definsttype="$sectionN"
|
| + fi
|
| + reqpackages=()
|
| + IFS=$' \t\n'
|
| + for pkgname in ${packages["$insttype"]} ; do
|
| + if [[ "${reqpackages[$pkgname]}" != "present" ]] ; then
|
| + download_package_dependences "$pkgname" "$sectionN"
|
| + fi
|
| + seed["$pkgname"]="${seed[$pkgname]} $sectionN"
|
| + done
|
| + ((sectionN++))
|
| + done
|
| + if [[ "$defpackage" = "Minimal" ]] ; then
|
| + definsttype="$sectionN"
|
| + fi
|
| + if ((verbose)) ; then echo >&2 ; fi
|
| +}
|
| +
|
| +fill_required_packages() {
|
| + if ((verbose)) ; then echo "Calculating dependences..." >&2 ; fi
|
| + local pkgname subpkgname subsubpkgname check=1
|
| + while ((check)) ; do
|
| + check=0
|
| + for pkgname in "${allinstalledpackages[@]}" ; do
|
| + if ((verbose)) ; then echo "Package: \"$pkgname\"..." >&2 ; fi
|
| + for subpkgname in ${requires["$pkgname"]} ; do
|
| + for subsubpkgname in ${requires["$subpkgname"]} ; do
|
| + if ! [[ " ${requires[$pkgname]} " = *" $subsubpkgname "* ]] ; then
|
| + requires["$pkgname"]="${requires[$pkgname]} $subsubpkgname"
|
| + check=1
|
| + fi
|
| + done
|
| + done
|
| + done
|
| + done
|
| + for pkgname in "${allinstalledpackages[@]}" ; do
|
| + for subpkgname in ${requires["$pkgname"]} ; do
|
| + required["$subpkgname"]="${required[$subpkgname]} $pkgname"
|
| + done
|
| + done
|
| +}
|
| +
|
| +fill_filetype_info() {
|
| + local IFS="
|
| +"
|
| + # Corner cases: files created by post-install scripts, mistakes, etc
|
| + filetype=([Cygwin.ico]="file"
|
| + [bin]="directory"
|
| + [usr/bin]="directory"
|
| + [lib]="directory"
|
| + [usr/lib]="directory"
|
| + [bin/exim.exe]="file"
|
| + [bin/latex.exe]="file"
|
| + [lib/icu/current/Makefile.inc]="file"
|
| + [lib/rpm/rpmv.exe]="file"
|
| + [usr/sbin/sendmail]="file"
|
| + [usr/share/man/man1/gcc.1.gz]="file"
|
| + [usr/share/man/man1/g++.1.gz]="file"
|
| + [usr/share/man/man1/g77.1.gz]="file"
|
| + [usr/share/man/man1/mf.1]="file"
|
| + [usr/share/terminfo/E/Eterm]="file"
|
| + [usr/share/terminfo/N/NCR260VT300WPP0]="file")
|
| + if ((verbose)) ; then echo "Scanning filetypes..." >&2 ; fi
|
| + for name in `
|
| + for package in packages.unpacked/* ; do (
|
| + cd $package
|
| + if ((verbose)) ; then echo "Archive: \"${package#*/}\"..." >&2 ; fi
|
| + find -type f
|
| + ) done
|
| + ` ; do
|
| + if [[ "${name:0:10}" = "./usr/bin/" ]] ; then
|
| + filetype["bin/${name:10}"]="file"
|
| + elif [[ "${name:0:10}" = "./usr/lib/" ]] ; then
|
| + filetype["lib/${name:10}"]="file"
|
| + else
|
| + filetype["${name:2}"]="file"
|
| + fi
|
| + done
|
| + for name in `
|
| + for package in packages.unpacked/* ; do (
|
| + cd $package
|
| + if ((verbose)) ; then echo "Archive: \"${package#*/}\"..." >&2 ; fi
|
| + find -type d
|
| + ) done
|
| + ` ; do
|
| + if [[ "${name:0:10}" = "./usr/bin/" ]] ; then
|
| + if [[ "bin/${filetype[${name:10}]}" = "file" ]] ; then
|
| + echo "bin/${filetype[${name:10}]} - file and directory... oops?" >&2
|
| + exit 1
|
| + fi
|
| + filetype["bin/${name:10}"]="directory"
|
| + elif [[ "${name:0:10}" = "./usr/lib/" ]] ; then
|
| + if [[ "lib/${filetype[${name:10}]}" = "file" ]] ; then
|
| + echo "lib/${filetype[${name:10}]} - file and directory... oops?" >&2
|
| + exit 1
|
| + fi
|
| + filetype["lib/${name:10}"]="directory"
|
| + elif ((${#name}>1)) ; then
|
| + if [[ "${filetype[${name:2}]}" = "file" ]] ; then
|
| + echo "${filetype[${name:2}]} - file and directory... oops?" >&2
|
| + exit 1
|
| + fi
|
| + filetype["${name:2}"]="directory"
|
| + fi
|
| + done
|
| +}
|
| +
|
| +sanitize_var_name() {
|
| + local varname="$1"
|
| + varname="${varname//-/_}"
|
| + varname="${varname//./_}"
|
| + varname="${varname//+/X}"
|
| + echo -n "$varname"
|
| +}
|
| +
|
| +declare_nsis_variables() {
|
| + local outlist
|
| + local pkgname
|
| + if ((verbose)) ; then echo "Declare NSIS variables..." >&2 ; fi
|
| + if [[ "$defpackage" != "NONE" ]] ; then
|
| + echo "InstType \"Full\""
|
| + for pkgname in "${!packages[@]}" ; do
|
| + echo "InstType \"$pkgname\""
|
| + done | sort
|
| + cat <<END
|
| +InstType "Minimal"
|
| +
|
| +Var SVV_CmdLineParameters
|
| +Var SVV_InstType
|
| +Var SVV_SelChangeInProgress
|
| +
|
| +!include "FileFunc.nsh"
|
| +
|
| +END
|
| + fi
|
| + for pkgname in "${allinstalledpackages[@]}" ; do
|
| + sanitized_name["$pkgname"]="`sanitize_var_name \"$pkgname\"`"
|
| + outlist="$outlist
|
| +Var PKV_${sanitized_name[$pkgname]}"
|
| + done
|
| + echo "$outlist" | sort
|
| + local secname
|
| + for secname in "${!category_contents[@]}" ; do
|
| + echo "$secname"
|
| + done | sort |
|
| + while read -r secname ; do
|
| + local pkgname
|
| + for pkgname in ${category_contents["$secname"]} ; do
|
| + echo "$pkgname"
|
| + done | sort |
|
| + while read -r pkgname ; do
|
| + if [[ "${allinstpackages[$pkgname]}" = "present" ]] ; then
|
| + echo "Var sv_${secname}_${sanitized_name[$pkgname]}"
|
| + fi
|
| + done
|
| + done |
|
| + sort
|
| +}
|
| +
|
| +generate_unpack_tarball_text() {
|
| + # $1 - package to unpack
|
| + echo " SetOutPath \$INSTDIR"
|
| + local pkgname="$1"
|
| + if [[ "$pkgname" != "" ]] ; then
|
| + pkgname="`basename ${install[$pkgname]/.tar.bz2*/.tar.bz2}`"
|
| + fi
|
| + if [[ "$pkgname" != "" ]] ; then
|
| + local pkgcontent="`tar tSvpf packages/$pkgname\"\" --numeric-owner`"
|
| + local attrs uidgid size date time filename
|
| + local -A createddirs
|
| + createddirs[0]="done"
|
| + echo "$pkgcontent" | grep "^[dhl-]" |
|
| + while read -r attrs uidgid size date time filename ; do
|
| + if [[ "${attrs:0:1}" = "h" ]] ; then
|
| + filename="${filename%/* link to *}/"
|
| + elif [[ "${attrs:0:1}" = "l" ]] ; then
|
| + filename="${filename%/* -> *}/"
|
| + elif [[ "${attrs:0:1}" = "-" ]] ; then
|
| + if [[ "$filename" = */* ]] ; then
|
| + filename="${filename%/*}/"
|
| + else
|
| + filename=""
|
| + fi
|
| + fi
|
| + if [[ "$filename" = "usr/share/terminfo/e/" ]] ; then
|
| + filename="usr/share/terminfo/E/"
|
| + fi
|
| + if [[ "${filename:0:8}" = "usr/bin/" ]] ; then
|
| + filename="bin/${filename:8}"
|
| + elif [[ "${filename:0:8}" = "usr/lib/" ]] ; then
|
| + filename="lib/${filename:8}"
|
| + fi
|
| + if [[ "$filename" != "" ]] ; then
|
| + filename="${filename:0:$((${#filename}-1))}"
|
| + if [[ "${createddirs[$filename]}" != "done" ]] ; then
|
| + echo " CreateDirectory \"\$INSTDIR\\${prefix[$1]}${filename//\//\\}\""
|
| + createddirs["$filename"]="done"
|
| + fi
|
| + fi
|
| + done
|
| + if [[ "$1" = "libgcj-common" ]] ; then
|
| + echo " CreateDirectory \"\$INSTDIR\\${prefix[$1]}lib\\security\""
|
| + fi
|
| + if [[ "$1" == "cygwin" ]] ; then
|
| + echo " File \"/oname=Cygwin.ico\" \"setup\\Cygwin.ico\""
|
| + fi
|
| + echo "$pkgcontent" | grep "^-" |
|
| + while read -r attrs uidgid size date time filename ; do
|
| + if [[ "$filename" != "usr/share/WindowMaker/Icons/DefaultAppIcon.tiff" ]] &&
|
| + [[ "$filename" != "usr/share/ri/1.8/system/Exception2MessageMapper/fail-i.yaml" ]] &&
|
| + [[ "$filename" != "usr/share/ri/1.8/system/REXML/Parsers/XPathParser/predicate-i.yaml" ]] ; then
|
| + local fname
|
| + if [[ "${filename:0:8}" = "usr/bin/" ]] ; then
|
| + fname="bin/${filename:8}"
|
| + elif [[ "${filename:0:8}" = "usr/lib/" ]] ; then
|
| + fname="lib/${filename:8}"
|
| + elif [[ "$filename" = "usr/share/terminfo/e/Eterm" ]] ; then
|
| + fname="usr/share/terminfo/E/Eterm"
|
| + else
|
| + fname="$filename"
|
| + fi
|
| + fname="${fname//\//\\}"
|
| + fname="${fname//\$/\$\$}"
|
| + filename="${filename//\//\\}"
|
| + echo " File \"/oname=${prefix[$1]}$fname\" \"packages.unpacked\\$pkgname\\$filename\""
|
| + fi
|
| + done
|
| + echo " File \"/oname=${prefix[coreutils]}etc\\setup\\$1.lst.gz\" \"setup\\$1.lst.gz\""
|
| + echo "$pkgcontent" | grep "^h" |
|
| + while read -r attrs uidgid size date time filename ; do
|
| + local linkname="${filename/ link to */}"
|
| + local linktargetname="${filename/* link to /}"
|
| + if [[ "${linkname:0:8}" = "usr/bin/" ]] ; then
|
| + linkname="bin/${linkname:8}"
|
| + elif [[ "${linkname:0:8}" = "usr/lib/" ]] ; then
|
| + linkname="lib/${linkname:8}"
|
| + fi
|
| + if [[ "${linktargetname:0:8}" = "usr/bin/" ]] ; then
|
| + linktargetname="bin/${linktargetname:8}"
|
| + elif [[ "${linktargetname:0:8}" = "usr/lib/" ]] ; then
|
| + linktargetname="lib/${linktargetname:8}"
|
| + fi
|
| + linkname="${linkname//\//\\}"
|
| + linkname="${linkname//\$/\$\$}"
|
| + linktargetname="${linktargetname//\//\\}"
|
| + linktargetname="${linktargetname//\$/\$\$}"
|
| + echo " MkLink::Hard \"\$INSTDIR\\${prefix[$1]}$linkname\" \"\$INSTDIR\\${prefix[$1]}$linktargetname\""
|
| + done
|
| + echo "$pkgcontent" | grep "^l" |
|
| + while read -r attrs uidgid size date time filename ; do
|
| + local linkname="${filename/ -> */}"
|
| + local linktargetname="${filename/* -> /}"
|
| + if [[ "$linktargetname" = "/tmp/install/INSTALL/usr/share/doc/lynx/COPYHEADER" ]] ; then
|
| + linktargetname="/usr/share/doc/lynx/COPYHEADER"
|
| + elif [[ "$linktargetname" = "/tmp/install/INSTALL/usr/share/doc/lynx/COPYING" ]] ; then
|
| + linktargetname="/usr/share/doc/lynx/COPYING"
|
| + elif [[ "$linktargetname" = "../Cygwin/stunnel-4.29.README" ]] ; then
|
| + linktargetname="../Cygwin/stunnel.README"
|
| + elif [[ "$linktargetname" = "../../CHANGELOG" ]] &&
|
| + [[ "$linkname" = "usr/X11R6/share/tcm-2.20/help/CHANGELOG" ]] ; then
|
| + linktargetname="../../doc/tcm-2.20/CHANGELOG"
|
| + elif [[ "$linktargetname" = "../../COPYING" ]] &&
|
| + [[ "$linkname" = "usr/X11R6/share/tcm-2.20/help/COPYING" ]] ; then
|
| + linktargetname="../../doc/tcm-2.20/COPYING"
|
| + elif [[ "$linktargetname" = "mf-nowin.1" ]] &&
|
| + [[ "$linkname" = "usr/share/man/mf.1" ]] ; then
|
| + linkname="usr/share/man/man1/mf.1"
|
| + linktargetname="../../../X11R6/share/man/man1/mf.1"
|
| + elif [[ "$linktargetname" = "../N/NCR260VT300WPP0" ]] ; then
|
| + linktargetname="../N/NCR260VT300WPP0"
|
| + elif [[ "$linkname" = "usr/share/terminfo/e/Eterm-color" ]] ; then
|
| + linkname="usr/share/terminfo/E/Eterm-color"
|
| + elif [[ "$linktargetname" = "../../include/qt3" ]] &&
|
| + [[ "$linkname" = "usr/lib/qt3/include" ]] ; then
|
| + linktargetname= "../../usr/include/qt4"
|
| + elif [[ "$linktargetname" = "../../include/qt4" ]] &&
|
| + [[ "$linkname" = "usr/lib/qt4/include" ]] ; then
|
| + linktargetname= "../../usr/include/qt4"
|
| + elif [[ "${linktargetname:0:2}" = "./" ]] ; then
|
| + linktargetname="${linktargetname:2}"
|
| + elif [[ "${linkname:0:8}" = "usr/bin/" ]] ; then
|
| + linkname="bin/${linkname:8}"
|
| + elif [[ "${linkname:0:8}" = "usr/lib/" ]] ; then
|
| + linkname="lib/${linkname:8}"
|
| + fi
|
| + if [[ "${linkname%/*}/$linktargetname" = *//* ]] ; then
|
| + linktargetname="/${linkname%/*}/$linktargetname"
|
| + while [[ "$linktargetname" != //* ]] ; do
|
| + linktargetname="${linktargetname%/*//*}//../${linktargetname#*//}"
|
| + done
|
| + linktargetname="${linktargetname:2}"
|
| + fi
|
| + local linktargetfile="/${linkname%/*}/$linktargetname"
|
| + while [[ "$linktargetfile" = */../* ]] ; do
|
| + local linktargetprefix="${linktargetfile%%/../*}"
|
| + local linktargetsuffix="${linktargetfile#*/../}"
|
| + linktargetfile="${linktargetprefix%/*}/$linktargetsuffix"
|
| + done
|
| + if [[ "${linktargetfile:0:9}" = "/usr/bin/" ]] ; then
|
| + linktargetfile="bin/${linktargetfile:9}"
|
| + elif [[ "${linktargetfile:0:9}" = "/usr/lib/" ]] ; then
|
| + linktargetfile="lib/${linktargetfile:9}"
|
| + else
|
| + linktargetfile="${linktargetfile:1}"
|
| + fi
|
| + linkname="${linkname//\//\\}"
|
| + linkname="${linkname//\$/\$\$}"
|
| + if [[ "${filetype[$linktargetfile]}" = "file" ]] ; then
|
| + linktargetname="${linktargetname//\//\\}"
|
| + linktargetname="${linktargetname//\$/\$\$}"
|
| + if [[ "${linkname:$((${#linkname}-4))}" = ".exe" ]] ||
|
| + [[ "${linktargetfile:$((${#linktargetfile}-4))}" != ".exe" ]] ; then
|
| + echo " MkLink::SoftF \"\$INSTDIR\\${prefix[$1]}$linkname\" \"$linktargetname\""
|
| + else
|
| + echo " MkLink::SoftF \"\$INSTDIR\\${prefix[$1]}$linkname.exe\" \"$linktargetname\""
|
| + fi
|
| + elif [[ "${filetype[$linktargetfile.exe]}" = "file" ]] ; then
|
| + linktargetname="${linktargetname//\//\\}"
|
| + linktargetname="${linktargetname//\$/\$\$}"
|
| + if [[ "${linkname:$((${#linkname}-4))}" = ".exe" ]] ; then
|
| + echo " MkLink::SoftF \"\$INSTDIR\\${prefix[$1]}$linkname\" \"$linktargetname.exe\""
|
| + else
|
| + echo " MkLink::SoftF \"\$INSTDIR\\${prefix[$1]}$linkname.exe\" \"$linktargetname.exe\""
|
| + fi
|
| + elif [[ "${filetype[$linktargetfile]}" = "directory" ]] ; then
|
| + linktargetname="${linktargetname//\//\\}"
|
| + linktargetname="${linktargetname//\$/\$\$}"
|
| + echo " MkLink::SoftD \"\$INSTDIR\\${prefix[$1]}$linkname\" \"$linktargetname\""
|
| + elif [ -f packages.unpacked/*/"$linktargetfile" ] ; then
|
| + linktargetname="${linktargetname//\//\\}"
|
| + linktargetname="${linktargetname//\$/\$\$}"
|
| + if [[ "${linkname:$((${#linkname}-4))}" = ".exe" ]] ||
|
| + [[ "${linktargetfile:$((${#linktargetfile}-4))}" != ".exe" ]] ; then
|
| + echo " MkLink::SoftF \"\$INSTDIR\\${prefix[$1]}$linkname\" \"$linktargetname\""
|
| + else
|
| + echo " MkLink::SoftF \"\$INSTDIR\\${prefix[$1]}$linkname.exe\" \"$linktargetname\""
|
| + fi
|
| + elif [ -d packages.unpacked/*/"$linktargetfile" ] ; then
|
| + linktargetname="${linktargetname//\//\\}"
|
| + linktargetname="${linktargetname//\$/\$\$}"
|
| + echo " MkLink::SoftD \"\$INSTDIR\\${prefix[$1]}$linkname\" \"$linktargetname\""
|
| + elif [[ "$linktargetname" = "../share/webcheck/webcheck.py" ]] ; then
|
| + echo " MkLink::SoftF \"\$INSTDIR\\${prefix[$1]}$linkname\" \"..\\share\\webcheck\\webcheck.py\""
|
| + else
|
| + echo "Can not determine the type of link \"$linktargetname\"" >&2
|
| + exit 1
|
| + fi
|
| + done
|
| + echo "$pkgcontent" |
|
| + grep "^-.............................................. etc/postinstall/.*\\.sh" |
|
| + while read -r attrs uidgid size date time filename ; do
|
| + cat <<END
|
| + FileOpen \$R0 \$INSTDIR\\postinstall.sh a
|
| + FileSeek \$R0 0 END
|
| + FileWrite \$R0 "/$filename\$\n"
|
| + FileClose \$R0
|
| +END
|
| + # If we have a postinstall script we need coreutils to execute it!
|
| + if ! [[ " ${requires[$pkgname]} " = *" coreutils "* ]] ; then
|
| + requires["$pkgname"]="${requires[$pkgname]} coreutils"
|
| + fi
|
| + if ! [[ " ${required[coreutils]} " = *" $pkgname "* ]] ; then
|
| + required["coreutils"]="${requires[coreutils]} $pkgname"
|
| + fi
|
| + done
|
| + cat <<END
|
| + Push \$R0
|
| + FileOpen \$R0 \$INSTDIR\\etc\\setup\\installed.log a
|
| + FileSeek \$R0 0 END
|
| + FileWrite \$R0 "$1 $pkgname 0\$\n"
|
| + FileClose \$R0
|
| + Pop \$R0
|
| +END
|
| + fi
|
| +}
|
| +
|
| +generate_section_list() {
|
| + if ((verbose)) ; then echo "Declaring unpack sections..." >&2 ; fi
|
| + local secname
|
| + for secname in "${!category_contents[@]}" ; do
|
| + echo "$secname"
|
| + done | sort |
|
| + while read -r secname ; do
|
| + local pkgname groupprint=1
|
| + for pkgname in ${category_contents["$secname"]} ; do
|
| + echo "$pkgname"
|
| + done | sort |
|
| + { local groupprint=1
|
| + while read -r pkgname ; do
|
| + if [[ "${allinstpackages[$pkgname]}" = "present" ]] ; then
|
| + if ((groupprint)) ; then
|
| + if [[ "$secname" != "_PostInstallLast" ]] &&
|
| + [[ "$secname" != "_obsolete" ]] ; then
|
| + echo "SectionGroup \"$secname\" sec_$secname"
|
| + groupprint=0
|
| + fi
|
| + fi
|
| + local insttar="${install[$pkgname]/.tar.bz2*/}"
|
| + if [[ "$secname" = "_PostInstallLast" ]] ||
|
| + [[ "$secname" = "_obsolete" ]] ; then
|
| + echo -n "Section \"-${insttar/*\//}\" "
|
| + elif [[ " ${seed[$pkgname]} " == *" $definsttype "* ]] ; then
|
| + echo -n "Section \"!${insttar/*\//}\" "
|
| + else
|
| + echo -n "Section \"${insttar/*\//}\" "
|
| + fi
|
| + echo "sec_${secname}_${sanitized_name[$pkgname]}"
|
| + echo " SectionIn${sectionin[$pkgname]}"
|
| + echo "SectionEnd"
|
| + fi
|
| + done
|
| + if ((!groupprint)) ; then
|
| + echo "SectionGroupEnd"
|
| + fi
|
| + }
|
| + done
|
| + for secname in "${allinstalledpackages[@]}" ; do
|
| + if ((verbose)) ; then echo "Package "$secname"..." >&2 ; fi
|
| + echo "Section \"\" sec_PKG_${sanitized_name[$secname]}"
|
| + echo " SectionIn${sectionin[$secname]}"
|
| + generate_unpack_tarball_text "$secname"
|
| + echo "SectionEnd"
|
| + done
|
| + echo "!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN"
|
| + for secname in "${!category_contents[@]}" ; do
|
| + echo "$secname"
|
| + done | sort |
|
| + while read -r secname ; do
|
| + local pkgname
|
| + for pkgname in ${category_contents["$secname"]} ; do
|
| + echo "$pkgname"
|
| + done | sort |
|
| + { local groupprint=1
|
| + while read -r pkgname ; do
|
| + if [[ "${allinstpackages[$pkgname]}" = "present" ]] ; then
|
| + if ((groupprint)) ; then
|
| + if [[ "$secname" != "_PostInstallLast" ]] &&
|
| + [[ "$secname" != "_obsolete" ]] ; then
|
| + echo " !insertmacro MUI_DESCRIPTION_TEXT \${sec_$secname} \"\""
|
| + groupprint=0
|
| + fi
|
| + fi
|
| + echo -n " !insertmacro MUI_DESCRIPTION_TEXT \${"
|
| + echo -n "sec_${secname}_${sanitized_name[$pkgname]}} "
|
| + # Modern UI does not like long descriptions
|
| + #if [ "${sdesc[$pkgname]}" != "" ] ; then
|
| + #echo "${ldesc[$pkgname]}"
|
| + #else
|
| + echo "${sdesc[$pkgname]}"
|
| + #fi
|
| + fi
|
| + done
|
| + }
|
| + done
|
| + echo "!insertmacro MUI_FUNCTION_DESCRIPTION_END"
|
| +}
|
| +
|
| +generate_init_function() {
|
| + # $1 - Section number for first options (others should follow)
|
| + if ((verbose)) ; then echo "Declaring .onInit function..." >&2 ; fi
|
| + echo "Function .onInit"
|
| + if [[ "$defpackage" != "NONE" ]] ; then
|
| + echo " StrCpy \$SVV_InstType $(($definsttype-1))"
|
| + echo " StrCpy \$SVV_SelChangeInProgress 0"
|
| + fi
|
| + local pkgname
|
| + for pkgname in "${allinstalledpackages[@]}" ; do
|
| + if [[ " ${seed[$pkgname]} " == *" $definsttype "* ]] ; then
|
| + echo " StrCpy \$PKV_${sanitized_name[$pkgname]} 9"
|
| + elif [[ " ${sectionin[$pkgname]} " == *" $definsttype "* ]] ; then
|
| + echo " StrCpy \$PKV_${sanitized_name[$pkgname]} 1"
|
| + else
|
| + echo " StrCpy \$PKV_${sanitized_name[$pkgname]} 0"
|
| + fi
|
| + done
|
| + local secname
|
| + for secname in "${!category_contents[@]}" ; do
|
| + echo "$secname"
|
| + done | sort |
|
| + while read -r secname ; do
|
| + local pkgname
|
| + for pkgname in ${category_contents["$secname"]} ; do
|
| + echo "$pkgname"
|
| + done | sort |
|
| + while read -r pkgname ; do
|
| + if [[ "${allinstpackages[$pkgname]}" = "present" ]] ; then
|
| + if [[ " ${sectionin[$pkgname]} " == *" $definsttype "* ]] ; then
|
| + echo " StrCpy \$sv_${secname}_${sanitized_name[$pkgname]} 1"
|
| + else
|
| + echo " StrCpy \$sv_${secname}_${sanitized_name[$pkgname]} 0"
|
| + fi
|
| + fi
|
| + done
|
| + done
|
| + if [[ "$defpackage" != "NONE" ]] ; then
|
| + if ((definsttype!=1)) ; then
|
| + echo " SetCurInstType $((definsttype-1))"
|
| + fi
|
| + fi
|
| + cat <<END
|
| + \${GetParameters} \$SVV_CmdLineParameters
|
| + Push \$R0
|
| + ClearErrors
|
| + \${GetOptions} \$cmdLineParams "/?" \$R0
|
| + IfErrors +1 HelpMessage
|
| + \${GetOptions} \$cmdLineParams "--help" \$R0
|
| + IfErrors +3 +1
|
| +HelpMessage:
|
| +END
|
| + echo -n " MessageBox MB_OK \"Recognized common options:"
|
| + echo -n "\$\\n /D=InstDir - use InstDir as target instead of usual \$INSTDIR"
|
| + echo -n "\$\\n /NCRC - disables the CRC check"
|
| + echo -n "\$\\n /S - Silent install"
|
| + if [[ "$defpackage" != "NONE" ]] ; then
|
| + local insttype line
|
| + echo -n "\$\\nRecognized install type options:"
|
| + echo -n "\$\\n /FULL - Install all availabile packages"
|
| + for insttype in "${!packages[@]}" ; do
|
| + echo "\$\\n /`echo \"$insttype\" | tr 'a-z' 'A-Z'` - ${description[$insttype]}"
|
| + done | sort |
|
| + while read -r line ; do
|
| + echo -n "$line"
|
| + done
|
| + echo -n "\$\\n /MINIMAL - Install only packages from \$\\\"Base\$\\\" category"
|
| + fi
|
| + echo "\""
|
| + echo " Abort"
|
| + if [[ "$defpackage" != "NONE" ]] ; then
|
| + local sectionN="$(($1-1))"
|
| + local IFS=$'\n'
|
| + for insttype in `
|
| + echo "Full"
|
| + for insttype in "${!packages[@]}" ; do
|
| + echo $insttype
|
| + done | sort
|
| + echo "Minimal"
|
| + ` ; do
|
| + echo " \${GetOptions} \$cmdLineParams \"/`echo \"$insttype\" | tr 'a-z' 'A-Z'`\" \$R0"
|
| + echo " IfErrors No_$insttype +1"
|
| + echo " StrCpy \$SVV_InstType $((sectionN-1))"
|
| + for pkgname in "${allinstalledpackages[@]}" ; do
|
| + if [[ " ${seed[$pkgname]} " == *" $sectionN "* ]] ; then
|
| + echo " StrCpy \$PKV_${sanitized_name[$pkgname]} 9"
|
| + elif [[ " ${sectionin[$pkgname]} " == *" $sectionN "* ]] ; then
|
| + echo " StrCpy \$PKV_${sanitized_name[$pkgname]} 1"
|
| + else
|
| + echo " StrCpy \$PKV_${sanitized_name[$pkgname]} 0"
|
| + fi
|
| + done
|
| + for secname in "${!category_contents[@]}" ; do
|
| + echo "$secname"
|
| + done | sort |
|
| + while read -r secname ; do
|
| + local pkgname
|
| + for pkgname in ${category_contents["$secname"]} ; do
|
| + echo "$pkgname"
|
| + done | sort |
|
| + while read -r pkgname ; do
|
| + if [[ "${allinstpackages[$pkgname]}" = "present" ]] ; then
|
| + if [[ " ${sectionin[$pkgname]} " == *" $sectionN "* ]] ; then
|
| + echo " StrCpy \$sv_${secname}_${sanitized_name[$pkgname]} 1"
|
| + else
|
| + echo " StrCpy \$sv_${secname}_${sanitized_name[$pkgname]} 0"
|
| + fi
|
| + fi
|
| + done
|
| + done
|
| + for pkgname in "${allinstalledpackages[@]}" ; do
|
| + if [[ " ${seed[$pkgname]} " == *" $sectionN "* ]] ; then
|
| + echo " SectionSetFlags \${sec_PKG_${sanitized_name[$pkgname]}} 9"
|
| + elif [[ " ${sectionin[$pkgname]} " == *" $sectionN "* ]] ; then
|
| + echo " SectionSetFlags \${sec_PKG_${sanitized_name[$pkgname]}} 1"
|
| + else
|
| + echo " SectionSetFlags \${sec_PKG_${sanitized_name[$pkgname]}} 0"
|
| + fi
|
| + done
|
| + for secname in "${!category_contents[@]}" ; do
|
| + echo "$secname"
|
| + done | sort |
|
| + while read -r secname ; do
|
| + local pkgname
|
| + for pkgname in ${category_contents["$secname"]} ; do
|
| + echo "$pkgname"
|
| + done | sort |
|
| + while read -r pkgname ; do
|
| + if [[ "${allinstpackages[$pkgname]}" = "present" ]] ; then
|
| + if [[ " ${seed[$pkgname]} " == *" $sectionN "* ]] ; then
|
| + echo " SectionSetFlags \${sec_${secname}_${sanitized_name[$pkgname]}} 9"
|
| + elif [[ " ${sectionin[$pkgname]} " == *" $sectionN "* ]] ; then
|
| + echo " SectionSetFlags \${sec_${secname}_${sanitized_name[$pkgname]}} 1"
|
| + else
|
| + echo " SectionSetFlags \${sec_${secname}_${sanitized_name[$pkgname]}} 0"
|
| + fi
|
| + fi
|
| + done
|
| + done
|
| + echo " SetCurInstType $((sectionN-1))"
|
| + echo "No_$insttype:"
|
| + ((sectionN++))
|
| + done
|
| + fi
|
| + echo " Pop \$R0"
|
| + echo "FunctionEnd"
|
| +}
|
| +
|
| +generate_onselchange_function(){
|
| + if ((verbose)) ; then echo "Declaring .onSelChange function..." >&2 ; fi
|
| + cat <<END
|
| +Function .onSelChange
|
| + IntCmp \$SVV_SelChangeInProgress 0 +1 L1_SelChangeInProgress L1_SelChangeInProgress
|
| + StrCpy \$SVV_SelChangeInProgress 1
|
| + Push \$R0
|
| + Push \$R1
|
| +END
|
| + if [[ "$defpackage" != "NONE" ]] ; then
|
| + cat <<END
|
| + Push \$R2
|
| + GetCurInstType \$R0
|
| + StrCpy \$R2 0
|
| + IntCmp \$R0 \$SVV_InstType +4 +1 +1
|
| + StrCpy \$SVV_InstType \$R0
|
| + IntCmp \$R0 \${NSIS_MAX_INST_TYPES} +2 +1 +1
|
| + StrCpy \$R2 1
|
| +END
|
| + fi
|
| + # sv_XXX/PKV_XXX variables contain information about previous state of affairs
|
| + # Note: there are three states - 0 (not to be installed), 9 (to be installed)
|
| + # and 1 (will be installed because some other package needs it).
|
| + # First we check is some packages were deselected and remove all packages
|
| + # which can not be installed now.
|
| + local secname pkgname subpkgname
|
| + for secname in "${!category_contents[@]}" ; do
|
| + echo "$secname"
|
| + done | sort |
|
| + while read -r secname ; do
|
| + local pkgname
|
| + for pkgname in ${category_contents["$secname"]} ; do
|
| + echo "$pkgname"
|
| + done | sort |
|
| + while read -r pkgname ; do
|
| + if ((verbose)) ; then echo "Read state: \"$pkgname\"..." >&2 ; fi
|
| + if [[ "${allinstpackages[$pkgname]}" = "present" ]] ; then
|
| + local PKV_name="PKV_${sanitized_name[$pkgname]}"
|
| + local sc_name="${secname}_${sanitized_name[$pkgname]}"
|
| + echo " SectionGetFlags \${sec_$sc_name} \$R0"
|
| + echo " IntOp \$R1 \$R0 & \${SF_SELECTED}"
|
| + echo " IntCmp \$sv_$sc_name \$R1 L3_$sc_name"
|
| + echo " IntCmp \$sv_$sc_name 0 L1_$sc_name"
|
| + echo " StrCpy \$$PKV_name 0"
|
| + for subpkgname in ${required["$pkgname"]} ; do
|
| + if [[ "${allinstpackages[$subpkgname]}" = "present" ]] ; then
|
| + echo " StrCpy \$PKV_${sanitized_name[$subpkgname]} 0"
|
| + fi
|
| + done
|
| + echo " Goto L3_$sc_name"
|
| + echo "L1_$sc_name:"
|
| + if [[ "$defpackage" != "NONE" ]] ; then
|
| + echo " IntCmp \$R2 0 L2_$sc_name +1 +1"
|
| + for subpkgname in ${seed["$pkgname"]} ; do
|
| + echo " IntCmp \$SVV_InstType $((subpkgname-1)) L2_$sc_name +1 +1"
|
| + done
|
| + echo " GoTo L3_$sc_name"
|
| + echo "L2_$sc_name:"
|
| + fi
|
| + echo " StrCpy \$$PKV_name 9"
|
| + echo "L3_$sc_name:"
|
| + fi
|
| + done
|
| + done
|
| + # Now we mark all packages which can be installed or not installed as
|
| + # not-installed
|
| + for pkgname in "${allinstalledpackages[@]}" ; do
|
| + echo " IntCmp \$PKV_${sanitized_name[$pkgname]} 9 +2 +1 +2"
|
| + echo " StrCpy \$PKV_${sanitized_name[$pkgname]} 0"
|
| + done
|
| + # Put the dependences back
|
| + for pkgname in "${allinstalledpackages[@]}" ; do
|
| + if ((verbose)) ; then echo "Set state: \"$pkgname\"..." >&2 ; fi
|
| + echo " IntCmp \$PKV_${sanitized_name[$pkgname]} 9 +1 L4_${sanitized_name[$pkgname]} +1"
|
| + for subpkgname in ${requires["$pkgname"]} ; do
|
| + echo " IntCmp \$PKV_${sanitized_name[$subpkgname]} 9 +2 +1 +2"
|
| + echo " StrCpy \$PKV_${sanitized_name[$subpkgname]} 1"
|
| + done
|
| + echo "L4_${sanitized_name[$pkgname]}:"
|
| + done
|
| + # Copy the calculated new state to the screen
|
| + for pkgname in "${allinstalledpackages[@]}" ; do
|
| + echo " SectionSetFlags \${sec_PKG_${sanitized_name[$pkgname]}} \$PKV_${sanitized_name[$pkgname]}"
|
| + done
|
| + for secname in "${!category_contents[@]}" ; do
|
| + echo "$secname"
|
| + done | sort |
|
| + while read -r secname ; do
|
| + local pkgname
|
| + for pkgname in ${category_contents["$secname"]} ; do
|
| + echo "$pkgname"
|
| + done | sort |
|
| + while read -r pkgname ; do
|
| + if [[ "${allinstpackages[$pkgname]}" = "present" ]] ; then
|
| + echo " IntOp \$sv_${secname}_${sanitized_name[$pkgname]} \$PKV_${sanitized_name[$pkgname]} & 1"
|
| + echo " SectionSetFlags \${sec_${secname}_${sanitized_name[$pkgname]}} \$PKV_${sanitized_name[$pkgname]}"
|
| + fi
|
| + done
|
| + done
|
| + if [[ "$defpackage" != "NONE" ]] ; then
|
| + echo " Pop \$R2"
|
| + fi
|
| + cat <<END
|
| + Pop \$R1
|
| + Pop \$R0
|
| + StrCpy \$SVV_SelChangeInProgress 0
|
| +L1_SelChangeInProgress:
|
| +FunctionEnd
|
| +END
|
| +}
|
|
|
| Property changes on: tools/hermetic_cygwin/make_installer.inc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|