From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 4F6E61F852; Fri, 23 Dec 2022 22:11:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1671833461; bh=TRPbGbVdFoM/CFZ/XT94jdcGRqfOMEo3W87ZrMnZdyw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=wuHYmT3RdnxC2n8TrOjZSbPRxazATX5lZWmyV035D21bJa5PQPy9OwztkOu0xwVrd suACsIm23X0Q2wPRX+820J5jeSEtoOA8l7kbzBSy9y+KAPZ8bYsQbepui1YhnPerqy fuVjLQtrh/esT31weKWIKqOUTqbFc6GUQ7pTXIAE= Date: Fri, 23 Dec 2022 22:11:01 +0000 From: Eric Wong To: meta@public-inbox.org Cc: Ricardo Ribalda Subject: [PATCH] cleanup pure Perl use Message-ID: <20221223221101.M214935@dcvr> References: <20220908195731.174883-1-ricardo@ribalda.com> <20220908220806.M574221@dcvr> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20220908220806.M574221@dcvr> List-Id: Eric Wong 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 }