Lint and built Portfile

This commit is contained in:
ReenigneArcher
2022-06-16 16:55:16 -04:00
parent e78ec5c2ce
commit 3663e35ecf
+176 -94
View File
@@ -340,103 +340,185 @@ jobs:
last_version: ${{ needs.check_changelog.outputs.last_version }} last_version: ${{ needs.check_changelog.outputs.last_version }}
release_body: ${{ needs.check_changelog.outputs.release_body }} release_body: ${{ needs.check_changelog.outputs.release_body }}
# build_mac_port: build_mac_port:
# name: Macports name: Macports
# runs-on: macos-11 needs: [check_changelog, build_mac]
# needs: [check_changelog, build_mac] runs-on: ${{ matrix.os }}
# strategy:
# steps: matrix:
# - name: Cache Artifacts os: [ macos-10.15, macos-11, macos-12 ]
# uses: actions/cache@v3
# with: steps:
# path: artifacts - name: Cache Artifacts
# key: ${{ runner.os }}-artifacts uses: actions/cache@v3
# with:
# - name: Setup Macports path: artifacts
# run : | key: ${{ runner.os }}-artifacts
# # update paths for macports
# echo "/opt/local/sbin" >> $GITHUB_PATH - name: Checkout ports
# echo "/opt/local/bin" >> $GITHUB_PATH uses: actions/checkout@v3
# with:
# # Set OpenSSL 1.1 as default repository: macports/macports-ports
# # rm -rf /usr/local/opt/openssl fetch-depth: 64
# # rm -rf /usr/local/bin/openssl path: ports
# # ln -sf /usr/local/Cellar/openssl@1.1/1.1.1o/bin/openssl /usr/local/bin/openssl
# # ln -sf /usr/local/Cellar/openssl@1.1/1.1.1o /usr/local/opt/openssl - name: Checkout mpbb
# uses: actions/checkout@v3
# # download and extract macports with:
# curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.7.2.tar.bz2 repository: macports/mpbb
# tar xf MacPorts-2.7.2.tar.bz2 path: mpbb
#
# # build macports - name: Bootstrap MacPorts
# cd MacPorts-2.7.2 run: |
# ./configure . ports/.github/workflows/bootstrap.sh
# make
# sudo make install - name: Setup Macports
# cd ../ run : |
# rm -rf MacPorts-2.7.2* # Add getopt, mpbb and the MacPorts paths to $PATH for the subsequent steps.
# echo "/opt/mports/bin" >> $GITHUB_PATH
# - name: Configure Macports echo "${PWD}/mpbb" >> $GITHUB_PATH
# run: | echo "/opt/local/bin" >> $GITHUB_PATH
# # update sources echo "/opt/local/sbin" >> $GITHUB_PATH
# sudo port -v selfupdate
# # copy Portfile from artifacts to ports
# # use custom sources mkdir -p ./ports/multimedia/Sunshine
# sudo chmod 777 /opt/local/etc/macports/sources.conf cp -f ./artifacts/Portfile ./ports/multimedia/Sunshine/Portfile
# echo file://$(echo ~)/ports > /opt/local/etc/macports/sources.conf
# echo rsync://rsync.macports.org/macports/release/tarballs/ports.tar [default] >> /opt/local/etc/macports/sources.conf - name: Determine list of subports
# sudo chmod 644 /opt/local/etc/macports/sources.conf id: subportlist
# run: |
# # setup custom port set -eu
# mkdir -p ~/ports/multimedia/sunshine port=Sunshine
# subportlist=""
# # copy configured Portfile
# mv ./artifacts/Portfile ~/ports/multimedia/sunshine/ echo "Listing subports for Sunshine"
# new_subports=$(mpbb \
# # remove remaining cached artifacts --work-dir /tmp/mpbb \
# rm -r -f ./artifacts list-subports \
# mkdir artifacts --archive-site= \
# --archive-site-private= \
# # index the ports --include-deps=no \
# cd ~/ports "$port" \
# portindex | tr '\n' ' ')
# for subport in $new_subports; do
# - name: Build echo "$subport"
# run: | subportlist="$subportlist $subport"
# # build port done
echo "::set-output name=subportlist::${subportlist}"
- name: Run port lint for all subports
run: |
set -eu
fail=0
for subport in $subportlist; do
echo "::group::${subport}"
path=$(port file "$subport")
messagetype="warning"
if ! messages=$(port -q lint "$subport" 2>&1); then
messagetype="error"
fail=1
fi
if [ -n "$messages" ]; then
echo "$messages"
# See https://github.com/actions/toolkit/issues/193#issuecomment-605394935
encoded_messages="port lint ${subport}:%0A"
encoded_messages+="$(echo "${messages}" | sed -E 's/$/%0A/g' | tr -d '\n')"
echo "::${messagetype} file=${path#${PWD}/ports/},line=1,col=1::${encoded_messages}"
fi
echo "::endgroup::"
done
exit "$fail"
env:
subportlist: ${{ steps.subportlist.outputs.subportlist }}
- name: Build subports
run: |
set -eu
fail=0
for subport in $subportlist; do
workdir="/tmp/mpbb/$subport"
mkdir -p "$workdir/logs"
touch "$workdir/logs/dependencies-progress.txt"
echo "::group::Cleaning up between ports"
sudo mpbb --work-dir "$workdir" cleanup
echo "::endgroup::"
echo "::group::Installing dependencies for ${subport}"
sudo mpbb \
--work-dir "$workdir" \
install-dependencies \
"$subport" >"$workdir/logs/install-dependencies.log" 2>&1 &
deps_pid=$!
tail -f "$workdir/logs/dependencies-progress.txt" 2>/dev/null &
tail_pid=$!
set +e
wait "$deps_pid"
deps_exit=$?
set -e
kill "$tail_pid" || true
if [ "$deps_exit" -ne 0 ]; then
echo "::endgroup::"
echo "::error::Failed to install dependencies for ${subport}"
fail=1
continue
fi
echo "::endgroup::"
echo "::group::Installing ${subport}"
set +e
sudo mpbb \
--work-dir "$workdir" \
install-port \
--source \
"$subport"
install_exit=$?
set -e
if [ "$install_exit" -ne 0 ]; then
echo "::endgroup::"
echo "::error::Failed to install ${subport}"
fail=1
continue
fi
echo "::endgroup::"
done
exit "$fail"
env:
subportlist: ${{ steps.subportlist.outputs.subportlist }}
- name: Package
run: |
# build port
# sudo port install sunshine \ # sudo port install sunshine \
# || cat /opt/local/var/macports/logs/_Users_runner_ports_multimedia_sunshine/Sunshine/main.log \ # || cat /opt/local/var/macports/logs/_Users_runner_ports_multimedia_sunshine/Sunshine/main.log \
# && exit 1 # && exit 1
#
# # create packages # create packages
# sudo port dmg sunshine sudo port dmg sunshine
# sudo port pkg sunshine sudo port pkg sunshine
#
# # move # move
# mv $(port work sunshine)/Sunshine*.dmg ./artifacts/sunshine.dmg mv $(port work sunshine)/Sunshine*.dmg ./artifacts/sunshine.dmg
# mv $(port work sunshine)/Sunshine*.ppkg ./artifacts/sunshine.pkg mv $(port work sunshine)/Sunshine*.ppkg ./artifacts/sunshine.pkg
#
# # testing only # testing only
# # ls ~/ports/multimedia/sunshine # ls ~/ports/multimedia/sunshine
# # cat ~/ports/multimedia/sunshine/Portfile # cat ~/ports/multimedia/sunshine/Portfile
# # cat /opt/local/etc/macports/sources.conf # cat /opt/local/etc/macports/sources.conf
# # cat ~/ports/Portindex # cat ~/ports/Portindex
# # port search sunshine # port search sunshine
#
# - name: Upload Artifacts - name: Upload Artifacts
# uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
# with: with:
# name: sunshine-macports name: sunshine-macports
# path: artifacts/ path: artifacts/
#
# - name: Create Release - name: Create Release
# if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
# uses: SunshineStream/actions/create_release@master uses: SunshineStream/actions/create_release@master
# with: with:
# token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
# next_version: ${{ needs.check_changelog.outputs.next_version }} next_version: ${{ needs.check_changelog.outputs.next_version }}
# last_version: ${{ needs.check_changelog.outputs.last_version }} last_version: ${{ needs.check_changelog.outputs.last_version }}
# release_body: ${{ needs.check_changelog.outputs.release_body }} release_body: ${{ needs.check_changelog.outputs.release_body }}
build_win: build_win:
name: Windows name: Windows