<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/75fe5dde53f5482bd4d008943fd9ab5249bcfbbb">https://github.com/macports/macports-ports/commit/75fe5dde53f5482bd4d008943fd9ab5249bcfbbb</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 75fe5dde53f5482bd4d008943fd9ab5249bcfbbb
</span>Author: Clemens Lang <cal@macports.org>
AuthorDate: Thu Dec 10 00:41:22 2020 +0100

<span style='display:block; white-space:pre;color:#404040;'>    ci: Switch to new setup, remove runner, improve UX
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    We now have a more offical account for our CI environment setup at
</span><span style='display:block; white-space:pre;color:#404040;'>    bintray, along with automated generation of these CI environment
</span><span style='display:block; white-space:pre;color:#404040;'>    tarballs in the form of a CI system in macports-base.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Switch to using these in GitHub Actions, replace the runner binary
</span><span style='display:block; white-space:pre;color:#404040;'>    written in Go with a few shell scripts and improve the output in GitHub
</span><span style='display:block; white-space:pre;color:#404040;'>    Actions by extensively using their workflow commands [1].
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    [1]: https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions
</span>---
 .github/workflows/bootstrap.sh |  95 +++++++++++++++++++++
 .github/workflows/main.yml     | 190 +++++++++++++++++++++++++++++++++++------
 2 files changed, 260 insertions(+), 25 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/.github/workflows/bootstrap.sh b/.github/workflows/bootstrap.sh
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..9b254ce84f1
</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/bootstrap.sh
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,95 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#!/bin/bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set -e
</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 -m)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+case "$OS_ARCH" in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    i586|i686|x86_64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        OS_ARCH=i386
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+esac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::group::Disabling Spotlight"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Disable Spotlight indexing. We don't need it, and it might cost performance
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo mdutil -a -i off
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::endgroup::"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::group::Uninstalling Homebrew"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Move directories to /opt/off
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "Moving directories..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo mkdir /opt/off
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/usr/bin/sudo /usr/bin/find /usr/local -mindepth 1 -maxdepth 1 -type d -print -exec /bin/mv {} /opt/off/ \;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Unlink files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "Removing files..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/usr/bin/sudo /usr/bin/find /usr/local -mindepth 1 -maxdepth 1 -type f -print -delete
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Rehash to forget about the deleted files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+hash -r
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::endgroup::"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::group::Installing MacPorts"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "Fetching..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Download resources in background ASAP but use later; do this after cleaning
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# up Homebrew so that we don't end up using their curl!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+curl -fsSLO "https://dl.bintray.com/macports-ci-env/macports-base/MacPorts-${OS_MAJOR}.tar.bz2" &
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+curl_mpbase_pid=$!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+curl -fsSLO "https://dl.bintray.com/macports-ci-bot/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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Download and install MacPorts built by https://github.com/macports/macports-base/tree/master/.github
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+wait $curl_mpbase_pid
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "Extracting..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo tar -xpf "MacPorts-${OS_MAJOR}.tar.bz2" -C /
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rm -f "MacPorts-${OS_MAJOR}.tar.bz2"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::endgroup::"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::group::Configuring MacPorts"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Set PATH for portindex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+source /opt/local/share/macports/setupenv.bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Set ports tree to $PWD/ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo sed -i "" "s|rsync://rsync.macports.org/macports/release/tarballs/ports.tar|file://${PWD}/ports|; /^file:/s/default/nosync,default/" /opt/local/etc/macports/sources.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# CI is not interactive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "ui_interactive no" | sudo tee -a /opt/local/etc/macports/macports.conf >/dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Only download from the CDN, not the mirrors
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "host_blacklist *.distfiles.macports.org *.packages.macports.org" | sudo tee -a /opt/local/etc/macports/macports.conf >/dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Try downloading archives from the private server after trying the public server
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "archive_site_local https://packages.macports.org/:tbz2 https://packages-private.macports.org/:tbz2" | sudo tee -a /opt/local/etc/macports/macports.conf >/dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Prefer to get archives from the public server instead of the private server
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# preferred_hosts has no effect on archive_site_local
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# See https://trac.macports.org/ticket/57720
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#echo "preferred_hosts packages.macports.org" | sudo tee -a /opt/local/etc/macports/macports.conf >/dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::endgroup::"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::group::Generating PortIndex"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Update PortIndex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+curl -L "https://ftp.fau.de/macports/release/ports/PortIndex_darwin_${OS_MAJOR}_${OS_ARCH}/PortIndex" -o ports/PortIndex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+## Run portindex on recent commits if PR is newer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git -C ports/ remote add macports https://github.com/macports/macports-ports.git
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git -C ports/ fetch macports master
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git -C ports/ checkout -qf macports/master~10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git -C ports/ checkout -qf -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git -C ports/ checkout -qf "$(git -C ports/ merge-base macports/master HEAD)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+## Ignore portindex errors on common ancestor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(cd ports/ && portindex)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git -C ports/ checkout -qf -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(cd ports/ && portindex -e)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::endgroup::"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::group::Running postflight"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Create macports user
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "Postflight..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo /opt/local/libexec/macports/postflight/postflight
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::endgroup::"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::group::Installing getopt"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Install getopt required by mpbb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+wait $curl_getopt_pid
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "Extracting..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo tar -xpf "getopt-v1.1.6.tar.bz2" -C /
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "::endgroup::"
</span><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 1c588ec9c8c..06e3d376f60 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;'>@@ -1,17 +1,18 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-name: CI
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name: "lint & build changed ports"
</span> 
 on:
   pull_request:
     branches:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    - master
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      - master
</span>     paths-ignore:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    - '.github/**'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      - '.github/**'
</span>   push:
     branches:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    - update/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      - update/*
</span> 
 jobs:
   build:
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    name: ${{ matrix.os }}
</span>     timeout-minutes: 0
     runs-on: ${{ matrix.os }}
     strategy:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -19,24 +20,163 @@ jobs:
</span>         os: [macos-10.15, macos-11.0]
 
     steps:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    - name: Checkout repository
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      uses: actions/checkout@v2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      with:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        fetch-depth: 64
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    - name: Bootstrap MacPorts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      run: . _ci/bootstrap.sh
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    - name: Build
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      run: |
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        unset CC && source /opt/local/share/macports/setupenv.bash
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        export PATH="/opt/mports/bin:${PWD}/../mpbb:$PATH" && hash -r
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        sudo env PASTE_URL="$PASTE_URL" ./runner
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    - name: Fix log permission
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      if: ${{ always() }}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      run: |
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if [ -n "$(find /tmp/ -maxdepth 1 -name "ci-build-*" -print)" ]; then sudo mv /tmp/ci-build-* . && sudo chmod 755 ci-build-*; fi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    - name: Archive build logs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      if: ${{ always() }}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      uses: actions/upload-artifact@v2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      with:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        name: port-build-log
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        path: ci-build-*/**/*.log
</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@v2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        with:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          fetch-depth: 64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          path: ports
</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@v2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        with:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          repository: macports/mpbb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          path: mpbb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      - name: Bootstrap MacPorts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        run: . ports/.github/workflows/bootstrap.sh
</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;'>+        run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          set -eu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          # Add getopt, mpbb and the MacPorts paths to $PATH for the subsequent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          # 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 "${PWD}/mpbb" >> $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;'>+          IFS='/' read -r -a portlist <<<$( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            git -C ports/ diff --name-only --diff-filter=AM macports/master...@ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              | grep -E '[^\._/][^/]*/[^/]+/(Portfile|files/)' \
</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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          echo "${portlist[@]}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          echo "::set-output name=portlist::${portlist[@]}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      - name: Determine list of subports from portlist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        id: subportlist
</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;'>+          subportlist=""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          for port in $portlist; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            echo "::group::Listing subports for ${port}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            new_subports=$(mpbb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                --work-dir /tmp/mpbb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                list-subports \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                --archive-site= \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                --archive-site-private= \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                "$port" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              | tr '\n' ' ')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            for subport in $new_subports; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              echo "$subport"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              subportlist="$subportlist $subport"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            done
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            echo "::endgroup::"
</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;'>+          echo "::set-output name=subportlist::${subportlist}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        env:
</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;'>+      - name: Run port lint for all changed subports
</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;'>+          fail=0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          for subport in $subportlist; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            echo "::group::${subport}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            path=$(port file "$subport")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            messagetype="warning"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if ! messages=$(port -q lint --nitpick "$subport" 2>&1); then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              messagetype="error"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              fail=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if [ -n "$messages" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              echo "$messages"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              # See https://github.com/actions/toolkit/issues/193#issuecomment-605394935
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              encoded_messages="port lint --nitpick ${subport}:%0A"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              encoded_messages+="$(echo "${messages}" | sed -E 's/$/%0A/g' | tr -d '\n')"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              echo "::${messagetype} file=${path#${PWD}/ports/},line=1,col=1::${encoded_messages}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            echo "::endgroup::"
</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;'>+          exit "$fail"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        env:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          subportlist: ${{ steps.subportlist.outputs.subportlist }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      - name: Build changed subports
</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;'>+          fail=0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          for subport in $subportlist; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            workdir="/tmp/mpbb/$subport"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            mkdir -p "$workdir/logs"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            touch "$workdir/logs/dependencies-progress.txt"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            echo "::group::Cleaning up between ports"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            sudo mpbb --work-dir "$workdir" cleanup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            echo "::endgroup::"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            echo "::group::Installing dependencies for ${subport}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            sudo mpbb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              --work-dir "$workdir" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              install-dependencies \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              "$subport" >"$workdir/logs/install-dependencies.log" 2>&1 &
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            deps_pid=$!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            tail -f "$workdir/logs/dependencies-progress.txt" 2>/dev/null &
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            tail_pid=$!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set +e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            wait "$deps_pid"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            deps_exit=$?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set -e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            kill "$tail_pid" || true
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if [ "$deps_exit" -ne 0 ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              echo "::endgroup::"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              echo "::error::Failed to install dependencies for ${subport}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            echo "::endgroup::"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            echo "::group::Installing ${subport}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set +e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            sudo mpbb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              --work-dir "$workdir" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              install-port \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              --source \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              "$subport"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            install_exit=$?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set -e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if [ "$install_exit" -ne 0 ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              echo "::endgroup::"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              echo "::error::Failed to install ${subport}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              fail=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            echo "::endgroup::"
</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;'>+          exit "$fail"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        env:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          subportlist: ${{ steps.subportlist.outputs.subportlist }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      - name: Make logfiles readable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if: always()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          sudo find \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            /tmp/mpbb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            -maxdepth 1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            -mindepth 1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            -type d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            -print \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            -exec chmod -R go+rX {} \;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      - name: Archive build logs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if: always()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        uses: actions/upload-artifact@v2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        with:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          name: logs-${{ matrix.os }}.zip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          path: /tmp/mpbb/*/logs
</span></pre><pre style='margin:0'>

</pre>