mirror of
https://github.com/Doodle3D/doodle3d-firmware.git
synced 2024-12-22 11:03:48 +01:00
Fix bug in findVersion().
Tidy up a bit.
This commit is contained in:
parent
efe4ab766a
commit
64abe081e9
@ -504,7 +504,7 @@ function M.findVersion(version, verTable, timestamp)
|
||||
if not verTable then return nil,msg end
|
||||
|
||||
for _,ent in pairs(verTable) do
|
||||
if M.versionsEqual(ent.version, version, ent.timestamp, timestamp) == 0 then return ent end
|
||||
if M.versionsEqual(ent.version, version, ent.timestamp, timestamp) == true then return ent end
|
||||
end
|
||||
return nil,"no such version"
|
||||
end
|
||||
|
@ -6,30 +6,49 @@ local function ERR(msg) print(msg) end
|
||||
local ok, pl = pcall(require, 'pl.import_into')
|
||||
if not ok then
|
||||
ERR('This script requires the Penlight library')
|
||||
os.exit(1)
|
||||
os.exit(2)
|
||||
end
|
||||
pl = pl()
|
||||
|
||||
local lfs = require('lfs') -- assume this exists since it's required by penlight as well
|
||||
|
||||
local serpent = require('util.serpent')
|
||||
|
||||
local argStash = arg
|
||||
arg = nil
|
||||
local upmgr = require('d3d-update-mgr') -- arg must be nil for the update manager to load as module
|
||||
arg = argStash
|
||||
|
||||
|
||||
|
||||
-----------------------------
|
||||
-- CONSTANTS AND VARIABLES --
|
||||
-----------------------------
|
||||
|
||||
local D3D_REPO_FIRMWARE_NAME = 'doodle3d-firmware'
|
||||
local D3D_REPO_CLIENT_NAME = 'doodle3d-client'
|
||||
local D3D_REPO_PRINT3D_NAME = 'print3d'
|
||||
local IMAGE_BASENAME = 'doodle3d-wifibox'
|
||||
|
||||
local deviceType = 'tl-mr3020' -- or 'tl-wr703'
|
||||
local lock = nil
|
||||
local paths = {}
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
-- UTILITY FUNCTIONS --
|
||||
-----------------------
|
||||
|
||||
local function quit(ev)
|
||||
if lock then lock:free() end
|
||||
os.exit(ev or 0)
|
||||
end
|
||||
|
||||
local function md5sum(file)
|
||||
local rv,_,sum = pl.utils.executeex('md5 -q "' .. file .. '"')
|
||||
|
||||
return rv and sum:sub(1, -2) or nil
|
||||
end
|
||||
|
||||
local function detectOpenWrtRoot()
|
||||
local f = io.open('Makefile', 'r')
|
||||
local line = f and f:read('*line')
|
||||
@ -84,13 +103,8 @@ local function constructImageName(version, devType, sysupOrFactory)
|
||||
return IMAGE_BASENAME .. '-' .. upmgr.formatVersion(version) .. '-' .. devType .. '-' .. sysupOrFactory .. '.bin'
|
||||
end
|
||||
|
||||
local function md5sum(file)
|
||||
local rv,_,sum = pl.utils.executeex('md5 -q "' .. file .. '"')
|
||||
|
||||
return rv and sum:sub(1, -2) or nil
|
||||
end
|
||||
|
||||
local function collectVersionInfo()
|
||||
local function collectLocalInfo()
|
||||
local info = {}
|
||||
|
||||
-- temporary fields required for copying image files
|
||||
@ -118,13 +132,13 @@ local function collectVersionInfo()
|
||||
end
|
||||
|
||||
|
||||
local function main()
|
||||
print("Doodle3D release script")
|
||||
-- local opts = parseOptions(arg)
|
||||
--
|
||||
-- if opts['wrt-root'] then changedir(opts['wrt-root']) end
|
||||
-- if opts['cache-dir'] then paths.cache = opts['cache-dir'] end
|
||||
|
||||
--------------------
|
||||
-- MAIN FUNCTIONS --
|
||||
--------------------
|
||||
|
||||
local function prepare()
|
||||
local msg = nil
|
||||
|
||||
io.stdout:write("Checking if working directory is the OpenWrt root... ")
|
||||
local isOpenWrtRoot = detectOpenWrtRoot()
|
||||
@ -133,7 +147,7 @@ local function main()
|
||||
print("found (" .. paths.wrt .. ")")
|
||||
else
|
||||
print("unrecognized directory, try changing directories or using -wrt-root")
|
||||
os.exit(1)
|
||||
return nil
|
||||
end
|
||||
|
||||
io.stdout:write("Looking for Doodle3D feed path... ")
|
||||
@ -142,7 +156,7 @@ local function main()
|
||||
print("found " .. d3dFeed)
|
||||
else
|
||||
if msg then print("not found: " .. msg) else print("not found.") end
|
||||
os.exit(1)
|
||||
return nil
|
||||
end
|
||||
|
||||
paths.firmware = d3dFeed .. '/' .. D3D_REPO_FIRMWARE_NAME
|
||||
@ -157,42 +171,87 @@ local function main()
|
||||
local rv,msg = pl.dir.makepath(paths.cache)
|
||||
if not rv then
|
||||
print("could not create path (" .. msg .. ").")
|
||||
os.exit(1)
|
||||
return nil
|
||||
end
|
||||
|
||||
local lock,msg = lfs.lock_dir(paths.cache)
|
||||
lock,msg = lfs.lock_dir(paths.cache)
|
||||
if not lock then
|
||||
print("could not obtain directory lock (" .. msg .. ").")
|
||||
os.exit(1)
|
||||
return nil
|
||||
else
|
||||
print("ok")
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local newVersion = collectVersionInfo()
|
||||
print(serpent.block(newVersion))
|
||||
local function fetchVersionInfo()
|
||||
local msg,stables,betas = nil,nil,nil
|
||||
|
||||
stables,msg = upmgr.getAvailableVersions('stables')
|
||||
if not stables then return nil,msg end
|
||||
|
||||
betas,msg = upmgr.getAvailableVersions('betas')
|
||||
if not betas then return nil,msg end
|
||||
|
||||
return stables, betas
|
||||
end
|
||||
|
||||
local function generateIndex(newVersion, versionTable, isStable)
|
||||
return 0
|
||||
end
|
||||
|
||||
local function copyImages(newVersion)
|
||||
return 0
|
||||
end
|
||||
|
||||
local function main()
|
||||
print("Doodle3D release script")
|
||||
-- local opts = parseOptions(arg)
|
||||
--
|
||||
-- if opts['wrt-root'] then changedir(opts['wrt-root']) end
|
||||
-- if opts['cache-dir'] then paths.cache = opts['cache-dir'] end
|
||||
|
||||
if not prepare() then quit(1) end
|
||||
|
||||
-- initialize update manager script
|
||||
upmgr.setUseCache(false)
|
||||
upmgr.setVerbosity(1)
|
||||
upmgr.setCachePath(paths.cache)
|
||||
|
||||
local stables,msg1 = upmgr.getAvailableVersions('stables')
|
||||
local betas,msg2 = upmgr.getAvailableVersions('betas')
|
||||
local newVersion = collectLocalInfo()
|
||||
|
||||
if stables then
|
||||
-- print("stables: " .. serpent.block(stables))
|
||||
else
|
||||
print("error getting stables (" .. msg1 .. ")")
|
||||
local stables,betas = fetchVersionInfo()
|
||||
if not stables then
|
||||
print("Error: could not get version information (" .. betas .. ")")
|
||||
quit(1)
|
||||
end
|
||||
|
||||
-- print("===========================");
|
||||
if betas then
|
||||
-- print("betas: " .. serpent.block(betas))
|
||||
else
|
||||
print("error getting betas (" .. msg2 .. ")")
|
||||
local isStable = (newVersion.version.suffix == nil)
|
||||
print("Rolling release for firmware version " .. upmgr.formatVersion(newVersion.version) .. " (type: " .. (isStable and "stable" or "beta") .. ").")
|
||||
|
||||
if upmgr.findVersion(newVersion.version, stables) or upmgr.findVersion(newVersion.version, betas) then
|
||||
print("Error: firmware version " .. upmgr.formatVersion(newVersion.version) .. " already exists")
|
||||
quit(3)
|
||||
end
|
||||
|
||||
if not generateIndex(newVersion, isStable and stables or betas, isStable) then
|
||||
print("Error: could not generate index")
|
||||
quit(4)
|
||||
end
|
||||
|
||||
if not copyImages(newVersion) then
|
||||
print("Error: could not copy images")
|
||||
quit(4)
|
||||
end
|
||||
|
||||
|
||||
print(pl.pretty.dump(newVersion))
|
||||
print("stables: " .. pl.pretty.dump(stables))
|
||||
print("===========================");
|
||||
print("betas: " .. pl.pretty.dump(betas))
|
||||
|
||||
|
||||
--if requested, fetch images and packages (i.e., mirror whole directory)
|
||||
|
||||
--run sanity checks
|
||||
@ -200,8 +259,7 @@ local function main()
|
||||
--check whether newVersion is not conflicting with or older than anything in corresponding table
|
||||
--add newVersion to correct table and generate updated index file
|
||||
|
||||
lock:free()
|
||||
os.exit(0)
|
||||
quit()
|
||||
end
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user