mirror of
https://github.com/NixOS/nix.git
synced 2025-11-25 19:51:00 +01:00
Merged trunk R.10943 back in
This commit is contained in:
parent
bffb03eae1
commit
ab649814fc
5 changed files with 84 additions and 13 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
svn merge -r 10154:10531 https://svn.cs.uu.nl:12443/repos/trace/nix/trunk
|
svn merge -r 10855:10943 https://svn.cs.uu.nl:12443/repos/trace/nix/trunk
|
||||||
|
|
||||||
#already done:
|
#already done:
|
||||||
# 8628
|
# 8628
|
||||||
|
|
@ -31,3 +31,6 @@ svn merge -r 10154:10531 https://svn.cs.uu.nl:12443/repos/trace/nix/trunk
|
||||||
# 10133
|
# 10133
|
||||||
# 10154
|
# 10154
|
||||||
# 10531
|
# 10531
|
||||||
|
# 10692
|
||||||
|
# 10855
|
||||||
|
# 10943
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@ bin_SCRIPTS = nix-collect-garbage \
|
||||||
nix-pull nix-push nix-prefetch-url \
|
nix-pull nix-push nix-prefetch-url \
|
||||||
nix-install-package nix-channel nix-build \
|
nix-install-package nix-channel nix-build \
|
||||||
nix-pack-closure nix-unpack-closure \
|
nix-pack-closure nix-unpack-closure \
|
||||||
nix-copy-closure
|
nix-copy-closure
|
||||||
|
|
||||||
noinst_SCRIPTS = nix-profile.sh generate-patches.pl \
|
noinst_SCRIPTS = nix-profile.sh generate-patches.pl \
|
||||||
find-runtime-roots.pl build-remote.pl
|
find-runtime-roots.pl build-remote.pl nix-reduce-build
|
||||||
|
|
||||||
nix-pull nix-push: readmanifest.pm readconfig.pm download-using-manifests.pl
|
nix-pull nix-push: readmanifest.pm readconfig.pm download-using-manifests.pl
|
||||||
|
|
||||||
|
|
@ -35,4 +35,5 @@ EXTRA_DIST = nix-collect-garbage.in \
|
||||||
nix-pack-closure.in nix-unpack-closure.in \
|
nix-pack-closure.in nix-unpack-closure.in \
|
||||||
nix-copy-closure.in \
|
nix-copy-closure.in \
|
||||||
find-runtime-roots.pl.in \
|
find-runtime-roots.pl.in \
|
||||||
build-remote.pl.in
|
build-remote.pl.in \
|
||||||
|
nix-reduce-build.in
|
||||||
|
|
|
||||||
68
scripts/nix-reduce-build.in
Normal file
68
scripts/nix-reduce-build.in
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
#! @shell@
|
||||||
|
|
||||||
|
WORKING_DIRECTORY=$(mktemp -d "${TMPDIR:-/tmp}"/nix-reduce-build-XXXXXX);
|
||||||
|
cd "$WORKING_DIRECTORY";
|
||||||
|
|
||||||
|
if test -z "$1" ; then
|
||||||
|
echo 'nix-reduce-build (paths or Nix expressions) -- (logins at remote computers)' >&2
|
||||||
|
echo As in: >&2
|
||||||
|
echo nix-reduce-build /etc/nixos/nixos -- user@somewhere.nowhere.example.org >&2
|
||||||
|
exit;
|
||||||
|
fi;
|
||||||
|
|
||||||
|
while ! test "$1" = "--" || test "$1" = "" ; do
|
||||||
|
echo "$1" >> initial; >&2
|
||||||
|
shift;
|
||||||
|
done
|
||||||
|
shift;
|
||||||
|
echo Will work on $(cat initial | wc -l) targets. >&2
|
||||||
|
|
||||||
|
while read ; do
|
||||||
|
case "$REPLY" in
|
||||||
|
${NIX_STORE_PATH:-/nix/store}/*)
|
||||||
|
echo "$REPLY" >> paths; >&2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
nix-instantiate "$REPLY" >> paths;
|
||||||
|
;;
|
||||||
|
esac;
|
||||||
|
done < initial;
|
||||||
|
echo Proceeding $(cat paths | wc -l) paths. >&2
|
||||||
|
|
||||||
|
while read; do
|
||||||
|
case "$REPLY" in
|
||||||
|
*.drv)
|
||||||
|
echo "$REPLY" >> derivers; >&2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
nix-store --query --deriver "$REPLY" >>derivers;
|
||||||
|
;;
|
||||||
|
esac;
|
||||||
|
done < paths;
|
||||||
|
echo Found $(cat derivers | wc -l) derivers. >&2
|
||||||
|
|
||||||
|
cat derivers | xargs nix-store --query -R > derivers-closure;
|
||||||
|
echo Proceeding at most $(cat derivers-closure | wc -l) derivers. >&2
|
||||||
|
|
||||||
|
cat derivers-closure | egrep '[.]drv$' | xargs nix-store --query --outputs > wanted-paths;
|
||||||
|
cat derivers-closure | egrep -v '[.]drv$' >> wanted-paths;
|
||||||
|
echo Prepared $(cat wanted-paths | wc -l) paths to get. >&2
|
||||||
|
|
||||||
|
cat wanted-paths | xargs nix-store --check-validity --print-invalid > needed-paths;
|
||||||
|
echo We need $(cat needed-paths | wc -l) paths. >&2
|
||||||
|
|
||||||
|
if test -z "$1" ; then
|
||||||
|
cat needed-paths;
|
||||||
|
fi;
|
||||||
|
|
||||||
|
for i in "$@"; do
|
||||||
|
cat needed-paths | while read; do
|
||||||
|
nix-copy-closure --from "$i" --gzip "$REPLY" </dev/null || true;
|
||||||
|
done;
|
||||||
|
mv needed-paths wanted-paths;
|
||||||
|
cat wanted-paths | xargs nix-store --check-validity --print-invalid > needed-paths;
|
||||||
|
echo We still need $(cat needed-paths | wc -l) paths. >&2
|
||||||
|
done;
|
||||||
|
|
||||||
|
cd /
|
||||||
|
rm -r "$WORKING_DIRECTORY"
|
||||||
|
|
@ -215,7 +215,11 @@ static void checkVarDefs2(set<Expr> & done, const ATermMap & defs, Expr e)
|
||||||
ATerm with, body;
|
ATerm with, body;
|
||||||
ATermList rbnds, nrbnds;
|
ATermList rbnds, nrbnds;
|
||||||
|
|
||||||
if (matchVar(e, name)) {
|
/* Closed terms don't have free variables, so we don't have to
|
||||||
|
check by definition. */
|
||||||
|
if (matchClosed(e, value)) return;
|
||||||
|
|
||||||
|
else if (matchVar(e, name)) {
|
||||||
if (!defs.get(name))
|
if (!defs.get(name))
|
||||||
throw EvalError(format("undefined variable `%1%'")
|
throw EvalError(format("undefined variable `%1%'")
|
||||||
% aterm2String(name));
|
% aterm2String(name));
|
||||||
|
|
|
||||||
|
|
@ -1136,11 +1136,8 @@ void LocalStore::exportPath(const Path & path, bool sign,
|
||||||
{
|
{
|
||||||
assertStorePath(path);
|
assertStorePath(path);
|
||||||
|
|
||||||
/* Wrap all of this in a transaction to make sure that we export
|
|
||||||
consistent metadata. */
|
|
||||||
Transaction txn(nixDB);
|
|
||||||
addTempRoot(path);
|
addTempRoot(path);
|
||||||
if (!isValidPathTxn(txn, path))
|
if (!isValidPath(path))
|
||||||
throw Error(format("path `%1%' is not valid") % path);
|
throw Error(format("path `%1%' is not valid") % path);
|
||||||
|
|
||||||
HashAndWriteSink hashAndWriteSink(sink);
|
HashAndWriteSink hashAndWriteSink(sink);
|
||||||
|
|
@ -1152,10 +1149,10 @@ void LocalStore::exportPath(const Path & path, bool sign,
|
||||||
writeString(path, hashAndWriteSink);
|
writeString(path, hashAndWriteSink);
|
||||||
|
|
||||||
PathSet references;
|
PathSet references;
|
||||||
nix::queryXReferencesTxn(txn, path, references, true, 0); //TODO we can only now export the final revision //TODO also export the state references ???
|
queryXReferencesTxn(noTxn, path, references, true, 0); //TODO we can export the inital or latest revision //TODO also export the state references ???
|
||||||
writeStringSet(references, hashAndWriteSink);
|
writeStringSet(references, hashAndWriteSink);
|
||||||
|
|
||||||
Path deriver = nix::queryDeriver(txn, path);
|
Path deriver = queryDeriver(path);
|
||||||
writeString(deriver, hashAndWriteSink);
|
writeString(deriver, hashAndWriteSink);
|
||||||
|
|
||||||
if (sign) {
|
if (sign) {
|
||||||
|
|
@ -1185,8 +1182,6 @@ void LocalStore::exportPath(const Path & path, bool sign,
|
||||||
|
|
||||||
} else
|
} else
|
||||||
writeInt(0, hashAndWriteSink);
|
writeInt(0, hashAndWriteSink);
|
||||||
|
|
||||||
txn.commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue