#!/bin/bash # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/.
# By default just assume that these tools exist on our path
MAR=${MAR:-mar}
MBSDIFF=${MBSDIFF:-mbsdiff}
XZ=${XZ:-xz}
$XZ --version > /dev/null 2>&1 if [ $? -ne 0 ]; then # If $XZ is not set and not found on the path then this is probably # running on a windows buildbot. Some of the Windows build systems have # xz.exe in topsrcdir/xz/. Look in the places this would be in both a # mozilla-central and comm-central build.
XZ="$(dirname "$(dirname "$(dirname "$0")")")/xz/xz.exe"
$XZ --version > /dev/null 2>&1 if [ $? -ne 0 ]; then
XZ="$(dirname "$(dirname "$(dirname "$(dirname "$0")")")")/xz/xz.exe"
$XZ --version > /dev/null 2>&1 if [ $? -ne 0 ]; then echo"xz was not found on this system!" echo"exiting"
exit 1 fi fi fi # Ensure that we're always using the right compression settings export XZ_OPT="-T1 -7e"
if [ -x "$reference" ]; then
chmod 0755 "$target" else
chmod 0644 "$target" fi
}
make_add_instruction() {
f="$1"
filev3="$2"
# Used to log to the console if [ $4 ]; then
forced=" (forced)" else
forced= fi
is_extension=$(echo"$f" | grep -c 'distribution/extensions/.*/') if [ $is_extension = "1" ]; then # Use the subdirectory of the extensions folder as the file to test # before performing this add instruction.
testdir=$(echo"$f" | sed 's/\(.*distribution\/extensions\/[^\/]*\)\/.*/\1/')
verbose_notice " add-if \"$testdir\" \"$f\"" echo"add-if \"$testdir\" \"$f\"" >> "$filev3" else
verbose_notice " add \"$f\"$forced" echo"add \"$f\"" >> "$filev3" fi
}
is_extension=$(echo"$f" | grep -c 'distribution/extensions/.*/') if [ $is_extension = "1" ]; then # Use the subdirectory of the extensions folder as the file to test # before performing this add instruction.
testdir=$(echo"$f" | sed 's/\(.*distribution\/extensions\/[^\/]*\)\/.*/\1/')
verbose_notice " patch-if \"$testdir\" \"$f.patch\" \"$f\"" echo"patch-if \"$testdir\" \"$f.patch\" \"$f\"" >> "$filev3" else
verbose_notice " patch \"$f.patch\" \"$f\"" echo"patch \"$f.patch\" \"$f\"" >> "$filev3" fi
}
if [ -f "$dir/removed-files" ]; then
listfile="$dir/removed-files" elif [ -f "$dir/Contents/Resources/removed-files" ]; then
listfile="$dir/Contents/Resources/removed-files" fi if [ -n "$listfile" ]; then # Map spaces to pipes so that we correctly handle filenames with spaces.
files=($(cat"$listfile" | tr " ""|" | sort -r))
num_files=${#files[*]} for ((i=0; $i<$num_files; i=$i+1)); do # Map pipes back to whitespace and remove carriage returns
f=$(echo ${files[$i]} | tr "|"" " | tr -d '\r') # Trim whitespace
f=$(echo $f) # Exclude blank lines. if [ -n "$f" ]; then # Exclude comments if [ ! $(echo"$f" | grep -c '^#') = 1 ]; then if [ $(echo"$f" | grep -c '\/$') = 1 ]; then
verbose_notice " rmdir \"$f\"" echo"rmdir \"$f\"" >> "$filev3" elif [ $(echo"$f" | grep -c '\/\*$') = 1 ]; then # Remove the *
f=$(echo"$f" | sed -e 's:\*$::')
verbose_notice " rmrfdir \"$f\"" echo"rmrfdir \"$f\"" >> "$filev3" else
verbose_notice " remove \"$f\"" echo"remove \"$f\"" >> "$filev3" fi fi fi done fi
}
# List all files in the current directory, stripping leading "./" # Pass a variable name and it will be filled as an array.
list_files() {
count=0
temp_filelist=$(mktemp)
find . -type f \
! -name "update.manifest" \
! -name "updatev2.manifest" \
! -name "updatev3.manifest" \
| sed 's/\.\/\(.*\)/\1/' \
| sort -r > "${temp_filelist}" while read file; do eval"${1}[$count]=\"$file\""
(( count++ )) done < "${temp_filelist}" rm"${temp_filelist}"
}
# List all directories in the current directory, stripping leading "./"
list_dirs() {
count=0
temp_dirlist=$(mktemp)
find . -type d \
! -name "." \
! -name ".." \
| sed 's/\.\/\(.*\)/\1/' \
| sort -r > "${temp_dirlist}" while read dir; do eval"${1}[$count]=\"$dir\""
(( count++ )) done < "${temp_dirlist}" rm"${temp_dirlist}"
}
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.