* guix/build/store-copy.scm
(<store-info>): export so that (match x ($ <store-info> ...) ...) will
work.
* guix/store/build-derivations.scm: new module (note: WIP).
(get-output-specs, builtin-download, add-to-trie, make-search-trie,
remove-from-trie!, scanning-wrapper-port, scan-for-references,
ensure-input-outputs-exist, build-derivation): new procedures.
(builtins): new variable.
(<trie-node>): new record types.
* Makefile.am: add guix/store/build-derivations.scm to STORE_MODULES.
* guix/config.scm.in: rename to guix/config.scm.in.in.
* guix/config.scm.in.in (%temp-directory, %libexecdir, %impersonate-linux-2.6?):
new variables.
* configure.ac: Add option impersonate-linux-2.6-default and substitute
it. Adjust from config.scm.in to config.scm.in.in.
* Makefile.am: Substitute libexecdir in guix/config.scm.in to produce final
result, guix/config.scm.
* guix/build/syscalls.scm (ADDR_NO_RANDOMIZE, UNAME26, PER_LINUX32): new
variables. Flags needed for improving determinism / impersonating a 32-bit
machine on a 64-bit machine.
(initialize-loopback, setdomainname, personality): New procedures. Needed in
setting up container.
(octal-escaped): New procedure.
(mount-points): uses octal-escaped to properly handle unusual characters in
mount point filenames.
* gnu/build/linux-container.scm (mount-file-systems): First remount all
filesystems in the current mount namespace as private (by mounting / with
MS_PRIVATE and MS_REC), so that the set of mounts cannot increase except
from within the container. Also, the tmpfs mounted over the chroot directory
now inherits the chroot directory's permissions (p11-kit, for example, has a
test that assumes that the root directory is not writable for the current
user, and tmpfs is by default 1777 when created).
* guix/build/syscalls.scm (MS_PRIVATE, MS_REC): new variables.
* guix/store/database.scm (register-output-sql, derivation-outputs-sql): new
variables.
(registered-derivation-outputs): new procedure.
((guix store derivations), (guix store files)): used for <derivation> and
derivation-path?, respectively.
(register-items): if item is a derivation, also register its outputs.
* tests/store-database.scm (register-path): first register a dummy derivation
for the test file, and check that its outputs are registered in the
DerivationOutputs table and are equal to what was specified in the dummy
derivation.
This allows us to catch "operating_002dsystem-1", for instance.
* doc/build.scm (syntax-highlighted-html)[build](anchor-id->key): Drop
"-1" & co. from ID.
This is a followup to da9deba13d.
Last-minute modification of the 'match' pattern would lead to an error:
"multiple ellipsis patterns not allowed at same level"
* doc/build.scm (syntax-highlighted-html)[build](collect-anchors):
Add 'worthy-entry?' procedure and use it instead of the unsupported
pattern for ('dt ...).
This makes it easier to jump to the definition of a procedure or
variable when looking at a code snippet. There can be false-positive
because scoping rules are ignored, for example, but it should be a good
approximation.
* doc/build.scm (syntax-highlighted-html)[build](highlights->sxml*): Add
'anchors' parameter. Add clause for ('symbol text).
(syntax-highlight): Add 'anchors' parameter. Wrap body in named let and
use it in recursive calls. Pass ANCHORS to 'highlights->sxml*'.
(underscore-decode, anchor-id->key, collect-anchors, html?): New procedures.
(process-file): Add 'anchors' parameter. and honor it.
Rewrite mono-node and multi-node HTML files separately.
This allows 'doc/build.scm' to keep using '@@' for these. (This sets a
bad example, don't follow it.)
* guix/self.scm (prevent-inlining!): New macro.
<top level>: Use it for 'file-append*', 'translate-texi-manuals', and
'info-manual'.