[X2Go-Commits] [buildscripts] 02/04: bin/build-nsis-package.sh: quoting and misc. whitespace changes.
git-admin at x2go.org
git-admin at x2go.org
Sun May 10 03:16:08 CEST 2015
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 at 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
More information about the x2go-commits
mailing list