Skip to content

Commit 0ed278d

Browse files
committed
Merge branch 'main' into polar_panel_decor
2 parents 6803816 + 6bdf2a9 commit 0ed278d

38 files changed

Lines changed: 3532 additions & 1422 deletions

.github/workflows/build.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ jobs:
3232
- name: Install LLVM
3333
run: sudo apt-get install -y llvm
3434

35-
- name: Install ODBC
36-
run: sudo apt-get install -y unixodbc-dev
37-
3835
- name: Install Rust
3936
uses: dtolnay/rust-toolchain@stable
4037

.github/workflows/release-jupyter.yml

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -55,21 +55,10 @@ jobs:
5555
uses: PyO3/maturin-action@v1
5656
with:
5757
target: ${{ matrix.target }}
58-
args: --release --out dist --auditwheel=repair
58+
args: --release --out dist --auditwheel=skip
5959
working-directory: ggsql-jupyter
6060
manylinux: 2_28
6161
docker-options: -e GGSQL_SKIP_GENERATE=1
62-
before-script-linux: |
63-
if command -v yum >/dev/null 2>&1; then
64-
yum install -y unixODBC-devel
65-
elif command -v apt-get >/dev/null 2>&1; then
66-
apt-get update && apt-get install -y unixodbc-dev
67-
fi
68-
69-
- name: Fix wheel library load paths
70-
uses: ./.github/workflows/actions/fix-wheel-libs
71-
with:
72-
dist-dir: ggsql-jupyter/dist
7362

7463
- uses: actions/upload-artifact@v4
7564
with:
@@ -96,21 +85,13 @@ jobs:
9685
name: tree-sitter-generated
9786
path: tree-sitter-ggsql/src/
9887

99-
- name: Install ODBC
100-
run: brew install unixodbc
101-
10288
- name: Build wheels
10389
uses: PyO3/maturin-action@v1
10490
with:
10591
target: ${{ matrix.target }}
106-
args: --release --out dist --auditwheel=repair
92+
args: --release --out dist --auditwheel=skip
10793
working-directory: ggsql-jupyter
10894

109-
- name: Fix wheel library load paths
110-
uses: ./.github/workflows/actions/fix-wheel-libs
111-
with:
112-
dist-dir: ggsql-jupyter/dist
113-
11495
- uses: actions/upload-artifact@v4
11596
with:
11697
name: jupyter-wheels-macos-${{ matrix.target }}

.github/workflows/release-packages.yml

Lines changed: 8 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,6 @@ jobs:
102102
- name: Install tree-sitter-cli
103103
run: npm install -g tree-sitter-cli
104104

105-
- name: Install ODBC
106-
run: brew install unixodbc
107-
108-
- name: Install dylibbundler
109-
run: brew install dylibbundler
110-
111105
- name: Install Rust toolchain
112106
uses: dtolnay/rust-toolchain@stable
113107
with:
@@ -148,19 +142,10 @@ jobs:
148142
- name: Build ggsql binary (x86_64)
149143
run: cargo build --release --bin ggsql --bin ggsql-jupyter
150144

151-
- name: Bundle dynamic library dependencies
152-
run: |
153-
dylibbundler -cd -of -b -x target/release/ggsql -d ./libs/ -p "@executable_path/../lib/ggsql$VERSION/"
154-
dylibbundler -cd -of -b -x target/release/ggsql-jupyter -d ./libs/ -p "@executable_path/../lib/ggsql$VERSION/"
155-
156-
- name: Sign binaries and dylibs (Developer ID Application)
145+
- name: Sign binaries (Developer ID Application)
157146
env:
158147
SIGN_ID: "Developer ID Application: ${{ secrets.GWS_APPLE_SIGN_IDENTITY }}"
159148
run: |
160-
# Sign bundled dylibs first (inside-out), replacing dylibbundler's ad-hoc sigs
161-
find ./libs -type f \( -name "*.dylib" -o -name "*.so" \) -print0 | \
162-
xargs -0 -I{} codesign --force --options runtime --timestamp --sign "$SIGN_ID" "{}"
163-
# Then sign the executables with hardened runtime + entitlements
164149
codesign --force --options runtime --timestamp \
165150
--entitlements entitlements.plist \
166151
--sign "$SIGN_ID" target/release/ggsql
@@ -177,14 +162,13 @@ jobs:
177162
APPLE_API_ISSUER: ${{ secrets.GWS_APPLE_API_ISSUER }}
178163
run: |
179164
PKG_NAME="ggsql_${VERSION}_x86_64.pkg"
180-
mkdir -p pkg-payload/usr/local/bin "pkg-payload/usr/local/lib/ggsql$VERSION"
165+
mkdir -p pkg-payload/usr/local/bin
181166
cp target/release/ggsql pkg-payload/usr/local/bin/
182167
cp target/release/ggsql-jupyter pkg-payload/usr/local/bin/
183-
cp -R ./libs/. "pkg-payload/usr/local/lib/ggsql$VERSION/"
184168
mkdir -p pkg-scripts
185169
cat > pkg-scripts/postinstall <<EOF
186170
#!/bin/sh
187-
mkdir -p /usr/local/bin /usr/local/lib/ggsql$VERSION
171+
mkdir -p /usr/local/bin
188172
EOF
189173
chmod 755 pkg-scripts/postinstall
190174
pkgbuild \
@@ -225,12 +209,6 @@ jobs:
225209
- name: Install tree-sitter-cli
226210
run: npm install -g tree-sitter-cli
227211

228-
- name: Install ODBC
229-
run: brew install unixodbc
230-
231-
- name: Install dylibbundler
232-
run: brew install dylibbundler
233-
234212
- name: Install Rust toolchain
235213
uses: dtolnay/rust-toolchain@stable
236214
with:
@@ -271,19 +249,10 @@ jobs:
271249
- name: Build ggsql binary (aarch64)
272250
run: cargo build --release --bin ggsql --bin ggsql-jupyter
273251

274-
- name: Bundle dynamic library dependencies
275-
run: |
276-
dylibbundler -cd -of -b -x target/release/ggsql -d ./libs/ -p "@executable_path/../lib/ggsql$VERSION/"
277-
dylibbundler -cd -of -b -x target/release/ggsql-jupyter -d ./libs/ -p "@executable_path/../lib/ggsql$VERSION/"
278-
279-
- name: Sign binaries and dylibs (Developer ID Application)
252+
- name: Sign binaries (Developer ID Application)
280253
env:
281254
SIGN_ID: "Developer ID Application: ${{ secrets.GWS_APPLE_SIGN_IDENTITY }}"
282255
run: |
283-
# Sign bundled dylibs first (inside-out), replacing dylibbundler's ad-hoc sigs
284-
find ./libs -type f \( -name "*.dylib" -o -name "*.so" \) -print0 | \
285-
xargs -0 -I{} codesign --force --options runtime --timestamp --sign "$SIGN_ID" "{}"
286-
# Then sign the executables with hardened runtime + entitlements
287256
codesign --force --options runtime --timestamp \
288257
--entitlements entitlements.plist \
289258
--sign "$SIGN_ID" target/release/ggsql
@@ -300,14 +269,13 @@ jobs:
300269
APPLE_API_ISSUER: ${{ secrets.GWS_APPLE_API_ISSUER }}
301270
run: |
302271
PKG_NAME="ggsql_${VERSION}_aarch64.pkg"
303-
mkdir -p pkg-payload/usr/local/bin "pkg-payload/usr/local/lib/ggsql$VERSION"
272+
mkdir -p pkg-payload/usr/local/bin
304273
cp target/release/ggsql pkg-payload/usr/local/bin/
305274
cp target/release/ggsql-jupyter pkg-payload/usr/local/bin/
306-
cp -R ./libs/. "pkg-payload/usr/local/lib/ggsql$VERSION/"
307275
mkdir -p pkg-scripts
308276
cat > pkg-scripts/postinstall <<EOF
309277
#!/bin/sh
310-
mkdir -p /usr/local/bin /usr/local/lib/ggsql$VERSION
278+
mkdir -p /usr/local/bin
311279
EOF
312280
chmod 755 pkg-scripts/postinstall
313281
pkgbuild \
@@ -361,8 +329,7 @@ jobs:
361329
libwebkit2gtk-4.1-dev \
362330
libappindicator3-dev \
363331
librsvg2-dev \
364-
patchelf \
365-
unixodbc-dev
332+
patchelf
366333
367334
- name: Install cargo-packager
368335
run: cargo install cargo-packager --locked
@@ -409,18 +376,14 @@ jobs:
409376
libwebkit2gtk-4.1-dev \
410377
libappindicator3-dev \
411378
librsvg2-dev \
412-
patchelf \
413-
unixodbc-dev
379+
patchelf
414380
415381
- name: Install cargo-packager
416382
run: cargo install cargo-packager --locked
417383

418384
- name: Build ggsql binary (aarch64)
419385
run: cargo build --release --bin ggsql --bin ggsql-jupyter
420386

421-
- name: Make empty libs dir for bundling
422-
run: mkdir -p libs
423-
424387
- name: Build Debian package (aarch64)
425388
run: cargo packager --release --formats deb
426389

@@ -451,9 +414,6 @@ jobs:
451414
- name: Install tree-sitter-cli
452415
run: npm install -g tree-sitter-cli
453416

454-
- name: Install ODBC
455-
run: sudo apt-get install -y unixodbc-dev
456-
457417
- name: Install Rust toolchain
458418
uses: dtolnay/rust-toolchain@stable
459419

CHANGELOG.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,25 @@
11
## [Unreleased]
22

3+
### Added
4+
5+
- Added panel decorations (grid lines, axes, background) for polar coordinates (#156).
6+
- Added `radar` setting to polar coordinates for making radar plots (#418).
7+
8+
## 0.3.2 - 2026-05-05
9+
310
### Fixed
411

512
- Side effects like `CREATE TEMP TABLE` before the `VISUALISE` statement are now
613
separated from directly feeding into the visualisation data (#415)
714
- Fixed bug where panel axes were unintentionally anchored to zero when using
815
`FACET ... SETTING free => 'x'/'y'` (#410).
16+
- Fixed bug where faceted data were matched to the incorrect panels (#409)
917

10-
### Added
18+
### Changed
1119

12-
- Added panel decorations (grid lines, axes, background) for polar coordinates (#156).
13-
- Added `radar` setting to polar coordinates for making radar plots (#418).
20+
- Restructured how ggsql integrates with ODBC drivers to use the system ODBC,
21+
rather than bundling unixodbc as part of binary releases. This fixes several
22+
issues on Linux and macOS caused by relative paths to dynamic libraries.
1423

1524
## 0.3.1 - 2026-04-30
1625

Cargo.lock

Lines changed: 16 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ default-members = [
1515
resolver = "2"
1616

1717
[workspace.package]
18-
version = "0.3.1"
18+
version = "0.3.2"
1919
edition = "2021"
2020
authors = ["ggsql Team"]
2121
license = "MIT"
@@ -25,8 +25,8 @@ description = "A declarative visualization language that extends SQL with powerf
2525

2626
[workspace.dependencies]
2727
# workspace packages
28-
tree-sitter-ggsql = { path = "tree-sitter-ggsql", version = "0.3.1" }
29-
ggsql = { path = "src", version = "0.3.1" }
28+
tree-sitter-ggsql = { path = "tree-sitter-ggsql", version = "0.3.2" }
29+
ggsql = { path = "src", version = "0.3.2" }
3030

3131
# Parsing
3232
csscolorparser = "0.8.1"
@@ -42,8 +42,8 @@ bytes = "1"
4242
rusqlite = { version = "0.38", features = ["bundled", "chrono"] }
4343

4444
# ODBC
45-
odbc-api = { version = "13", default-features = false, features = ["odbc_version_3_80"] }
4645
toml_edit = "0.22"
46+
libloading = "0.8"
4747

4848
# Serialization
4949
serde = { version = "1.0", features = ["derive"] }

doc/syntax/scale/aesthetic/1_color.qmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ Note that all different types of color notation can be mixed in the same place.
6060
Literal color values may be translucent, either by providing a fourth channel the the hex-notation, or by using a css color function that includes an alpha level (e.g. `rgba()`). You should avoid mixing this with the use of the opacity aesthetic to ensure the opacity is predictable.
6161

6262
## Palettes
63-
There are two different types of palettes for fill and stroke — those intended for continuous data and those intended for discrete data. While they both consists of multiple color values, the continuous palettes are meant for interpolation between successive values whereas the discrete palettes are not.
63+
There are two different types of palettes for fill and stroke — those intended for continuous data and those intended for discrete data. While they both consist of multiple color values, the continuous palettes are meant for interpolation between successive values whereas the discrete palettes are not.
6464

6565
Palettes are used by giving them as names in the `TO` clause:
6666

0 commit comments

Comments
 (0)