diff options
author | Eric Wong <e@80x24.org> | 2023-10-04 03:49:27 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2023-10-04 17:46:43 +0000 |
commit | e279d7556220e7f4963f604a3db1a8bbcb85181f (patch) | |
tree | 7e6ad2f13ef36644ecbbd2b172245a33faf7fef9 /lib/PublicInbox/Gcf2.pm | |
parent | dba2f9999053aa2bbe2682bfe94ceae829f1f59c (diff) | |
download | public-inbox-e279d7556220e7f4963f604a3db1a8bbcb85181f.tar.gz |
It auto-retries on EINTR and saves us the trouble of doing so.
Diffstat (limited to 'lib/PublicInbox/Gcf2.pm')
-rw-r--r-- | lib/PublicInbox/Gcf2.pm | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/PublicInbox/Gcf2.pm b/lib/PublicInbox/Gcf2.pm index 0f4d2bf0..37262e28 100644 --- a/lib/PublicInbox/Gcf2.pm +++ b/lib/PublicInbox/Gcf2.pm @@ -6,10 +6,11 @@ package PublicInbox::Gcf2; use v5.12; use PublicInbox::Spawn qw(which popen_rd); # may set PERL_INLINE_DIRECTORY -use Fcntl qw(LOCK_EX SEEK_SET); +use Fcntl qw(SEEK_SET); use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC); use IO::Handle; # autoflush use PublicInbox::Git; +use PublicInbox::Lock; BEGIN { use autodie; @@ -18,10 +19,10 @@ BEGIN { # to ~/.cache/public-inbox/inline-c if it exists and Inline::C works my $inline_dir = $ENV{PERL_INLINE_DIRECTORY} // die 'PERL_INLINE_DIRECTORY not defined'; - open my $fh, '+>', "$inline_dir/.public-inbox.lock"; # CentOS 7.x ships Inline 0.53, 0.64+ has built-in locking - flock($fh, LOCK_EX); + my $lk = PublicInbox::Lock->new("$inline_dir/.public-inbox.lock"); + my $fh = $lk->lock_acquire; my $pc = which($ENV{PKG_CONFIG} // 'pkg-config') // die "pkg-config missing for libgit2"; @@ -74,6 +75,7 @@ EOM if ($err) { seek($fh, 0, SEEK_SET); my @msg = <$fh>; + truncate($fh, 0); die "Inline::C Gcf2 build failed:\n", $err, "\n", @msg; } } |