99jobs :
1010 build :
1111 name : Build & Test
12- runs-on : macos-14
12+ runs-on : macos-14 # Apple Silicon runner, Xcode 15+
1313
1414 steps :
1515 - name : Checkout
@@ -21,31 +21,40 @@ jobs:
2121 - name : Install FreeTDS
2222 run : brew install freetds
2323
24- - name : Diagnose environment
24+ - name : Create freetds.pc for pkg-config
25+ # Homebrew's freetds does not ship a .pc file on macOS.
26+ # We generate one from the known brew prefix so that SPM's
27+ # systemLibrary target can resolve it via pkg-config.
2528 run : |
26- echo "=== which pkg-config ==="
27- which pkg-config || echo "NOT FOUND"
28- echo "=== pkg-config freetds ==="
29- pkg-config --cflags --libs freetds || echo "pkg-config freetds FAILED"
30- echo "=== PKG_CONFIG_PATH ==="
31- echo "${PKG_CONFIG_PATH:-empty}"
32- echo "=== .pc files ==="
33- find /opt/homebrew /usr/local -name "freetds.pc" 2>/dev/null || echo "no .pc file found"
34- echo "=== brew --prefix freetds ==="
35- brew --prefix freetds
36- echo "=== ls pkgconfig dirs ==="
37- ls /opt/homebrew/lib/pkgconfig/ 2>/dev/null | grep -i free || echo "none"
38- ls /usr/local/lib/pkgconfig/ 2>/dev/null | grep -i free || echo "none"
29+ PREFIX=$(brew --prefix freetds)
30+ PC_DIR=/opt/homebrew/lib/pkgconfig
31+ mkdir -p "$PC_DIR"
32+ cat > "$PC_DIR/freetds.pc" << PCEOF
33+ prefix=$PREFIX
34+ exec_prefix=\${prefix}
35+ libdir=\${exec_prefix}/lib
36+ includedir=\${prefix}/include
37+
38+ Name: FreeTDS
39+ Description: FreeTDS library
40+ Version: 1.0
41+ Libs: -L\${libdir} -lsybdb -liconv
42+ Cflags: -I\${includedir}
43+ PCEOF
44+ echo "=== freetds.pc written ==="
45+ cat "$PC_DIR/freetds.pc"
46+ echo "=== pkg-config verify ==="
47+ PKG_CONFIG_PATH="$PC_DIR" pkg-config --cflags --libs freetds
3948
4049 - name : Build
4150 run : swift build -v
4251 env :
43- PKG_CONFIG_PATH : /opt/homebrew/lib/pkgconfig:/usr/local/lib/pkgconfig
52+ PKG_CONFIG_PATH : /opt/homebrew/lib/pkgconfig
4453
4554 - name : Test
4655 run : swift test -v
4756 env :
48- PKG_CONFIG_PATH : /opt/homebrew/lib/pkgconfig:/usr/local/lib/pkgconfig
57+ PKG_CONFIG_PATH : /opt/homebrew/lib/pkgconfig
4958 HOST : ${{ secrets.DB_HOST }}
5059 USERNAME : ${{ secrets.DB_USERNAME }}
5160 PASSWORD : ${{ secrets.DB_PASSWORD }}
0 commit comments