From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Cc: Ricardo Ribalda <ricardo@ribalda.com>
Subject: [PATCH] cleanup pure Perl use
Date: Fri, 23 Dec 2022 22:11:01 +0000 [thread overview]
Message-ID: <20221223221101.M214935@dcvr> (raw)
In-Reply-To: <20220908220806.M574221@dcvr>
Eric Wong <e@80x24.org> wrote:
> Applied as commit ad8acf7d6484d0a489499742cadadbd4f890ab53
Actually, this shouldn't be needed.
It was causing much noise for users who don't have Inline::C
installed. I don't want to depend on a C compiler nor do
I want binaries of this work distributed.
The underlying problem was PERL_INLINE_DIRECTORY stays set by
our code even if Spawn fails to build.
----------8<---------
Subject: [PATCH] cleanup pure Perl use
This quiets down tests when the optional Inline::C is missing.
We do not currently have a hard dependency on Inline::C; and we
should not leave PERL_INLINE_DIRECTORY set in PublicInbox::Spawn
if Inline fails to build.
Leaving PERL_INLINE_DIRECTORY set by Spawn after it fails (due
to missing Inline::C) would cause downstream failures in Gcf2
builds for the same reason. So we should bail out of the Gcf2
build early if Spawn already failed due to missing Inline::C.
The only time we want to be noisy is if a user explicitly sets
PERL_INLINE_DIRECTORY and Inline::C is missing.
This reverts commit ad8acf7d6484d0a489499742cadadbd4f890ab53.
ad8acf7d6484d0a4 (Gcf2: Create cache folder if missing, 2022-09-08)
---
lib/PublicInbox/Gcf2.pm | 4 +---
lib/PublicInbox/Spawn.pm | 7 +++++--
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/lib/PublicInbox/Gcf2.pm b/lib/PublicInbox/Gcf2.pm
index 54b3d6aa..d13e6b1a 100644
--- a/lib/PublicInbox/Gcf2.pm
+++ b/lib/PublicInbox/Gcf2.pm
@@ -10,16 +10,14 @@ use PublicInbox::Spawn qw(which popen_rd); # may set PERL_INLINE_DIRECTORY
use Fcntl qw(LOCK_EX SEEK_SET);
use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC);
use IO::Handle; # autoflush
-use File::Path qw(make_path);
use PublicInbox::Git;
BEGIN {
my (%CFG, $c_src);
# PublicInbox::Spawn will set PERL_INLINE_DIRECTORY
- # to ~/.cache/public-inbox/inline-c if it exists
+ # 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';
- make_path($inline_dir);
my $f = "$inline_dir/.public-inbox.lock";
open my $fh, '+>', $f or die "open($f): $!";
diff --git a/lib/PublicInbox/Spawn.pm b/lib/PublicInbox/Spawn.pm
index 3f69108a..7f61d8db 100644
--- a/lib/PublicInbox/Spawn.pm
+++ b/lib/PublicInbox/Spawn.pm
@@ -268,13 +268,14 @@ void recv_cmd4(PerlIO *s, SV *buf, STRLEN n)
#endif /* defined(CMSG_SPACE) && defined(CMSG_LEN) */
ALL_LIBC
- my $inline_dir = $ENV{PERL_INLINE_DIRECTORY} //= (
+ my $inline_dir = $ENV{PERL_INLINE_DIRECTORY} // (
$ENV{XDG_CACHE_HOME} //
( ($ENV{HOME} // '/nonexistent').'/.cache' )
).'/public-inbox/inline-c';
warn "$inline_dir exists, not writable\n" if -e $inline_dir && !-w _;
$all_libc = undef unless -d _ && -w _;
if (defined $all_libc) {
+ local $ENV{PERL_INLINE_DIRECTORY} = $inline_dir;
my $f = "$inline_dir/.public-inbox.lock";
open my $oldout, '>&', \*STDOUT or die "dup(1): $!";
open my $olderr, '>&', \*STDERR or die "dup(2): $!";
@@ -302,7 +303,9 @@ EOM
$all_libc = undef;
}
}
- unless ($all_libc) {
+ if (defined $all_libc) { # set for Gcf2
+ $ENV{PERL_INLINE_DIRECTORY} = $inline_dir;
+ } else {
require PublicInbox::SpawnPP;
*pi_fork_exec = \&PublicInbox::SpawnPP::pi_fork_exec
}
prev parent reply other threads:[~2022-12-23 22:11 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-08 19:57 [PATCH] Gcf2: Create cache folder if missing Ricardo Ribalda
2022-09-08 22:08 ` Eric Wong
2022-09-09 10:10 ` Ricardo Ribalda Delgado
2022-12-23 22:11 ` Eric Wong [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://public-inbox.org/README
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221223221101.M214935@dcvr \
--to=e@80x24.org \
--cc=meta@public-inbox.org \
--cc=ricardo@ribalda.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).