This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository buildscripts. commit fea2238f5f85dd115629f3a69d7ab6d0b806a332 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 10 03:13:42 2015 +0200 bin/build-nsis-package.sh: quoting and misc. whitespace changes. --- bin/build-nsis-package.sh | 205 +++++++++++++++++++++++---------------------- 1 file changed, 105 insertions(+), 100 deletions(-) diff --git a/bin/build-nsis-package.sh b/bin/build-nsis-package.sh index 80de031..f51641d 100755 --- a/bin/build-nsis-package.sh +++ b/bin/build-nsis-package.sh @@ -25,12 +25,12 @@ set -ex -export PATH=~/bin:/cygdrive/d/Build/buildscripts/bin:$PATH +export PATH="${HOME}/bin:/cygdrive/d/Build/buildscripts/bin:${PATH}" GIT_USER="x2go" GIT_HOSTNAME="code.x2go.org" -GPG_KEY= +GPG_KEY="" NSIS_DISTS_SUPPORTED="mingw32-4.4,mingw32-4.8" MINGW_DISTROS="qt-4.8" @@ -39,65 +39,70 @@ COMPONENT_NIGHTLY="heuler" COMPONENT_BUNDLES="baikal" REPOS_SERVER="code.x2go.org" -GNUPGHOME=$HOME/.gnupg +GNUPGHOME="${HOME}/.gnupg" -test -z $1 && { echo "usage: [PROJECT_DIR=/cygwin/path/] $(basename $0) [<subpath>/]<git-project> {main,main/<codename>,nightly,nightly/<codename>} [<git-checkout>]"; exit 1; } +test -z "${1}" && { + exec >&2 + echo "usage: [PROJECT_DIR=/cygwin/path/] $(basename "${0}") [<subpath>/]<git-project> {main,main/<codename>,nightly,nightly/<codename>} [<git-checkout>]" + exit 1 +} -NO_DELAY=${NO_DELAY:-"no"} -FORCE_BUILD=${FORCE_BUILD:-"yes"} +: ${NO_DELAY:="no"} +: ${FORCE_BUILD:="yes"} echo ${NSIS_BUILD_FOR} -l_DIST=$(echo ${NSIS_BUILD_FOR} | cut -d":" -f1 | tr [:upper:] [:lower:]) -l_CODENAME=$(echo ${NSIS_BUILD_FOR} | cut -d":" -f2- | sed -e 's/,/ /g' | tr [:upper:] [:lower:]) +l_DIST="$(cut -d":" -f1 <<< "${NSIS_BUILD_FOR}" | tr [:upper:] [:lower:])" +l_CODENAME="$(cut -d":" -f2- <<< "${NSIS_BUILD_FOR}" | sed -e 's/,/ /g' | tr [:upper:] [:lower:])" set_vars() { USE_SUDO="no" PDEBUILD="pdebuild --pbuilder qemubuilder" TEMP_BASE="/cygdrive/d/Build/tmp" - mkdir -p "$TEMP_BASE" - chmod 2770 "$TEMP_BASE" + mkdir -p "${TEMP_BASE}" + chmod 2770 "${TEMP_BASE}" # first argv is the name of the Git project - PROJECT_PATH="$1" - PROJECT_PATH=${PROJECT_PATH/%.git/} - PROJECT="$(basename $PROJECT_PATH)" + PROJECT_PATH="${1}" + PROJECT_PATH="${PROJECT_PATH/%.git/}" + PROJECT="$(basename "${PROJECT_PATH}")" # grab repository component area from command line (2nd argv) or guess it - ARGV2_COMPONENT="$(echo "$2/" | cut -d"/" -f1)" - ARGV2_CODENAME="$(echo "$2/" | cut -d"/" -f2)" + ARGV2_COMPONENT="$(cut -d"/" -f1 <<< "${2}/")" + ARGV2_CODENAME="$(cut -d"/" -f2 <<< "${2}/")" COMPONENT="${ARGV2_COMPONENT:-${COMPONENT:-$COMPONENT_NIGHTLY}}" CODENAMES="${ARGV2_CODENAME:-${CODENAMES}}" - [ -n "$ARGV2_CODENAME" ] && FORCE_BUILD="yes" || true + [ -n "${ARGV2_CODENAME}" ] && FORCE_BUILD="yes" || true DATE="${DATE:-$(date +%Y%m%d)}" - if [ "x$COMPONENT" = "x$COMPONENT_MAIN" ]; then + if [ "x${COMPONENT}" = "x${COMPONENT_MAIN}" ]; then CHECKOUT="${3:-build-main}" - elif echo "$COMPONENT_RELEASES" | grep "$COMPONENT" >/dev/null; then - CHECKOUT="${3:-build-$COMPONENT}" - elif [ "x$COMPONENT" = "x$COMPONENT_NIGHTLY" ]; then + elif grep -qs "${COMPONENT}" <<< "${COMPONENT_RELEASES}"; then + CHECKOUT="${3:-build-${COMPONENT}}" + elif [ "x${COMPONENT}" = "x${COMPONENT_NIGHTLY}" ]; then CHECKOUT="${3:-master}" else + exec >&2 echo "error: no such package component area for this Git project. Aborting..." exit 1 fi # the DATE might be given as ,,today'' from the command line - [ "x$DATE" = "xtoday" ] && DATE="$(date +%Y%m%d)" + [ "x${DATE}" = "xtoday" ] && DATE="$(date +%Y%m%d)" # setting paths - : ${PROJECT_DIR:="/cygdrive/d/Build/GIT/nightly/$l_DIST/$l_CODENAME/x2goclient"} - PKGDIST="/cygdrive/d/Build/pkg-dist/nightly/$l_DIST/$l_CODENAME/x2goclient" + : ${PROJECT_DIR:="/cygdrive/d/Build/GIT/nightly/${l_DIST}/${l_CODENAME}/x2goclient"} + PKGDIST="/cygdrive/d/Build/pkg-dist/nightly/${l_DIST}/${l_CODENAME}/x2goclient" # build for other architectures than amd64/i386 EXTRA_ARCHS="${EXTRA_ARCHS:-}" EXTRA_ARCHS_ONLY="${EXTRA_ARCHS_ONLY:-}" # lock file - LOCK_FILE=$PROJECT_DIR/../.$PROJECT.lock + LOCK_FILE="${PROJECT_DIR}/../.${PROJECT}.lock" # creating paths - mkdir -p "$TEMP_BASE" - mkdir -p "$PROJECT_DIR" -# mkdir -p "$PKGDIST" + mkdir -p "${TEMP_BASE}" + mkdir -p "${PROJECT_DIR}" +# mkdir -p "${PKGDIST}" return 0 } @@ -105,32 +110,32 @@ set_vars() { prepare_workspace() { # make sure our local working copy is up to date... - if [ -d "$PROJECT_DIR/.git" ]; then - cd "$PROJECT_DIR" && git reset --hard - git checkout --force $CHECKOUT || git checkout --force -b $CHECKOUT - git pull origin $CHECKOUT + if [ -d "${PROJECT_DIR}/.git" ]; then + cd "${PROJECT_DIR}" && git reset --hard + git checkout --force "${CHECKOUT}" || git checkout --force -b "${CHECKOUT}" + git pull origin "${CHECKOUT}" git fetch origin upstream:upstream || true git fetch origin pristine-tar:pristine-tar || true - # and again, get the $CHECKOUT refspec in pure state + # and again, get the ${CHECKOUT} refspec in pure state git reset --hard git clean -df else - cd "$(dirname $PROJECT_DIR)" - git clone git://$GIT_HOSTNAME/$PROJECT_PATH.git - cd "$PROJECT" - git checkout --force $CHECKOUT || git checkout --force -b $CHECKOUT; + cd "$(dirname "${PROJECT_DIR}")" + git clone "git://${GIT_HOSTNAME}/${PROJECT_PATH}.git" + cd "${PROJECT}" + git checkout --force "${CHECKOUT}" || git checkout --force -b "${CHECKOUT}" git fetch origin upstream:upstream git fetch origin pristine-tar:pristine-tar || true git clean -df fi GIT_OBJECT_ID="$(git rev-parse --verify HEAD)" - cd "$PROJECT_DIR" + cd "${PROJECT_DIR}" # by default we build for all current debian versions - if [ "x$ARGV2_CODENAME" != "x" ]; then - if echo "$MINGW_DISTROS" | grep $ARGV2_CODENAME >/dev/null; then - NSIS_BUILD_FOR="mingw32-4.4:$ARGV2_CODENAME" + if [ "x${ARGV2_CODENAME}" != "x" ]; then + if grep -qs "${ARGV2_CODENAME}" <<< "${MINGW_DISTROS}"; then + NSIS_BUILD_FOR="mingw32-4.4:${ARGV2_CODENAME}" fi fi return 0 @@ -150,37 +155,37 @@ clear_pkgdist() { typeset line="" for line in "${nsis_build_for_arr[@]}"; do - l_DIST="$(echo ${line/: /:} | cut -d":" -f1 | tr [:upper:] [:lower:])" - l_CODENAMES="${CODENAMES:-$(echo ${line/: /:} | cut -d":" -f2- | sed -e 's/,/ /g' | tr [:upper:] [:lower:])}" - echo "$NSIS_DISTS_SUPPORTED" | grep $l_DIST >/dev/null && { - for l_CODENAME in $l_CODENAMES; do + l_DIST="$(cut -d":" -f1 <<< "${line/: /:}" | tr [:upper:] [:lower:])" + l_CODENAMES="${CODENAMES:-"$(cut -d":" -f2- <<< "${line/: /:}" | sed -e 's/,/ /g' | tr [:upper:] [:lower:])"}" + grep -qs "${l_DIST}" <<< "${NSIS_DISTS_SUPPORTED}" && { + for l_CODENAME in "${l_CODENAMES}"; do # in case we build a special CODENAME (squeeze, wheezy, lucid, ...) do skip # the wrong distribution here... - test -z $CODENAMES || echo $line | grep $CODENAMES || break + test -z "${CODENAMES}" || grep "${CODENAMES}" <<< "${line}" || break - if [ "x$EXTRA_ARCHS_ONLY" = "x" ]; then + if [ "x${EXTRA_ARCHS_ONLY}" = "x" ]; then for l_ARCH in amd64 i386; do - [ "x$SKIP_ARCH" != "x$l_ARCH" ] && { - mkdir -p "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH" - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/dupload.conf" - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/$PROJECT_"*.changes - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/$PROJECT_"*.upload - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/$PROJECT_"*.build - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/$PROJECT_"*.dsc - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/$PROJECT_"*.tar.gz - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_ARCH/"*.deb + [ "x${SKIP_ARCH}" != "x${l_ARCH}" ] && { + mkdir -p "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}" + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}/dupload.conf" + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}/${PROJECT}_"*.changes + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}/${PROJECT}_"*.upload + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}/${PROJECT}_"*.build + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}/${PROJECT}_"*.dsc + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}/${PROJECT}_"*.tar.gz + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}/"*.deb } done fi - for l_EXTRA_ARCH in $EXTRA_ARCHS; do - mkdir -p "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH" - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/dupload.conf" - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/$PROJECT_"*.changes - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/$PROJECT_"*.upload - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/$PROJECT_"*.build - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/$PROJECT_"*.dsc - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/$PROJECT_"*.tar.gz - rm -f "$PKGDIST/$l_DIST/$l_CODENAME/$l_EXTRA_ARCH/"*.deb + for l_EXTRA_ARCH in ${EXTRA_ARCHS}; do + mkdir -p "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_EXTRA_ARCH}" + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_EXTRA_ARCH}/dupload.conf" + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_EXTRA_ARCH}/${PROJECT}_"*.changes + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_EXTRA_ARCH}/${PROJECT}_"*.upload + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_EXTRA_ARCH}/${PROJECT}_"*.build + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_EXTRA_ARCH}/${PROJECT}_"*.dsc + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_EXTRA_ARCH}/${PROJECT}_"*.tar.gz + rm -f "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_EXTRA_ARCH}/"*.deb done done } @@ -189,34 +194,33 @@ clear_pkgdist() { } build_packages() { + TEMP_DIR="$(mktemp -d --tmpdir="${TEMP_BASE}")" + mkdir -p "${TEMP_DIR}/${PROJECT}" + chmod 2770 "${TEMP_DIR}" -Rf - TEMP_DIR="$(mktemp -d --tmpdir=$TEMP_BASE)" - mkdir -p "$TEMP_DIR/$PROJECT" - chmod 2770 "$TEMP_DIR" -Rf - - cd "$PROJECT_DIR" - git clone --local "$PROJECT_DIR" "$TEMP_DIR/$PROJECT/" - cd "$TEMP_DIR/$PROJECT" - git checkout $CHECKOUT || git checkout master - find $PROJECT_DIR/../ -type f -maxdepth 0 -mindepth 0 | grep $PROJECT_*.orig.tar.gz &>/dev/null && cp $PROJECT_DIR/../$PROJECT_*.orig.tar.gz .. - GITREV=$(gitrevno) + cd "${PROJECT_DIR}" + git clone --local "${PROJECT_DIR}" "${TEMP_DIR}/${PROJECT}/" + cd "${TEMP_DIR}/${PROJECT}" + git checkout "${CHECKOUT}" || git checkout master + find "${PROJECT_DIR}/../" -type f -maxdepth 0 -mindepth 0 | grep -qs "${PROJECT}_"*.orig.tar.gz && cp "${PROJECT_DIR}/../${PROJECT}_"*.orig.tar.gz .. + GITREV="$(gitrevno)" # TODO: Improve generate-nsis-version.pl so that it can be run from another dir - cd /cygdrive/d/Build/buildscripts/bin/ - ./generate-nsis-version.pl $PROJECT_DIR + cd "/cygdrive/d/Build/buildscripts/bin/" + ./generate-nsis-version.pl "${PROJECT_DIR}" - cd $PROJECT_DIR - cp -a --no-preserve=ownership debian/changelog res/txt/ + cd "${PROJECT_DIR}" + cp -a --no-preserve=ownership "debian/changelog" "res/txt/" # create git changelog immediately prior to building the SRPM package - git --no-pager log --since "2 years ago" --format="%ai %aN (%h) %n%n%x09*%w(68,0,10) %s%d%n" > ChangeLog.gitlog - cp ChangeLog.gitlog res/txt/git-info + git --no-pager log --since "2 years ago" --format="%ai %aN (%h) %n%n%x09*%w(68,0,10) %s%d%n" > "ChangeLog.gitlog" + cp "ChangeLog.gitlog" "res/txt/git-info" - cd /cygdrive/d/Build/buildscripts/bin/ + cd "/cygdrive/d/Build/buildscripts/bin/" - nice /cygdrive/d/Build/buildscripts/bin/nsis-builder.bat "${l_DIST}" "${l_CODENAME}" + nice "/cygdrive/d/Build/buildscripts/bin/nsis-builder.bat" "${l_DIST}" "${l_CODENAME}" - rm -Rf "$TEMP_DIR" + rm -Rf "${TEMP_DIR}" return 0 } @@ -235,35 +239,36 @@ upload_packages() { typeset line="" for line in "${nsis_build_for_arr[@]}"; do # FIXME: this should be handled at the beginning of this script!!! - MINGW_REPOS_BASE=/srv/sites/x2go.org/code/releases/binary-win32/x2goclient/heuler/ + MINGW_REPOS_BASE="/srv/sites/x2go.org/code/releases/binary-win32/x2goclient/heuler/" # create remote directories in archive - 0</dev/null ssh $REPOS_SERVER mkdir -p $MINGW_REPOS_BASE/$l_DIST/$l_CODENAME/ + 0</dev/null ssh "${REPOS_SERVER}" mkdir -p "${MINGW_REPOS_BASE}/${l_DIST}/${l_CODENAME}/" # remove installer packages that are older than 30 days - 0</dev/null ssh $REPOS_SERVER "find \"$MINGW_REPOS_BASE/$l_DIST/$l_CODENAME/*\" -mtime +30 -name \"x2goclient-*-setup.exe\" 2>/dev/null | while read installer; do rm -f "$installer"; done" + 0</dev/null ssh "${REPOS_SERVER}" "find \"${MINGW_REPOS_BASE}/${l_DIST}/${l_CODENAME}/*\" -mtime +30 -name \"x2goclient-*-setup.exe\" -exec rm -f \"{}\" \";\"" # Ensure that the package is world-readable before being uploaded to an HTTP/HTTPS server. # Otherwise, sometimes cygwin sftp/scp uploads files with 000 permissions. - # What probably happens is that Cygwin is enumerates the windows permissions as a bunch of ACLs, and sets the octal permissions to 000. + # What probably happens is that Cygwin is enumerates the windows permissions as a bunch of ACLs, and sets the octal permissions to 000. # # 2014-07-13 # Commenting this out because for some reason, it could not find the files, thus causing the build to fail. # Furthermore, the permissions on the uploaded builds are fine right now. # The file not found error was: # chmod: Zugriff auf »/cygdrive/d/Build/GIT/nightly/x2goclient/nsis/x2goclient-*-setup.exe“ nicht möglich: Datei oder Verzeichnis nicht gefunden - chmod 755 /cygdrive/d/Build/GIT/nightly/$l_DIST/$l_CODENAME/$PROJECT/nsis/$PROJECT-*-setup.exe + chmod 755 "/cygdrive/d/Build/GIT/nightly/${l_DIST}/${l_CODENAME}/${PROJECT}/nsis/${PROJECT}-"*"-setup.exe" # copy new installer to download location - scp /cygdrive/d/Build/GIT/nightly/$l_DIST/$l_CODENAME/$PROJECT/nsis/$PROJECT-*-setup.exe $REPOS_SERVER:"$MINGW_REPOS_BASE/$l_DIST/$l_CODENAME/" + scp "/cygdrive/d/Build/GIT/nightly/${l_DIST}/${l_CODENAME}/${PROJECT}/nsis/${PROJECT}-"*"-setup.exe" "${REPOS_SERVER}:${MINGW_REPOS_BASE}/${l_DIST}/${l_CODENAME}/" done return 0 } wait_for_lock() { - while [ -f $LOCK_FILE ]; do - pid=$(head -n1 $LOCK_FILE) - if ! ps $pid 1>/dev/null; then rm -f $LOCK_FILE + while [ -f "${LOCK_FILE}" ]; do + pid="$(head -n1 "${LOCK_FILE}")" + if ! ps "${pid}" 1>/dev/null; then + rm -f "${LOCK_FILE}" else echo "PROJECT directory is locked, sleeping for 10 seconds..." sleep 10 @@ -273,23 +278,23 @@ wait_for_lock() { lock_workspace() { wait_for_lock - echo $$ > $LOCK_FILE + echo "${$}" > "${LOCK_FILE}" } unlock_workspace() { - rm -f $LOCK_FILE + rm -f "${LOCK_FILE}" } delay_build() { - sleep $[ ( $RANDOM % 30 ) + 1 ]s + sleep $[ ( ${RANDOM} % 30 ) + 1 ]s } ### MAIN ### -set_vars "$@" && { - if [ "x$(basename $0)" = "xbuild-nsis-package.sh" ] || [ "x$(basename $0)" = "xbuild+upload-nsis-package.sh" ]; then +set_vars "${@}" && { + if [ "x$(basename "${0}")" = "xbuild-nsis-package.sh" ] || [ "x$(basename ${0})" = "xbuild+upload-nsis-package.sh" ]; then # Treat any value other than "no" and "0" as true. - cd $PROJECT_DIR && pkgneedsbuild $CHECKOUT || ( [ "x$FORCE_BUILD" != "xno" ] && [ "x$FORCE_BUILD" != "x0" ] ) && { - if [ "x$FORCE_BUILD" != "xno" ] && [ "x$FORCE_BUILD" != "x0" ] && ( [ "x$NO_DELAY" = "xno" ] || [ "x$NO_DELAY" = "x0" ] ); then + cd "${PROJECT_DIR}" && pkgneedsbuild "${CHECKOUT}" || ( [ "x${FORCE_BUILD}" != "xno" ] && [ "x${FORCE_BUILD}" != "x0" ] ) && { + if [ "x${FORCE_BUILD}" != "xno" ] && [ "x${FORCE_BUILD}" != "x0" ] && ( [ "x${NO_DELAY}" = "xno" ] || [ "x${NO_DELAY}" = "x0" ] ); then delay_build fi lock_workspace @@ -301,7 +306,7 @@ set_vars "$@" && { unlock_workspace } fi - if [ "x$(basename $0)" = "xupload-nsis-package.sh" ] || [ "x$(basename $0)" = "xbuild+upload-nsis-package.sh" ]; then + if [ "x$(basename "${0}")" = "xupload-nsis-package.sh" ] || [ "x$(basename "${0}")" = "xbuild+upload-nsis-package.sh" ]; then upload_packages fi } -- Alioth's /srv/git/code.x2go.org/buildscripts.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/buildscripts.git