-- --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
|
-- This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
|
--
|
|
-- Filename: lib/lua/sde/pkgdb.lua
|
|
-- Copyright (C) 2008 The OpenSDE Project
|
|
-- Copyright (C) 2005 - 2006 The T2 SDE Project
|
|
-- Copyright (C) 2005 - 2006 Valentin Ziegler, Juergen "George" Sawinski
|
|
--
|
|
-- More information can be found in the files COPYING and README.
|
|
--
|
|
-- This program is free software; you can redistribute it and/or modify
|
|
-- it under the terms of the GNU General Public License as published by
|
|
-- the Free Software Foundation; version 2 of the License. A copy of the
|
|
-- GNU General Public License can be found in the file COPYING.
|
|
-- --- SDE-COPYRIGHT-NOTE-END ---
|
|
|
|
-- TODO:
|
|
-- - add "update-priority" (like "urgent,security,normal" etc)
|
|
-- (also needs to go into create_package_db and other places)
|
|
|
|
-- DESCRIPTION:
|
|
-- p = pkgdb.parse(line-iterator)
|
|
-- Parse the package.db (takes a line iterator as input)
|
|
|
|
require "sde/desc"
|
|
|
|
-- parse all packages.db information into tables
|
|
-- filelist saving commented out (eats another 30M)
|
|
|
|
local function block_lines()
|
|
local line = lines()
|
|
|
|
if (line == nil) or (line=="\023") then
|
|
return nil
|
|
end
|
|
|
|
return line
|
|
end
|
|
|
|
local function read_deps()
|
|
local deps={}
|
|
|
|
for line in block_lines do
|
|
_,_,dependency = string.find(line, "[^ ]* (.*)")
|
|
table.insert (deps, dependency)
|
|
end
|
|
|
|
return deps
|
|
end
|
|
|
|
local function read_flist()
|
|
local files={}
|
|
local cksums={}
|
|
local sizes={}
|
|
local usage=0
|
|
|
|
for line in block_lines do
|
|
_,_,cksum,size,file = string.find(line, "^([0-9]+) ([0-9]+) (.*)")
|
|
-- uncomment these lines if you want to save complete file list
|
|
-- table.insert (files, file);
|
|
-- table.insert (cksums, 1 * cksum);
|
|
-- table.insert (sizes, 1 * size);
|
|
usage = usage + size
|
|
end
|
|
|
|
return usage,files,cksums,sizes
|
|
end
|
|
|
|
local function parse(lines)
|
|
packages = {}
|
|
|
|
repeat -- parse packages
|
|
pkgname = lines()
|
|
|
|
if pkgname then
|
|
print(pkgname)
|
|
local pkg_data = {}
|
|
|
|
if lines() ~= "\023" then -- separator line
|
|
print ("terminating line missing\n")
|
|
end
|
|
|
|
pkg_data.desc = desc.parse (block_lines)
|
|
pkg_data.deps = read_deps ()
|
|
pkg_data.usage = read_flist ()
|
|
|
|
if lines() ~= "\004" then -- separator line
|
|
print ("terminating line missing\n")
|
|
end
|
|
|
|
packages[pkgname] = pkg_data
|
|
end
|
|
until pkgname == nil
|
|
|
|
return packages
|
|
end
|