create table if not exists ValidPaths (
    id               integer primary key autoincrement not null,
    path             text unique not null,
    hash             text not null,
    registrationTime integer not null,
    deriver          text,
    narSize          integer
);

create table if not exists Refs (
    referrer  integer not null,
    reference integer not null,
    primary key (referrer, reference),
    foreign key (referrer) references ValidPaths(id) on delete cascade,
    foreign key (reference) references ValidPaths(id) on delete restrict
);

create index if not exists IndexReferrer on Refs(referrer);
create index if not exists IndexReference on Refs(reference);

-- Paths can refer to themselves, causing a tuple (N, N) in the Refs
-- table.  This causes a deletion of the corresponding row in
-- ValidPaths to cause a foreign key constraint violation (due to `on
-- delete restrict' on the `reference' column).  Therefore, explicitly
-- get rid of self-references.
create trigger if not exists DeleteSelfRefs before delete on ValidPaths
  begin
    delete from Refs where referrer = old.id and reference = old.id;
  end;

create table if not exists DerivationOutputs (
    drv  integer not null,
    id   text not null, -- symbolic output id, usually "out"
    path text not null,
    primary key (drv, id),
    foreign key (drv) references ValidPaths(id) on delete cascade
);

create index if not exists IndexDerivationOutputs on DerivationOutputs(path);

create table if not exists FailedPaths (
    path text primary key not null,
    time integer not null
);
e885e8b1c90f341eda978b2bcb05215'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/guix/log/?id=0873cce16e885e8b1c90f341eda978b2bcb05215'>root</a>/<a href='/guix/log/THANKS?id=0873cce16e885e8b1c90f341eda978b2bcb05215'>THANKS</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/guix/log/THANKS?id=0873cce16e885e8b1c90f341eda978b2bcb05215&amp;showmsg=1'>Expand</a>)</th><th class='left'>Author</th></tr>
ver'><th class='left'>Age</th><th class='left'>Commit message (<a href='/guix/log/etc/system-tests.scm?id=d70ee5ca25d381db0a1759151597f3a75315db7b&amp;showmsg=1'>Expand</a>)</th><th class='left'>Author</th></tr>
<tr><td><span title='2022-08-09 15:16:06 +0200'>2022-08-09</span></td><td><a href='/guix/commit/etc/system-tests.scm?id=5bce4c82422de6beb3ce6120ba1592be898c2b72'>build-system: Add 'channel-build-system'.</a><span class='msg-avail'>...<span class='msg-tooltip'>* gnu/ci.scm (channel-build-system, channel-source-&gt;package): Remove.
* gnu/packages/package-management.scm (channel-source-&gt;package): New
procedure, moved from (gnu ci).
* guix/build-system/channel.scm: New file, with code moved from (gnu ci).
* doc/guix.texi (Build Systems): Document it.
</span></span></td><td>Ludovic Courtès</td></tr>
<tr><td><span title='2022-07-10 23:57:14 +0200'>2022-07-10</span></td><td><a href='/guix/commit/etc/system-tests.scm?id=9fdc4b6c283c5aa5cf10205d87fb2c58b829b9d0'>monads: Add 'mparameterize'.</a><span class='msg-avail'>...<span class='msg-tooltip'>* etc/system-tests.scm (mparameterize): Move to...
* guix/monads.scm (mparameterize): ... here.
* tests/monads.scm ("mparameterize"): New test.
* .dir-locals.el (c-mode): Add it.
</span></span></td><td>Ludovic Courtès</td></tr>
<tr><td><span title='2022-04-11 00:25:33 +0200'>2022-04-11</span></td><td><a href='/guix/commit/etc/system-tests.scm?id=dbde386794cb5f4773b94a20ef585ca0f881544a'>tests: System tests really parameterize 'current-guix-package'.</a><span class='msg-avail'>...<span class='msg-tooltip'>Until now, 'current-guix-package' was parameterized in the wrong
context.  Thus, 'current-guix' would end up building a variant of the
'guix' package instead of the package returned by
'channel-source-&gt;package', which is much less expensive to build.

* etc/system-tests.scm (mparameterize): New macro.
(tests-for-current-guix): Change the 'value' field of each &lt;system-test&gt;
record to parameterize 'current-guix-package' for good.
</span></span></td><td>Ludovic Courtès</td></tr>
