summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2016-07-15 19:17:48 -0700
committerMichael Forney <mforney@mforney.org>2016-07-16 14:23:20 -0700
commit78c4cc0023cd0e9e6df03a07f396017da48e336c (patch)
tree1d1e77577e197608136d9867e16ca1bbd2cdec7e
parentb6392fac15793878df45a57d049a063b4e781e2c (diff)
Don't list git repository files as outputs
This way, ninja -t clean will work as expected.
-rw-r--r--core/tz/gen.rc4
-rw-r--r--extra/man-pages-posix/gen.rc4
-rw-r--r--gen.rc8
-rw-r--r--ninja.rc4
-rw-r--r--rules.ninja4
-rw-r--r--scripts/commit.rc3
-rw-r--r--scripts/tree.rc6
-rwxr-xr-xsetup.rc8
8 files changed, 23 insertions, 18 deletions
diff --git a/core/tz/gen.rc b/core/tz/gen.rc
index 838de404..b2a9377e 100644
--- a/core/tz/gen.rc
+++ b/core/tz/gen.rc
@@ -19,8 +19,8 @@ tzdata=(\
systemv\
factory\
)
-build '$outdir'/tzdata.tree awk '$srcdir'/$tzdata '|' scripts/hash.rc '$dir/tzdata.awk' ; with\
+build '$outdir'/tzdata.index awk '$srcdir'/$tzdata '|' scripts/hash.rc '$dir/tzdata.awk' ; with\
expr '-f $dir/tzdata.awk out=$outdir/zoneinfo repo=$builddir/$repo.git'
-tree_inputs=($tree_inputs '$outdir'/tzdata.tree)
+index_inputs=($index_inputs '$outdir'/tzdata.index)
fetch git
diff --git a/extra/man-pages-posix/gen.rc b/extra/man-pages-posix/gen.rc
index 0d893091..55892923 100644
--- a/extra/man-pages-posix/gen.rc
+++ b/extra/man-pages-posix/gen.rc
@@ -1,7 +1,7 @@
rule manpages 'rc ./$dir/manpages.rc $builddir/$repo.git $out $srcdir' ; with\
deps gcc\
depfile '$out.d'
-build '$outdir'/manpages.tree manpages '|' '$dir'/manpages.rc config.rc '||' '$outdir'/fetch.stamp
-tree_inputs=($tree_inputs '$outdir'/manpages.tree)
+build '$outdir'/manpages.index manpages '|' '$dir'/manpages.rc config.rc '||' '$outdir'/fetch.stamp
+index_inputs=($index_inputs '$outdir'/manpages.index)
fetch curl
diff --git a/gen.rc b/gen.rc
index cb7a61f0..3aef2892 100644
--- a/gen.rc
+++ b/gen.rc
@@ -9,8 +9,8 @@ subgen util
file .perms '$outdir'/root.perms 644
build '$builddir/$repo.stamp' gitinit
-build '$builddir/$repo.git/refs/tags/$repo_tag' gittree '$outdir/root.tree' '|' '$builddir/$repo.stamp' ./scripts/tree.rc
-build '$builddir/$repo.tar' gitarchive '|' '$builddir/$repo.git/refs/tags/$repo_tag'
-build '$builddir/$repo.git/refs/heads/master' gitcommit '|' '$builddir/$repo.git/refs/tags/$repo_tag'
+build '$builddir/$repo.tree' gittree '$outdir/root.index' '|' '$builddir/$repo.stamp' ./scripts/tree.rc
+build '$builddir/$repo.tar' gitarchive '|' '$builddir/$repo.tree'
+build '$builddir/$repo.commit' gitcommit '|' '$builddir/$repo.tree'
-echo default '$builddir/$repo.git/refs/heads/master'
+echo default '$builddir/$repo.commit'
diff --git a/ninja.rc b/ninja.rc
index 36d431b9..15cc87f5 100644
--- a/ninja.rc
+++ b/ninja.rc
@@ -142,7 +142,7 @@ fn file {
mode=`{printf %4s $3 | tr ' ' 0 | tail -c 4}
build $out githash $2 '|' '$builddir/$repo.stamp' scripts/hash.rc ; with\
args 10$mode' '$1
- tree_inputs=($tree_inputs $out)
+ index_inputs=($index_inputs $out)
if(! ~ $mode 0755 0644) tree_perms=($tree_perms 10$mode' '$1)
}
@@ -161,7 +161,7 @@ fn sym {
out='$builddir/$repo.hash'/$1
build $out githash '|' '$builddir/$repo.stamp' scripts/hash.rc ; with\
args 120000' '$1' '$2
- tree_inputs=($tree_inputs $out)
+ index_inputs=($index_inputs $out)
}
status=()
}
diff --git a/rules.ninja b/rules.ninja
index 0baf0e60..45821074 100644
--- a/rules.ninja
+++ b/rules.ninja
@@ -52,11 +52,11 @@ rule githash
command = rc ./scripts/hash.rc $builddir/$repo.git $args $in >$out.tmp && mv $out.tmp $out
rule gittree
- command = rc ./scripts/tree.rc $builddir/$repo.git $repo_tag $in
+ command = rc ./scripts/tree.rc $builddir/$repo.git $repo_tag $in $out
restat = 1
rule gitcommit
- command = rc ./scripts/commit.rc $builddir/$repo.git $repo_branch $repo_tag
+ command = rc ./scripts/commit.rc $builddir/$repo.git $repo_branch $repo_tag $out
rule gitarchive
command = git -C $builddir/$repo.git archive -o $$PWD/$out $repo_tag
diff --git a/scripts/commit.rc b/scripts/commit.rc
index feb0f4ac..e7b5d468 100644
--- a/scripts/commit.rc
+++ b/scripts/commit.rc
@@ -5,9 +5,11 @@ flag e +
repo=$1
branch=$2
tag=$3
+out=$4
fn checkstatus {}
+wd=`{pwd}
cd $repo
if([ -f refs/heads/$branch ]) parent=(-p $branch)
@@ -16,3 +18,4 @@ if not parent=()
message='oasis built by '`{id -un}
commit=`{echo $message | git commit-tree $tag $parent} ; checkstatus
git update-ref refs/heads/$branch $commit
+ln -f refs/heads/$branch $wd/$out
diff --git a/scripts/tree.rc b/scripts/tree.rc
index d42f5bd6..81f641c6 100644
--- a/scripts/tree.rc
+++ b/scripts/tree.rc
@@ -5,13 +5,15 @@ flag e +
repo=$1
tag=$2
index=$3
+out=$4
fn checkstatus {}
-oldcwd=`{pwd}
+wd=`{pwd}
cd $repo
git read-tree --empty
-git update-index --index-info <$oldcwd/$index
+git update-index --index-info <$wd/$index
tree=`{git write-tree} ; checkstatus
git update-ref refs/tags/$tag $tree
+ln -f refs/tags/$tag $wd/$out
diff --git a/setup.rc b/setup.rc
index 842203bb..3afea9a8 100755
--- a/setup.rc
+++ b/setup.rc
@@ -22,7 +22,7 @@ ifs='
fn subgen {
subninja '$dir'/$1/local.ninja
ninja_inputs=($ninja_inputs phony/'$dir'/$1/ninja)
- tree_inputs=($tree_inputs '$outdir'/$1/root.tree)
+ index_inputs=($index_inputs '$outdir'/$1/root.index)
perms_inputs=($perms_inputs '$outdir'/$1/root.perms)
if(~ $recurse 1 || ! [ -f $1/local.ninja ]) @ gen $1 &
status=()
@@ -37,7 +37,7 @@ fn gen {
allsrcs=()
tree_perms=()
perms_inputs=()
- tree_inputs=()
+ index_inputs=()
gen_inputs=()
ninja_inputs=()
@@ -60,8 +60,8 @@ fn gen {
}
if(~ $#perms_inputs 0) build '$outdir/root.perms' empty
if not build '$outdir/root.perms' mergeperms $perms_inputs
- if(~ $#tree_inputs 0) build '$outdir/root.tree' empty
- if not build '$outdir/root.tree' cat $tree_inputs
+ if(~ $#index_inputs 0) build '$outdir/root.index' empty
+ if not build '$outdir/root.index' cat $index_inputs
} >local.ninja.tmp
mv $absdir/^(local.ninja.tmp local.ninja)