Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(repo): add beta/pre-release packages #10

Merged
merged 1 commit into from
Jul 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 117 additions & 10 deletions .github/workflows/build-repo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,31 @@ jobs:
build-pacman-repo:
runs-on: ubuntu-latest
container:
image: archlinux:base-devel
image: archlinux/archlinux:base-devel
env:
DISPLAY: ":1"
strategy:
fail-fast: false
matrix:
include:
- repo: lizardbyte
release_name: stable
- repo: lizardbyte-beta
release_name: beta
steps:
- name: Container Setup
run: |
pacman -Syy --disable-download-timeout --needed --noconfirm \
archlinux-keyring
pacman -Syu --disable-download-timeout --needed --noconfirm \
archlinux-keyring \
base-devel \
cmake \
cuda \
git \
reflector \
jq \
wget \
xorg-server-xvfb
- name: Update mirrors
run: |
reflector --latest 10 --protocol http,https --sort rate --save /etc/pacman.d/mirrorlist
pacman -Scc --noconfirm
- name: Download Pacman Repo Builder
env:
Expand All @@ -44,17 +53,114 @@ jobs:
-O /usr/bin/build-pacman-repo
chmod +x /usr/bin/build-pacman-repo
# patch makepkg to allow running as root
build-pacman-repo patch-makepkg --replace
- name: Checkout
uses: actions/checkout@v4

- name: Download and Patch beta PKGBUILDs
if: matrix.repo == 'lizardbyte-beta'
run: |
# we don't want any stable packages to be built, so remove them
rm -rf pkgbuilds
mkdir -p pkgbuilds
cd pkgbuilds
while IFS=' ' read -r repo og_pkg_name updated_pkg_name release_asset; do
# Skip lines that start with #
[[ $repo =~ ^#.*$ ]] && continue
echo "repo: ${repo}"
echo "og_pkg_name: ${og_pkg_name}"
echo "updated_pkg_name: ${updated_pkg_name}"
echo "release_asset: ${release_asset}"
# get the first release with the specified asset (pre-releases first, followed by stable)
latest_release=$(
curl -s "https://api.github.com/repos/${repo}/releases" | \
jq -r --arg release_asset "${release_asset}" '
map(.assets[] | select(.name == $release_asset) | .browser_download_url) |
first
'
)
echo "latest_release: ${latest_release}"
if [[ -z "${latest_release}" ]]; then
echo "::warning:: No pre-release found for ${repo} with asset ${release_asset}"
continue
fi
mkdir -p ${updated_pkg_name}
pushd ${updated_pkg_name}
wget "${latest_release}" -O "${updated_pkg_name}.pkg.tar.gz"
# extract the package
tar -xvf "${updated_pkg_name}.pkg.tar.gz"
rm "${updated_pkg_name}.pkg.tar.gz"
# sed PKGBUILD
sed -i "s/pkgname='${og_pkg_name}'/pkgname='${updated_pkg_name}'/" PKGBUILD
sed -i "s/provides=(.*)/provides=('${og_pkg_name}')/" PKGBUILD
sed -i "s/conflicts=(.*)/conflicts=('${og_pkg_name}')/" PKGBUILD
# Check if provides is missing and append if necessary
if ! grep -q "^provides=" PKGBUILD; then
echo "provides=('${og_pkg_name}')" >> PKGBUILD
fi
# Check if conflicts is missing and append if necessary
if ! grep -q "^conflicts=" PKGBUILD; then
echo "conflicts=('${og_pkg_name}')" >> PKGBUILD
fi
echo "new PKGBUILD:"
cat PKGBUILD
# re-generate .SRCINFO
makepkg --printsrcinfo > .SRCINFO
# list files
echo "files in ${updated_pkg_name}:"
ls -a
popd
done < ../beta-repos.conf
- name: Init
run: |
# create the destination directory for built packages
mkdir -p repo
# patch the build flags
sed -i 's,#MAKEFLAGS="-j2",MAKEFLAGS="-j$(nproc)",g' /etc/makepkg.conf
# start Xvfb which may be used for unit tests
Xvfb ${DISPLAY} -screen 0 1024x768x24 &
- name: Build Pacman Repo
run: |
build-pacman-repo patch-makepkg --replace
source /etc/profile # ensure cuda is in the PATH
# generate build-pacman-repo.yaml
build-pacman-repo print-config \
--repository repo/${{ matrix.repo }}.db.tar.gz \
--container pkgbuilds \
--require-pkgbuild \
--require-srcinfo \
--with-record-failed-builds repo/failed-build-records.yaml \
--with-install-missing-dependencies true \
--with-clean-before-build false \
--with-clean-after-build false \
--with-force-rebuild true \
--with-pacman pacman \
--with-arch-filter x86_64 \
--with-check inherit \
--with-packager "${{ secrets.GH_BOT_NAME }} <${{ secrets.GH_BOT_EMAIL }}>" \
--with-allow-failure false \
--with-dereference-database-symlinks true \
> build-pacman-repo.yaml
build-pacman-repo build
- name: Create/Update GitHub Release
Expand All @@ -66,7 +172,8 @@ jobs:
artifacts: repo/*
bodyFile: README.md
commit: master
name: repo
makeLatest: ${{ matrix.repo == 'lizardbyte' && 'true' || 'false' }}
name: ${{ matrix.release_name }}
prerelease: false
tag: repo
tag: ${{ matrix.release_name }}
token: ${{ secrets.GH_BOT_TOKEN }}
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ SigLevel = Optional
Server = https://github.com/LizardByte/pacman-repo/releases/latest/download
```

```conf
[lizardbyte-beta]
SigLevel = Optional
Server = https://github.com/LizardByte/pacman-repo/releases/beta/download
```

Then, run `sudo pacman -Sy` to update repository.

## Packages
Expand All @@ -25,17 +31,20 @@ Then, run `sudo pacman -Sy` to update repository.

```bash
pacman -Sl lizardbyte
pacman -Sl lizardbyte-beta
```

### Install repo packages

```bash
sudo pacman -S lizardbyte/<package-name>
sudo pacman -S lizardbyte-beta/<package-name>
```

e.g.
```bash
sudo pacman -S lizardbyte/sunshine
sudo pacman -S lizardbyte-beta/sunshine-git
```

## Considerations
Expand Down
2 changes: 2 additions & 0 deletions beta-repos.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# repo_owner/repo_name og_pkg_name updated_pkg_name release_asset_file_name
lizardbyte/sunshine sunshine sunshine-git sunshine.pkg.tar.gz
19 changes: 0 additions & 19 deletions build-pacman-repo.yaml

This file was deleted.