<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/60f6ddd038045408651b449d6e8204f8a9002836">https://github.com/macports/macports-ports/commit/60f6ddd038045408651b449d6e8204f8a9002836</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 60f6ddd0380 Add mirror and portindex job
</span>60f6ddd0380 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 60f6ddd038045408651b449d6e8204f8a9002836
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Wed Mar 12 15:19:00 2025 +1100
<span style='display:block; white-space:pre;color:#404040;'> Add mirror and portindex job
</span>---
.github/workflows/bootstrap.sh | 16 ++-
.github/workflows/main.yml | 5 +-
.github/workflows/mirror.yml | 214 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 230 insertions(+), 5 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/.github/workflows/bootstrap.sh b/.github/workflows/bootstrap.sh
</span><span style='display:block; white-space:pre;color:#808080;'>index 00ea59a9080..50382b6c38b 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/.github/workflows/bootstrap.sh
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/.github/workflows/bootstrap.sh
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2,6 +2,8 @@
</span>
set -e
<span style='display:block; white-space:pre;background:#e0ffe0;'>+MPBB=$1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> printtag() {
# GitHub Actions tag format
echo "::$1::${2-}"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -15,7 +17,7 @@ endgroup() {
</span> printtag "endgroup"
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-MACPORTS_VERSION=2.10.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MACPORTS_VERSION=${MP_CI_RELEASE:-2.10.3}
</span>
OS_MAJOR=$(uname -r | cut -f 1 -d .)
OS_ARCH=$(uname -m)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -33,25 +35,29 @@ MACPORTS_FILENAME=MacPorts-${MACPORTS_VERSION}-${OS_MAJOR}.tar.bz2
</span> begingroup "Fetching files"
# Download resources in background ASAP but use later.
# Use /usr/bin/curl so that we don't use Homebrew curl.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-echo "Fetching getopt..."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/usr/bin/curl -fsSLO "https://distfiles.macports.org/_ci/getopt/getopt-v1.1.6.tar.bz2" &
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-curl_getopt_pid=$!
</span> echo "Fetching MacPorts..."
/usr/bin/curl -fsSLO "https://github.com/macports/macports-ci-files/releases/download/v${MACPORTS_VERSION}/${MACPORTS_FILENAME}" &
curl_mpbase_pid=$!
<span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "Fetching getopt..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/usr/bin/curl -fsSLO "https://distfiles.macports.org/_ci/getopt/getopt-v1.1.6.tar.bz2" &
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+curl_getopt_pid=$!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if [ -n "$MPBB" ] ; then
</span> PORTINDEX_URL="https://ftp.fau.de/macports/release/ports/PortIndex_darwin_${OS_MAJOR}_${OS_ARCH}/PortIndex"
echo "Fetching PortIndex from $PORTINDEX_URL ..."
/usr/bin/curl -fsSLo ports/PortIndex "$PORTINDEX_URL" &
curl_portindex_pid=$!
<span style='display:block; white-space:pre;background:#e0ffe0;'>+fi
</span> endgroup
<span style='display:block; white-space:pre;background:#e0ffe0;'>+if [ -n "$MPBB" ] ; then
</span> begingroup "Info"
echo "macOS version: $(sw_vers -productVersion)"
echo "IP address: $(/usr/bin/curl -fsS https://www-origin.macports.org/ip.php)"
/usr/bin/curl -fsSIo /dev/null https://packages-private.macports.org/.org.macports.packages-private.healthcheck.txt && private_packages_available=yes || private_packages_available=no
echo "Can reach private packages server: $private_packages_available"
endgroup
<span style='display:block; white-space:pre;background:#e0ffe0;'>+fi
</span>
begingroup "Disabling Spotlight"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -125,6 +131,7 @@ echo "archive_site_local https://packages-private.macports.org/:tbz2" | sudo tee
</span> endgroup
<span style='display:block; white-space:pre;background:#e0ffe0;'>+if [ -n "$MPBB" ] ; then
</span> begingroup "Updating PortIndex"
## Run portindex on recent commits if PR is newer
git -C ports/ remote add macports https://github.com/macports/macports-ports.git
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -140,6 +147,7 @@ fi
</span> git -C ports/ checkout -qf -
(cd ports/ && portindex -e)
endgroup
<span style='display:block; white-space:pre;background:#e0ffe0;'>+fi
</span>
begingroup "Running postflight"
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
</span><span style='display:block; white-space:pre;color:#808080;'>index 5bc15dbc748..659f9eed0d3 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/.github/workflows/main.yml
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/.github/workflows/main.yml
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -36,11 +36,14 @@ jobs:
</span> - name: Checkout mpbb
uses: actions/checkout@v4
with:
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ fetch-depth: 1
</span> repository: macports/mpbb
path: mpbb
show-progress: false
- name: Bootstrap MacPorts
<span style='display:block; white-space:pre;background:#ffe0e0;'>- run: . ports/.github/workflows/bootstrap.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ env:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MP_CI_RELEASE: ${{ vars.MP_CI_RELEASE }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ run: . ports/.github/workflows/bootstrap.sh mpbb
</span> - name: Determine list of changed ports
id: portlist
run: |
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0eb6c113245
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/.github/workflows/mirror.yml
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,214 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name: "Index & mirror changed ports"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+on:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ push:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ branches:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - master
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ paths-ignore:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - '.github/**'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+permissions:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ contents: read
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+jobs:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ name: Index and mirror
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ concurrency:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ group: mirror-${{ github.ref }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ runs-on: macos-latest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ steps:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Checkout ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uses: actions/checkout@v4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ with:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fetch-depth: 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path: ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ show-progress: false
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Checkout mpbb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uses: actions/checkout@v4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ with:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fetch-depth: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ repository: macports/mpbb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ref: master
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path: mpbb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ show-progress: false
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Checkout contrib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uses: actions/checkout@v4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ with:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fetch-depth: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ repository: macports/macports-contrib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ref: master
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path: contrib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ show-progress: false
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Bootstrap MacPorts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ env:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MP_CI_RELEASE: ${{ vars.MP_CI_RELEASE }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ . ports/.github/workflows/bootstrap.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Add getopt, mpbb and the MacPorts paths to $PATH for the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # subsequent steps.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "/opt/mports/bin" >> $GITHUB_PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "/opt/local/bin" >> $GITHUB_PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "/opt/local/sbin" >> $GITHUB_PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Determine list of changed ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ id: portlist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ env:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_DB_URL: ${{ secrets.MIRROR_DB_URL }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_DB_CREDENTIALS: ${{ secrets.MIRROR_DB_CREDENTIALS }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set -eu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Getting mirror.last_commit ..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LAST_COMMIT="$(curl -sL -u "$MIRROR_DB_CREDENTIALS" "${MIRROR_DB_URL}GET/mirror.last_commit?type=txt")"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ -z "$LAST_COMMIT" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "No mirror.last_commit found, using default value."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LAST_COMMIT="$(git -C ports rev-parse HEAD~1)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "$LAST_COMMIT" > last_commit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Deepening macports-ports clone to $LAST_COMMIT"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEPTH=2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while ! git -C ports merge-base --is-ancestor "$LAST_COMMIT" HEAD; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ $DEPTH -gt 500 ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Didn't find commit with depth=$DEPTH - giving up"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LAST_COMMIT="HEAD~10"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm -f last_commit
</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;'>+ DEPTH="$(( $DEPTH * 2 ))"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ git -C ports fetch "--depth=$DEPTH" origin "$GITHUB_REF"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ done
</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;'>+ echo "Finding modified Portfiles"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ portlist=$( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ git -C ports/ diff --name-only --diff-filter=AM "${LAST_COMMIT}..HEAD" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | grep -E '^[^._/][^/]*/[^/]+/Portfile$' \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | cut -d/ -f2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | sort -u \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | tr '\n' ' ' \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | sed 's/ $//')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "$portlist"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "portlist=$portlist" >> $GITHUB_OUTPUT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Update PortIndex files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ env:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OLDEST_DARWIN: 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NEWEST_DARWIN: 24
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_UPLOAD_URL: ${{ secrets.MIRROR_UPLOAD_URL }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_UPLOAD_CREDENTIALS: ${{ secrets.MIRROR_UPLOAD_CREDENTIALS }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_SSH_HOST: ${{ secrets.MIRROR_SSH_HOST }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_SSH_HOSTKEY: ${{ secrets.MIRROR_SSH_HOSTKEY }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_SSH_KEY: ${{ secrets.MIRROR_SSH_KEY }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_SSH_USER: ${{ secrets.MIRROR_SSH_USER }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set -eu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Start at last mirrored commit so we can get newer timestamps on only the changed files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ -f last_commit ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LAST_COMMIT="$(cat last_commit)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LAST_COMMIT=""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CURRENT_COMMIT="$(git -C ports rev-parse HEAD)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # rsync gotcha: openrsync's -C option behaves differently to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # samba.org rsync's, in particular not excluding .git.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mkdir -p tarball
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ -n "$LAST_COMMIT" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Fetching tarball for commit $LAST_COMMIT"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if curl -fL -O -u "$MIRROR_UPLOAD_CREDENTIALS" "${MIRROR_UPLOAD_URL}portindex-${LAST_COMMIT}.tar.bz2"; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tar -C tarball -xjf "portindex-${LAST_COMMIT}.tar.bz2"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm -f "portindex-${LAST_COMMIT}.tar.bz2"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ git -C ports checkout "$LAST_COMMIT"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rsync -rltC --exclude=".git" --existing tarball/ports/ ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ git -C ports checkout "$CURRENT_COMMIT"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Fetch failed, starting from scratch."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "No mirror.last_commit value found, starting from scratch."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mkdir -p tarball/ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rsync -rltC --exclude=".git" --delete ports/ tarball/ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OS_MAJOR_LIST="$(seq "$OLDEST_DARWIN" "$NEWEST_DARWIN")"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for CUR_MAJOR in $OS_MAJOR_LIST; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ARCHS="i386"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ "$CUR_MAJOR" -ge 20 ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ARCHS="arm $ARCHS"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ elif [ "$CUR_MAJOR" -le 9 ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ARCHS="$ARCHS powerpc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for CUR_ARCH in $ARCHS; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ INDEXDIR="tarball/PortIndex_darwin_${CUR_MAJOR}_${CUR_ARCH}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mkdir -p "$INDEXDIR"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ portindex -p "macosx_${CUR_MAJOR}_${CUR_ARCH}" -o "$INDEXDIR" ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port-tclsh contrib/portindex2json/portindex2json.tcl "${INDEXDIR}/PortIndex" --info commit="${CURRENT_COMMIT}" > "${INDEXDIR}/PortIndex.json"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ done
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ done
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OS_MAJOR="$(uname -r | cut -f 1 -d .)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OS_ARCH="$(uname -p)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ -f "tarball/PortIndex_darwin_${OS_MAJOR}_${OS_ARCH}/PortIndex" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cp "tarball/PortIndex_darwin_${OS_MAJOR}_${OS_ARCH}/PortIndex" ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Warning: no PortIndex found for darwin_${OS_MAJOR}_${OS_ARCH}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cp "tarball/PortIndex_darwin_${NEWEST_DARWIN}_${OS_ARCH}/PortIndex" ports
</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;'>+ chmod -R a+rX tarball
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Creating tarball for commit ${CURRENT_COMMIT}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tar -C tarball -cjf "portindex-${CURRENT_COMMIT}.tar.bz2" .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Uploading tarball for commit ${CURRENT_COMMIT}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ touch ssh_key
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ chmod 0600 ssh_key
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "$MIRROR_SSH_KEY" > ssh_key
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "$MIRROR_SSH_HOSTKEY" > ssh_known_hosts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ export RSYNC_RSH="ssh -l $MIRROR_SSH_USER -i ssh_key -oUserKnownHostsFile=ssh_known_hosts -p 23"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rsync -av --ignore-existing --progress "portindex-${CURRENT_COMMIT}.tar.bz2" "${MIRROR_SSH_HOST}:"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Mirror all changed ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ env:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DISTFILES_URL: https://nue.de.distfiles.macports.org/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_DB_URL: ${{ secrets.MIRROR_DB_URL }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_DB_CREDENTIALS: ${{ secrets.MIRROR_DB_CREDENTIALS }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_SSH_HOST: ${{ secrets.MIRROR_SSH_HOST }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_SSH_USER: ${{ secrets.MIRROR_SSH_USER }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ portlist: ${{ steps.portlist.outputs.portlist }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set -eu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sudo mv /opt/local/var/macports .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sudo chown -R "$(id -un)" ./macports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sudo ln -s "$(realpath ./macports)" /opt/local/var/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Mirroring ports: $portlist"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ! port-tclsh mpbb/tools/mirror-multi.tcl -s -r "$MIRROR_DB_URL" "$MIRROR_DB_CREDENTIALS" -d "$DISTFILES_URL" $portlist; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Mirroring of some ports failed."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Making distfiles readable"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sudo chmod -R a+rX ./macports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ export RSYNC_RSH="ssh -l $MIRROR_SSH_USER -i ssh_key -oUserKnownHostsFile=ssh_known_hosts -p 23"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Uploading distfiles"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rsync -av --ignore-existing --progress ./macports/distfiles/ "${MIRROR_SSH_HOST}:pub/distfiles"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm -f ssh_key ssh_known_hosts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Updating mirrored status of ports"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port-tclsh mpbb/tools/update-mirrordb.tcl "$MIRROR_DB_URL" "$MIRROR_DB_CREDENTIALS" mirror_done portfile_hash_cache portname_portfile_map
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Update status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ env:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_DB_URL: ${{ secrets.MIRROR_DB_URL }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MIRROR_DB_CREDENTIALS: ${{ secrets.MIRROR_DB_CREDENTIALS }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set -eu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CURRENT_COMMIT="$(git -C ports rev-parse HEAD)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Updating mirror.last_commit to: $CURRENT_COMMIT"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ curl -fL -u "$MIRROR_DB_CREDENTIALS" "${MIRROR_DB_URL}SET/mirror.last_commit/${CURRENT_COMMIT}"
</span></pre><pre style='margin:0'>
</pre>