internal_pkgbuild/.github/workflows/arm64_build.yml
2022-12-08 13:03:27 +02:00

141 lines
5.5 KiB
YAML

name: ARM64 - Package build
on:
push:
branches:
- master
paths:
- 'aarch64/**'
pull_request:
paths:
- 'aarch64/**'
workflow_dispatch:
inputs:
packages:
description: "A space-separated names of packages selected for rebuilding"
required: true
jobs:
build:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@v3
with:
fetch-depth: 1000
-
name: Docker Setup QEMU
uses: docker/setup-qemu-action@v2
with:
image: tonistiigi/binfmt:latest
platforms: arm64,arm
- name: Clean up workflow env
run: |
# Free up space ( for this workflow )
# sudo apt purge -yq $(dpkg -l | grep '^ii' | awk '{ print $2 }' | grep -P '(cabal-|dotnet-|ghc-|libmono|php)') \
# liblldb-6.0 libllvm6.0:amd64 mono-runtime-common monodoc-manual powershell ruby
# sudo apt autoremove -yq
# sudo rm -rf /opt/hostedtoolcache /usr/local /usr/share/dotnet /usr/share/swift
# Move some stuff
cd /home/runner/work/drunk_pkg/
mkdir -p DRUNK/pkgbuild
cp -rf /home/runner/work/drunk_pkg/drunk_pkg/* DRUNK/pkgbuild
mv -f DRUNK drunk_pkg
- name: prepare build env
run: |
# Basics
export HEAD_COMMIT=$(jq --raw-output .commits[-1].id "$GITHUB_EVENT_PATH")
# Clone and install required deps
mkdir -p /home/runner/work/drunk_pkg/drunk_pkg/DRUNK/
cd /home/runner/work/drunk_pkg/drunk_pkg/DRUNK
git clone https://git.it-kuny.ch/drunk/tools.git tools --depth=10
mkdir -p tools/tmp
# Checkout the changed commitid
cd pkgbuild && git reset --hard ${HEAD_COMMIT}
cd /home/runner/work/drunk_pkg/drunk_pkg/DRUNK
ln -sf tools/drunk.sh drunk
mkdir -p tools/tmp
# Now prepare drunk build env
# As were running in ubuntu env then we need to bypass normal checks of script
touch tools/checks/is_checked
- name: Setup docker
run: |
cd /home/runner/work/drunk_pkg/drunk_pkg/DRUNK
export P_ROOT=$(pwd)
# Pull correct docker image
docker container create \
--name drunk_dev \
--volume $P_ROOT:/home/developer/DRUNK \
--tty \
--privileged \
--device=/dev/loop-control:/dev/loop-control \
--device=/var/run/docker.sock:/var/run/docker.sock \
--device=/dev/loop0:/dev/loop0 \
--env PATH=/bin:/sbin:/usr/bin:/usr/sbin \
--env LD_LIBRARY_PATH=/lib64:/lib:/usr/lib \
hilledkinged/drunk:aarch64 /bin/bash
sleep 1
sudo docker start drunk_dev >/dev/null
sleep 1
sudo docker exec --tty -e PATH=/bin:/sbin:/usr/bin:/usr/sbin drunk_dev /bin/bash -c "bottle -Sy --needed --noconfirm --disable-download-timeout drunk-base systemd util-linux binutils coreutils"
sudo docker exec --tty -e PATH=/bin:/sbin:/usr/bin:/usr/sbin drunk_dev /bin/bash -c "rm -rf /var/lib/bottle/sync/*"
sudo docker exec --tty -e PATH=/bin:/sbin:/usr/bin:/usr/sbin drunk_dev /bin/bash -c "useradd developer -m -g wheel"
sudo docker exec --tty -e PATH=/bin:/sbin:/usr/bin:/usr/sbin drunk_dev /bin/bash -c "bash -c /home/developer/DRUNK/tools/docker/developer.sh"
sudo docker exec --tty -e PATH=/bin:/sbin:/usr/bin:/usr/sbin drunk_dev /bin/bash -c "bottle -Syu --needed --noconfirm --disable-download-timeout"
sudo docker exec --tty -e PATH=/bin:/sbin:/usr/bin:/usr/sbin drunk_dev /bin/bash -c "bash -c /home/developer/DRUNK/tools/docker/developer.sh"
sudo docker exec --tty -e PATH=/bin:/sbin:/usr/bin:/usr/sbin drunk_dev /bin/bash -c "bottle --needed --noconfirm --disable-download-timeout -Sy sudo cmake pkgconf patch diffutils mpfr mpc m4 grep sed gawk drunk-dev drunk-install-scripts"
sudo docker exec --tty -e PATH=/bin:/sbin:/usr/bin:/usr/sbin drunk_dev /bin/bash -c "bash -c /home/developer/DRUNK/tools/docker/fix_sudo.sh"
sudo docker exec --tty -e PATH=/bin:/sbin:/usr/bin:/usr/sbin drunk_dev /bin/bash -c "bash -c /home/developer/DRUNK/tools/docker/locale.sh"
# Make sure to tell the setup that container is ready to be used ( otherwise it will error out )
touch /home/runner/work/drunk_pkg/drunk_pkg/DRUNK/tools/checks/docker_ready
- name: PKG Build
run: |
# Perms fix
iamnow=$(whoami)
echo $iamnow
sudo chmod -R 777 /home/runner/work/drunk_pkg/drunk_pkg/DRUNK
sudo chmod +x /home/runner/work/drunk_pkg/drunk_pkg/DRUNK/drunk
sudo chmod +x /home/runner/work/drunk_pkg/drunk_pkg/DRUNK/tools/drunk.sh
# Create pkg list to compile
cd /home/runner/work/drunk_pkg/drunk_pkg/DRUNK/pkgbuild
./changed.sh > ../pkglist
# Build the packages in docker env
cd /home/runner/work/drunk_pkg/drunk_pkg/DRUNK
# Print pkg's
echo " "
echo "[List of pkgs to build]: " && cat pkglist
echo " "
./drunk --aarch64 -d -b $(cat pkglist)
# Now lets move the packages to certain path
mkdir -p /home/runner/work/drunk_pkg/drunk_pkg/DRUNK/pkgs
mv pkgbuild/pkgs/*/*pkg.tar.gz /home/runner/work/drunk_pkg/drunk_pkg/DRUNK/pkgs
- name: "Upload the pkg's"
uses: actions/upload-artifact@v3
with:
path: /home/runner/work/drunk_pkg/drunk_pkg/DRUNK/pkgs/*pkg.tar.gz