buninu-linux 0.7.55 → 0.8.55

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.
Files changed (45) hide show
  1. package/Dockerfile +5 -2
  2. package/NOTICE.md +64 -3
  3. package/README.md +435 -140
  4. package/fetch-npm.sh +44 -0
  5. package/fetch-plus-build.sh +1 -0
  6. package/index.js +15 -13
  7. package/initramfs/bin/buninu-browser +24 -0
  8. package/initramfs/bin/jspinyin +12 -0
  9. package/initramfs/bin/jspulse +2 -0
  10. package/initramfs/bin/tar +40 -6
  11. package/initramfs/bin/top +1 -7
  12. package/initramfs/buninu/CHANGELOG.md +4 -0
  13. package/initramfs/buninu/apps/bunmsh/CHANGELOG.md +28 -0
  14. package/initramfs/buninu/apps/bunmsh/package.json +1 -1
  15. package/initramfs/buninu/apps/bunmsh/src/main.js +7 -5
  16. package/initramfs/buninu/apps/bunmsh/src/shell.js +584 -75
  17. package/initramfs/buninu/apps/bunmsh/test/shell1.test.js +64 -0
  18. package/initramfs/buninu/package.json +1 -1
  19. package/initramfs/init.js +5 -0
  20. package/initramfs/lib/browser-resources.js +25 -0
  21. package/initramfs/lib/tar-exclude.js +20 -0
  22. package/initramfs/lib/tar-strip.js +94 -0
  23. package/initramfs/lib/top-memory.js +12 -0
  24. package/initramfs/usr/share/doc/buninu-linux/tar.md +24 -1
  25. package/initramfs/usr/share/doc/buninu-linux/top.md +18 -0
  26. package/package.json +1 -1
  27. package/scripts/fetch-npm.js +51 -0
  28. package/scripts/fetch.js +1 -0
  29. package/scripts/js-tools.js +3 -0
  30. package/scripts/npm-packages.md +18 -0
  31. package/scripts/pack-initramfs.sh +1 -0
  32. package/scripts/pack.js +2 -0
  33. package/scripts/stage-npm.js +57 -0
  34. package/scripts/stage-npm.sh +62 -0
  35. package/test/fetch-npm.test.js +92 -0
  36. package/test/host/Dockerfile +6 -4
  37. package/test/host/boot-test.exp +2 -2
  38. package/test/host/host-test.sh +2 -2
  39. package/test/host/in-container.sh +4 -4
  40. package/test/js-tools-selection.test.js +19 -0
  41. package/test/npm-launchers.test.js +59 -0
  42. package/test/stage-npm.test.js +130 -0
  43. package/test/tar-strip.test.js +218 -0
  44. package/test/top-memory.test.js +23 -0
  45. package/initramfs/buninu/apps/bunmsh/test/shell.test.js +0 -2092
package/Dockerfile CHANGED
@@ -2,14 +2,17 @@
2
2
  # that do not have it natively (macOS) or would rather not install it.
3
3
  # index.js --docker builds this image on first use and runs the fetch/build
4
4
  # scripts inside it with the checkout bind-mounted at /src; macOS does that
5
- # by default. The image only unpacks archives and assembles files, it never
5
+ # by default when JS tools are disabled. The image only unpacks archives and assembles files, it never
6
6
  # executes guest binaries, so its own architecture does not matter: Apple
7
7
  # Silicon runs it as linux/arm64 and still builds both guests.
8
8
  #
9
9
  # binutils-mingw-w64-x86-64 PE-aware objcopy/objdump for the x86_64 UKI
10
10
  # binutils-aarch64-linux-gnu PE-aware objcopy/objdump for the aarch64 UKI
11
11
  # (native binutils on an arm64 host, cross on amd64)
12
- FROM debian:13-slim
12
+ FROM oven/bun:1.4.2
13
+ USER root
14
+ # These images run build scripts, not the base image's default Bun command.
15
+ ENTRYPOINT []
13
16
 
14
17
  RUN apt-get update \
15
18
  && apt-get install -y --no-install-recommends \
package/NOTICE.md CHANGED
@@ -3,13 +3,15 @@
3
3
  Buninu Linux is licensed under the MIT License; see `LICENSE`.
4
4
 
5
5
  It redistributes the third-party components below under their own licenses.
6
- The full license texts are in `LICENSES/`. Every SHA-256 here was checked
6
+ Platform license texts are in `LICENSES/`; npm application licenses and
7
+ notices also remain inside their installed package directories, as listed
8
+ below. Platform SHA-256 values here were checked
7
9
  byte-for-byte against the official Alpine Linux v3.24 x86_64 or aarch64
8
10
  package (or the official Bun release) it came from. The x86_64 guest is the
9
11
  default build; `--arch aarch64` builds the other one from the same versions.
10
12
 
11
- The sections below cover the platform: the kernel, the C library, the GCC
12
- runtime, the UEFI stub and Bun. The Buninu userspace under `initramfs/buninu/`
13
+ The sections below cover the platform, fetched npm applications and graphics
14
+ resources. The Buninu userspace under `initramfs/buninu/`
13
15
  carries its own third-party notices; see the last section.
14
16
 
15
17
  Alpine's CDN serves only the current pkgrel of each branch, so the package
@@ -236,6 +238,65 @@ native/x86_64/bin/bun 16b72935ffd7a503b978c186874539c92aade4e3515b70a5abf5db2
236
238
  native/aarch64/bin/bun 1101cd0aa92ea214c2aaf4bb3761ca3c76a90aae0e6f94c07efb4e8c4f18a8fc
237
239
  ```
238
240
 
241
+ ## npm applications fetched and redistributed in the image
242
+
243
+ The fetch stage downloads the following exact releases directly from the
244
+ npm registry. `scripts/npm-packages.md` is the canonical list of tarball
245
+ URLs and SHA-256 pins. Both fetch and pack verify those hashes. Pack removes
246
+ the leading `package/` component and installs the contents under
247
+ `/usr/lib/node_modules/`; it does not run npm lifecycle scripts or resolve
248
+ additional dependencies. The downloaded archives are build inputs, not
249
+ committed source files, but their contents are redistributed in the image.
250
+
251
+ | Package | Version | Package license | Project / package page | Installed license and notices (relative to `/usr/lib/node_modules/`) |
252
+ |---|---|---|---|---|
253
+ | `buninu-browser` | 0.2.2 | MIT for the browser's own code; bundled components retain their own terms | https://github.com/jjtseng93/buninu-browser | `buninu-browser/LICENSE`, `THIRD_PARTY_NOTICES.md`, `LICENSES/` and vendor notices within that package |
254
+ | `@drxiaozhi/casty` | 1.3.4 | MIT | https://github.com/jjtseng93/casty | `@drxiaozhi/casty/LICENSE` |
255
+ | `@drxiaozhi/jspulse` | 0.2.1 | LGPL-2.1-or-later, with additional component notices | https://github.com/jjtseng93/jspulse | `@drxiaozhi/jspulse/LICENSE`, `NOTICE.md`, `LICENSES/` and source-file notices within that package |
256
+ | `@drxiaozhi/jspinyin` | 0.1.1 | MIT; hanzipinyin material under the Unlicense | https://www.npmjs.com/package/@drxiaozhi/jspinyin | `@drxiaozhi/jspinyin/LICENSE` and `@drxiaozhi/jspinyin/LICENSE-hanzipinyin.md` |
257
+
258
+ The upstream links identify the projects; the pinned registry archives
259
+ identify the exact releases used by this build. Preserve the packages'
260
+ copyright notices, license texts, third-party notices and source material
261
+ when redistributing or repacking the image. Buninu Linux's MIT license does
262
+ not relicense these components.
263
+
264
+ ### Browser resources and LGPL media decoder
265
+
266
+ Only the browser's `usr/lib/canvaskit` and `usr/share/fonts` directories are
267
+ excluded from extraction. Its `usr/README.md`, top-level license collection,
268
+ third-party notices and vendor source material are retained. The distribution
269
+ launcher creates relative links to the system CanvasKit and fonts when those
270
+ resource directories are missing; their licenses are documented under
271
+ Graphics stack below and remain with the system copies.
272
+
273
+ The browser includes `@wasmpeg/cpu` 1.0.1 and its FFmpeg code under
274
+ LGPL-2.1-or-later. Within `/usr/lib/node_modules/buninu-browser/`, retain:
275
+
276
+ - `vendor/wasmpeg/LICENSE`, `vendor/wasmpeg/NOTICE` and `LICENSES/wasmpeg.txt`;
277
+ - `vendor/wasmpeg/source-v1.0.1.tar.gz`, the bundled source archive;
278
+ - `vendor/wasmpeg/VENDORING.md`, with artifact hashes and rebuild instructions;
279
+ - `patches/wasmpeg/`, documenting the package's local changes;
280
+ - the other license texts identified in `THIRD_PARTY_NOTICES.md`, including
281
+ those for Emscripten and zlib.
282
+
283
+ The decoder's `cpu.wasm` remains a separate, replaceable file. Do not remove
284
+ the source archive or rebuild material merely to reduce the image size.
285
+
286
+ ### jspulse source and notices
287
+
288
+ jspulse is shipped as JavaScript source, with its LGPL license, modification
289
+ notices and additional notices intact. Its `NOTICE.md` describes the
290
+ PulseAudio, Termux, ALSA and Sun G.711 material; `LICENSES/` includes LGPL-2.1
291
+ and NCSA texts. Browser audio communicates with this separate server through
292
+ the PulseAudio protocol. The distribution's launcher does not replace or
293
+ remove the package's source or license files.
294
+
295
+ This inventory records the shipped materials; it is not a blanket compliance
296
+ certification. Redistributors remain responsible for applicable source,
297
+ notice and modification/replacement requirements, particularly if changing
298
+ the packages, their build artifacts or the source material supplied with them.
299
+
239
300
  ## Graphics stack
240
301
 
241
302
  These files are committed under `initramfs/lib/` and `initramfs/usr/share/`