6 Commits

Author SHA1 Message Date
1db4ecb1bb ci: fix build cache path
All checks were successful
Gentoo Utils / build-oci-image (push) Successful in 11m3s
Gentoo Utils / grep (push) Successful in 1m21s
Gentoo Utils / check-format (push) Successful in 1m32s
Gentoo Utils / docs (push) Successful in 1m38s
Gentoo Utils / test (push) Successful in 1m58s
Gentoo Utils / build (push) Successful in 2m41s
Gentoo Utils / fuzz (push) Successful in 2m46s
2025-12-27 17:56:27 -06:00
7683a94b59 ci: redo docker build logic 2025-12-27 12:42:40 -06:00
69bde9b17f ci: image: use gentoo repo with EGIT_OVERRIDE_REPO_MESONBUILD_MESON for meson
All checks were successful
Gentoo Utils / build-oci-image (push) Successful in 7m34s
Gentoo Utils / grep (push) Successful in 1m8s
Gentoo Utils / check-format (push) Successful in 1m17s
Gentoo Utils / docs (push) Successful in 1m28s
Gentoo Utils / build (push) Successful in 1m39s
Gentoo Utils / test (push) Successful in 32s
Gentoo Utils / fuzz (push) Successful in 1m21s
2025-12-27 11:12:50 -06:00
db68959c73 Merge pull request 'CI: Use generic runner label 'gentoo'' (#15) from feature/switch-ci-to-generic-gentoo-runner-labels into master
All checks were successful
Gentoo Utils / build-oci-image (push) Successful in 10s
Gentoo Utils / docs (push) Successful in 18s
Gentoo Utils / build (push) Successful in 26s
Gentoo Utils / fuzz (push) Successful in 1m23s
Gentoo Utils / grep (push) Successful in 1m56s
Gentoo Utils / check-format (push) Successful in 2m5s
Gentoo Utils / test (push) Successful in 1m59s
Reviewed-on: #15
2025-12-24 11:18:42 -06:00
96708614ba port to meson cargo
All checks were successful
Gentoo Utils / build-oci-image (push) Successful in 22s
Gentoo Utils / grep (push) Successful in 1m1s
Gentoo Utils / check-format (push) Successful in 1m26s
Gentoo Utils / docs (push) Successful in 1m31s
Gentoo Utils / build (push) Successful in 1m43s
Gentoo Utils / test (push) Successful in 36s
Gentoo Utils / fuzz (push) Successful in 1m21s
Use the new unstable meson cargo support. This simplifies the
meson.build script and allows to use crates such as clap that require
picking up features from Cargo.toml.

This also allows us to not embed thiserror in subprojects, and instead
use a wrap file with a custom meson.build and some patches to make it
compile without running its build.rs script.
2025-12-22 08:05:20 +00:00
7969a0d8c0 ci: use generic label 'gentoo' which maps to any runner capable of running gentoo jobs
All checks were successful
Gentoo Utils / docs (push) Successful in 16s
Gentoo Utils / fuzz (push) Successful in 1m12s
Gentoo Utils / build-oci-image (push) Successful in 10s
Gentoo Utils / grep (push) Successful in 4s
Gentoo Utils / check-format (push) Successful in 10s
Gentoo Utils / build (push) Successful in 22s
Gentoo Utils / test (push) Successful in 37s
2025-12-21 14:10:17 -06:00
6 changed files with 84 additions and 63 deletions

View File

@@ -2,29 +2,23 @@ FROM gentoo/stage3:latest
COPY ./. /
ENV EGIT_CLONE_TYPE=shallow
RUN getuto
RUN emerge-webrsync
RUN mkdir -p /var/cache/distfiles/git3-src && chown portage:portage /var/cache/distfiles/git3-src
ENV EGIT_OVERRIDE_REPO_MESONBUILD_MESON=https://jturnerusa.dev/cgit/meson
RUN emerge \
=dev-lang/rust-bin-9999 \
=dev-build/meson-9999::gentoo \
llvm-core/clang \
llvm-core/lld \
dev-vcs/git \
sys-process/parallel \
net-libs/nodejs
RUN git clone https://jturnerusa.dev/cgit/ebuilds/ /var/db/repos/spawns
COPY etc/portage/repos.conf /etc/portage/
RUN mkdir -p /var/cache/distfiles/git3-src && chown portage:portage /var/cache/distfiles/git3-src
RUN emerge =dev-build/meson-9999::spawns
RUN useradd -m gentooligan
USER gentooligan

View File

@@ -0,0 +1 @@
sec-keys/jturnerusa

View File

@@ -22,54 +22,48 @@ jobs:
key: gitea-repo-${{ gitea.repository }}-${{ gitea.ref }}
- name: Checkout repo
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Check for changes before building
- name: Detect Changes
uses: dorny/paths-filter@v3
id: image-changes
# build image only if 1. changes are detected or 2. an image for the working branch doesnt exist
with:
filters: |
docker:
- ".docker/**"
- name: Metadata
id: metadata
run: |
branch_name="${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}"
default_branch_name="${{ gitea.event.repository.default_branch }}"
image_tag=latest
comparison_hash="${{ gitea.event.before }}"
if [[ "$branch_name" != "$default_branch_name" ]]; then
image_tag=$branch_name
fi
# slugify
image_tag="$(echo "$image_tag" | sed -E 's/[^a-zA-Z0-9]/-/g')"
# rebase breaks gitea.event.before, so check to make sure the hash provided exists
if ! git merge-base --is-ancestor $comparison_hash $branch_name >/dev/null 2>&1; then
comparison_hash=$(git merge-base origin/$default_branch_name $branch_name)
fi
if ! git diff $comparison_hash ${{ gitea.sha }} --no-patch --exit-code .docker; then
build_image=true
else
if ! docker manifest inspect ${{ vars.REGISTRY_URL }}/${{ gitea.repository }}:${image_tag} >/dev/null 2>&1; then
build_image=true
else
build_image=false
if [[ $default_branch_name != $branch_name ]]; then
this_image_tag="$(echo "$branch_name" | sed -E 's/[^a-zA-Z0-9]/-/g')"
echo "steps... ${{ steps.image-changes.outputs.docker }}"
if [[ ${{ steps.image-changes.outputs.docker }} == true ]] || docker manifest inspect ${{ vars.REGISTRY_URL }}/${{ gitea.repository }}:${this_image_tag} >/dev/null 2>&1; then
image_tag=$this_image_tag
fi
else
build_image=true
fi
echo "default_branch_name=$default_branch_name" >> $GITEA_OUTPUT
echo "branch_name=$branch_name" >> $GITEA_OUTPUT
echo "image_tag=$image_tag" >> $GITEA_OUTPUT
echo "comparison_hash=$comparison_hash" >> $GITEA_OUTPUT
echo "build_image=$build_image" >> $GITEA_OUTPUT
echo "build_image=${build_image:-${{ steps.image-changes.outputs.docker }}}" >> $GITEA_OUTPUT
cat $GITEA_OUTPUT
- name: Set up Docker buildx
if: steps.image-changes.outputs.build_image == 'true'
if: steps.metadata.outputs.build_image == 'true'
uses: docker/setup-buildx-action@v3
with:
driver-opts: network=runners-net
- name: Log in to Github Container Registry
if: steps.image-changes.outputs.build_image == 'true'
if: steps.metadata.outputs.build_image == 'true'
uses: docker/login-action@v3
with:
registry: ${{ vars.REGISTRY_URL }}
@@ -77,47 +71,58 @@ jobs:
password: ${{ secrets.CI_BOT_TOKEN }}
- name: Build and push
if: steps.image-changes.outputs.build_image == 'true'
if: steps.metadata.outputs.build_image == 'true'
uses: docker/build-push-action@v6
with:
push: true
tags: ${{ vars.REGISTRY_URL }}/${{ gitea.repository }}:${{ steps.image-changes.outputs.image_tag }}
tags: ${{ vars.REGISTRY_URL }}/${{ gitea.repository }}:${{ steps.metadata.outputs.image_tag }}
context: "{{defaultContext}}:.docker"
cache-from: type=gha
cache-to: type=gha,mode=max
outputs:
image_tag: ${{ steps.image-changes.outputs.image_tag }}
image_tag: ${{ steps.metadata.outputs.image_tag }}
build:
runs-on: brutalisk
runs-on: gentoo
env:
CC: 'clang'
CXX: 'clang++'
CC: "clang"
CXX: "clang++"
needs: build-oci-image
container:
image: ${{ vars.REGISTRY_URL }}/${{ gitea.repository }}:${{ needs.build-oci-image.outputs.image_tag }}
steps:
- name: Checkout repo
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: build and check
# TODO: This is currently unused by other jobs. I couldn't make meson not regenerate things regardless of
# the build dir already existing.
- name: Build Cache Setup
uses: actions/cache@v5
with:
path: |
subprojects
build
key: build-${{ gitea.repository }}-${{ gitea.sha }}
- name: Build
run: |
meson setup -Dfuzz=enabled -Dtests=enabled -Dbuildtype=debugoptimized -Ddocs=enabled build
meson compile -C build
# FIXME: Currently this rebuilds everything. Instead we should bring over the build dir from the build job. This will come in handy
# when we have multiple build targets and configs. What we have currently is fine until we get lots of builds going
test:
runs-on: brutalisk
runs-on: gentoo
env:
CC: 'clang'
CXX: 'clang++'
needs: [build-oci-image, build]
CC: "clang"
CXX: "clang++"
needs: [build-oci-image]
container:
image: ${{ vars.REGISTRY_URL }}/${{ gitea.repository }}:${{ needs.build-oci-image.outputs.image_tag }}
steps:
- name: Checkout repo
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: test
run: |
@@ -126,17 +131,17 @@ jobs:
ninja test -C build
fuzz:
runs-on: brutalisk
runs-on: gentoo
env:
CC: 'clang'
CXX: 'clang++'
CC: "clang"
CXX: "clang++"
FUZZER_TIMEOUT_S: 300
needs: [build-oci-image, build]
needs: [build-oci-image]
container:
image: ${{ vars.REGISTRY_URL }}/${{ gitea.repository }}:${{ needs.build-oci-image.outputs.image_tag }}
steps:
- name: Checkout repo
uses: actions/checkout@v5
uses: actions/checkout@v6
# FIXME: Get rid of this step when portage has fixes merged?
# needed because portage has fixes upstream we need that arent stable yet
@@ -158,13 +163,13 @@ jobs:
continue-on-error: true
check-format:
runs-on: brutalisk
runs-on: gentoo
needs: [build-oci-image]
container:
image: ${{ vars.REGISTRY_URL }}/${{ gitea.repository }}:${{ needs.build-oci-image.outputs.image_tag }}
steps:
- name: Checkout repo
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Check Formatting
run: |
@@ -173,13 +178,13 @@ jobs:
ninja rustfmt -C build
docs:
runs-on: brutalisk
runs-on: gentoo
needs: [build-oci-image]
container:
image: ${{ vars.REGISTRY_URL }}/${{ gitea.repository }}:${{ needs.build-oci-image.outputs.image_tag }}
steps:
- name: Checkout repo
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Build Documentation
run: |
@@ -187,13 +192,13 @@ jobs:
ninja rustdoc -C docs
grep:
runs-on: brutalisk
runs-on: gentoo
needs: [build-oci-image]
container:
image: ${{ vars.REGISTRY_URL }}/${{ gitea.repository }}:${{ needs.build-oci-image.outputs.image_tag }}
steps:
- name: Checkout repo
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: grep for patterns
# negate git grep ret code because 1 means no findings

3
.gitignore vendored
View File

@@ -2,4 +2,5 @@
/subprojects
!/subprojects
/subprojects/*
!/subprojects/packagefiles
!/subprojects/packagefiles
!/subprojects/*.wrap

View File

@@ -0,0 +1,10 @@
[wrap-file]
directory = thiserror-2.0.17
source_url = https://crates.io/api/v1/crates/thiserror/2.0.17/download
source_filename = thiserror-2.0.17.tar.gz
source_hash = f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8
method = cargo
diff_files = thiserror-2.0.17-include.patch
# bump this version number on every change to meson.build or the patches:
# v2

View File

@@ -0,0 +1,10 @@
[wrap-file]
directory = thiserror-impl-2.0.17
source_url = https://crates.io/api/v1/crates/thiserror-impl/2.0.17/download
source_filename = thiserror-impl-2.0.17.tar.gz
source_hash = 3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913
method = cargo
diff_files = thiserror-impl-2.0.17-include.patch
# bump this version number on every change to meson.build or the patches:
# v2