@gjsify/gi-runtime-android 0.64.1 → 0.64.2

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/README.md CHANGED
@@ -14,11 +14,12 @@ Add it as a dependency and `requireGi` works on the device. No `jniLibs` directo
14
14
  }
15
15
  ```
16
16
 
17
- > **PUBLISHED BY HAND, every release.** No CI job can build the AAR yet (#2179), so
18
- > `release.yml` never publishes this package and the closure check reds each train
19
- > until a maintainer does — [§ Releasing](#releasing). Between the tag and that publish,
20
- > the train's version of this package does not exist; nothing in this repository pins
21
- > the name, so the gap costs no other install.
17
+ > **Published by CI, built from a sysroot that CI can rebuild.** `release.yml`'s
18
+ > `publish-gi-runtime-android` job cross-builds `libnode_gi.so`, builds the AAR and publishes
19
+ > it on every release that touches node-gi ([§ Releasing](#releasing), #2187). Only the GI
20
+ > prefix it is built from (the sysroot, [gjsify/android-sysroot](https://github.com/gjsify/android-sysroot))
21
+ > is reproducible in CI under qemu-user ([build.yml](https://github.com/gjsify/android-sysroot/blob/main/.github/workflows/build.yml), byte-identical to
22
+ > release 2026.10.12). Its releases stay manual: each needs the owner's OK.
22
23
 
23
24
  Tier 3 (experimental). Stage 4 of
24
25
  [ADR 0105](../../../docs/adr/0105-real-gobject-backs-the-nativescript-subset-on-android.md).
@@ -132,6 +133,30 @@ a fourth answer fails the build.
132
133
  Measured against the prefix above: **14 bundled** libraries, **7 system-provided**
133
134
  (`libc`, `libm`, `libdl`, `liblog`, `libandroid`, `libz`, `libNativeScript`).
134
135
 
136
+ **…and what the closure cannot reach is SELECTED** (ADR 0117). Nothing in `libnode_gi.so`'s
137
+ link graph leads to `libgtk-4.so` or `libgraphene-1.0.so`, so no measurement can decide
138
+ whether an app wants them: `--gi-namespaces Gtk,Graphene` (env
139
+ `NODE_GI_ANDROID_NAMESPACES`, `Ns` or `Ns-Version`) names them, and their backing libraries
140
+ enter the same walk as SEEDS — walked like a root, bundled like a dependency. Each selected
141
+ typelib's own `dependencies` are followed, so a namespace brings what it needs rather than
142
+ tripping `planTypelibSet`'s `blocked` case one library short. A namespace the prefix has no
143
+ typelib for fails the build by name, before anything is staged.
144
+
145
+ Selecting nothing changes nothing, and that is checked rather than asserted:
146
+ [`payload-baseline.json`](./payload-baseline.json) freezes the pinned prefix's link graph
147
+ and the plan the default build makes from it (15 libraries, 7 typelibs per ABI — the entries
148
+ ADR 0110 counted at 15,746,594 B / 16,907,482 B compressed), and
149
+ `node-gi/test/gi-runtime-android.test.mjs` replays the real planners over it on every run,
150
+ with no NDK and no device. Regenerate it with
151
+ [`scripts/snapshot-payload-baseline.mjs`](./scripts/snapshot-payload-baseline.mjs) when
152
+ `build-inputs.json` moves the sysroot pin.
153
+
154
+ The pinned prefix resolves `Graphene`, `GdkPixbuf` and `GdkPixdata` today. `Gtk`, `Gdk`,
155
+ `Gsk`, `Adw`, `GdkAndroid` and `Pango` do not: it carries the cairo, freetype and fontconfig
156
+ LIBRARIES but no typelib for any of them, and `planTypelibSet` refuses a namespace whose
157
+ dependency the source prefix cannot provide at all. Generating those three typelibs is a
158
+ sysroot task (ADR 0117 § Implementation, stage 1b).
159
+
135
160
  **The typelib set follows the closure.** The prefix offers 21 typelibs; the libraries
136
161
  behind 14 of them are not in the closure (GTK, Pango, HarfBuzz, graphene, libadwaita),
137
162
  so they are dropped. Shipping `Gtk-4.0.typelib` anyway would let `requireGi('Gtk')` find
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/gi-runtime-android",
3
- "version": "0.64.1",
3
+ "version": "0.64.2",
4
4
  "description": "NativeScript plugin that puts the GObject-Introspection runtime into an Android APK — libnode_gi.so plus the GLib/GObject/Gio closure and their typelibs, for arm64-v8a and x86_64. Add it as a dependency and @gjsify/node-gi's `requireGi` works on the device; no hand-copied .so, no jniLibs dir in App_Resources.",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN platforms/THIRD-PARTY-NOTICES.md",
@@ -1,5 +1,5 @@
1
1
  {
2
- "builtAt": "2026-10-16T10:02:56.019Z",
2
+ "builtAt": "2026-10-19T22:38:27.403Z",
3
3
  "abis": [
4
4
  "arm64-v8a",
5
5
  "x86_64"
@@ -9,8 +9,8 @@
9
9
  "arm64-v8a": [
10
10
  {
11
11
  "name": "libnode_gi.so",
12
- "bytes": 879760,
13
- "sha256": "0cbdf25355d4bfdbf5de63654cb168bfefffc1a0a95c25d848d204034819a574"
12
+ "bytes": 889288,
13
+ "sha256": "a2b33967f5375d2bd2d671cf68afa3f94132adfdbf280a6a2a3e2dfe8d6cab9d"
14
14
  },
15
15
  {
16
16
  "name": "libcairo-gobject.so",
@@ -86,8 +86,8 @@
86
86
  "x86_64": [
87
87
  {
88
88
  "name": "libnode_gi.so",
89
- "bytes": 885624,
90
- "sha256": "b7057a67b08f7044ece1c83bd9f8367cbed44e777b3edf5ef53e87bfa4fd22cd"
89
+ "bytes": 895704,
90
+ "sha256": "b65c71cfcbf7d0eecee3ea7fe1f542672f4845c61af736f40d755c35d4cce584"
91
91
  },
92
92
  {
93
93
  "name": "libcairo-gobject.so",
@@ -233,7 +233,7 @@
233
233
  }
234
234
  ],
235
235
  "aar": {
236
- "bytes": 32978017,
237
- "sha256": "d451acf756fb7a176fb5b292fd834167c5ddd596b391a9db03225f10eb8cc901"
236
+ "bytes": 32997625,
237
+ "sha256": "7dfbbbc7ed2a5a31845727822ac98c16b05c020c45f208376b001f66fce75f91"
238
238
  }
239
239
  }