about summary refs log tree commit homepage
path: root/lib/PublicInbox/XapHelperCxx.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/XapHelperCxx.pm')
-rw-r--r--lib/PublicInbox/XapHelperCxx.pm19
1 files changed, 7 insertions, 12 deletions
diff --git a/lib/PublicInbox/XapHelperCxx.pm b/lib/PublicInbox/XapHelperCxx.pm
index 1aa75f2a..17f988ee 100644
--- a/lib/PublicInbox/XapHelperCxx.pm
+++ b/lib/PublicInbox/XapHelperCxx.pm
@@ -60,17 +60,12 @@ sub build () {
         }
         require PublicInbox::CodeSearch;
         require PublicInbox::Lock;
-        require PublicInbox::OnDestroy;
         my ($prog) = ($bin =~ m!/([^/]+)\z!);
         my $lk = PublicInbox::Lock->new("$dir/$prog.lock")->lock_for_scope;
         write_file '>', "$dir/$prog.cpp", qq{#include "xap_helper.h"\n},
                         PublicInbox::Search::generate_cxx(),
                         PublicInbox::CodeSearch::generate_cxx();
 
-        opendir my $dh, '.';
-        my $restore = PublicInbox::OnDestroy->new(\&chdir, $dh);
-        chdir $dir;
-
         # xap_modversion may be set by needs_rebuild
         $xap_modversion //= xap_cfg('--modversion');
         my $fl = xap_cfg(qw(--libs --cflags));
@@ -83,15 +78,15 @@ sub build () {
         $^O eq 'netbsd' and $fl =~ s/(\A|[ \t])\-L([^ \t]+)([ \t]|\z)/
                                 "$1-L$2 -Wl,-rpath=$2$3"/egsx;
         my @xflags = split(' ', "$fl $xflags"); # ' ' awk-mode eats leading WS
-        my @cflags = grep(!/\A-(?:Wl|l|L)/, @xflags);
-        run_die([$cxx, '-c', "$prog.cpp", '-I', $srcpfx, @cflags]);
-        run_die([$cxx, '-o', "$prog.tmp", "$prog.o", @xflags]);
-        unlink "$prog.cpp", "$prog.o";
-        write_file '>', 'XFLAGS.tmp', $xflags, "\n";
-        write_file '>', 'xap_modversion.tmp', $xap_modversion, "\n";
+        my @cflags = ('-I', $srcpfx, grep(!/\A-(?:Wl|l|L)/, @xflags));
+        run_die([$cxx, '-o', "$dir/$prog.o", '-c', "$dir/$prog.cpp", @cflags]);
+        run_die([$cxx, '-o', "$dir/$prog.tmp", "$dir/$prog.o", @xflags]);
+        unlink "$dir/$prog.cpp", "$dir/$prog.o";
+        write_file '>', "$dir/XFLAGS.tmp", $xflags, "\n";
+        write_file '>', "$dir/xap_modversion.tmp", $xap_modversion, "\n";
         undef $xap_modversion; # do we ever build() twice?
         # not quite atomic, but close enough :P
-        rename("$_.tmp", $_) for ($prog, qw(XFLAGS xap_modversion));
+        rename("$dir/$_.tmp", "$dir/$_") for ($prog, qw(XFLAGS xap_modversion));
 }
 
 sub check_build () {