Skip to content

Migrate FreeBSD CI from Cirrus to GitHub Actions#673

Closed
cberner wants to merge 3 commits intocberner:masterfrom
cberner-devin:claude/fix-ci-test-failures-M0atM
Closed

Migrate FreeBSD CI from Cirrus to GitHub Actions#673
cberner wants to merge 3 commits intocberner:masterfrom
cberner-devin:claude/fix-ci-test-failures-M0atM

Conversation

@cberner
Copy link
Copy Markdown
Owner

@cberner cberner commented Apr 12, 2026

Summary

This PR migrates the FreeBSD continuous integration pipeline from Cirrus CI to GitHub Actions, while also fixing a bug in the FreeBSD mount implementation where ACL options were not being passed through to the mount_fusefs command.

Key Changes

  • CI Migration: Moved FreeBSD testing from .cirrus.yml to a new freebsd-ci job in .github/workflows/ci.yml using the cross-platform-actions/action@v1.0.0 to run tests on FreeBSD 14.3
  • Bug Fix: Fixed fuse_mount_mount_fusefs() function to properly handle ACL (Access Control List) options by:
    • Adding acl: SessionACL parameter to the function signature
    • Passing the acl parameter from the caller in fuse_mount_fusermount()
    • Including ACL mount options in the command-line arguments sent to mount_fusefs

Implementation Details

  • The FreeBSD CI job performs the same setup and testing steps as the previous Cirrus configuration, including PJDFS test suite installation and execution
  • ACL options are now properly converted to mount option strings and appended to the options list before being passed to the mount_fusefs binary
  • The fix ensures that session ACL settings are respected on FreeBSD systems, which use mount_fusefs instead of the standard fusermount utility

https://claude.ai/code/session_017h551yq57ivFUqcJyAmAfv

cberner and others added 3 commits April 12, 2026 13:15
The fuse_mount_mount_fusefs function (FreeBSD mount path) was not
receiving or applying the SessionACL parameter, so the allow_other
mount option was never passed to mount_fusefs. This caused the FreeBSD
kernel to return EPERM for all operations by non-owner users (e.g. uid
65534 in pjdfstest), since only the mount owner was allowed access.

Pass the acl parameter through and convert it to the allow_other mount
option, matching the behavior of the Linux fusermount path.

https://claude.ai/code/session_017h551yq57ivFUqcJyAmAfv
The cross-platform-actions teardown rsyncs files back as a non-root
user, which fails on .lock files in target/debug/incremental/ created
by the sudo cargo steps. Remove the target directory after tests
complete to avoid this rsync error.

https://claude.ai/code/session_017h551yq57ivFUqcJyAmAfv
@cberner cberner closed this Apr 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants