Compare commits

..

No commits in common. "6a39fe17430a86cd4f898e7c292c9f0593321123" and "360bb88ac35b5d71a4caa6dbeca2a807da6be3b7" have entirely different histories.

5 changed files with 9 additions and 24 deletions

View File

@ -67,6 +67,7 @@ end
function dl.protos.http(host, optPort, path, dest, url) -- string string string number -- boolean -- Downloads *url* to *dest* via the internet card, if available. function dl.protos.http(host, optPort, path, dest, url) -- string string string number -- boolean -- Downloads *url* to *dest* via the internet card, if available.
if not component.list("internet")() then if not component.list("internet")() then
print("Internet card unavailable, falling back to proxy.")
local proto,host,sPort,path = parseURL(url) local proto,host,sPort,path = parseURL(url)
local proxy = os.getenv(proto:upper().."_PROXY") local proxy = os.getenv(proto:upper().."_PROXY")
if not proxy and fs.exists("/boot/cfg/"..proto.."_proxy") then if not proxy and fs.exists("/boot/cfg/"..proto.."_proxy") then
@ -75,7 +76,7 @@ function dl.protos.http(host, optPort, path, dest, url) -- string string string
f:close() f:close()
end end
if not proxy then error("No internet card or HTTP(S) proxy available") end if not proxy then error("No internet card or HTTP(S) proxy available") end
print("Internet card unavailable, falling back to proxy "..proxy) print("Proxy found: "..proxy)
if optPort then host=string.format("%s:%i",host,optPort) end if optPort then host=string.format("%s:%i",host,optPort) end
return dl.wget(string.format("%s/%s%s",proxy,host,path),dest) return dl.wget(string.format("%s/%s%s",proxy,host,path),dest)
end end
@ -87,11 +88,7 @@ function dl.protos.http(host, optPort, path, dest, url) -- string string string
repeat repeat
coroutine.yield() coroutine.yield()
until R.finishConnect() until R.finishConnect()
local code, messsage, headers local code, message, headers = R.response()
repeat
coroutine.yield()
code, message, headers = R.response()
until code or message
if code > 299 or code < 200 then if code > 299 or code < 200 then
return false, code, message return false, code, message
end end
@ -100,7 +97,7 @@ function dl.protos.http(host, optPort, path, dest, url) -- string string string
io.write(string.format("Saving %s to %s...\n", url, dest)) io.write(string.format("Saving %s to %s...\n", url, dest))
repeat repeat
coroutine.yield() coroutine.yield()
ns = R.read() ns = R.read(2048)
f:write(ns or "") f:write(ns or "")
until not ns until not ns
f:close() f:close()

View File

@ -15,7 +15,7 @@ local function rzero()
return 0 return 0
end end
pkgfs.component = {seek = rfalse, makeDirectory = rfalse, write = rfalse, rename = rfalse, setlabel = rfalse, spaceUsed = rzero, spaceTotal = rzero, lastModified = rzero, address = "pkgfs"} pkgfs.component = {seek = rfalse, makeDirectory = rfalse, write = rfalse, rename = rfalse, setlabel = rfalse, spaceUsed = rzero, spaceTotal = rzero, lastModified = rzero}
local function fopen(path,comp) local function fopen(path,comp)
local f local f
@ -31,11 +31,6 @@ local function fnormalize(s)
return table.concat(fs.segments(s),"/") return table.concat(fs.segments(s),"/")
end end
function pkgfs.component.exists(path)
path = fnormalize(path)
return findex[path] and true
end
function pkgfs.component.list(path) function pkgfs.component.list(path)
path = fnormalize(path).."/" path = fnormalize(path).."/"
local ft,rt = {},{} local ft,rt = {},{}
@ -112,7 +107,8 @@ local function index()
fname = "/"..fnormalize(os.getenv("PWD").."/"..fname) fname = "/"..fnormalize(os.getenv("PWD").."/"..fname)
end end
local f = fopen(fname,comp) local f = fopen(fname,comp)
if not f then error("unable to open file "..fname) end if not f then error("unable to open file") end
print(fname)
for name, read, fsize in mtar.iter(f) do for name, read, fsize in mtar.iter(f) do
findex[fnormalize(name)] = {fname,comp} findex[fnormalize(name)] = {fname,comp}
end end
@ -136,11 +132,4 @@ end
fs.makeDirectory("/pkg") fs.makeDirectory("/pkg")
fs.mount("/pkg",pkgfs.component) fs.mount("/pkg",pkgfs.component)
for _,file in ipairs(fs.list("/boot/pkg/")) do
if file:sub(-5) == ".mtar" then
pcall(pkgfs.add,"/boot/pkg/"..file)
elseif file:sub(-9) == ".mtar.lss" then
pcall(pkgfs.add,"/boot/pkg/"..file,true)
end
end
return pkgfs return pkgfs

View File

@ -128,7 +128,6 @@ function pkg.upgrade(force) -- boolean -- boolean -- Upgrades all packages on th
for repo,info in pairs(getSources()) do for repo,info in pairs(getSources()) do
for pkgname,pkg in pairs(getRepoMeta(repo)) do for pkgname,pkg in pairs(getRepoMeta(repo)) do
if pkg.version ~= installed[pkgname].version or force then if pkg.version ~= installed[pkgname].version or force then
pkg.remove(pkgname)
dl(info.path.."/"..pkg.filename,"/boot/pkg/"..pkg.filename) dl(info.path.."/"..pkg.filename,"/boot/pkg/"..pkg.filename)
installed[pkgname] = pkg installed[pkgname] = pkg
pcall(activatePackage,"/boot/pkg/"..pkg.filename,pkg.compressed) pcall(activatePackage,"/boot/pkg/"..pkg.filename,pkg.compressed)

View File

@ -29,7 +29,7 @@ function rc.load(name,force) -- string boolean -- table -- Attempts to load serv
end end
if service[name] then return true end if service[name] then return true end
service[name] = setmetatable({},{__index=_G}) service[name] = setmetatable({},{__index=_G})
local f = io.open("/boot/service/"..name..".lua","rb") or io.open("/pkg/service/"..name..".lua","rb") local f = io.open("/boot/service/"..name..".lua","rb")
local res = load(f:read("*a"),name,"t",service[name])() local res = load(f:read("*a"),name,"t",service[name])()
f:close() f:close()
return res return res

View File

@ -15,7 +15,7 @@ _G.package = {}
package.loaded = {computer=computer,component=component,fs=fs,buffer=buffer} package.loaded = {computer=computer,component=component,fs=fs,buffer=buffer}
function require(f,force) -- string boolean -- table -- searches for a library with name *f* and returns what the library returns, if possible. if *force* is set, loads the library even if it is cached function require(f,force) -- string boolean -- table -- searches for a library with name *f* and returns what the library returns, if possible. if *force* is set, loads the library even if it is cached
if not package.loaded[f] or force then if not package.loaded[f] or force then
local lib = os.getenv("LIB") or "/boot/lib\n/pkg/lib" local lib = os.getenv("LIB") or "/boot/lib"
for d in lib:gmatch("[^\n]+") do for d in lib:gmatch("[^\n]+") do
if fs.exists(d.."/"..f) then if fs.exists(d.."/"..f) then
package.loaded[f] = runfile(d.."/"..f) package.loaded[f] = runfile(d.."/"..f)