OpenSDE Framework (without history before r20070)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

96 lines
2.3 KiB

-- --- 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