ci: add build.sr.ht configuration

Automate the building and testing process of BookmarkFS using the
builds.sr.ht service, to see whether it still works on:

- Debian, Arch Linux
  * Typical GNU/Linux distros, either stable or cutting-edge.
- Alpine Linux
  * Minimal non-GNU setup, notably BusyBox, TinyCC, musl and pdpmake.
- FreeBSD
  * FreeBSD kernel and userland, including Clang and others.
This commit is contained in:
CismonX 2025-02-27 10:08:26 +08:00
parent b7b8cc88d2
commit 1e1460af0d
No known key found for this signature in database
GPG key ID: 3094873E29A482FB
4 changed files with 176 additions and 0 deletions

46
.builds/alpine.yml Normal file
View file

@ -0,0 +1,46 @@
#
# Copyright (C) 2025 CismonX <admin@cismon.net>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty, provided the copyright notice and
# this notice are preserved. This file is offered as-is, without any warranty.
#
# Switch to alpine/latest once tcc leaves aports/testing
image: alpine/edge
packages: [
# build
autoconf, automake, libtool, autoconf-archive, pkgconf, pdpmake, tcc,
texinfo, musl-dev, tcc-dev, tcc-libs-static,
# lib
fuse3-dev, libseccomp-dev, sqlite-dev, jansson-dev, nettle-dev,
readline-dev, tcl-dev, uriparser-dev, xxhash-dev,
# for fusermount3(1)
fuse3,
]
sources:
- https://git.sr.ht/~cismonx/bookmarkfs
environment:
BUILD_CFLAGS: -g -b -Wall -Wunsupported -Werror=unsupported
# While musl does support _GNU_SOURCE,
# here is a good place to see how well BookmarkFS works with a non-GNU libc.
BUILD_CPPFLAGS: -D_DEFAULT_SOURCE
tasks:
# Use srcdir as builddir, since pdpmake does not support VPATH.
- setup: |
cd bookmarkfs
autoreconf -i
./configure \
--enable-bookmarkfs-debug --enable-xxhash-inline \
--enable-bookmarkfs-util --enable-bookmarkfs-mount \
--enable-bookmarkfs-fsck --enable-bookmarkfs-mkfs \
--enable-bookmarkctl --enable-fsck-handler-tcl \
--enable-backend-firefox --enable-backend-chromium \
CC=tcc CFLAGS="$BUILD_CFLAGS" CPPFLAGS="$BUILD_CPPFLAGS"
- build: |
cd bookmarkfs
pdpmake
pdpmake info
- test: |
cd bookmarkfs
pdpmake check

40
.builds/archlinux.yml Normal file
View file

@ -0,0 +1,40 @@
#
# Copyright (C) 2025 CismonX <admin@cismon.net>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty, provided the copyright notice and
# this notice are preserved. This file is offered as-is, without any warranty.
#
image: archlinux
packages: [
# build
autoconf, automake, libtool, autoconf-archive, pkgconf, make, gcc, texinfo,
# lib
fuse3, libseccomp, sqlite, jansson, nettle, readline, tcl, uriparser, xxhash,
]
sources:
- https://git.sr.ht/~cismonx/bookmarkfs
environment:
BUILD_CFLAGS: >-
-std=c99 -O0 -g -Wall -Wextra -Wpedantic -Wshadow
-fsanitize=address,undefined -fno-sanitize-recover
BUILD_CPPFLAGS: -D_GNU_SOURCE
tasks:
- setup: |
mkdir bookmarkfs/build && cd bookmarkfs/build
autoreconf -i ..
../configure \
--enable-bookmarkfs-debug --enable-xxhash-inline \
--enable-bookmarkfs-util --enable-bookmarkfs-mount \
--enable-bookmarkfs-fsck --enable-bookmarkfs-mkfs \
--enable-bookmarkctl --enable-fsck-handler-tcl \
--enable-backend-firefox --enable-backend-chromium \
CFLAGS="$BUILD_CFLAGS" CPPFLAGS="$BUILD_CPPFLAGS"
- build: |
cd bookmarkfs/build
make
make info
- test: |
cd bookmarkfs/build
make check

43
.builds/debian.yml Normal file
View file

@ -0,0 +1,43 @@
#
# Copyright (C) 2025 CismonX <admin@cismon.net>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty, provided the copyright notice and
# this notice are preserved. This file is offered as-is, without any warranty.
#
image: debian/stable
packages: [
# build
autoconf, automake, libtool, autoconf-archive, pkgconf, make, gcc, texinfo,
# lib
libfuse3-dev, libseccomp-dev, libsqlite3-dev, libjansson-dev, nettle-dev,
libreadline-dev, tcl-dev, liburiparser-dev, libxxhash-dev,
# for fusermount3(1)
fuse3,
]
sources:
- https://git.sr.ht/~cismonx/bookmarkfs
environment:
BUILD_CFLAGS: >-
-std=c99 -O0 -g -Wall -Wextra -Wpedantic -Wshadow
-fsanitize=address,undefined -fno-sanitize-recover
BUILD_CPPFLAGS: -D_GNU_SOURCE
tasks:
- setup: |
mkdir bookmarkfs/build && cd bookmarkfs/build
autoreconf -i ..
../configure \
--enable-bookmarkfs-debug --enable-xxhash-inline \
--enable-bookmarkfs-util --enable-bookmarkfs-mount \
--enable-bookmarkfs-fsck --enable-bookmarkfs-mkfs \
--enable-bookmarkctl --enable-fsck-handler-tcl \
--enable-backend-firefox --enable-backend-chromium \
CFLAGS="$BUILD_CFLAGS" CPPFLAGS="$BUILD_CPPFLAGS"
- build: |
cd bookmarkfs/build
make
make info
- test: |
cd bookmarkfs/build
make check

47
.builds/freebsd.yml Normal file
View file

@ -0,0 +1,47 @@
#
# Copyright (C) 2025 CismonX <admin@cismon.net>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty, provided the copyright notice and
# this notice are preserved. This file is offered as-is, without any warranty.
#
image: freebsd/latest
packages: [
# build
autoconf, automake, libtool, autoconf-archive, pkgconf, texinfo,
# lib
fusefs-libs3, sqlite3, jansson, nettle, readline, tcl86, uriparser, xxhash,
]
sources:
- https://git.sr.ht/~cismonx/bookmarkfs
environment:
BUILD_CFLAGS: >-
-std=c99 -O0 -g -Wall -Wextra -Wpedantic -Wshadow
-fsanitize=address,undefined -fno-sanitize-recover
BUILD_CPPFLAGS: ""
tasks:
# Unlike Debian, FreeBSD Ports does not have a "dependency package" concept,
# and we have to manually create a symlink for Tcl's pkg-config file.
- init: |
cd /usr/local/libdata/pkgconfig
sudo ln -s tcl86.pc tcl.pc
- setup: |
mkdir bookmarkfs/build && cd bookmarkfs/build
autoreconf -i ..
../configure \
--enable-bookmarkfs-debug --enable-xxhash-inline \
--enable-bookmarkfs-util --enable-bookmarkfs-mount \
--enable-bookmarkfs-fsck --enable-bookmarkfs-mkfs \
--enable-bookmarkctl --enable-fsck-handler-tcl \
--enable-backend-firefox --enable-backend-chromium \
CFLAGS="$BUILD_CFLAGS" CPPFLAGS="$BUILD_CPPFLAGS"
- build: |
cd bookmarkfs/build
make
make info
- test: |
sudo kldload fusefs
sudo sysctl vfs.usermount=1
cd bookmarkfs/build
make check