From e6f95521ae0ed058789bd302ec5c5a99fed07379 Mon Sep 17 00:00:00 2001 From: Avery Pennarun Date: Sat, 11 Dec 2010 23:00:53 -0800 Subject: [PATCH] redo-always/redo-ifcreate/redo-stamp: work inside chdir(). If someone cd's to another directory and then runs redo-always, we weren't adding to the right target. --- redo-always.py | 6 ++++-- redo-ifcreate.py | 6 ++++-- redo-stamp.py | 4 +++- t/always1.do | 1 + t/alwaystest.do | 13 ++++++++++++- t/stamp/stampy.do | 3 ++- 6 files changed, 26 insertions(+), 7 deletions(-) diff --git a/redo-always.py b/redo-always.py index ea8e343..a35213a 100755 --- a/redo-always.py +++ b/redo-always.py @@ -5,8 +5,10 @@ from log import err try: - me = state.File(name=vars.TARGET) - me.add_dep('m', state.ALWAYS) + me = os.path.join(vars.STARTDIR, + os.path.join(vars.PWD, vars.TARGET)) + f = state.File(name=me) + f.add_dep('m', state.ALWAYS) always = state.File(name=state.ALWAYS) always.stamp = state.STAMP_MISSING always.set_changed() diff --git a/redo-ifcreate.py b/redo-ifcreate.py index 183e686..25ffe0c 100755 --- a/redo-ifcreate.py +++ b/redo-ifcreate.py @@ -5,12 +5,14 @@ from log import err try: - me = state.File(name=vars.TARGET) + me = os.path.join(vars.STARTDIR, + os.path.join(vars.PWD, vars.TARGET)) + f = state.File(name=me) for t in sys.argv[1:]: if os.path.exists(t): err('redo-ifcreate: error: %r already exists\n' % t) sys.exit(1) else: - me.add_dep('c', t) + f.add_dep('c', t) except KeyboardInterrupt: sys.exit(200) diff --git a/redo-stamp.py b/redo-stamp.py index 81fdeaf..8e1ec63 100755 --- a/redo-stamp.py +++ b/redo-stamp.py @@ -33,7 +33,9 @@ csum = sh.hexdigest() if not vars.TARGET: sys.exit(0) -f = state.File(name=vars.TARGET) +me = os.path.join(vars.STARTDIR, + os.path.join(vars.PWD, vars.TARGET)) +f = state.File(name=me) changed = (csum != f.csum) debug2('%s: old = %s\n' % (f.name, f.csum)) debug2('%s: sum = %s (%s)\n' % (f.name, csum, diff --git a/t/always1.do b/t/always1.do index 14d62fc..8789de9 100644 --- a/t/always1.do +++ b/t/always1.do @@ -1,3 +1,4 @@ echo $$ >>always1.log echo $$ +cd .. redo-always diff --git a/t/alwaystest.do b/t/alwaystest.do index 85fdf8f..37bf270 100644 --- a/t/alwaystest.do +++ b/t/alwaystest.do @@ -1,6 +1,8 @@ rm -f always1 always1.log -redo always1 +cd .. +redo t/always1 +cd t [ "$(wc -l >stampy.log redo-ifchange inp bob cat inp -redo-stamp