Skip to content

Commit 7005b2e

Browse files
committed
fix: update to Newbluecake/bootstrap v0.17.1 for LLVM 17+ support
- Replace deprecated go-clang/bootstrap v0.14.0 with Newbluecake/bootstrap v0.17.1 - Update all imports from github.com/go-clang/bootstrap to github.com/Newbluecake/bootstrap - Fix CI generator failures due to LLVM version mismatch - Update CI to use clang 18 to match new bootstrap version The go-clang/bootstrap project only supports LLVM 14, which was causing undefined symbol errors (CXCursor_OMPArraySectionExpr) when running with newer clang versions. The Newbluecake fork supports LLVM 17+ and resolves these compatibility issues.
1 parent c9e98d7 commit 7005b2e

6 files changed

Lines changed: 23 additions & 17 deletions

File tree

.github/workflows/go.yml

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,23 @@ jobs:
4040
run: |
4141
if [ "${{ matrix.os }}" = "linux" ]; then
4242
sudo apt-get update
43-
sudo apt-get install -y libclang-20-dev llvm-20-dev
44-
echo "CGO_LDFLAGS=-L/usr/lib/llvm-20/lib" >> $GITHUB_ENV
45-
echo "CGO_CFLAGS=-I/usr/lib/llvm-20/include" >> $GITHUB_ENV
46-
# Also try the generic path
47-
echo "LD_LIBRARY_PATH=/usr/lib/llvm-20/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
43+
# Use libclang-18 which works with Newbluecake/bootstrap v0.17.1 (supports clang 17+)
44+
sudo apt-get install -y libclang-18-dev llvm-18-dev
45+
echo "CGO_LDFLAGS=-L/usr/lib/llvm-18/lib" >> $GITHUB_ENV
46+
echo "CGO_CFLAGS=-I/usr/lib/llvm-18/include" >> $GITHUB_ENV
47+
echo "LD_LIBRARY_PATH=/usr/lib/llvm-18/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
4848
elif [ "${{ matrix.os }}" = "darwin" ]; then
49-
brew install llvm
50-
LLVM_PREFIX=$(brew --prefix llvm)
49+
# On macOS, use LLVM 18 to match Linux environment
50+
brew install llvm@18 || brew install llvm
51+
if [ -d "$(brew --prefix llvm@18)" ]; then
52+
LLVM_PREFIX=$(brew --prefix llvm@18)
53+
else
54+
LLVM_PREFIX=$(brew --prefix llvm)
55+
echo "::warning::Using latest LLVM on macOS instead of version 18"
56+
fi
5157
echo "CGO_LDFLAGS=-L${LLVM_PREFIX}/lib" >> $GITHUB_ENV
5258
echo "CGO_CFLAGS=-I${LLVM_PREFIX}/include" >> $GITHUB_ENV
5359
echo "PATH=${LLVM_PREFIX}/bin:$PATH" >> $GITHUB_ENV
54-
# macOS needs explicit library path
5560
echo "DYLD_LIBRARY_PATH=${LLVM_PREFIX}/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV
5661
fi
5762
@@ -69,10 +74,11 @@ jobs:
6974

7075
# The generator creates Go bindings from FFmpeg headers using libclang.
7176
# It's only needed during development when FFmpeg is updated.
72-
# Failures here are acceptable in CI as the generated files are committed.
77+
# Using Newbluecake/bootstrap v0.17.1 which supports LLVM/Clang 17+
7378
- name: Run generator (optional - for development only)
7479
run: |
75-
echo "::notice::Generator requires libclang. Failures are expected if libclang setup differs from development environment."
80+
echo "::notice::Generator uses Newbluecake/bootstrap v0.17.1 which supports LLVM 17+"
81+
echo "::notice::Using LLVM 18 in CI, compatible with the fork's clang 17 support"
7682
echo "Running generator with environment:"
7783
echo "CGO_LDFLAGS=$CGO_LDFLAGS"
7884
echo "CGO_CFLAGS=$CGO_CFLAGS"

flake.nix

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
# LLVM/Clang for code generator (go-clang requires libclang)
4242
# llvmPackages.libclang provides: clang compiler + libclang library
4343
# llvmPackages.llvm provides: llvm-config command
44-
llvmPackages.libclang
45-
llvmPackages.llvm
44+
llvmPackages_18.libclang
45+
llvmPackages_18.llvm
4646
pkg-config
4747
python3
4848
yasm

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ module github.com/linuxmatters/ffmpeg-statigo
33
go 1.24.0
44

55
require (
6+
github.com/Newbluecake/bootstrap v0.17.1
67
github.com/cavaliergopher/grab/v3 v3.0.1
78
github.com/dave/jennifer v1.7.1
89
github.com/gdamore/tcell/v2 v2.10.0
9-
github.com/go-clang/bootstrap v0.14.0
1010
github.com/iancoleman/strcase v0.3.0
1111
github.com/stretchr/testify v1.11.1
1212
github.com/ulikunitz/xz v0.5.15

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
github.com/Newbluecake/bootstrap v0.17.1 h1:yfUxLou9syPjVQ4x+m7NJ46PL0bMMUHqtRONT+t4/8U=
2+
github.com/Newbluecake/bootstrap v0.17.1/go.mod h1:xiE9XKFdGKeolTKzUZxyxEhrxNOUEyjlGIPXFkGqq4Y=
13
github.com/cavaliergopher/grab/v3 v3.0.1 h1:4z7TkBfmPjmLAAmkkAZNX/6QJ1nNFdv3SdIHXju0Fr4=
24
github.com/cavaliergopher/grab/v3 v3.0.1/go.mod h1:1U/KNnD+Ft6JJiYoYBAimKH2XrYptb8Kl3DFGmsjpq4=
35
github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo=
@@ -8,8 +10,6 @@ github.com/gdamore/encoding v1.0.1 h1:YzKZckdBL6jVt2Gc+5p82qhrGiqMdG/eNs6Wy0u3Uh
810
github.com/gdamore/encoding v1.0.1/go.mod h1:0Z0cMFinngz9kS1QfMjCP8TY7em3bZYeeklsSDPivEo=
911
github.com/gdamore/tcell/v2 v2.10.0 h1:u/czxSDixtjOR7UzXXtxHyO4Av2aoZvr2te9TGOaANo=
1012
github.com/gdamore/tcell/v2 v2.10.0/go.mod h1:K2DslmrxoadNP0709mqdgVuM6QcJjzYvJisintiFBfY=
11-
github.com/go-clang/bootstrap v0.14.0 h1:pT2dHsqEfW3zxzNibo1svrtpbh+s/ET6SNohFaIakYM=
12-
github.com/go-clang/bootstrap v0.14.0/go.mod h1:a4EmDb8BXcdDBkMbvviEzrDd2LNZXqY7PwHmeyHKy1k=
1313
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
1414
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
1515
github.com/lucasb-eyer/go-colorful v1.3.0 h1:2/yBRLdWBZKrf7gB40FoiKfAWYQ0lqNcbuQwVHXptag=

internal/generator/parser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"strings"
1010
"unicode"
1111

12-
"github.com/go-clang/bootstrap/clang"
12+
"github.com/Newbluecake/bootstrap/clang"
1313
)
1414

1515
var (

internal/generator/type.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"path/filepath"
77
"strings"
88

9-
"github.com/go-clang/bootstrap/clang"
9+
"github.com/Newbluecake/bootstrap/clang"
1010
)
1111

1212
type Type interface {

0 commit comments

Comments
 (0)