From 4992ac1ca9d3dfae2ded6d7068be8fb60a62c7ac Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Mon, 3 Aug 2026 14:47:20 -0700 Subject: [PATCH] mount: keep the xattr flag constants off freebsd (#10552) * mount: keep the xattr flag constants off freebsd x/sys/unix has no XATTR_CREATE or XATTR_REPLACE there, and weedfs_xattr.go is already tagged away from freebsd for that reason. Putting them in a !windows file dragged them back in, so master stopped building for freebsd. * ci: cross-compile freebsd and darwin too The windows-only check missed a freebsd break in the very file it was added to guard, because nothing else on a pull request compiles them. --- .github/workflows/go.yml | 16 ++++++++++------ weed/mount/syscall_shim_unix.go | 9 +-------- weed/mount/weedfs_xattr_flags_unix.go | 10 ++++++++++ 3 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 weed/mount/weedfs_xattr_flags_unix.go diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 3bf43744f..e7da65c35 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -75,8 +75,8 @@ jobs: - name: Build run: cd weed; go build -tags "elastic gocdk sqlite ydb tarantool tikv rclone" -v . - build-windows: - name: Build windows + build-cross: + name: Build cross-platform runs-on: ubuntu-latest steps: - name: Check out code into the Go module directory @@ -85,10 +85,14 @@ jobs: uses: actions/setup-go@v7 with: go-version-file: 'go.mod' - # weed/mount builds here but cannot mount yet. Without this the unix-only - # syscall constants it needs creep back in unnoticed. - - name: Build windows/amd64 - run: GOOS=windows GOARCH=amd64 go build ./weed/... + # Nothing else on a PR compiles these, so per-OS syscall constants creep + # back into shared files unnoticed and only a release build catches it. + - name: Cross-compile + run: | + for target in windows/amd64 windows/arm64 freebsd/amd64 darwin/arm64; do + echo "== $target" + GOOS=${target%/*} GOARCH=${target#*/} go build ./weed/... + done test: name: Test diff --git a/weed/mount/syscall_shim_unix.go b/weed/mount/syscall_shim_unix.go index acb5f1d77..d2f4bf4e8 100644 --- a/weed/mount/syscall_shim_unix.go +++ b/weed/mount/syscall_shim_unix.go @@ -2,18 +2,11 @@ package mount -import ( - "syscall" - - sys "golang.org/x/sys/unix" -) +import "syscall" const ( f_RDLCK = syscall.F_RDLCK f_WRLCK = syscall.F_WRLCK f_UNLCK = syscall.F_UNLCK o_ACCMODE = syscall.O_ACCMODE - - xattr_CREATE = sys.XATTR_CREATE - xattr_REPLACE = sys.XATTR_REPLACE ) diff --git a/weed/mount/weedfs_xattr_flags_unix.go b/weed/mount/weedfs_xattr_flags_unix.go new file mode 100644 index 000000000..f8187f6c7 --- /dev/null +++ b/weed/mount/weedfs_xattr_flags_unix.go @@ -0,0 +1,10 @@ +//go:build !windows && !freebsd + +package mount + +import sys "golang.org/x/sys/unix" + +const ( + xattr_CREATE = sys.XATTR_CREATE + xattr_REPLACE = sys.XATTR_REPLACE +)