arch-makepkg/action.yml

130 lines
3.3 KiB
YAML

---
name: makepkg
description: Build Arch Linux Packages.
author: Michael Sasser <info@michaelsasser.org>
branding:
icon: shield
color: blue
inputs:
update_package_database:
description: Download fresh package databases before building.
required: false
default: "true"
update_checksum:
description: Update the checksum before building the package.
required: false
default: "true"
lint_pkgbuild:
description: Run namecap on the PKGBUILD.
required: false
default: "true"
install_package:
description: Install the package after it was built.
required: false
default: "true"
lint_package:
description: Run namecap on the resulting package.
required: false
default: "true"
outputs:
package:
description: "The name of the package file built by this action"
value: ${{ steps.package.outputs.name }}
runs:
using: composite
steps:
- name: Update Package Database
if: inputs.update_package_database == 'true'
shell: bash
run: |
echo '::group::Pacman Version'
pacman --version
echo '::endgroup::'
echo '::group::Pacman Update Package Database Output'
sudo pacman -Sy --noconfirm
echo '::endgroup::'
- name: Update checksums
if: inputs.update_checksum == 'true'
shell: bash
run: |
echo '::group::updpkgsums Version'
updpkgsums --version
echo '::endgroup::'
echo '::group::updpkgsums Output'
updpkgsums
echo '::endgroup::'
- name: Download & Extract Packages
shell: bash
run: |
echo '::group::PKGBUILD File Content'
cat PKGBUILD
echo '::endgroup::'
echo '::group::makepkg Version'
makepkg --version
echo '::endgroup::'
echo '::group::Download and Extract Package Output'
makepkg -so --noconfirm --needed
echo '::endgroup::'
echo '::group::Source Directory Content'
ls -la src/
echo '::endgroup::'
- name: Lint PKGBUILD
shell: bash
if: inputs.lint_pkgbuild == 'true'
run: |
echo '::group::Namcap Version'
namcap --version
echo '::endgroup::'
echo '::group::Lint Result - PKGBUILD'
namcap PKGBUILD
echo '::endgroup::'
- name: Build
shell: bash
run: |
echo '::group::Build Output'
if [ ${{ inputs.install_package }} = 'true' ]; then
makepkg -si --skipchecksums --skippgpcheck --noconfirm --needed
else
makepkg -s --skipchecksums --skippgpcheck --noconfirm --needed
fi
echo '::endgroup::'
echo '::group::Directory Content After Build'
ls -la
echo '::endgroup::'
- name: Lint Package(s)
if: inputs.lint_package == 'true'
shell: bash
run: |
echo '::group::Lint Result - Package'
namcap *.pkg.tar.zst
echo '::endgroup::'
# TODO: Check if there are pre-existing files that match this and exclude them there
- name: Set Output
id: package
shell: bash
run: |
files=(*.pkg.tar.zst)
if [[ "${#files[@]}" == 1 ]]; then
echo "name=${files[0]}" >> $GITHUB_OUTPUT
else
echo "::error title=packages::The number of packages in the output is greater than 1."
exit 1
fi