<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>