diff options
author | Amitai Schlair <schmonz-web-ikiwiki@schmonz.com> | 2013-01-27 22:09:57 -0500 |
---|---|---|
committer | Amitai Schlair <schmonz-web-ikiwiki@schmonz.com> | 2013-01-27 22:09:57 -0500 |
commit | b30cacdf8da07f40af03f1b26021d8ec4d8b8b4c (patch) | |
tree | 204e454c2d5b5fe6e09300fe0f259c6c55392ae7 /IkiWiki/Wrapper.pm | |
parent | 4d4c15a7c6f3ee073bf6d8aaf9a9a8b0b4c7fb40 (diff) | |
download | ikiwiki-b30cacdf8da07f40af03f1b26021d8ec4d8b8b4c.tar ikiwiki-b30cacdf8da07f40af03f1b26021d8ec4d8b8b4c.tar.gz |
Fix longstanding bug (chdir to nonexistent dirs).
In test, set up the post-commit hook for more realism (and bugs!).
To make wrappers work in test, set PERL5LIB, and allow the wrappee's
path to be overridden. Meta-test that post-commit is really hooked
up by verifying that content is getting generated in destdir.
About the longstanding bug, which as far as I know was harmless:
CVS can't operate outside a srcdir, so we're always setting $CWD.
"local $CWD" restores the previous value when we go out of scope.
Usually that's correct. But if we're removing the last file from a
directory, the post-commit hook will exec in a working directory
that's about to not exist (CVS will prune it).
The fix: chdir() manually in cvs_runcvs(), so we can selectively
not chdir() back.
Diffstat (limited to 'IkiWiki/Wrapper.pm')
-rw-r--r-- | IkiWiki/Wrapper.pm | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm index 06be36dfc..84b4b5a2f 100644 --- a/IkiWiki/Wrapper.pm +++ b/IkiWiki/Wrapper.pm @@ -28,10 +28,11 @@ sub gen_wrappers () { %config=(%origconfig); } +our $program_to_wrap = $0; sub gen_wrapper () { $config{srcdir}=File::Spec->rel2abs($config{srcdir}); $config{destdir}=File::Spec->rel2abs($config{destdir}); - my $this=File::Spec->rel2abs($0); + my $this=File::Spec->rel2abs($program_to_wrap); if (! -x $this) { error(sprintf(gettext("%s doesn't seem to be executable"), $this)); } |