<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-infrastructure.
</pre>
<p><a href="https://github.com/macports/macports-infrastructure/commit/86ed09c6348e921bdcf39c58ca109a3ee459a501">https://github.com/macports/macports-infrastructure/commit/86ed09c6348e921bdcf39c58ca109a3ee459a501</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 86ed09c6348e921bdcf39c58ca109a3ee459a501
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Thu Mar 27 02:21:50 2025 +1100
<span style='display:block; white-space:pre;color:#404040;'> mprsyncup-alt: skip updating ports if no new upload
</span>---
jobs/mprsyncup-alt | 140 ++++++++++++++++++++++++++++-------------------------
1 file changed, 75 insertions(+), 65 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/jobs/mprsyncup-alt b/jobs/mprsyncup-alt
</span><span style='display:block; white-space:pre;color:#808080;'>index fba6a40..aea6f8b 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/jobs/mprsyncup-alt
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/jobs/mprsyncup-alt
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -36,8 +36,6 @@ if [ -z "$PRIVKEY" ]; then
</span> exit 1
fi
<span style='display:block; white-space:pre;background:#ffe0e0;'>-HOSTOS="$(uname -s)"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> BASEDIR=$(pwd)
rm -rf "${BASEDIR}/rsyncroot"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -86,73 +84,85 @@ fi
</span> # Prepare ports tree and PortIndex dirs
LATEST_PORTS_UPLOAD="$(ls -1t "${MIRROR_UPLOAD_PATH}"/portindex-*.tar.bz2 | head -n1)"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Clean up older uploads
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-echo "Cleaning up old ports uploads"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-find "${MIRROR_UPLOAD_PATH}" -type f -name "portindex-*.tar.bz2" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -not -newer "$LATEST_PORTS_UPLOAD" -not -samefile "$LATEST_PORTS_UPLOAD" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -delete -printf "Deleted %f\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-rm -rf "${BASEDIR}/rsyncroot/release/tarballs/extract"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-mkdir -p "${BASEDIR}/rsyncroot/release/tarballs/extract"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-echo "Extracting latest ports"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-"$TAR" -C "${BASEDIR}/rsyncroot/release/tarballs/extract" -xjf "$LATEST_PORTS_UPLOAD"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Create ports.tar
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-echo "Creating release/tarballs/ports.tar(.gz)"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-rm -f "${BASEDIR}/rsyncroot/release/tarballs/ports.tar" "${BASEDIR}/rsyncroot/release/tarballs/ports.tar.gz"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-"$TAR" -C "${BASEDIR}/rsyncroot/release/tarballs/extract" -cf "${BASEDIR}/rsyncroot/release/tarballs/ports.tar" ports
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-"$GZIP" --best --keep --rsyncable "${BASEDIR}/rsyncroot/release/tarballs/ports.tar"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Create daily tarball
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-echo "Creating daily tarball"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-rm -f "${BASEDIR}/rsyncroot/distfiles/ports.tar.gz" "${BASEDIR}/rsyncroot/release/ports.tar.gz"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-mkdir -p "${BASEDIR}/rsyncroot/distfiles"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-mv "${BASEDIR}"/rsyncroot/release/tarballs/extract/PortIndex* "${BASEDIR}"/rsyncroot/release/tarballs/extract/ports
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-"$TAR" -C "${BASEDIR}/rsyncroot/release/tarballs/extract" --exclude 'PortIndex*/PortIndex.json' \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -c --use-compress-program "$GZIP --best --rsyncable" -f "${BASEDIR}/rsyncroot/release/ports.tar.gz" ports
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-ln "${BASEDIR}/rsyncroot/release/ports.tar.gz" "${BASEDIR}/rsyncroot/distfiles/ports.tar.gz"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Put PortIndex dirs in place
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-echo "Moving PortIndex dirs"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-mv "${BASEDIR}"/rsyncroot/release/tarballs/extract/ports/PortIndex* "${BASEDIR}"/rsyncroot/release/tarballs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-echo "Deleting temp extracted ports tree"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-rm -rf "${BASEDIR}/rsyncroot/release/tarballs/extract"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Sign files
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-for f in "${BASEDIR}"/rsyncroot/release/tarballs/ports.tar{,.gz} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "${BASEDIR}"/rsyncroot/release/tarballs/PortIndex*/PortIndex\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "${BASEDIR}"/rsyncroot/{release,distfiles}/ports.tar.gz; do
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- echo "Signing $f"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "$OPENSSL" dgst -ripemd160 -sign "${PRIVKEY}" -out "${f}.rmd160" "${f}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-done
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Ensure readability
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-echo "Setting permissions"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-chmod -R a+rX "${BASEDIR}/rsyncroot"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Stop rsyncd once there are no connections
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if [ "$HOSTOS" = "Linux" ]; then
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- WAITED=0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- echo "Waiting for rsyncd to be idle"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- while [ -n "$(ss -H 'sport = :rsync')" ]; do
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sleep 10
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- WAITED=$(( $WAITED + 10 ))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if [ "$WAITED" -ge 7200 ]; then
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- echo "Waited $(( $WAITED / 60 )) minutes for rsync connections to close, shutting down anyway"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+NEW_PORTS=0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if [ ! -f "${BASEDIR}/last_deployed_ports" -o \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "$(basename "$LATEST_PORTS_UPLOAD")" != "$(cat "${BASEDIR}/last_deployed_ports")" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Clean up older uploads
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Cleaning up old ports uploads"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ find "${MIRROR_UPLOAD_PATH}" -type f -name "portindex-*.tar.bz2" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -not -newer "$LATEST_PORTS_UPLOAD" -not -samefile "$LATEST_PORTS_UPLOAD" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -delete -printf "Deleted %f\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm -rf "${BASEDIR}/rsyncroot/release/tarballs/extract"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mkdir -p "${BASEDIR}/rsyncroot/release/tarballs/extract"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Extracting latest ports"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "$TAR" -C "${BASEDIR}/rsyncroot/release/tarballs/extract" -xjf "$LATEST_PORTS_UPLOAD"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Create ports.tar
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Creating release/tarballs/ports.tar(.gz)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm -f "${BASEDIR}/rsyncroot/release/tarballs/ports.tar" "${BASEDIR}/rsyncroot/release/tarballs/ports.tar.gz"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "$TAR" -C "${BASEDIR}/rsyncroot/release/tarballs/extract" -cf "${BASEDIR}/rsyncroot/release/tarballs/ports.tar" ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "$GZIP" --best --keep --rsyncable "${BASEDIR}/rsyncroot/release/tarballs/ports.tar"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Create daily tarball
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Creating daily tarball"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm -f "${BASEDIR}/rsyncroot/distfiles/ports.tar.gz" "${BASEDIR}/rsyncroot/release/ports.tar.gz"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mkdir -p "${BASEDIR}/rsyncroot/distfiles"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mv "${BASEDIR}"/rsyncroot/release/tarballs/extract/PortIndex* "${BASEDIR}"/rsyncroot/release/tarballs/extract/ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "$TAR" -C "${BASEDIR}/rsyncroot/release/tarballs/extract" --exclude 'PortIndex*/PortIndex.json' \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -c --use-compress-program "$GZIP --best --rsyncable" -f "${BASEDIR}/rsyncroot/release/ports.tar.gz" ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln "${BASEDIR}/rsyncroot/release/ports.tar.gz" "${BASEDIR}/rsyncroot/distfiles/ports.tar.gz"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Put PortIndex dirs in place
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Moving PortIndex dirs"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mv "${BASEDIR}"/rsyncroot/release/tarballs/extract/ports/PortIndex* "${BASEDIR}"/rsyncroot/release/tarballs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Deleting temp extracted ports tree"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm -rf "${BASEDIR}/rsyncroot/release/tarballs/extract"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Sign files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for f in "${BASEDIR}"/rsyncroot/release/tarballs/ports.tar{,.gz} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "${BASEDIR}"/rsyncroot/release/tarballs/PortIndex*/PortIndex\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "${BASEDIR}"/rsyncroot/{release,distfiles}/ports.tar.gz; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Signing $f"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "$OPENSSL" dgst -ripemd160 -sign "${PRIVKEY}" -out "${f}.rmd160" "${f}"
</span> done
<span style='display:block; white-space:pre;background:#ffe0e0;'>- echo "Stopping rsyncd"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sudo /usr/bin/systemctl stop rsync
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "$(basename "$LATEST_PORTS_UPLOAD")" > "${BASEDIR}/last_deployed_ports"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NEW_PORTS=1
</span> fi
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Sync files
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-echo "Rsyncing files"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-"$RSYNC" -aHv "${BASEDIR}"/rsyncroot/ "$MIRROR_PUBLIC_PATH"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if [ "$NEW_BASE" = 1 -o "$NEW_PORTS" = 1 ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Ensure readability
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Setting permissions"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ chmod -R a+rX "${BASEDIR}/rsyncroot"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ HOSTOS="$(uname -s)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Stop rsyncd once there are no connections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ "$HOSTOS" = "Linux" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ WAITED=0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Waiting for rsyncd to be idle"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while [ -n "$(ss -H 'sport = :rsync')" ]; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sleep 10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ WAITED=$(( $WAITED + 10 ))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ "$WAITED" -ge 7200 ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Waited $(( $WAITED / 60 )) minutes for rsync connections to close, shutting down anyway"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ done
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Stopping rsyncd"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sudo /usr/bin/systemctl stop rsync
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Sync files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Rsyncing files"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "$RSYNC" -aHv "${BASEDIR}"/rsyncroot/ "$MIRROR_PUBLIC_PATH"
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Start rsyncd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if [ "$HOSTOS" = "Linux" ]; then
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- echo "Starting rsyncd"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sudo /usr/bin/systemctl start rsync
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Start rsyncd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ "$HOSTOS" = "Linux" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Starting rsyncd"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sudo /usr/bin/systemctl start rsync
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span> fi
echo "Finished update of rsync files at $(date -u -Iseconds)"
</pre><pre style='margin:0'>
</pre>