Login
Check-in [3cefc212aa]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Build on the BQ2 client: fixes for clang 18, libiconv and older Linux headers

Claim: Glint's build and x86_64 boots work on x86-1's BusyBox BQ2 system, where clang is 18.1.7, not the old Alpine host's 21. Four things had relied on that host: - tools/zephyr/flags.cr defines CONFIG_MINIMAL_LIBC. Zephyr's minimal stdint.h needs __UINT64_C, which clang predefines only from 20.1; below that, Zephyr's toolchain/llvm.h supplies it under this symbol. - QEMU's compile and test flags now use its bundled linux-headers with -isystem, as its meson.build (line 790) does. Without it, include/system/host_iommu_device.h needs a newer linux/iommufd.h than this system's. - GLib links -liconv where libiconv is installed, because GNU's iconv.h renames iconv_open to libiconv_open. The QEMU specs' library lists allow it. - tools/c_archive_build.cr fetches with curl, because busybox wget gets "Connection reset by peer" on every HTTPS URL tried here. spec/uboot/uboot_x86_64_spec.cr looks for "clang version", not "Alpine clang version".

Passage: PLAN's Build constraints: the BQ2 toolset is enough to build the Glint kernel.

Demonstration: - QEMU 11.1.2 for x86_64 and aarch64, and U-Boot for x86_64, rebuild from pinned sources. bin/glint-build x86_64 gives BOOTX64.EFI at 172,544 bytes, the size 3.5 recorded. - bin/glint-run x86_64 passes guest_space (native, and refused hosted), the heap native and hosted, cat, fault, fault "write" (native, and refused hosted) and overflow. - crystal spec: 699 examples, 33 failures, 2 errors, 0 pending; TMPDIR left empty. All 35 trace to this system's X86-only LLVM, which can't target aarch64. 8 of them are x86_64 or general specs that stop at glint-build all or at the aarch64 half of a cross-compile. Before these fixes' spec changes it was 38 and 2. - crystal tool format --check passes.

Not shown: aarch64. Nothing here could be built or booted for it, including the CONFIG_MINIMAL_LIBC change on aarch64 past the compiler's target error. bin/glint-qemu needs LD_LIBRARY_PATH=/usr/lib64 here, because libxml2 is in a directory the loader doesn't search; that isn't fixed in this check-in.

Size: 18 lines added and 13 removed, no new files.

Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 3cefc212aac2bd30145b154fdfe9a03c3ad263667fd519d0c9aa3c75cc91e7a9
User & Date: x86-1-glint 2026-11-02 05:17:18.035
Original Comment: Build on the BQ2 client: fixes for clang 18, libiconv and older Linux headers

Claim: Glint's build and x86_64 boots work on x86-1's BusyBox BQ2 system, where clang is 18.1.7, not the old Alpine host's 21. Four things had relied on that host: - tools/zephyr/flags.cr defines CONFIG_MINIMAL_LIBC. Zephyr's minimal stdint.h needs __UINT64_C, which clang predefines only from 20.1; below that, Zephyr's toolchain/llvm.h supplies it under this symbol. - QEMU's compile and test flags now use its bundled linux-headers with -isystem, as its meson.build (line 790) does. Without it, include/system/host_iommu_device.h needs a newer linux/iommufd.h than this system's. - GLib links -liconv where libiconv is installed, because GNU's iconv.h renames iconv_open to libiconv_open. The QEMU specs' library lists allow it. - tools/c_archive_build.cr fetches with curl, because busybox wget gets "Connection reset by peer" on every HTTPS URL tried here. spec/uboot/uboot_x86_64_spec.cr looks for "clang version", not "Alpine clang version".

Passage: PLAN's Build constraints: the BQ2 toolset is enough to build the Glint kernel.

Demonstration: - QEMU 11.1.2 for x86_64 and aarch64, and U-Boot for x86_64, rebuild from pinned sources. bin/glint-build x86_64 gives BOOTX64.EFI at 172,544 bytes, the size 3.5 recorded. - bin/glint-run x86_64 passes guest_space (native, and refused hosted), the heap native and hosted, cat, fault, fault "write" (native, and refused hosted) and overflow. - crystal spec: 699 examples, 33 failures, 2 errors, 0 pending; TMPDIR left empty. All 35 trace to this system's X86-only LLVM, which can't target aarch64. 7 of them are x86_64 or general specs that stop at glint-build all or at the aarch64 half of a cross-compile. Before these fixes' spec changes it was 38 and 2. - crystal tool format --check passes.

Not shown: aarch64. Nothing here could be built or booted for it, including the CONFIG_MINIMAL_LIBC change on aarch64 past the compiler's target error. bin/glint-qemu needs LD_LIBRARY_PATH=/usr/lib64 here, because libxml2 is in a directory the loader doesn't search; that isn't fixed in this check-in.

Size: 18 lines added and 13 removed, no new files.

Context
2026-11-03
03:29
Task 3.6: reading a guest image

Claim: docs/tasks/3.6.md states slice 3.6 as a task, with the PE32+ facts it depends on checked against U-Boot 2026.07's include/pe.h, include/asm-generic/pe.h, include/efi.h and lib/efi_loader/efi_image_loader.c, and against Glint's boot/crt0.S. Passage: docs/WORKFLOW.md, Handing out a slice, step 1. Demonstration: each header offset in the task was summed from the struct definitions in include/pe.h. One finding is written into the task: efi_loader_relocate (line 114) bounds a relocation entry's offset, not its 8 bytes, so a DIR64 at SizeOfImage - 1 passes there; Glint's parser must refuse it. Not handed to Codex yet: its spec reads both built images, and aarch64 can't be built on x86-1. Size: one new file, 84 lines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX check-in: 8da207a74d user: x86-1-glint tags: trunk

2026-11-02
05:17
Build on the BQ2 client: fixes for clang 18, libiconv and older Linux headers

Claim: Glint's build and x86_64 boots work on x86-1's BusyBox BQ2 system, where clang is 18.1.7, not the old Alpine host's 21. Four things had relied on that host: - tools/zephyr/flags.cr defines CONFIG_MINIMAL_LIBC. Zephyr's minimal stdint.h needs __UINT64_C, which clang predefines only from 20.1; below that, Zephyr's toolchain/llvm.h supplies it under this symbol. - QEMU's compile and test flags now use its bundled linux-headers with -isystem, as its meson.build (line 790) does. Without it, include/system/host_iommu_device.h needs a newer linux/iommufd.h than this system's. - GLib links -liconv where libiconv is installed, because GNU's iconv.h renames iconv_open to libiconv_open. The QEMU specs' library lists allow it. - tools/c_archive_build.cr fetches with curl, because busybox wget gets "Connection reset by peer" on every HTTPS URL tried here. spec/uboot/uboot_x86_64_spec.cr looks for "clang version", not "Alpine clang version".

Passage: PLAN's Build constraints: the BQ2 toolset is enough to build the Glint kernel.

Demonstration: - QEMU 11.1.2 for x86_64 and aarch64, and U-Boot for x86_64, rebuild from pinned sources. bin/glint-build x86_64 gives BOOTX64.EFI at 172,544 bytes, the size 3.5 recorded. - bin/glint-run x86_64 passes guest_space (native, and refused hosted), the heap native and hosted, cat, fault, fault "write" (native, and refused hosted) and overflow. - crystal spec: 699 examples, 33 failures, 2 errors, 0 pending; TMPDIR left empty. All 35 trace to this system's X86-only LLVM, which can't target aarch64. 8 of them are x86_64 or general specs that stop at glint-build all or at the aarch64 half of a cross-compile. Before these fixes' spec changes it was 38 and 2. - crystal tool format --check passes.

Not shown: aarch64. Nothing here could be built or booted for it, including the CONFIG_MINIMAL_LIBC change on aarch64 past the compiler's target error. bin/glint-qemu needs LD_LIBRARY_PATH=/usr/lib64 here, because libxml2 is in a directory the loader doesn't search; that isn't fixed in this check-in.

Size: 18 lines added and 13 removed, no new files. check-in: 3cefc212aa user: x86-1-glint tags: trunk

2026-10-30
02:55
Tutorial: 3.5 check-in: 437bb241ad user: glint-session tags: trunk
Changes
Unified Diff Side-by-Side Diff Patch
Changes to spec/qemu/glib_spec.cr.
Changes to spec/qemu/qemu_link_spec.cr.
Changes to spec/qemu/qemu_x86_64_spec.cr.
Changes to spec/uboot/uboot_x86_64_spec.cr.
Changes to src/glint/qemu/build/compile.cr.
Changes to src/glint/qemu/build/link.cr.
Changes to tools/c_archive_build.cr.
Changes to tools/zephyr/flags.cr.