Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
15 changes: 15 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# ★ Shell scripts MUST keep LF endings, on every platform.
#
# Windows git defaults to core.autocrlf=true, so a plain `git checkout` on this machine rewrites
# Build.sh with CRLF. The shebang then reads `#!/bin/bash\r`, bash reports
#
# ./Build.sh: cannot execute: required file not found
#
# and — because the failure happens in the wrapper — the build still reports exit 0 while producing
# a one-line log and leaving the PREVIOUS .efi.img in place. That is a stale image that looks like a
# successful build, which is the worst possible failure on a machine where every test costs a power
# cycle. It cost two builds in one session before the artifact timestamp gave it away.
*.sh text eol=lf

# Same reasoning for anything else executed rather than compiled.
*.py text eol=lf
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@
build_initrd/
.claude/
nyx_build_last.log
# Build.sh / Build-std.sh output when redirected here.
build_*.log

# A LITERAL `~` directory. A shell that does not expand `~` (PowerShell, cmd) turns
# `git clone … ~/foo` into a real folder named `~` inside the repo — and `git add -A` then stages it
# as an embedded git repository. This has now happened twice.
~/

# musl build outputs (reproducible via ./Build-musl.sh in ~90s)
vendor/musl/obj/
Expand Down
19 changes: 3 additions & 16 deletions Build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ echo "[4/7] Building Settings App (settings)..."
echo "[5/7] Building Explorer Suite (explorer)..."
(cd apps/explorer && $BUILD_CMD)

echo "[6/7] Building Network Suite (network)..."
(cd apps/network && $BUILD_CMD)

echo "[7/8] Building System Monitor (sysmon)..."
(cd apps/sysmon && $BUILD_CMD)
Expand Down Expand Up @@ -67,14 +65,12 @@ echo "[9e] Building stdgui (target_os=nyx)..."
# `|| echo`-swallow here — a failure should abort the build rather than silently ship a stale terminal.
echo "[9f] Building terminal (std target_os=nyx)..."
./Build-std.sh apps/terminal nyx-terminal
# The graphical browser, libs/web and the Network Suite were DELETED. Browsing is now text-mode
# commands in the terminal (`get`/`links`/`open`/`dns`) over the same libs/net transport. The
# browser and its html5ever/cssparser/layout stack are recoverable from git history if ever wanted.
# Notepad: std target_os=nyx text editor that saves to /mnt/nvme.
echo "[9g] Building notepad (std target_os=nyx)..."
./Build-std.sh apps/notepad notepad || echo " (notepad build skipped/failed — continuing)"
# The browser: nyx_net (HTTP/TLS) + nyx_web (html5ever/cssparser/cascade/layout) + nyx_gui. Must
# SUCCEED — it is the point of the whole net/web stack, and silently shipping a stale binary here
# would mean "testing" a browser that predates the change under test.
echo "[9h] Building browser (std target_os=nyx)..."
./Build-std.sh apps/browser browser
# The POSIX conformance harness (Phase 0 of the libc work). Every estimate for that work is a guess
# until this has been run on hardware, so it ships with every image.
#
Expand All @@ -97,7 +93,6 @@ mkdir -p build_initrd/apps/WindowServer.nyx
mkdir -p build_initrd/apps/Terminal.nyx
mkdir -p build_initrd/apps/Settings.nyx
mkdir -p build_initrd/apps/Explorer.nyx
mkdir -p build_initrd/apps/Network.nyx
mkdir -p build_initrd/apps/SystemMonitor.nyx
mkdir -p build_initrd/apps/GlCube.nyx
mkdir -p build_initrd/apps/ImageViewer.nyx
Expand All @@ -106,7 +101,6 @@ mkdir -p build_initrd/apps/StdChild.nyx
mkdir -p build_initrd/apps/QcStudio.nyx
mkdir -p build_initrd/apps/StdGui.nyx
mkdir -p build_initrd/apps/Notepad.nyx
mkdir -p build_initrd/apps/Browser.nyx
mkdir -p build_initrd/apps/Wifi.nyx
mkdir -p build_initrd/apps/WifiAgent.nyx
# The harness writes ONLY inside this scratch directory (probes/mod.rs panics on any path that
Expand All @@ -126,7 +120,6 @@ cp apps/terminal/target/x86_64-unknown-nyx/release/nyx-terminal build_initrd/app
cp apps/qcstudio/samples/sample.ql build_initrd/apps/Terminal.nyx/sample.ql 2>/dev/null || true
cp target/x86_64-nyx/release/nyx-settings build_initrd/apps/Settings.nyx/run.bin
cp target/x86_64-nyx/release/nyx-explorer build_initrd/apps/Explorer.nyx/run.bin
cp target/x86_64-nyx/release/nyx-network build_initrd/apps/Network.nyx/run.bin
cp target/x86_64-nyx/release/nyx-sysmon build_initrd/apps/SystemMonitor.nyx/run.bin
cp target/x86_64-nyx/release/nyx-glcube build_initrd/apps/GlCube.nyx/run.bin
cp target/x86_64-nyx/release/nyx-imageviewer build_initrd/apps/ImageViewer.nyx/run.bin
Expand All @@ -149,9 +142,6 @@ cp apps/qcstudio/samples/expected.qasm build_initrd/apps/QcStudio.nyx/expected.q
cp apps/stdgui/target/x86_64-unknown-nyx/release/stdgui build_initrd/apps/StdGui.nyx/run.bin 2>/dev/null || true
# Notepad: std target_os=nyx text editor (saves to /mnt/nvme via std::fs).
cp apps/notepad/target/x86_64-unknown-nyx/release/notepad build_initrd/apps/Notepad.nyx/run.bin 2>/dev/null || true
# The browser. Not `|| true`: a missing binary here would show up as a start-menu tile that silently
# does nothing, which is far harder to diagnose than a failed build.
cp apps/browser/target/x86_64-unknown-nyx/release/browser build_initrd/apps/Browser.nyx/run.bin
# POSIX conformance harness + the fixed-content file its read-only probes measure themselves against
# (its size is cross-checked with syscall 541, which already works, so a wrong `read` is detectable).
# Not `|| true`: see [9i]. A probe that fails to ship is a missing row; a probe that ships stale is
Expand Down Expand Up @@ -201,7 +191,6 @@ cp apps/compositor/*.json build_initrd/apps/WindowServer.nyx/ 2>/dev/null || tru
cp apps/terminal/*.json build_initrd/apps/Terminal.nyx/ 2>/dev/null || true
cp apps/settings/*.json build_initrd/apps/Settings.nyx/ 2>/dev/null || true
cp apps/explorer/*.json build_initrd/apps/Explorer.nyx/ 2>/dev/null || true
cp apps/network/*.json build_initrd/apps/Network.nyx/ 2>/dev/null || true
cp apps/sysmon/*.json build_initrd/apps/SystemMonitor.nyx/ 2>/dev/null || true
cp apps/glcube/*.json build_initrd/apps/GlCube.nyx/ 2>/dev/null || true
cp apps/imageviewer/*.json build_initrd/apps/ImageViewer.nyx/ 2>/dev/null || true
Expand All @@ -222,7 +211,6 @@ install_icon() { cp "assets/icons/$1.png" "build_initrd/apps/$2.nyx/icon.png" 2>
install_icon terminal Terminal
install_icon settings Settings
install_icon explorer Explorer
install_icon network Network
install_icon sysmon SystemMonitor
install_icon glcube GlCube
install_icon imageviewer ImageViewer
Expand All @@ -231,7 +219,6 @@ install_icon qcstudio QcStudio
install_icon stdgui StdGui
install_icon notepad Notepad
install_icon wifi Wifi
install_icon browser Browser
install_icon posixprobe PosixProbe
# Borrows the terminal glyph: it is a console program, and a bespoke icon is not worth a new drawing
# routine for a test binary.
Expand Down
Loading
Loading