X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=db.sql;h=fab5b24752c99aae59417bfe07c379c7a3fa857f;hb=0643628a3b9c359a78862d09828e83b562feea08;hp=be2a3b3725ba2c89ddeedc1a953dc4b72a208a9f;hpb=227b2bc49acc70a5c3a7bc5fcff665c523816b83;p=zpackage diff --git a/db.sql b/db.sql index be2a3b3..fab5b24 100644 --- a/db.sql +++ b/db.sql @@ -4,6 +4,7 @@ PRAGMA application_id = 0x5a504442; PRAGMA user_version = 1; -- should be faster with rowid due to the blob content +-- these are really just blobs of data CREATE TABLE files ( hash text primary key, size integer, @@ -12,6 +13,8 @@ CREATE TABLE files ( ) ; +-- information about packages +-- a package is identified by a package,version,release triple create table packages ( package text, version text, -- the upstream version string @@ -29,14 +32,19 @@ create table packages ( without rowid ; +-- files contained in a package create table packagefiles ( + -- package id triple package text, version text, release integer, - path text, + + path text, -- filesystem path mode text, -- perms, use text for octal rep? username text, -- name of owner groupname text, -- group of owner + uid integer, -- numeric uid, generally ignored + gid integer, -- numeric gid, generally ignored --filetype integer default 0, -- 0 regular file, 1 directory, 2 symlink -- regular file if null target and not null hash -- except that we could not know the hash, or care @@ -45,36 +53,45 @@ create table packagefiles ( -- hard link if not null hash and not null target -- device special files add dev number column -- fifos add mode? Can encode filetype in mode. - target text, -- link target - hash text, -- what should go here, null for dir? - mtime integer, -- seconds since epoch, but allow finer? + target text, -- link target for symlinks + hash text, -- null if no actual content, i.e. anything but a regular file + mtime integer, -- seconds since epoch, finer resolution probably not needed primary key (package,version,release,path), foreign key (package,version,release) references packages (package,version,release) on delete cascade ) without rowid ; +create table elfinfo ( + file text, -- hash of blob + elftype text, + foreign key (file) references files on delete cascade +); + -- TODO just elf information? -- and just hash, not package? -create table libraries ( - package text, - subpackage text, - path text, - soname text +create table elflibraries ( + file text primary key, + soname text, + foreign key (file) references files on delete cascade ) +without rowid ; -create table librarydeps ( - package text, - subpackage text, - path text, - soname text -- soname of dependency -); +create table elfneeded ( + file text, + needed text, -- soname of dependency + primary key (file, needed), + foreign key (file) references files on delete cascade +) +without rowid +; -- package scripts: table of package, stage, file create table scripts ( package text, - subpackage text, + version text, + release integer, stage text, hash text ); @@ -82,11 +99,14 @@ create table scripts ( -- package dependencies: table of package, dependency, dep type (package, soname) create table packagedeps ( package text, - subpackage text, - requires text, -- package name - subreq text, -- if requires only a sub package, probably most common for libs + version text, + release integer, + required text, -- package name + -- following can be null for not checked minversion text, - maxversion text + minrelease integer, + maxversion text, + maxrelease integer ); -- capability labels @@ -106,4 +126,5 @@ create table packagegroups ( package text, "group" text ); + commit;