From 4dc26f87b5bec8b256d29c9f97f130e12083750d Mon Sep 17 00:00:00 2001 From: Vasiliy Doylov Date: Sat, 7 Jun 2025 14:53:08 +0300 Subject: [PATCH] Alpine package builder action Signed-off-by: Vasiliy Doylov --- action.yaml | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ get_exclusive | 15 +++++++++++++ get_packages | 1 + 3 files changed, 77 insertions(+) create mode 100644 action.yaml create mode 100755 get_exclusive create mode 100755 get_packages diff --git a/action.yaml b/action.yaml new file mode 100644 index 0000000..aeb0a3c --- /dev/null +++ b/action.yaml @@ -0,0 +1,61 @@ +name: "Build alpine package" +description: "Build alpine package using pmbootstrap" +inputs: + name: + description: "aport name to build" + required: true + aports: + description: "directory containing the APKBUILD file" + required: true + arch: + description: "arch to build" + required: true + default: aarch64 + src: + description: "source dir" + required: true + +outputs: + packages: + description: "Built files" + value: ${{steps.built-packages.outputs.packages}} + +runs: + using: "composite" + steps: + - name: Set up dirrectories + shell: sh + run: > + mkdir -p {{env.PMB_WORK}}/packages/edge/${{inputs.arch}} && + mkdir -p ${{env.PMB_PMAPORTS}}/nekocwd && + rm -rf ${{env.PMB_PMAPORTS}}/nekocwd/${{inputs.name}} + + - name: List packages + id: old-packages + shell: sh + run: ${{ github.action_path }}/get_packages + env: + PKGDIR: ${{env.PMB_WORK}}/packages/edge/${{inputs.arch}} + + - name: Copy APKBUILD to this dir + run: cp -rfpv ${{inputs.aports}} ${{env.PMB_PMAPORTS}}/nekocwd/${{inputs.name}} + shell: sh + + - name: Run PostmarketOS build + run: pmbootstrap build --force ${{inputs.name}} --src ${{inputs.src}} --arch ${{inputs.arch}} + shell: sh + + - name: List packages + id: new-packages + shell: sh + run: ${{ github.action_path }}/get_packages + env: + PKGDIR: ${{env.PMB_WORK}}/packages/edge/${{inputs.arch}} + + - name: Get built packages + id: built-packages + shell: sh + run: ${{ github.action_path }}/get_exclusive + env: + OLD_PACKAGES: ${{steps.old-packages.outputs.packages}} + NEW_PACKAGES: ${{steps.new-packages.outputs.packages}} diff --git a/get_exclusive b/get_exclusive new file mode 100755 index 0000000..d7f6f0c --- /dev/null +++ b/get_exclusive @@ -0,0 +1,15 @@ +#!/bin/bash + +main_list=($NEW_PACKAGES) +remove_list=($OLD_PACKAGES) + +temp_file=$(mktemp) + +for line in "${main_list[@]}"; do + if ! printf '%s\n' "${remove_list[@]}" | grep -qx "$line"; then + echo "$line" >> "$temp_file" + fi +done + +echo packages=$(cat $temp_file) >> $GITHUB_OUTPUT +rm "$temp_file" diff --git a/get_packages b/get_packages new file mode 100755 index 0000000..16f5e4a --- /dev/null +++ b/get_packages @@ -0,0 +1 @@ +echo packages=$(ls ${PKGDIR}/*.apk 2> /dev/null || true) >> $GITHUB_OUTPUT