diff --git a/.github/workflows/release-jupyter.yml b/.github/workflows/release-jupyter.yml index 1f68fb0d..a49bae93 100644 --- a/.github/workflows/release-jupyter.yml +++ b/.github/workflows/release-jupyter.yml @@ -33,10 +33,14 @@ jobs: linux: needs: generate - runs-on: ubuntu-latest + runs-on: ${{ matrix.runner }} strategy: matrix: - target: [x86_64, aarch64] + include: + - target: x86_64 + runner: ubuntu-latest + - target: aarch64 + runner: ubuntu-24.04-arm env: GGSQL_SKIP_GENERATE: "1" steps: @@ -71,9 +75,9 @@ jobs: matrix: include: - target: x86_64 - runner: macos-latest + runner: macos-15-intel - target: aarch64 - runner: macos-latest + runner: macos-15 env: GGSQL_SKIP_GENERATE: "1" steps: diff --git a/.github/workflows/release-packages.yml b/.github/workflows/release-packages.yml index 1e077e9e..84568d76 100644 --- a/.github/workflows/release-packages.yml +++ b/.github/workflows/release-packages.yml @@ -86,9 +86,9 @@ jobs: path: src/target/release/packager/*.msi retention-days: 30 - build-macos: - name: Build macOS Installers - runs-on: macos-latest + build-macos-x86_64: + name: Build macOS Installers (x86_64) + runs-on: macos-15-intel steps: - name: Checkout code @@ -108,7 +108,7 @@ jobs: - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: - targets: x86_64-apple-darwin, aarch64-apple-darwin + targets: x86_64-apple-darwin - name: Set up Apple notarization key run: | @@ -144,26 +144,80 @@ jobs: APPLE_API_KEY: ${{ secrets.GWS_APPLE_API_KEY }} APPLE_API_ISSUER: ${{ secrets.GWS_APPLE_API_ISSUER }} + - name: Upload DMG installer (x86_64) + uses: actions/upload-artifact@v4 + with: + name: ggsql-macos-dmg-x86_64 + path: src/target/release/packager/*.dmg + retention-days: 30 + + build-macos-aarch64: + name: Build macOS Installers (aarch64) + runs-on: macos-15 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: "22" + + - name: Install tree-sitter-cli + run: npm install -g tree-sitter-cli + + - name: Install ODBC + run: brew install unixodbc + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + targets: aarch64-apple-darwin + + - name: Set up Apple notarization key + run: | + mkdir -p ~/.private_keys + echo -n "$APPLE_API_KEY_BASE64" | base64 --decode -o ~/.private_keys/AuthKey_${APPLE_API_KEY}.p8 + chmod 600 ~/.private_keys/AuthKey_${APPLE_API_KEY}.p8 + env: + APPLE_API_KEY_BASE64: ${{ secrets.GWS_APPLE_API_KEY_BASE64 }} + APPLE_API_KEY: ${{ secrets.GWS_APPLE_API_KEY }} + + - name: Configure macOS installer signing + env: + APPLE_SIGN_IDENTITY: ${{ secrets.GWS_APPLE_SIGN_IDENTITY }} + run: | + cat <> src/Cargo.toml + + [package.metadata.packager.macos] + signing-identity = "${APPLE_SIGN_IDENTITY}" + entitlements = "entitlements.plist" + EOF + + - name: Install cargo-packager + run: cargo install cargo-packager --locked + - name: Build ggsql binary (aarch64) - run: cargo build --release --bin ggsql --bin ggsql-jupyter --target aarch64-apple-darwin + run: cargo build --release --bin ggsql --bin ggsql-jupyter - name: Build DMG installer (aarch64) - run: cargo packager --release --target aarch64-apple-darwin --formats dmg + run: cargo packager --release --formats dmg env: APPLE_CERTIFICATE: ${{ secrets.GWS_APPLE_SIGN_P12 }} APPLE_CERTIFICATE_PASSWORD: ${{ secrets.GWS_APPLE_SIGN_PW }} APPLE_API_KEY: ${{ secrets.GWS_APPLE_API_KEY }} APPLE_API_ISSUER: ${{ secrets.GWS_APPLE_API_ISSUER }} - - name: Upload DMG installers + - name: Upload DMG installer (aarch64) uses: actions/upload-artifact@v4 with: - name: ggsql-macos-dmg + name: ggsql-macos-dmg-aarch64 path: src/target/release/packager/*.dmg retention-days: 30 - build-linux: - name: Build Linux Installers + build-linux-x86_64: + name: Build Linux Installers (x86_64) runs-on: ubuntu-latest steps: @@ -197,16 +251,64 @@ jobs: - name: Install cargo-packager run: cargo install cargo-packager --locked - - name: Build ggsql binary + - name: Build ggsql binary (x86_64) + run: cargo build --release --bin ggsql --bin ggsql-jupyter + + - name: Build Debian package (x86_64) + run: cargo packager --release --formats deb + + - name: Upload Debian package (x86_64) + uses: actions/upload-artifact@v4 + with: + name: ggsql-linux-deb-x86_64 + path: src/target/release/packager/*.deb + retention-days: 30 + + build-linux-aarch64: + name: Build Linux Installers (aarch64) + runs-on: ubuntu-24.04-arm + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: "22" + + - name: Install tree-sitter-cli + run: npm install -g tree-sitter-cli + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + targets: aarch64-unknown-linux-gnu + + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + libgtk-3-dev \ + libwebkit2gtk-4.1-dev \ + libappindicator3-dev \ + librsvg2-dev \ + patchelf \ + unixodbc-dev + + - name: Install cargo-packager + run: cargo install cargo-packager --locked + + - name: Build ggsql binary (aarch64) run: cargo build --release --bin ggsql --bin ggsql-jupyter - - name: Build Debian package + - name: Build Debian package (aarch64) run: cargo packager --release --formats deb - - name: Upload Debian package + - name: Upload Debian package (aarch64) uses: actions/upload-artifact@v4 with: - name: ggsql-linux-deb + name: ggsql-linux-deb-aarch64 path: src/target/release/packager/*.deb retention-days: 30 @@ -265,7 +367,7 @@ jobs: create-release: name: Create GitHub Release - needs: [build-windows, build-macos, build-linux, build-cargo] + needs: [build-windows, build-macos-x86_64, build-macos-aarch64, build-linux-x86_64, build-linux-aarch64, build-cargo] runs-on: ubuntu-latest permissions: contents: write diff --git a/Cargo.lock b/Cargo.lock index cdb9f261..0fa81807 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1791,7 +1791,7 @@ dependencies = [ [[package]] name = "ggsql" -version = "0.2.2" +version = "0.2.3" dependencies = [ "anyhow", "arrow", @@ -1826,7 +1826,7 @@ dependencies = [ [[package]] name = "ggsql-jupyter" -version = "0.2.2" +version = "0.2.3" dependencies = [ "anyhow", "bytes", @@ -1851,7 +1851,7 @@ dependencies = [ [[package]] name = "ggsql-python" -version = "0.2.2" +version = "0.2.3" dependencies = [ "ggsql", "polars", @@ -1860,7 +1860,7 @@ dependencies = [ [[package]] name = "ggsql-wasm" -version = "0.2.2" +version = "0.2.3" dependencies = [ "csv", "ggsql", @@ -5822,7 +5822,7 @@ dependencies = [ [[package]] name = "tree-sitter-ggsql" -version = "0.2.2" +version = "0.2.3" dependencies = [ "cc", "tree-sitter", diff --git a/Cargo.toml b/Cargo.toml index 17ed3621..d7357eb5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ default-members = [ resolver = "2" [workspace.package] -version = "0.2.2" +version = "0.2.3" edition = "2021" authors = ["ggsql Team"] license = "MIT" @@ -26,8 +26,8 @@ description = "A declarative visualization language that extends SQL with powerf [workspace.dependencies] # workspace packages -tree-sitter-ggsql = { path = "tree-sitter-ggsql", version = "0.2.2" } -ggsql = { path = "src", version = "0.2.2" } +tree-sitter-ggsql = { path = "tree-sitter-ggsql", version = "0.2.3" } +ggsql = { path = "src", version = "0.2.3" } # Parsing csscolorparser = "0.8.1" diff --git a/ggsql-jupyter/pyproject.toml b/ggsql-jupyter/pyproject.toml index dc6d8b3d..91f6c00a 100644 --- a/ggsql-jupyter/pyproject.toml +++ b/ggsql-jupyter/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "ggsql-jupyter" -version = "0.2.2" +version = "0.2.3" description = "Jupyter kernel for ggsql - SQL extension for declarative data visualization" readme = "README.md" license = { text = "MIT" } diff --git a/ggsql-python/Cargo.toml b/ggsql-python/Cargo.toml index 161d21e0..e577e6c9 100644 --- a/ggsql-python/Cargo.toml +++ b/ggsql-python/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ggsql-python" -version = "0.2.2" +version = "0.2.3" edition = "2021" authors.workspace = true license.workspace = true diff --git a/ggsql-python/pyproject.toml b/ggsql-python/pyproject.toml index d522900f..e91bfde7 100644 --- a/ggsql-python/pyproject.toml +++ b/ggsql-python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "ggsql" -version = "0.2.2" +version = "0.2.3" description = "SQL extension for declarative data visualization" readme = "README.md" requires-python = ">=3.10" diff --git a/ggsql-python/python/ggsql/__init__.py b/ggsql-python/python/ggsql/__init__.py index f66bfe9d..fd2dc850 100644 --- a/ggsql-python/python/ggsql/__init__.py +++ b/ggsql-python/python/ggsql/__init__.py @@ -27,7 +27,7 @@ "execute", "render_altair", ] -__version__ = "0.2.2" +__version__ = "0.2.3" # Type alias for any Altair chart type AltairChart = Union[ diff --git a/ggsql-vscode/CHANGELOG.md b/ggsql-vscode/CHANGELOG.md index 8b46767e..a5ff9ba2 100644 --- a/ggsql-vscode/CHANGELOG.md +++ b/ggsql-vscode/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.2.3 + +Alpha release. + +- Build natively for targets in GHA release workflows + ## 0.2.2 Alpha release. diff --git a/ggsql-vscode/package-lock.json b/ggsql-vscode/package-lock.json index 85d1e7ab..81be4b21 100644 --- a/ggsql-vscode/package-lock.json +++ b/ggsql-vscode/package-lock.json @@ -1,12 +1,12 @@ { "name": "ggsql", - "version": "0.2.2", + "version": "0.2.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ggsql", - "version": "0.2.2", + "version": "0.2.3", "license": "MIT", "dependencies": { "toml": "^3.0.0" diff --git a/ggsql-vscode/package.json b/ggsql-vscode/package.json index 270d551e..5d162cac 100644 --- a/ggsql-vscode/package.json +++ b/ggsql-vscode/package.json @@ -2,7 +2,7 @@ "name": "ggsql", "displayName": "ggsql", "description": "Syntax highlighting and language runtime for ggsql - SQL with declarative visualization", - "version": "0.2.2", + "version": "0.2.3", "publisher": "ggsql", "engines": { "vscode": "^1.75.0" diff --git a/ggsql-wasm/demo/package-lock.json b/ggsql-wasm/demo/package-lock.json index d07a9d21..3e980661 100644 --- a/ggsql-wasm/demo/package-lock.json +++ b/ggsql-wasm/demo/package-lock.json @@ -24,7 +24,7 @@ }, "../pkg": { "name": "ggsql-wasm", - "version": "0.2.2", + "version": "0.2.3", "license": "MIT" }, "node_modules/@esbuild/aix-ppc64": { diff --git a/tree-sitter-ggsql/bindings/python/__init__.py b/tree-sitter-ggsql/bindings/python/__init__.py index a9a70bbf..20829a5d 100644 --- a/tree-sitter-ggsql/bindings/python/__init__.py +++ b/tree-sitter-ggsql/bindings/python/__init__.py @@ -31,5 +31,5 @@ except Exception as e: raise ImportError(f"Could not load tree-sitter-ggsql language: {e}") -__version__ = "0.2.2" +__version__ = "0.2.3" __all__ = ["language"] diff --git a/tree-sitter-ggsql/package.json b/tree-sitter-ggsql/package.json index d3850f3e..66da76a7 100644 --- a/tree-sitter-ggsql/package.json +++ b/tree-sitter-ggsql/package.json @@ -1,6 +1,6 @@ { "name": "tree-sitter-ggsql", - "version": "0.2.2", + "version": "0.2.3", "description": "Tree-sitter grammar for ggsql visualization language", "main": "bindings/node", "repository": { diff --git a/tree-sitter-ggsql/pyproject.toml b/tree-sitter-ggsql/pyproject.toml index e9938d62..6b71e740 100644 --- a/tree-sitter-ggsql/pyproject.toml +++ b/tree-sitter-ggsql/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "tree-sitter-ggsql" -version = "0.2.2" +version = "0.2.3" description = "Tree-sitter grammar for ggsql visualization language" readme = "README.md" license = {text = "MIT"} diff --git a/tree-sitter-ggsql/tree-sitter.json b/tree-sitter-ggsql/tree-sitter.json index b708f47b..ef18667f 100644 --- a/tree-sitter-ggsql/tree-sitter.json +++ b/tree-sitter-ggsql/tree-sitter.json @@ -14,7 +14,7 @@ } ], "metadata": { - "version": "0.2.2", + "version": "0.2.3", "license": "MIT", "description": "ggsql grammar for tree-sitter", "authors": [