pkg/libfixmath: Protect svn checkout with a lock
parent
51b7227c9f
commit
ecf3069e94
@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z "${CHECKOUT_FOLDER}" ]; then
|
||||
echo 'export CHECKOUT_FOLDER before running this script' >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
: ${CHECKOUT_LOCKFILE:=${CHECKOUT_FOLDER}/.riot-svn-checkout-lockfile}
|
||||
# Default timeout, in seconds
|
||||
: ${LOCK_TIMEOUT:=120}
|
||||
|
||||
# We need to protect SVN checkout with a lock to avoid parallel make runs from
|
||||
# disrupting each other
|
||||
if type flock >/dev/null 2>&1; then
|
||||
# Try flock(1) command first, usually found on Linux
|
||||
(
|
||||
flock -w "${LOCK_TIMEOUT}" 200 || (
|
||||
echo "Timed out waiting to acquire lock ${CHECKOUT_LOCKFILE}" >&2
|
||||
exit 1
|
||||
)
|
||||
$(dirname "$0")/perform-svn-checkout.sh
|
||||
exit $?
|
||||
) 200>"${CHECKOUT_LOCKFILE}"
|
||||
elif type lockf >/dev/null 2>&1; then
|
||||
# lockf is usually installed on FreeBSD and OSX
|
||||
lockf -t ${LOCK_TIMEOUT} ${CHECKOUT_LOCKFILE} $(dirname "$0")/perform-svn-checkout.sh
|
||||
exit $?
|
||||
else
|
||||
# flock(1) and lockf(1) shell commands are missing from the system
|
||||
echo 'Missing both flock(1) and lockf(1),'
|
||||
echo 'flock is part of util-linux on most Linux systems, lockf is usually installed on FreeBSD.'
|
||||
echo 'see https://github.com/discoteq/flock for a portable alternative.'
|
||||
echo 'Proceeding with svn checkout without locking...'
|
||||
$(dirname "$0")/perform-svn-checkout.sh
|
||||
exit $?
|
||||
fi
|
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
if [ -z "${PKG_URL}" ]; then
|
||||
echo 'export PKG_URL before running this script' >&2
|
||||
exit 2
|
||||
fi
|
||||
if [ -z "${CHECKOUT_FOLDER}" ]; then
|
||||
echo 'export CHECKOUT_FOLDER before running this script' >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
: ${SVN_INFO_FILE:=${CHECKOUT_FOLDER}/svn_info.xml}
|
||||
|
||||
if [ -s "${SVN_INFO_FILE}" ]; then
|
||||
# svn checkout was completed by another thread while we waited for the lock
|
||||
if [ "${QUIET}" -ne 1 ]; then
|
||||
echo "File already exists: ${SVN_INFO_FILE}, skipping svn checkout"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
if [ -n "${PKG_VERSION}" ]; then
|
||||
svn checkout -q -r ${PKG_VERSION} ${PKG_URL} ${CHECKOUT_FOLDER}
|
||||
else
|
||||
svn checkout -q ${PKG_URL} ${CHECKOUT_FOLDER}
|
||||
fi
|
||||
svn info --xml ${CHECKOUT_FOLDER} > ${SVN_INFO_FILE}
|
Loading…
Reference in New Issue