From fbaafc7cff2af2f331485650d910a728e37e3971 Mon Sep 17 00:00:00 2001 From: Astronand Date: Tue, 6 Oct 2026 14:23:16 -0400 Subject: [PATCH] made install packages and fixed spm del err --- .../modules/cc-tweaked/00_addon_disable.kmod | 5 + .../{ => cc-tweaked}/31_keyboards.kmod | 0 .../lib/modules/cc-tweaked/00_disable.kmod | 12 + .../data/boot/oc/initdisks | 8 +- .../lib/modules/opencomputers/00_disable.kmod | 11 + .../data/boot/puc/boot.lua | 593 ++++++++++++++++++ .../data/boot/puc/eeprom | 1 + .../data/lib/modules/hyperion/12_procfs.kmod | 6 +- Src/Hyperion-kernel/version.txt | 2 +- Src/HyperionOS-bones/authors.txt | 1 + Src/HyperionOS-bones/dependencies.txt | 2 + Src/HyperionOS-bones/description.txt | 1 + Src/HyperionOS-bones/version.txt | 1 + Src/HyperionOS-full/authors.txt | 1 + Src/HyperionOS-full/dependencies.txt | 10 + Src/HyperionOS-full/description.txt | 1 + Src/HyperionOS-full/version.txt | 1 + Src/HyperionOS-minimal/authors.txt | 1 + Src/HyperionOS-minimal/dependencies.txt | 6 + Src/HyperionOS-minimal/description.txt | 1 + Src/HyperionOS-minimal/version.txt | 1 + Src/installer/authors.txt | 2 - Src/installer/data/bin/hyperion-build | 0 Src/installer/data/bin/install | 0 Src/installer/description.txt | 1 - Src/installer/version.txt | 1 - Src/scomposite/data/lib/gfx | 4 - Src/spm/data/bin/spm | 19 +- packages/Hyperion-firmware-addon-cct.pkg | 2 +- packages/Hyperion-firmware-cct.pkg | 2 +- packages/Hyperion-firmware-oc.pkg | 2 +- packages/Hyperion-firmware-puc.pkg | 2 +- packages/Hyperion-kernel.pkg | 4 +- packages/HyperionOS-bones.pkg | 14 + packages/HyperionOS-full.pkg | 22 + packages/HyperionOS-minimal.pkg | 18 + packages/installer.pkg | 12 - .../raw/Hyperion-firmware-addon-cct.tar.gz | Bin 294 -> 375 bytes packages/raw/Hyperion-firmware-cct.tar.gz | Bin 13293 -> 13377 bytes packages/raw/Hyperion-firmware-oc.tar.gz | Bin 8404 -> 8538 bytes packages/raw/Hyperion-firmware-puc.tar.gz | Bin 109 -> 4214 bytes packages/raw/Hyperion-kernel.tar.gz | Bin 32767 -> 32788 bytes packages/raw/HyperionOS-bones.tar.gz | Bin 0 -> 245 bytes packages/raw/HyperionOS-full.tar.gz | Bin 0 -> 286 bytes packages/raw/HyperionOS-minimal.tar.gz | Bin 0 -> 269 bytes packages/raw/installer.tar.gz | Bin 263 -> 0 bytes packages/raw/scomposite.tar.gz | Bin 183 -> 0 bytes packages/raw/spm.tar.gz | Bin 5934 -> 5975 bytes packages/scomposite.pkg | 9 - packages/spm.pkg | 2 +- spm.json | 5 +- 51 files changed, 737 insertions(+), 49 deletions(-) create mode 100644 Src/Hyperion-firmware-addon-cct/data/lib/modules/cc-tweaked/00_addon_disable.kmod rename Src/Hyperion-firmware-addon-cct/data/lib/modules/{ => cc-tweaked}/31_keyboards.kmod (100%) create mode 100644 Src/Hyperion-firmware-cct/data/lib/modules/cc-tweaked/00_disable.kmod create mode 100644 Src/Hyperion-firmware-oc/data/lib/modules/opencomputers/00_disable.kmod create mode 100644 Src/Hyperion-firmware-puc/data/boot/puc/boot.lua create mode 100644 Src/Hyperion-firmware-puc/data/boot/puc/eeprom create mode 100644 Src/HyperionOS-bones/authors.txt create mode 100644 Src/HyperionOS-bones/dependencies.txt create mode 100644 Src/HyperionOS-bones/description.txt create mode 100644 Src/HyperionOS-bones/version.txt create mode 100644 Src/HyperionOS-full/authors.txt create mode 100644 Src/HyperionOS-full/dependencies.txt create mode 100644 Src/HyperionOS-full/description.txt create mode 100644 Src/HyperionOS-full/version.txt create mode 100644 Src/HyperionOS-minimal/authors.txt create mode 100644 Src/HyperionOS-minimal/dependencies.txt create mode 100644 Src/HyperionOS-minimal/description.txt create mode 100644 Src/HyperionOS-minimal/version.txt delete mode 100644 Src/installer/authors.txt delete mode 100644 Src/installer/data/bin/hyperion-build delete mode 100644 Src/installer/data/bin/install delete mode 100644 Src/installer/description.txt delete mode 100644 Src/installer/version.txt delete mode 100644 Src/scomposite/data/lib/gfx create mode 100644 packages/HyperionOS-bones.pkg create mode 100644 packages/HyperionOS-full.pkg create mode 100644 packages/HyperionOS-minimal.pkg delete mode 100644 packages/installer.pkg create mode 100644 packages/raw/HyperionOS-bones.tar.gz create mode 100644 packages/raw/HyperionOS-full.tar.gz create mode 100644 packages/raw/HyperionOS-minimal.tar.gz delete mode 100644 packages/raw/installer.tar.gz delete mode 100644 packages/raw/scomposite.tar.gz delete mode 100644 packages/scomposite.pkg diff --git a/Src/Hyperion-firmware-addon-cct/data/lib/modules/cc-tweaked/00_addon_disable.kmod b/Src/Hyperion-firmware-addon-cct/data/lib/modules/cc-tweaked/00_addon_disable.kmod new file mode 100644 index 0000000..9f78751 --- /dev/null +++ b/Src/Hyperion-firmware-addon-cct/data/lib/modules/cc-tweaked/00_addon_disable.kmod @@ -0,0 +1,5 @@ +--:Minify:-- +local kernel=... +if kernel.arch~="cct" then + kernel.deny("cc-tweaked/31_keyboards.kmod") +end \ No newline at end of file diff --git a/Src/Hyperion-firmware-addon-cct/data/lib/modules/31_keyboards.kmod b/Src/Hyperion-firmware-addon-cct/data/lib/modules/cc-tweaked/31_keyboards.kmod similarity index 100% rename from Src/Hyperion-firmware-addon-cct/data/lib/modules/31_keyboards.kmod rename to Src/Hyperion-firmware-addon-cct/data/lib/modules/cc-tweaked/31_keyboards.kmod diff --git a/Src/Hyperion-firmware-cct/data/lib/modules/cc-tweaked/00_disable.kmod b/Src/Hyperion-firmware-cct/data/lib/modules/cc-tweaked/00_disable.kmod new file mode 100644 index 0000000..67f32d9 --- /dev/null +++ b/Src/Hyperion-firmware-cct/data/lib/modules/cc-tweaked/00_disable.kmod @@ -0,0 +1,12 @@ +--:Minify:-- +local kernel=... +if kernel.arch~="cct" then + kernel.deny("cc-tweaked/01_periph.kmod") + kernel.deny("cc-tweaked/13_devraw.kmod") + kernel.deny("cc-tweaked/22_http.kmod") + kernel.deny("cc-tweaked/25_mouse.kmod") + kernel.deny("cc-tweaked/25_tty.kmod") + kernel.deny("cc-tweaked/30_daemon.kmod") + kernel.deny("cc-tweaked/46_scheduler.kmod") + kernel.deny("cc-tweaked/51_gpio.kmod") +end \ No newline at end of file diff --git a/Src/Hyperion-firmware-oc/data/boot/oc/initdisks b/Src/Hyperion-firmware-oc/data/boot/oc/initdisks index 26bee35..50710bd 100644 --- a/Src/Hyperion-firmware-oc/data/boot/oc/initdisks +++ b/Src/Hyperion-firmware-oc/data/boot/oc/initdisks @@ -18,7 +18,13 @@ local function createDisk(id, hw) if not hw.exists(path) or not hw.isDirectory(path) then return nil, "not directory" end - return hw.list(path) + local ret={} + for i,v in ipairs(hw.list(path)) do + if v:sub(-1)=="/" then + ret[i]=v:sub(1,#v-1) + else ret[i]=v end + end + return ret end function disk:fileExists(path) diff --git a/Src/Hyperion-firmware-oc/data/lib/modules/opencomputers/00_disable.kmod b/Src/Hyperion-firmware-oc/data/lib/modules/opencomputers/00_disable.kmod new file mode 100644 index 0000000..07008ea --- /dev/null +++ b/Src/Hyperion-firmware-oc/data/lib/modules/opencomputers/00_disable.kmod @@ -0,0 +1,11 @@ +--:Minify:-- +local kernel=... +if kernel.arch~="oc" then + kernel.deny("opencomputers/01_devices.kmod") + kernel.deny("opencomputers/13_devraw.kmod") + kernel.deny("opencomputers/22_http.kmod") + kernel.deny("opencomputers/25_tty.kmod") + kernel.deny("opencomputers/26_keyboards.kmod") + kernel.deny("opencomputers/30_daemon.kmod") + kernel.deny("opencomputers/36_scheduler.kmod") +end \ No newline at end of file diff --git a/Src/Hyperion-firmware-puc/data/boot/puc/boot.lua b/Src/Hyperion-firmware-puc/data/boot/puc/boot.lua new file mode 100644 index 0000000..9b5bc6b --- /dev/null +++ b/Src/Hyperion-firmware-puc/data/boot/puc/boot.lua @@ -0,0 +1,593 @@ +--:Minify:-- +local BOOT_DRIVE_PATH = ({...})[1] or "/$" +---@diagnostic disable-next-line: undefined-global +local lterm = term +local function write(text, term) + local x, y = term.getCursorPos() + local w, h = term.getSize() + + for i = 1, #text do + local c = text:sub(i, i) + + if c == "\n" then + y = y + 1 + x = 1 + elseif c == "\t" then + local tabSize = 4 + local spaces = tabSize - ((x - 1) % tabSize) + term.write(string.rep(" ", spaces)) + x = x + spaces + elseif c == "\b" then + if x > 1 then + x = x - 1 + term.setCursorPos(x, y) + term.write(" ") + term.setCursorPos(x, y) + end + else + if x <= w and y <= h then + term.setCursorPos(x, y) + term.write(c) + x = x + 1 + end + end + + if x > w then + x = 1 + y = y + 1 + end + + if y - 1 >= h then + term.scroll(1) + y = h + term.setCursorPos(x, y) + end + end + + term.setCursorPos(x, y) +end + +local function displaySuperBadError(err, noyield) + lterm.setBackgroundColor(0x1) + lterm.setTextColor(0x4) + lterm.clear() + lterm.setCursorPos(1, 1) + lterm.write("A critical error occurred while loading the system:") + lterm.setCursorPos(1, 3) + write(err, lterm) + coroutine.yield("key") +end + +term.setCursorBlink(false) +local ok, err = xpcall(function() + --p + local apis = {BOOT_DRIVE_PATH = BOOT_DRIVE_PATH} + + local lua = { + coroutine = true, + debug = true, + _VERSION = true, + assert = true, + collectgarbage = true, + error = true, + gcinfo = true, + getmetatable = true, + ipairs = true, + __inext = true, + load = true, + math = true, + next = true, + pairs = true, + pcall = true, + rawequal = true, + rawget = true, + rawlen = true, + rawset = true, + select = true, + setmetatable = true, + string = true, + table = true, + tonumber = true, + tostring = true, + type = true, + xpcall = true, + _G = true + } + + local debug = debug + for i, v in pairs(_G) do + if not lua[i] or lua[i] == nil then + apis[i] = v + _G[i] = nil + end + end + --p + + local acekeys={ + [apis.keys.enter]="\n", + [apis.keys.tab]="\t", + [apis.keys.backspace]="\b", + [apis.keys.up]="\17", + [apis.keys.down]="\18", + [apis.keys.left]="\19", + [apis.keys.right]="\20", + } + + function sleep(time) + local stoptime = apis.os.clock() + (time) + while stoptime > apis.os.clock() do end + end + + apis.term.setPaletteColor(0x1, 0xFFFFFF) -- #000000 + apis.term.setPaletteColor(0x2, 0xFF0000) -- #FFFFFF + apis.term.setPaletteColor(0x4, 0x00FF00) -- #FF0000 + apis.term.setPaletteColor(0x8, 0x0000FF) -- #00FF00 + apis.term.setPaletteColor(0x10, 0x00FFFF) -- #0000FF + apis.term.setPaletteColor(0x20, 0xFF00FF) -- #00FFFF + apis.term.setPaletteColor(0x40, 0xFFFF00) -- #FF00FF + apis.term.setPaletteColor(0x80, 0xFF6D00) -- #FFFF00 + apis.term.setPaletteColor(0x100, 0x6DFF55) -- #FF6D00 + apis.term.setPaletteColor(0x200, 0x24FFFF) -- #6DFF55 + apis.term.setPaletteColor(0x400, 0x924900) -- #24FFFF + apis.term.setPaletteColor(0x800, 0x6D6D55) -- #924900 + apis.term.setPaletteColor(0x1000, 0xDBDBAA) -- #6D6D55 + apis.term.setPaletteColor(0x2000, 0x6D00FF) -- #DBDBAA + apis.term.setPaletteColor(0x4000, 0xB6FF00) -- #6D00FF + apis.term.setPaletteColor(0x8000, 0x000000) -- #B6FF00 + + local function getFile(path) + local file = apis.fs.open(path, "r") + if not file then + displaySuperBadError("Could not open file: " .. path) + end + local content = file.readAll() + file.close() + return content + end + + local Kernel = load(getFile(BOOT_DRIVE_PATH .. "/kernel.lua"),"@Kernel") + local initFs = load(getFile(BOOT_DRIVE_PATH .. "/cct/initdisks"),"@Init_disks")(apis) + local fs = load(getFile(BOOT_DRIVE_PATH .. "/initfs"), "@InitFs")() + + if not Kernel then displaySuperBadError("Could not load kernel.") end + if not initFs then displaySuperBadError("Could not load initdisks.") end + if not fs then displaySuperBadError("Could not load initfs.") end + + if not apis.fs.exists("/nvram.dat") then + local file = apis.fs.open("/nvram.dat", "w") + file.write("Hello, World!") + file.close() + end + + local eeprom + if apis.fs.exists("/startup.lua") then + eeprom="/startup.lua" + elseif apis.fs.exists("/eeprom") then + eeprom="/eeprom" + end + + local eventQueue = {} + + local function queueEvent(event, ...) + table.insert(eventQueue, {event, ...}) + end + + local colors = { + [0xFFFFFF]=0x0001, + [0xFF0000]=0x0002, + [0x00FF00]=0x0004, + [0x0000FF]=0x0008, + [0x00FFFF]=0x0010, + [0xFF00FF]=0x0020, + [0xFFFF00]=0x0040, + [0xFF6D00]=0x0080, + [0x6DFF55]=0x0100, + [0x24FFFF]=0x0200, + [0x924900]=0x0400, + [0x6D6D55]=0x0800, + [0xDBDBAA]=0x1000, + [0x6D00FF]=0x2000, + [0xB6FF00]=0x4000, + [0x000000]=0x8000 + } + + local fg,bg=0x6D6D55,0x000000 + local l1f,l1d,l2,ops={},{},{},0 + + local function findClosest(tbl, target) + local closest = nil + local smallestDiff = math.huge + + for k, _ in pairs(tbl) do + if k==target then return k end + local diff = math.abs(k - target) + if diff < smallestDiff then + smallestDiff = diff + closest = k + end + end + + return closest + end + + local function aprox(c24) + ops = ops + 1 + + if ops % 1024 == 0 then + l1d = {} + l1f = {} + end + + if ops % 8192 == 0 then + l2 = {} + end + + if l2[c24] ~= nil then + return l2[c24] + end + + if l1d[c24] ~= nil then + l1f[c24] = l1f[c24] + 1 + + if l1f[c24] >= 16 then + l2[c24] = l1d[c24] + l1d[c24] = nil + l1f[c24] = nil + return l2[c24] + end + + return l1d[c24] + end + + local closestKey = findClosest(colors, c24) + if not closestKey then return nil end + + local value = colors[closestKey] + + l1d[c24] = value + l1f[c24] = 1 + + return value + end + + --p + local p={} + local native = apis.peripheral + local sides = {"top", "bottom", "left", "right", "front", "back"} + + function p.getNames() + local results = {} + for n = 1, #sides do + local side = sides[n] + if native.isPresent(side) then + table.insert(results, side) + if native.hasType(side, "peripheral_hub") then + local remote = native.call(side, "getNamesRemote") + for _, name in ipairs(remote) do + table.insert(results, name) + end + end + end + end + return results + end + + function p.isPresent(name) + if native.isPresent(name) then + return true + end + + for n = 1, #sides do + local side = sides[n] + if native.hasType(side, "peripheral_hub") and native.call(side, "isPresentRemote", name) then + return true + end + end + return false + end + + function p.getType(peripheral) + if type(peripheral) == "string" then + if native.isPresent(peripheral) then + return native.getType(peripheral) + end + for n = 1, #sides do + local side = sides[n] + if native.hasType(side, "peripheral_hub") and native.call(side, "isPresentRemote", peripheral) then + return native.call(side, "getTypeRemote", peripheral) + end + end + return nil + else + local mt = getmetatable(peripheral) + if not mt or mt.__name ~= "peripheral" or type(mt.types) ~= "table" then + error("bad argument #1 (table is not a peripheral)", 2) + end + return table.unpack(mt.types) + end + end + + function p.hasType(peripheral, peripheral_type) + if type(peripheral) == "string" then + if native.isPresent(peripheral) then + return native.hasType(peripheral, peripheral_type) + end + for n = 1, #sides do + local side = sides[n] + if native.hasType(side, "peripheral_hub") and native.call(side, "isPresentRemote", peripheral) then + return native.call(side, "hasTypeRemote", peripheral, peripheral_type) + end + end + return nil + else + local mt = getmetatable(peripheral) + if not mt or mt.__name ~= "peripheral" or type(mt.types) ~= "table" then + error("bad argument #1 (table is not a peripheral)", 2) + end + return mt.types[peripheral_type] ~= nil + end + end + + function p.getMethods(name) + if native.isPresent(name) then + return native.getMethods(name) + end + for n = 1, #sides do + local side = sides[n] + if native.hasType(side, "peripheral_hub") and native.call(side, "isPresentRemote", name) then + return native.call(side, "getMethodsRemote", name) + end + end + return nil + end + + function p.getName(peripheral) + local mt = getmetatable(peripheral) + if not mt or mt.__name ~= "peripheral" or type(mt.name) ~= "string" then + error("bad argument #1 (table is not a peripheral)", 2) + end + return mt.name + end + + function p.call(name, method, ...) + if native.isPresent(name) then + return native.call(name, method, ...) + end + + for n = 1, #sides do + local side = sides[n] + if native.hasType(side, "peripheral_hub") and native.call(side, "isPresentRemote", name) then + return native.call(side, "callRemote", name, method, ...) + end + end + return nil + end + + function p.wrap(name) + local methods = p.getMethods(name) + if not methods then + return nil + end + + local types = { p.getType(name) } + for i = 1, #types do types[types[i]] = true end + local result = setmetatable({}, { + __name = "peripheral", + name = name, + type = types[1], + types = types, + }) + for _, method in ipairs(methods) do + result[method] = function(...) + return p.call(name, method, ...) + end + end + return result + end + + function p.find(ty, filter) + local results = {} + for _, name in ipairs(p.getNames()) do + if p.hasType(name, ty) then + local wrapped = p.wrap(name) + if filter == nil or filter(name, wrapped) then + table.insert(results, wrapped) + end + end + end + return table.unpack(results) + end + --p + local allscreens = {p.find("monitor")} + for i=1, #allscreens do + allscreens[i].setTextScale(.5) + allscreens[i].clear() + allscreens[i].setCursorPos(1,1) + end + + allscreens[#allscreens+1] = apis.term + + local callAsyncQueue = {} + local callAsyncReturn = {} + apis.callAsyncReturn = callAsyncReturn + local callidx=0 + + function apis.callAsync(func, ...) + callidx=callidx+1 + callAsyncQueue[#callAsyncQueue+1] = {callidx, func, ...} + return callidx + end + + local EFI = { + yield=function() end, + getEpochMs = function() return apis.os.epoch("utc") end, + getUptime = function() return apis.os.clock() * 1000 end, + date = function() return apis.os.date("!%Y-%m-%dT%H:%M:%SZ", apis.os.epoch("utc") / 1000) end, + getMachineEvent = function() + if #eventQueue > 0 then + return table.unpack(table.remove(eventQueue, 1)) + else + return nil + end + end, + getEEPROM = function() return getFile(eeprom) end, + setEEPROM = function(_, text) + local h = apis.fs.open(eeprom, "w") + h.write(text) + h.close() + end, + initfs=fs, + disks=initFs, + screenCtl={ + print = function(_, text) + for i=1, #allscreens do + write(text.."\n", allscreens[i]) + end + end, + printInline = function(_, text) + for i=1, #allscreens do + write(text, allscreens[i]) + end + end, + clear = function() + for i=1, #allscreens do + allscreens[i].clear() + allscreens[i].setCursorPos(1, 1) + end + end, + resetCursor = function() + for i=1, #allscreens do + allscreens[i].setCursorPos(1, 1) + end + end, + setBackgroundColor = function(_, color) + bg=color + for i=1, #allscreens do + allscreens[i].setBackgroundColor(aprox(color)) + end + end, + setTextColor = function(_, color) + fg=color + for i=1, #allscreens do + allscreens[i].setTextColor(aprox(color)) + end + end, + getBackgroundColor = function() + return bg + end, + getTextColor = function() + return fg + end, + enable=function() + for i=1, #allscreens do + allscreens[i].clear() + allscreens[i].setCursorPos(1, 1) + end + end, + disable=function() end + }, + architecture="cct", + getNvram = function() return getFile("/nvram.dat") end, + setNvram = function(_, text) + local h = apis.fs.open("/nvram.dat", "w") + h.write(text) + h.close() + end, + firmware=apis, + status="running", + beep=function() end + } + + apis.term.setBackgroundColor(0x8000) + apis.term.setTextColor(0x1000) + apis.term.clear() + apis.term.setCursorPos(1, 1) + + local kernelCoro = coroutine.create(function() + --pf + ---@diagnostic disable-next-line: param-type-mismatch + local ok, err = xpcall(Kernel, debug.traceback, EFI) + if not ok then + error(err) + else + apis.os.shutdown() + end + end) + + function EFI.resumeWithTimeout(co, timeout, ...) + local startTime = EFI.getEpochMs() + debug.sethook(co, function() + if EFI.getEpochMs() > startTime + timeout then + return coroutine.yield("timeout") + end + end, "", 1000) + local ret = {coroutine.resume(co, ...)} + if ret[1] and ret[2] == "timeout" then + return "timeout" + elseif ret[1] == false then + return "error", ret[2] + else + debug.sethook(co) + return "success", table.unpack(ret, 2) + end + end + + EFI.screenCtl:print("Loaded in " .. tostring(apis.os.clock()) .. " seconds.\n") + --p + + while true do + local status, err = EFI.resumeWithTimeout(kernelCoro, 50) + apis.os.queueEvent("NoSleep") + local exit = false + while not exit do + local event = {coroutine.yield()} + if event[1] == "key" then + queueEvent(table.unpack(event)) + queueEvent("keyPressed", 1, event[2]) + if acekeys[event[2]] then + queueEvent("keyTyped", 1, acekeys[event[2]]) + end + elseif event[1] == "char" then + queueEvent(table.unpack(event)) + queueEvent("keyTyped", 1, event[2]) + elseif event[1] == "key_up" then + queueEvent(table.unpack(event)) + queueEvent("keyReleased", 1, event[2]) + elseif event[1] == "NoSleep" then + exit = true + else + queueEvent(table.unpack(event)) + end + end + while #callAsyncQueue>0 do + local bundle = table.remove(callAsyncQueue, 1) + local ret = {xpcall(bundle[2], debug.traceback, table.unpack(bundle, 3))} + if not ret[1] then + callAsyncReturn[bundle[1]]={false, ret[2]} + else + callAsyncReturn[bundle[1]]={true, table.unpack(ret,2)} + end + end + if status == "error" or coroutine.status(kernelCoro) == "dead" then + if EFI.status=="reboot" then + apis.os.reboot() + elseif EFI.status=="shutdown" then + apis.os.shutdown() + end + displaySuperBadError("Kernel error: " .. tostring(err)) + coroutine.yield("key") + elseif status == "success" then + if EFI.status=="reboot" then + apis.os.reboot() + elseif EFI.status=="shutdown" then + apis.os.shutdown() + end + displaySuperBadError("Kernel error: Attempted to yield main thread\n"..debug.traceback(kernelCoro, "Attempted to yield main thread")) + coroutine.yield("key") + end + initFs:refresh() + end +end, debug.traceback) + +if not ok then displaySuperBadError("Fatal error during boot: " .. err) end +while true do coroutine.yield("key") end diff --git a/Src/Hyperion-firmware-puc/data/boot/puc/eeprom b/Src/Hyperion-firmware-puc/data/boot/puc/eeprom new file mode 100644 index 0000000..1867c83 --- /dev/null +++ b/Src/Hyperion-firmware-puc/data/boot/puc/eeprom @@ -0,0 +1 @@ +print("Hyperion OS PUC bootloader") diff --git a/Src/Hyperion-kernel/data/lib/modules/hyperion/12_procfs.kmod b/Src/Hyperion-kernel/data/lib/modules/hyperion/12_procfs.kmod index 2ead312..77744f4 100644 --- a/Src/Hyperion-kernel/data/lib/modules/hyperion/12_procfs.kmod +++ b/Src/Hyperion-kernel/data/lib/modules/hyperion/12_procfs.kmod @@ -103,7 +103,7 @@ local function newtaskproxy(task) children[tostring(v.pid)]="/proc/"..tostring(v.pid) end return { - [".meta"]=strFile(buildMeta({cwd=task.cwd,parent="/proc/"..tostring(task.parent.pid)})), + [".meta"]=strFile(buildMeta({cwd=task.cwd,parent="/proc/"..tostring(task.parent.pid),root=task.root or "/"})), uid=strFile(task.uid), comm=strFile(task.name), fd={ @@ -115,7 +115,9 @@ local function newtaskproxy(task) children={ [".meta"]=strFile(buildMeta(children)) }, - pid=strFile(task.pid) + pid=strFile(task.pid), + ivs=strFile(task.ivs), + vs=strFile(task.vs) } end diff --git a/Src/Hyperion-kernel/version.txt b/Src/Hyperion-kernel/version.txt index 3e1ad72..b966e81 100644 --- a/Src/Hyperion-kernel/version.txt +++ b/Src/Hyperion-kernel/version.txt @@ -1 +1 @@ -1.5.0 \ No newline at end of file +1.2.4 \ No newline at end of file diff --git a/Src/HyperionOS-bones/authors.txt b/Src/HyperionOS-bones/authors.txt new file mode 100644 index 0000000..4b62d45 --- /dev/null +++ b/Src/HyperionOS-bones/authors.txt @@ -0,0 +1 @@ +Hyperion \ No newline at end of file diff --git a/Src/HyperionOS-bones/dependencies.txt b/Src/HyperionOS-bones/dependencies.txt new file mode 100644 index 0000000..ef16663 --- /dev/null +++ b/Src/HyperionOS-bones/dependencies.txt @@ -0,0 +1,2 @@ +Hyperion-kernel +Hyperion-core \ No newline at end of file diff --git a/Src/HyperionOS-bones/description.txt b/Src/HyperionOS-bones/description.txt new file mode 100644 index 0000000..cf283ad --- /dev/null +++ b/Src/HyperionOS-bones/description.txt @@ -0,0 +1 @@ +HyperionOS install package-group \ No newline at end of file diff --git a/Src/HyperionOS-bones/version.txt b/Src/HyperionOS-bones/version.txt new file mode 100644 index 0000000..b966e81 --- /dev/null +++ b/Src/HyperionOS-bones/version.txt @@ -0,0 +1 @@ +1.2.4 \ No newline at end of file diff --git a/Src/HyperionOS-full/authors.txt b/Src/HyperionOS-full/authors.txt new file mode 100644 index 0000000..4b62d45 --- /dev/null +++ b/Src/HyperionOS-full/authors.txt @@ -0,0 +1 @@ +Hyperion \ No newline at end of file diff --git a/Src/HyperionOS-full/dependencies.txt b/Src/HyperionOS-full/dependencies.txt new file mode 100644 index 0000000..3fe671d --- /dev/null +++ b/Src/HyperionOS-full/dependencies.txt @@ -0,0 +1,10 @@ +Hyperion-kernel +Hyperion-core +coreutils +spm +sysinit +hysh +lua +micro +Hypersplash +math \ No newline at end of file diff --git a/Src/HyperionOS-full/description.txt b/Src/HyperionOS-full/description.txt new file mode 100644 index 0000000..cf283ad --- /dev/null +++ b/Src/HyperionOS-full/description.txt @@ -0,0 +1 @@ +HyperionOS install package-group \ No newline at end of file diff --git a/Src/HyperionOS-full/version.txt b/Src/HyperionOS-full/version.txt new file mode 100644 index 0000000..b966e81 --- /dev/null +++ b/Src/HyperionOS-full/version.txt @@ -0,0 +1 @@ +1.2.4 \ No newline at end of file diff --git a/Src/HyperionOS-minimal/authors.txt b/Src/HyperionOS-minimal/authors.txt new file mode 100644 index 0000000..4b62d45 --- /dev/null +++ b/Src/HyperionOS-minimal/authors.txt @@ -0,0 +1 @@ +Hyperion \ No newline at end of file diff --git a/Src/HyperionOS-minimal/dependencies.txt b/Src/HyperionOS-minimal/dependencies.txt new file mode 100644 index 0000000..42e94b1 --- /dev/null +++ b/Src/HyperionOS-minimal/dependencies.txt @@ -0,0 +1,6 @@ +Hyperion-kernel +Hyperion-core +coreutils +hysh +lua +wget \ No newline at end of file diff --git a/Src/HyperionOS-minimal/description.txt b/Src/HyperionOS-minimal/description.txt new file mode 100644 index 0000000..cf283ad --- /dev/null +++ b/Src/HyperionOS-minimal/description.txt @@ -0,0 +1 @@ +HyperionOS install package-group \ No newline at end of file diff --git a/Src/HyperionOS-minimal/version.txt b/Src/HyperionOS-minimal/version.txt new file mode 100644 index 0000000..b966e81 --- /dev/null +++ b/Src/HyperionOS-minimal/version.txt @@ -0,0 +1 @@ +1.2.4 \ No newline at end of file diff --git a/Src/installer/authors.txt b/Src/installer/authors.txt deleted file mode 100644 index 73c23ff..0000000 --- a/Src/installer/authors.txt +++ /dev/null @@ -1,2 +0,0 @@ -Hyperion -Astronand \ No newline at end of file diff --git a/Src/installer/data/bin/hyperion-build b/Src/installer/data/bin/hyperion-build deleted file mode 100644 index e69de29..0000000 diff --git a/Src/installer/data/bin/install b/Src/installer/data/bin/install deleted file mode 100644 index e69de29..0000000 diff --git a/Src/installer/description.txt b/Src/installer/description.txt deleted file mode 100644 index 73af478..0000000 --- a/Src/installer/description.txt +++ /dev/null @@ -1 +0,0 @@ -Hyperion os live installer \ No newline at end of file diff --git a/Src/installer/version.txt b/Src/installer/version.txt deleted file mode 100644 index afaf360..0000000 --- a/Src/installer/version.txt +++ /dev/null @@ -1 +0,0 @@ -1.0.0 \ No newline at end of file diff --git a/Src/scomposite/data/lib/gfx b/Src/scomposite/data/lib/gfx deleted file mode 100644 index 13bcafc..0000000 --- a/Src/scomposite/data/lib/gfx +++ /dev/null @@ -1,4 +0,0 @@ ---:Minify:-- -local lib = {} - -return lib \ No newline at end of file diff --git a/Src/spm/data/bin/spm b/Src/spm/data/bin/spm index b557ddb..432c48d 100644 --- a/Src/spm/data/bin/spm +++ b/Src/spm/data/bin/spm @@ -97,6 +97,7 @@ local spm = function(...) i = i + 1 end +---@diagnostic disable-next-line: cast-local-type i=nil if cloptions.help or cloptions.h then @@ -632,9 +633,11 @@ local spm = function(...) if pkgdb[i] then if not cloptions.overwrite then for f,h in pairs(v.data) do - if pkgdb[i].files[f]~=md5(fs.readAllText(f)) then - w(f.." was modified on disk, specify --overwrite to overwrite") - block[f]=true + if fs.exists(f) then + if pkgdb[i].files[f]~=md5(fs.readAllText(f)) then + w(f.." was modified on disk, specify --overwrite to overwrite") + block[f]=true + end end end end @@ -655,10 +658,12 @@ local spm = function(...) if pkgdb[i] then for f,c in pairs(pkgdb[i].files) do if not v.data[f] then - if c~=md5(fs.readAllText(f)) then - w(f.." was modified on disk, specify --overwrite to overwrite") - else - delete[f]=true + if fs.exists(f) then + if c~=md5(fs.readAllText(f)) then + w(f.." was modified on disk, specify --overwrite to overwrite") + else + delete[f]=true + end end end end diff --git a/packages/Hyperion-firmware-addon-cct.pkg b/packages/Hyperion-firmware-addon-cct.pkg index acedee8..e548b59 100644 --- a/packages/Hyperion-firmware-addon-cct.pkg +++ b/packages/Hyperion-firmware-addon-cct.pkg @@ -4,6 +4,6 @@ "authors": [], "dependencies": [], "version": "0.0.0", - "hash": "dd93f2bd27640aea671155c26c3c47c5", + "hash": "56892ed6be471cb132c0762882293fe7", "tarball": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/raw/Hyperion-firmware-addon-cct.tar.gz" } diff --git a/packages/Hyperion-firmware-cct.pkg b/packages/Hyperion-firmware-cct.pkg index 1adcdbe..75b7e67 100644 --- a/packages/Hyperion-firmware-cct.pkg +++ b/packages/Hyperion-firmware-cct.pkg @@ -7,6 +7,6 @@ ], "dependencies": [], "version": "1.3.0", - "hash": "b74410d9fb302a0dd4ca1b032afdc5c2", + "hash": "8fb602c785c57a3a2779345c33dcb850", "tarball": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/raw/Hyperion-firmware-cct.tar.gz" } diff --git a/packages/Hyperion-firmware-oc.pkg b/packages/Hyperion-firmware-oc.pkg index 396bf17..6786024 100644 --- a/packages/Hyperion-firmware-oc.pkg +++ b/packages/Hyperion-firmware-oc.pkg @@ -8,6 +8,6 @@ ], "dependencies": [], "version": "1.0.0", - "hash": "f2a112c3828345702e2c420f6bab6d5f", + "hash": "164db01c04cd35b1220ac7e3b0c6d9c1", "tarball": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/raw/Hyperion-firmware-oc.tar.gz" } diff --git a/packages/Hyperion-firmware-puc.pkg b/packages/Hyperion-firmware-puc.pkg index c74b676..608bafd 100644 --- a/packages/Hyperion-firmware-puc.pkg +++ b/packages/Hyperion-firmware-puc.pkg @@ -4,6 +4,6 @@ "authors": [], "dependencies": [], "version": "0.0.0", - "hash": "ee9eaca79973d87840c729bd4edf8633", + "hash": "c7ac47aee2275eddb834a933bab1a90e", "tarball": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/raw/Hyperion-firmware-puc.tar.gz" } diff --git a/packages/Hyperion-kernel.pkg b/packages/Hyperion-kernel.pkg index 06ac8eb..4d427fc 100644 --- a/packages/Hyperion-kernel.pkg +++ b/packages/Hyperion-kernel.pkg @@ -7,7 +7,7 @@ "Spsf" ], "dependencies": [], - "version": "1.5.0", - "hash": "fda2d814a7c3cc1ec532175192101573", + "version": "1.2.4", + "hash": "0ccf68c82625052e8f2a24e4faa311e1", "tarball": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/raw/Hyperion-kernel.tar.gz" } diff --git a/packages/HyperionOS-bones.pkg b/packages/HyperionOS-bones.pkg new file mode 100644 index 0000000..eb4bfb7 --- /dev/null +++ b/packages/HyperionOS-bones.pkg @@ -0,0 +1,14 @@ +{ + "id": "HyperionOS-bones", + "description": "HyperionOS install package-group", + "authors": [ + "Hyperion" + ], + "dependencies": [ + "Hyperion-kernel", + "Hyperion-core" + ], + "version": "1.2.4", + "hash": "aa030c94b32efce1387af837bd5e72c5", + "tarball": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/raw/HyperionOS-bones.tar.gz" +} diff --git a/packages/HyperionOS-full.pkg b/packages/HyperionOS-full.pkg new file mode 100644 index 0000000..1fc2935 --- /dev/null +++ b/packages/HyperionOS-full.pkg @@ -0,0 +1,22 @@ +{ + "id": "HyperionOS-full", + "description": "HyperionOS install package-group", + "authors": [ + "Hyperion" + ], + "dependencies": [ + "Hyperion-kernel", + "Hyperion-core", + "coreutils", + "spm", + "sysinit", + "hysh", + "lua", + "micro", + "Hypersplash", + "math" + ], + "version": "1.2.4", + "hash": "77e9072b72ed42823723af56d8f35fe8", + "tarball": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/raw/HyperionOS-full.tar.gz" +} diff --git a/packages/HyperionOS-minimal.pkg b/packages/HyperionOS-minimal.pkg new file mode 100644 index 0000000..1a527ae --- /dev/null +++ b/packages/HyperionOS-minimal.pkg @@ -0,0 +1,18 @@ +{ + "id": "HyperionOS-minimal", + "description": "HyperionOS install package-group", + "authors": [ + "Hyperion" + ], + "dependencies": [ + "Hyperion-kernel", + "Hyperion-core", + "coreutils", + "hysh", + "lua", + "wget" + ], + "version": "1.2.4", + "hash": "ac1d8da249759cf5dd31cff3adf2adb8", + "tarball": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/raw/HyperionOS-minimal.tar.gz" +} diff --git a/packages/installer.pkg b/packages/installer.pkg deleted file mode 100644 index c1686c6..0000000 --- a/packages/installer.pkg +++ /dev/null @@ -1,12 +0,0 @@ -{ - "id": "installer", - "description": "Hyperion os live installer", - "authors": [ - "Hyperion", - "Astronand" - ], - "dependencies": [], - "version": "1.0.0", - "hash": "897e5abc980bda9051fff8f72c864251", - "tarball": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/raw/installer.tar.gz" -} diff --git a/packages/raw/Hyperion-firmware-addon-cct.tar.gz b/packages/raw/Hyperion-firmware-addon-cct.tar.gz index e5998bd86c1da3c2bc63fae2c17b582b66e81be6..c76fb063b0f28754ad801f75248d523cd3c0a4cc 100644 GIT binary patch literal 375 zcmb2|=3oE;rvGoR_+~d7NE|3UU&rnz9`qd>YM5k&Pks-9HqT|!c%hQ*Ul_i zyk*1TT~RmZ-9Ng$q5c2loHkjFi=OL+vZ@zw*__&0nc~BKO`o$@=k&4Fg>`%Ps292@ zo%USI`KH=;>d(Dj?Q{3NJil_;!PsBwDqS1@>-^fjh-caR{iis-&G-GEd;GiZmxC#P z!wZ}KKEFQS&|kj6>_GGEZ~ccXcsKr^^SeFKP)}#ai_Du%_h-1;zwy8HWKF$Ls`hEl zjsMS9-uva~5y+c;e)H|Vi`Oz8JTr>#f6on+onNym;_tNGX*x0P*A;S)Thu*PXm71H zk}=ejk~r0;b+5nqp!BL(ffra>BsE-JBz*iXV&d+CzC4JR=!@B{pzLM+X6}cX_+gz;g_rBpgrg70l#8lHT@5GJW`nPYq zFq7c1(th)Or%SRz`+IpCAN5SBwTD(2{$(~ddg8R>`lc-t%M~|HPQCg1RZZ-E`^_ea zozL_4O7=8AJr?`^uYbGzFYdg`lBxfsr!9H0zvEwQu*>J~_fvWPieKJ;J?YI8fwR}@ zr{`U$ulyTamh&_uBkzbq^!DnR|2$9GefPg%R`&nD#NYoh67TY*u7+H;8r5flQ$doOh0ukYWv~0 sKX)ca77O2bdUb`@Yqx@@c`?HG6@xhWK>>llb&n;}KT5_hXfQAU0KO-W8~^|S diff --git a/packages/raw/Hyperion-firmware-cct.tar.gz b/packages/raw/Hyperion-firmware-cct.tar.gz index 3c1dfd37aac86d1126f4738238aea4738c1e339d..38f3af776d082aecc7a6d65054ef98c74ac01b4c 100644 GIT binary patch delta 5909 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 delta 5872 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 z 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 ZZrxpW9WUp<==J~1Umd#NGMr#w006tGcF_O; diff --git a/packages/raw/Hyperion-firmware-puc.tar.gz b/packages/raw/Hyperion-firmware-puc.tar.gz index d6edc06165cb4bba93ec0a843e9fdd31234bb390..2c8c8b1db17c5702cf14ab5d804534e4ec902068 100644 GIT binary patch literal 4214 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 IR4_0A0BtZ)6aWAK literal 109 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 n-~8MD_kZd2-~Y?}UEf&R-nW z`;(u%HM$;qel=U(75kJ{wm$#sRg2=Q-&)_UJ^O3l|C{Nr|9*?$sGPDUXibC2qHjOH zy|J9T?eld_zs>x0kS7U#4|_|It6)XXi8i`v3O75BE;vod+-2={N5FTb^}w z{~JErU;38+e>vTo__Y4{;WwT2`9UUTA6|;7-XzdwmAJyeI744UA}ee)kW>yax3Nj&Jh#&RPuNKWd7Y-|L^~AzcuoIx$ZB0N0W9p WC1#M9A-JLa6KjRT9c=~;1_l6MOp7D{ literal 0 HcmV?d00001 diff --git a/packages/raw/installer.tar.gz b/packages/raw/installer.tar.gz deleted file mode 100644 index d4c3d5553eb273e7f11621f8a44481956214d3de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmb2|=3oE;rvGoRALME>kU9QwZgtmQhizwbp6Bg7cB+wi=Ek!tw&%OBqy{+VP27Lp z^`p|KulrYSv|F+5YM!IpVI|F{PbF;S=Fjoo86y}qk>%HqKYI5j`ApvVHM};%>Unno z&&uE2h4<%k>sc=3`Rl&j^6ggRxpUXn7R(LZre<*R=lalq$2m;$>;KPLtJV3{-ueI9 zjotDu&QE9hTl_VDUG$-v+q1WwyJY`t{f7VPuj=wKE1WGN<-OD{HbKJ-R0Tm?#F7&raLW5Vq7ep^M1eh|C6=9=f6ow>SM2Hh#IkJ6UzfqW^CW8Q5RRjlKKXfM?da4ZUB~ j6~2G^$kVh>=GeYkdx+~mE@WWX5UVd)5%7aSgMk463ZGKC diff --git a/packages/raw/spm.tar.gz b/packages/raw/spm.tar.gz index 90261aec8ed73a70f78ef02e77d26d8f868ce7fd..1db6a87d8ba88f125801f256d30af280bebfb13c 100644 GIT binary patch literal 5975 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 diff --git a/packages/scomposite.pkg b/packages/scomposite.pkg deleted file mode 100644 index 713f689..0000000 --- a/packages/scomposite.pkg +++ /dev/null @@ -1,9 +0,0 @@ -{ - "id": "scomposite", - "description": "No description provided", - "authors": [], - "dependencies": [], - "version": "0.0.0", - "hash": "bfa4821544c70be1b582b3eceda4a141", - "tarball": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/raw/scomposite.tar.gz" -} diff --git a/packages/spm.pkg b/packages/spm.pkg index def084f..fb271ea 100644 --- a/packages/spm.pkg +++ b/packages/spm.pkg @@ -14,6 +14,6 @@ "Hyperion-core" ], "version": "1.0.0", - "hash": "996e0fed6b0cb4ae5fb578ba3cfb0680", + "hash": "bc76091060b9c3190a6ecd508b213f53", "tarball": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/raw/spm.tar.gz" } diff --git a/spm.json b/spm.json index d47fb82..62e4e5d 100644 --- a/spm.json +++ b/spm.json @@ -9,6 +9,9 @@ "Hyperion-firmware-puc": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/Hyperion-firmware-puc.pkg", "Hyperion-firmware-vm": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/Hyperion-firmware-vm.pkg", "Hyperion-kernel": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/Hyperion-kernel.pkg", + "HyperionOS-bones": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/HyperionOS-bones.pkg", + "HyperionOS-full": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/HyperionOS-full.pkg", + "HyperionOS-minimal": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/HyperionOS-minimal.pkg", "bit32": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/bit32.pkg", "blake2s": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/blake2s.pkg", "coreutils": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/coreutils.pkg", @@ -16,7 +19,6 @@ "fonts": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/fonts.pkg", "hysh": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/hysh.pkg", "iniparse": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/iniparse.pkg", - "installer": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/installer.pkg", "json": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/json.pkg", "lua": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/lua.pkg", "math": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/math.pkg", @@ -24,7 +26,6 @@ "minify": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/minify.pkg", "pid": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/pid.pkg", "render3d": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/render3d.pkg", - "scomposite": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/scomposite.pkg", "spm": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/spm.pkg", "sysinit": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/sysinit.pkg", "tar": "https://git.astronand.dev/Hyperion/HyperionOS/raw/branch/main/packages/tar.pkg",