]> pd.if.org Git - zpackage/blob - db.sql
75e5354809459683fda2c04872de6ebf04c1a0a1
[zpackage] / db.sql
1 begin;
2
3 PRAGMA application_id = 0x5a504442;
4 PRAGMA user_version = 1;
5
6 -- should be faster with rowid due to the blob content
7 -- these are really just blobs of data
8 -- TODO copyright and license information should probably
9 -- go here
10 CREATE TABLE files (
11         hash text primary key,
12         size integer,
13         compression text,
14         content blob
15 )
16 ;
17
18 -- information about packages
19 -- a package is identified by a package,version,release triple
20 create table packages (
21         -- primary key columns
22         package text,
23         version text, -- the upstream version string
24         release integer, -- the local release number
25
26         -- metadata columns
27         description     text,
28         architecture    text,
29         url     text,
30         licenses        text, -- hash of actual license?  need table for more than one?
31         packager        text,
32         build_time      integer default (strftime('%s', 'now')),
33         install_time    integer,
34         checksum        text, -- checksum of package contents.  null for incompleted packages
35         primary key (package,version,release)
36 )
37 without rowid
38 ;
39
40 -- files contained in a package
41 create table packagefiles (
42         -- package id triple
43         package text,
44         version text,
45         release integer,
46
47         path    text, -- filesystem path
48         mode    text, -- perms, use text for octal rep?
49         username        text, -- name of owner
50         groupname       text, -- group of owner
51         uid     integer, -- numeric uid, generally ignored
52         gid     integer, -- numeric gid, generally ignored
53         filetype varchar default 'r',
54         -- r regular file
55         -- d directory
56         -- s symlink
57         -- h hard link -- not supported
58         -- c character special and b device special files add dev number column
59         -- b block special
60         -- p fifos (i.e. pipe)
61         target  text, -- link target for links
62         -- device file dev numbers, should probably be a separate table
63         devmajor        integer,
64         devminor        integer,
65         hash    text, -- null if no actual content, i.e. anything but a regular file
66         mtime   integer, -- seconds since epoch, finer resolution probably not needed
67         primary key (package,version,release,path),
68         foreign key (package,version,release) references packages (package,version,release) on delete cascade
69 )
70 without rowid
71 ;
72
73 create table packagefiletags (
74         -- package id triple
75         package text,
76         version text,
77         release integer,
78
79         path    text, -- filesystem path
80         tag     text,
81         primary key (package,version,release,path,tag)
82 )
83 without rowid
84 ;
85
86 create table elfinfo (
87         file    text, -- hash of blob
88         elftype text,
89         foreign key (file) references files on delete cascade
90 );
91
92 -- TODO just elf information?
93 -- and just hash, not package?
94 create table elflibraries (
95         file    text primary key,
96         soname  text,
97         foreign key (file) references files on delete cascade
98 )
99 without rowid
100 ;
101
102 create table elfneeded (
103         file    text,
104         needed  text, -- soname of dependency
105         primary key (file, needed),
106         foreign key (file) references files on delete cascade
107 )
108 without rowid
109 ;
110
111 -- package scripts: table of package, stage, file
112 create table scripts (
113         package text,
114         version text,
115         release integer,
116         stage   text,
117         hash    text
118 );
119
120 -- package dependencies: table of package, dependency, dep type (package, soname)
121 create table packagedeps (
122         package text,
123         version text,
124         release integer,
125         required        text, -- package name
126         -- following can be null for not checked
127         minversion      text,
128         minrelease      integer,
129         maxversion      text,
130         maxrelease      integer
131 );
132
133 -- capability labels
134 create table provides (
135         package text,
136         subpackage      text,
137         label   text -- a capability label
138 );
139
140 create table requires (
141         package text,
142         subpackage      text,
143         label   text -- a capability label
144 );
145
146 create table packagegroups (
147         package text,
148         "group" text
149 );
150
151 commit;