Skip to content

Commit c102dbc

Browse files
committed
CI: generate freetds.pc since Homebrew doesn't ship one on macOS
1 parent 170a37b commit c102dbc

1 file changed

Lines changed: 26 additions & 17 deletions

File tree

.github/workflows/swift.yml

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
jobs:
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

Comments
 (0)