pgserve 2.6.7 → 2.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +78 -0
- package/package.json +1 -1
- package/scripts/assemble-tarball.sh +6 -1
- package/scripts/fetch-postgres-bins.sh +50 -0
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,84 @@ All notable changes to `pgserve` are documented here. The format follows
|
|
|
14
14
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres
|
|
15
15
|
to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
16
16
|
|
|
17
|
+
## [2.6.9] - 2026-05-12
|
|
18
|
+
|
|
19
|
+
**The actual final v2.x publish.** Bundles every fix needed to get
|
|
20
|
+
Build Tarballs → Sign + Attest → release-publish completing end-to-end
|
|
21
|
+
on the two platforms the v2.x signed-tarball pipeline supports.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- `scripts/assemble-tarball.sh` — defensive `${tar_flags[@]+...}`
|
|
26
|
+
expansion. macOS BSD tar lacks `--sort`/`--mtime`/`--owner`, so the
|
|
27
|
+
array stays empty on darwin runners; under `set -u`, expanding an
|
|
28
|
+
empty array errored as `tar_flags[@]: unbound variable` and broke
|
|
29
|
+
every darwin-* build.
|
|
30
|
+
|
|
31
|
+
### Changed (matrix scope)
|
|
32
|
+
|
|
33
|
+
Per Felipe directive 2026-05-12 ("just windows macos and linux, no
|
|
34
|
+
Intel Mac"), the signed-tarball pipeline matrix is reduced to the
|
|
35
|
+
platforms that actually have a working @embedded-postgres npm
|
|
36
|
+
package + a wired-in build path:
|
|
37
|
+
|
|
38
|
+
- ✅ `linux-x64-glibc` (linux)
|
|
39
|
+
- ✅ `darwin-arm64` (macos — Apple Silicon)
|
|
40
|
+
- ❌ `darwin-x64` — dropped (Intel Mac)
|
|
41
|
+
- ❌ `linux-arm64` — never working (no upstream pkg)
|
|
42
|
+
- ❌ `linux-x64-musl` — never working (no upstream pkg)
|
|
43
|
+
- 🔁 `windows-x64` — continues to ship via npm (version.yml inline
|
|
44
|
+
publish); not in the signed-tarball pipeline
|
|
45
|
+
|
|
46
|
+
### Consumer impact
|
|
47
|
+
|
|
48
|
+
- `@withone/cli` and any other npm dependent: zero impact — npm package
|
|
49
|
+
installs the same way, optional native deps still cover windows-x64
|
|
50
|
+
+ darwin-x64 + linux-x64 + darwin-arm64 via @embedded-postgres.
|
|
51
|
+
- Operators expecting GH Release signed tarballs: linux-x64 + darwin-
|
|
52
|
+
arm64 only. v2.x is end-of-line for Intel Mac signed tarballs.
|
|
53
|
+
|
|
54
|
+
### Cohort wrap-up
|
|
55
|
+
|
|
56
|
+
This is **the** last `pgserve`-named npm publish. Subsequent
|
|
57
|
+
development moves to the `autopg` package starting at v3.0.0 from the
|
|
58
|
+
new `automagik-dev/autopg` repo (post org transfer).
|
|
59
|
+
|
|
60
|
+
## [2.6.8] - 2026-05-12
|
|
61
|
+
|
|
62
|
+
**Final v2.x maintenance release with full signed-tarball GH Release.**
|
|
63
|
+
v2.6.7 closed the `autopg --version` smoke gate but Build Tarballs
|
|
64
|
+
still failed on the next smoke check — `postgres --version` couldn't
|
|
65
|
+
load `libicui18n.so.60`. Root cause: `fetch-postgres-bins.sh` was
|
|
66
|
+
copying `native/bin` + `native/share` from the npm
|
|
67
|
+
`@embedded-postgres` payload but skipping `native/lib`, AND was not
|
|
68
|
+
recreating the SONAME symlinks described in `pg-symlinks.json`
|
|
69
|
+
(`libicui18n.so.60 → libicui18n.so.60.2`).
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
|
|
73
|
+
- `scripts/fetch-postgres-bins.sh:stage_from_pkg` now copies
|
|
74
|
+
`native/lib/` into the staging directory + replays
|
|
75
|
+
`native/pg-symlinks.json` to recreate the 14 SONAME aliases. The
|
|
76
|
+
postgres binary's RPATH is `../lib/` (origin-relative), so all
|
|
77
|
+
bundled deps (libxml2, libssl, libcrypto, libz, libicudata,
|
|
78
|
+
libicui18n, libicuuc, libecpg, libpgtypes, libpq, …) now resolve at
|
|
79
|
+
runtime regardless of what the host system has installed.
|
|
80
|
+
|
|
81
|
+
### Validated
|
|
82
|
+
|
|
83
|
+
- Local reproduction: extracted tarball, ran
|
|
84
|
+
`./postgres/bin/postgres --version` →
|
|
85
|
+
`postgres (PostgreSQL) 18.3` ✅
|
|
86
|
+
|
|
87
|
+
### Cohort wrap-up
|
|
88
|
+
|
|
89
|
+
This is the LAST `pgserve`-named npm publish. Subsequent development
|
|
90
|
+
moves to the `autopg` package starting at v3.0.0 from the new
|
|
91
|
+
`automagik-dev/autopg` repo (post org transfer). Consumers like
|
|
92
|
+
`@withone/cli` (`pgserve: ^2.x`) stay on npm latest indefinitely;
|
|
93
|
+
v2.6.8 is the cohort's final stable polish.
|
|
94
|
+
|
|
17
95
|
## [2.6.7] - 2026-05-12
|
|
18
96
|
|
|
19
97
|
**Stability-focused follow-up to v2.6.6** — closes the missing
|
package/package.json
CHANGED
|
@@ -165,7 +165,12 @@ assemble_one() {
|
|
|
165
165
|
tar_flags+=(--owner=0 --group=0 --numeric-owner)
|
|
166
166
|
fi
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
# macOS BSD tar lacks --sort/--mtime/--owner, so tar_flags can stay
|
|
169
|
+
# empty on darwin-* runners. Under `set -u` (script-wide), expanding
|
|
170
|
+
# "${tar_flags[@]}" on an empty array errors as `tar_flags[@]: unbound
|
|
171
|
+
# variable`. The `${arr[@]+"${arr[@]}"}` pattern expands the array
|
|
172
|
+
# only when it has elements, leaving the command intact otherwise.
|
|
173
|
+
tar -C "$stage" -czf "$tarball" ${tar_flags[@]+"${tar_flags[@]}"} autopg/ || return 1
|
|
169
174
|
echo " ✓ tarball: $tarball ($(du -h "$tarball" | cut -f1))"
|
|
170
175
|
|
|
171
176
|
# 4) outer SHA256 — Group 8 cosign-signs this; Group 9 publishes both.
|
|
@@ -142,6 +142,56 @@ EOF
|
|
|
142
142
|
|
|
143
143
|
cp -R "${native}/bin" "${out_dir}/bin"
|
|
144
144
|
cp -R "${native}/share" "${out_dir}/share" 2>/dev/null || mkdir -p "${out_dir}/share"
|
|
145
|
+
|
|
146
|
+
# The postgres binary's RPATH is `../lib/` (origin-relative), so it
|
|
147
|
+
# looks for libxml2 / libssl / libcrypto / libicu* in
|
|
148
|
+
# ${out_dir}/lib at runtime. The npm payload bundles all of these
|
|
149
|
+
# under native/lib (verified: libicui18n.so.60.2, libssl.so.1.1,
|
|
150
|
+
# etc. — 25 MB of bundled deps). Without copying lib/ the tarball
|
|
151
|
+
# extracts a postgres binary that fails with
|
|
152
|
+
# `error while loading shared libraries: libicui18n.so.60: cannot
|
|
153
|
+
# open shared object file: No such file or directory` on any
|
|
154
|
+
# platform that doesn't ship libicu60 system-wide (Ubuntu >= 20.04
|
|
155
|
+
# ships libicu70/74; only 18.04 ships libicu60).
|
|
156
|
+
#
|
|
157
|
+
# The package's normal postinstall creates SONAME symlinks
|
|
158
|
+
# (libicui18n.so.60 → libicui18n.so.60.2) from pg-symlinks.json, but
|
|
159
|
+
# we install with `--ignore-scripts` (security posture), so we must
|
|
160
|
+
# replay the symlink manifest manually. Without these symlinks the
|
|
161
|
+
# binary still can't find libicui18n.so.60 because npm packs only
|
|
162
|
+
# the real `.so.60.2` files, not the SONAME aliases.
|
|
163
|
+
if [[ -d "${native}/lib" ]]; then
|
|
164
|
+
cp -R "${native}/lib" "${out_dir}/lib"
|
|
165
|
+
fi
|
|
166
|
+
|
|
167
|
+
if [[ -f "${native}/pg-symlinks.json" ]]; then
|
|
168
|
+
# Strip the `native/` prefix from `source` + `target` and recreate
|
|
169
|
+
# symlinks under out_dir using relative names. Uses node so we get
|
|
170
|
+
# robust JSON parsing without yanking jq in as a dep.
|
|
171
|
+
OUT_DIR="$out_dir" MANIFEST="${native}/pg-symlinks.json" node -e '
|
|
172
|
+
const fs = require("fs");
|
|
173
|
+
const path = require("path");
|
|
174
|
+
const out = process.env.OUT_DIR;
|
|
175
|
+
const manifest = JSON.parse(fs.readFileSync(process.env.MANIFEST, "utf8"));
|
|
176
|
+
let made = 0;
|
|
177
|
+
for (const entry of manifest) {
|
|
178
|
+
// {"source":"native/lib/libicui18n.so.60.2","target":"native/lib/libicui18n.so.60"}
|
|
179
|
+
const src = entry.source.replace(/^native\//, "");
|
|
180
|
+
const tgt = entry.target.replace(/^native\//, "");
|
|
181
|
+
const tgtPath = path.join(out, tgt);
|
|
182
|
+
const srcRel = path.basename(src);
|
|
183
|
+
try { fs.unlinkSync(tgtPath); } catch {}
|
|
184
|
+
try {
|
|
185
|
+
fs.mkdirSync(path.dirname(tgtPath), { recursive: true });
|
|
186
|
+
fs.symlinkSync(srcRel, tgtPath);
|
|
187
|
+
made++;
|
|
188
|
+
} catch (err) {
|
|
189
|
+
console.error(" symlink failed: " + tgt + " -> " + srcRel + ": " + err.message);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
console.error(" -> created " + made + " library SONAME symlinks");
|
|
193
|
+
' || echo " -> warning: pg-symlinks.json processing failed (postgres may not load shared libs)"
|
|
194
|
+
fi
|
|
145
195
|
popd >/dev/null
|
|
146
196
|
}
|
|
147
197
|
|