Skip to content

build-procursus-debs #197

build-procursus-debs

build-procursus-debs #197

name: build-procursus-debs
on:
workflow_dispatch:
defaults:
run:
shell: bash
env:
MEMO_TARGET: iphoneos-arm64
NO_PGP: 1
jobs:
build:
runs-on: macos-13
strategy:
matrix:
cfver: [ 1900 ]
steps:
- name: Select Xcode version
run: sudo xcode-select -switch '/Applications/Xcode_15.2.app/Contents/Developer'
- name: Download zstd
id: download-zstd
run: |
dir=$(mktemp -d /tmp/XXXX) && cd "${dir}"
curl -LO https://cameronkatri.com/zstd
chmod +x ./zstd
echo "DIR=${dir}" >> $GITHUB_OUTPUT
- name: Boostrap Procursus
run: |
dir="${{ steps.download-zstd.outputs.DIR }}" && cd "${dir}"
curl -L https://apt.procurs.us/bootstraps/big_sur/bootstrap-darwin-amd64.tar.zst -o bootstrap.tar.zst
./zstd -dk bootstrap.tar.zst
sudo tar -xvvpkf ./bootstrap.tar -C / || :
cd -
rm -vrf "${dir}"
- name: Add Procusus to PATH
run: |
PROCURSUS_PATHS=("/opt/procursus/games" "/opt/procursus/sbin" "/opt/procursus/bin" "/opt/procursus/local/sbin" "/opt/procursus/local/bin")
for i in "${PROCURSUS_PATHS[@]}";
do
case ":$PATH:" in
*:$i:*) echo "$i is already in PATH, not adding";;
*) echo "$i" >> $GITHUB_PATH;;
esac
done
case ":$CPATH:" in
*:/opt/procursus/include:*) echo "/opt/procursus/include already in CPATH, not adding";;
*) echo "CPATH=$CPATH:/opt/procursus/include" >> $GITHUB_ENV;;
esac
case ":$LIBRARY_PATH:" in
*:/opt/procursus/lib:*) echo "/opt/procursus/lib already in LIBRARY_PATH, not adding";;
*) echo "LIBRARY_PATH=$LIBRARY_PATH:/opt/procursus/lib" >> $GITHUB_ENV;;
esac
- name: Create unprivileged user for APT method
run: |
# Taken from Procursus' apt.postinst
set -e
getHiddenUserUid()
{
local __UIDS=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ugr)
local __NewUID
for __NewUID in $__UIDS
do
if [[ $__NewUID -lt 499 ]] ; then
break;
fi
done
echo $((__NewUID+1))
}
if ! id _apt &>/dev/null; then
# add unprivileged user for the apt methods
sudo dscl . -create /Users/_apt UserShell /usr/bin/false
sudo dscl . -create /Users/_apt NSFHomeDirectory /var/empty
sudo dscl . -create /Users/_apt PrimaryGroupID -1
sudo dscl . -create /Users/_apt UniqueID $(getHiddenUserUid)
sudo dscl . -create /Users/_apt RealName "APT Sandbox User"
else
echo "APT Sandbox User already exists, not creating"
fi
- name: Update bootstrap
run: |
sudo apt-get -y update
sudo apt-get -o DPkg::Options::=--force-confdef -y --allow-downgrades dist-upgrade || :
- name: Install necessary packages on macOS
run: |
sudo apt-get install -o DPkg::Options::=--force-confdef -y autoconf automake autopoint \
bash bison cmake curl docbook-xml docbook-xsl fakeroot findutils flex gawk git gnupg \
grep groff gzip ldid libtool make ncurses-bin openssl patch pkg-config po4a python3 \
sed tar triehash xz-utils asciidoc zstd xmlto gnu-getopt libpython3.9-dev ninja
- name: Checkout Procursus
uses: actions/checkout@v4
with:
repository: 'ProcursusTeam/Procursus'
path: 'Procursus'
fetch-depth: 0
- name: Build cacerts
if: ${{ success() || failure() }}
working-directory: ./Procursus
run: |
MEMO_TARGET=$MEMO_TARGET MEMO_CFVER=${{ matrix.cfver }} NO_PGP=$NO_PGP gmake openssh-package
- name: Create build dirs
run: |
mkdir -vp $GITHUB_WORKSPACE/my_repo
- name: Checkout my repo
if: ${{ success() || failure() }}
uses: actions/checkout@v4
with:
token: ${{ secrets.MY_PAT }}
path: 'my_repo'
- name: Config git
if: ${{ success() || failure() }}
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email '30465144+github-actions[bot]@users.noreply.github.com'
- name: Commit packages
if: ${{ success() || failure() }}
working-directory: my_repo
run: |
rm -vrf ../Procursus/build_dist/$MEMO_TARGET/${{ matrix.cfver }}/work/
rsync --progress -r -u -v ../Procursus/build_dist/$MEMO_TARGET/${{ matrix.cfver }}/* ./repos/${{ matrix.cfver }}/debs/
git add -v .
git commit -v -m "Upload packages"
- name: Push bootstrap and packages
if: ${{ success() || failure() }}
working-directory: my_repo
run: |
git push -v