Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
ca3a731
feat(extensions): refresh PostGIS raster support against main
f0rr0 Oct 19, 2026
7bf3da8
test(react-native): cover GDAL in iOS PostGIS carriers
f0rr0 Oct 19, 2026
4f7de3f
fix(extensions): reject cached GDAL builds missing runtime data
f0rr0 Oct 19, 2026
dab534c
fix(extensions): report the pinned PostGIS source revision
f0rr0 Oct 19, 2026
ca0664c
fix(extensions): align JSON-C configure metadata with source pin
f0rr0 Oct 19, 2026
b105def
test(kotlin): retain the canonical extension archive limits
f0rr0 Oct 19, 2026
cb1f9e0
fix(wasix): isolate PostGIS builds and refresh module exports
f0rr0 Oct 19, 2026
7bef6cc
test(wasix): exercise raster in the browser worker
f0rr0 Oct 19, 2026
b849fe9
feat(extensions): complete PostGIS companion coverage and artifact co…
f0rr0 Oct 19, 2026
b5a9027
fix(extensions): preserve pinned GDAL release metadata
f0rr0 Oct 19, 2026
15d9d01
fix(native): invalidate stale extension dependency caches
f0rr0 Oct 19, 2026
8c7aba2
fix(wasix): include browser extension dependency carriers
f0rr0 Oct 19, 2026
a018f29
fix(wasix): export PostgreSQL symbols required by topology
f0rr0 Oct 19, 2026
db4131d
fix(wasix): include tracked exports in compiler cache inputs
f0rr0 Oct 19, 2026
eeea0d0
fix(wasix): retain runtime-provided browser dependencies
f0rr0 Oct 19, 2026
1689128
fix(wasix): align GDAL resources with the artifact contract
f0rr0 Oct 19, 2026
1ae9489
docs(extensions): describe complete PostGIS companion packaging
f0rr0 Oct 19, 2026
07efe6c
fix(native): scope GDAL data to the embedded runtime
f0rr0 Oct 19, 2026
0543bf2
test(extensions): set the Tiger search path for lifecycle verification
f0rr0 Oct 19, 2026
23ef6c1
chore(extensions): regenerate companion lifecycle metadata
f0rr0 Oct 19, 2026
d76a1b4
fix(sources): support long upstream paths on Windows
f0rr0 Oct 19, 2026
16eea2d
fix(windows): preserve static PROJ usage requirements in GDAL
f0rr0 Oct 19, 2026
4dafd03
fix(wasix): retain raster imports after pg_textsearch rebase
f0rr0 Oct 19, 2026
ab7726f
fix(extensions): repair platform qualification and resource consumers
f0rr0 Oct 20, 2026
503e4dc
fix(ci): order pgwire tests before rebuilding the Windows CLI
f0rr0 Oct 20, 2026
56f0a59
fix(mobile): bind PostGIS companions to the static module
f0rr0 Oct 20, 2026
c345274
fix(test): include companion SQL members in mobile catalog proofs
f0rr0 Oct 20, 2026
e1e0055
fix(extensions): preserve published carriers and validate prepared co…
f0rr0 Oct 21, 2026
3a8ec96
refactor(extensions): remove redundant packaging state and review notes
f0rr0 Oct 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1800,7 +1800,7 @@ jobs:
if: ${{ contains(fromJson(needs.affected.outputs.job_targets)['native-consumers'], 'oliphaunt-kotlin:test-native-bindings') }}
uses: ./.github/actions/setup-android
with:
native-tools: "false"
native-tools: "true"
gradle-cache-save-if: ${{ env.HEAVY_CACHE_SAVE_IF }}
- name: Download Rust SDK package for installed consumer
if: ${{ contains(fromJson(needs.affected.outputs.job_targets)['native-consumers'], 'oliphaunt-rust:test-consumer-runtime') }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/extension-artifacts-native.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@ jobs:
fail-fast: false
matrix: ${{ fromJson(inputs.matrix) }}
runs-on: ${{ matrix.runner }}
timeout-minutes: 135
timeout-minutes: ${{ matrix.target == 'ios-xcframework' && 195 || 135 }}
env:
CCACHE_DIR: ${{ github.workspace }}/.ci-cache/ccache/native-extension/${{ matrix.target }}
CCACHE_BASEDIR: ${{ github.workspace }}
CCACHE_COMPILERCHECK: content
CCACHE_COMPRESS: "true"
OLIPHAUNT_CCACHE_MAX_SIZE: ${{ matrix.target == 'ios-xcframework' && '512M' || '2G' }}
OLIPHAUNT_CCACHE_MAX_SIZE: 2G
OLIPHAUNT_CCACHE_ZERO_STATS: "1"
steps:
- name: Checkout repository
Expand Down Expand Up @@ -116,7 +116,7 @@ jobs:
tar -xzf target/extension-inputs/host/support.tar.gz

- name: Build native exact-extension artifacts
timeout-minutes: 120
timeout-minutes: ${{ matrix.target == 'ios-xcframework' && 180 || 120 }}
env:
OLIPHAUNT_EXTENSION_PHASE: ${{ inputs.phase }}
OLIPHAUNT_EXTENSION_PRODUCTS: ${{ matrix.extensions_csv }}
Expand Down
29 changes: 20 additions & 9 deletions src/docs/maintainers/extension-packaging-policy.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,11 @@ physical carrier manifest where the expanded npm index is required.

Every direct or bundle npm platform package also carries and exports
`extension-contract.json` with schema `oliphaunt-npm-extension-contract-v1`.
That manifest freezes each member's `createsExtension`, native module stem,
dependencies, data files, additional SQL names/prefixes, and preload libraries
at the independently versioned extension release. It also freezes the exact,
That manifest freezes each member's `createsExtension`, primary and companion
native module stems, SQL members, dependencies, data files, additional SQL
names/prefixes, and preload libraries at the independently versioned extension
release. Published v1 carriers without companion fields retain only their
primary SQL/module identities. The manifest also freezes the exact,
sorted `share/licenses/` file inventory derived from that member's canonical
carrier legal metadata. Every row binds the portable path, canonical SHA-256,
and archive mode `0644`; contrib members therefore declare an explicit empty
Expand All @@ -117,8 +119,8 @@ packed carrier check proves exact mode `0644` on every platform. The runtime
also requires every declared legal file and no undeclared runtime leaf. It uses
this frozen contract—not the SDK's current catalog snapshot—to qualify the
installed package's runtime leaf inventory. The SDK catalog remains
authoritative for selection, release/package ownership, and dependency
compatibility.
authoritative for selection, release/package ownership, and compatibility of
primary identities, companion SQL/modules, and dependencies.

## Carrier license and notice contract

Expand Down Expand Up @@ -458,10 +460,19 @@ OpenSSL checkout and links `pgcrypto` against the staged static `libcrypto`.
`uuid-ossp` is mobile-prebuilt through the first-party portable UUID static
`libuuid` archive. The Windows native producer links the same portable UUID
source directly into the `uuid-ossp` module and installs the matching
control/SQL files. The Windows native PostGIS producer builds the pinned GEOS,
PROJ, SQLite, json-c, and libxml2 dependency stack, links the generated
`postgis-3` module against those static archives, and stages the matching
extension SQL plus `proj/proj.db`.
control/SQL files. The Windows native PostGIS producer builds the pinned GDAL,
GEOS, PROJ, SQLite, json-c, and libxml2 dependency stack, links the generated
`postgis-3`, `postgis_raster-3`, and `postgis_topology-3` modules against those
static archives, and stages the matching extension SQL, GDAL data, and
`proj/proj.db`. The PostGIS product owns the core, raster, topology, and tiger
geocoder SQL extensions and selects `fuzzystrmatch` from the contrib product.
Applications enable the companions with `CREATE EXTENSION postgis_raster`,
`CREATE EXTENSION postgis_topology`, and `CREATE EXTENSION postgis_tiger_geocoder`
after enabling their prerequisites. Mobile carriers register the combined
core/raster/topology archive. Desktop and WASIX carriers ship separate modules.
GDAL includes GTiff/VRT and GeoJSON/Shapefile drivers. Shared lifecycle fixtures
verify GeoTIFF pixel values, dimensions, and SRID, persistent topology, and
address normalization after creation, restart, and backup/restore.

## Target-Specific PG18.4 Support

Expand Down
2 changes: 1 addition & 1 deletion src/docs/maintainers/windows-vc-runtime.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ relicense Microsoft's DLLs.

- `liboliphaunt-native` is the one shared provider for native extensions. Its
`provider` profile is the exact union required by the base runtime and every
supported Windows extension: `msvcp140.dll`, `vcruntime140.dll`, and
supported Windows extension: `msvcp140.dll`, `msvcp140_2.dll`, `vcruntime140.dll`, and
`vcruntime140_1.dll`. Separately versioned extension packages depend on the
exact native-runtime product/version and do not duplicate these bytes.
- `oliphaunt-tools` and `oliphaunt-broker` are independently installable. Each
Expand Down
7 changes: 5 additions & 2 deletions src/examples/native/react-native-expo/src/SmokeDashboard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,7 @@ function requiredPublicEnvironment(name: string, value: string | undefined): str
}

function mobileReleaseExtensionProofPlan() {
if (packagedExtensions === undefined) {
if (typeof packagedExtensions !== 'string') {
throw new Error('installed mobile qualification requires EXPO_PUBLIC_OLIPHAUNT_EXTENSIONS');
}
const requested = packagedExtensions
Expand All @@ -544,7 +544,9 @@ function mobileReleaseExtensionProofPlan() {
selected.has(extension.sqlName),
);
if (plan.length !== selected.size) {
const known = new Set(GENERATED_MOBILE_EXTENSION_PLAN.map((extension) => extension.sqlName));
const known = new Set<string>(
GENERATED_MOBILE_EXTENSION_PLAN.map((extension) => extension.sqlName),
);
const unknown = requested.filter((extension) => !known.has(extension));
throw new Error(`unknown packaged mobile extensions: ${unknown.join(',')}`);
}
Expand All @@ -558,6 +560,7 @@ function mobileReleaseExtensionProofPlan() {
return {
sqlName: extension.sqlName,
createsExtension: extension.createsExtension,
sqlMembers: extension.sqlMembers,
selectedExtensionDependencies: extension.selectedExtensionDependencies,
activationSql: activationSqlForExtension(extension),
smokeStatements,
Expand Down
Loading
Loading