release integer,
path text, -- filesystem path
- mode text not null, -- perms, use text for octal rep?
- username text not null, -- name of owner
- groupname text not null, -- group of owner
+ mode text not null default '0644', -- perms, use text for octal rep?
+ username text not null default 'root', -- name of owner
+ groupname text not null default 'root', -- group of owner
uid integer, -- numeric uid, generally ignored
gid integer, -- numeric gid, generally ignored
configuration integer not null default 0, -- boolean if config file
;
create table elfneeded (
- file text,
+ file text, -- hash of file
needed text, -- soname of dependency
primary key (file, needed)
)
where path in (select path from md_conflict where mdcount > 1)
;
+create view needed_libraries as
+with recursive
+libs(file,needs,provider) as (
+ select N.file, N.needed as needs, L.file as provider
+ from elfneeded N left join elflibraries L on N.needed = L.soname
+ union
+ select L.file, N.needed as needs, EL.file as provider
+ from libs L
+ join elfneeded N on N.file = L.provider
+ left join elflibraries EL on N.needed = EL.soname
+)
+select * from libs;
+
create view syncinfo as
with
preserved as (
SS.rstatus in ('installing')
),
-- preserve: libraries needed by something in installed or installing
+/*
needed as (
select distinct
ED.library
where status in ('installed', 'installing')
and library is not null
),
+*/
+needed as (
+ select NL.file as needslib, NL.provider as libraryhash
+ from needed_libraries NL
+ inner join syncstatus SS on SS.hash = NL.file
+ and SS.status in ('installed', 'installing')
+),
preserve as (
select distinct
path,username,uid,groupname,gid,mode,filetype,mtime,hash,
configuration,target,device, null as ohash
from syncstatus SS
- where path in (select library from needed)
- and SS.rstatus in ('removing', 'removed')
+ join needed N on SS.hash = N.libraryhash
+ where SS.rstatus in ('removing', 'removed')
+-- where SS.hash in (select libraryhash from needed)
+-- where path in (select library from needed)
+-- and SS.rstatus in ('removing', 'removed')
),
-- remove: cur, not preserved, not in final set
remove as (