From 59ebcc963c0a468c7bc5de589cfa5fdb6b646d9b Mon Sep 17 00:00:00 2001 From: John McQuah Date: Wed, 15 Jun 2022 17:40:52 -0400 Subject: [PATCH] prt-auf: cleaned up the handling of build logs --- scripts/prt-auf | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/scripts/prt-auf b/scripts/prt-auf index 271b9ae..f79b3e8 100755 --- a/scripts/prt-auf +++ b/scripts/prt-auf @@ -641,9 +641,8 @@ sub deporder { return @outfile, "MISSING", @missing if ($#missing >= 0); } -sub up_inst { # returns scalar references to five arrays; - my $type=shift; my @requested=@_; my %EXEMPT; my %WANTED; - my $logfile; my $logdir; my %pdirs; +sub up_inst { # returns scalar references to five arrays + my $type=shift; my @requested=@_; my %EXEMPT; my %WANTED; my %pdirs; my $PKGMK=$opkg{makecommand}; my $PKGADD=$opkg{addcommand}; my $SUDO="/usr/bin/doas"; my $FAKEROOT="/usr/bin/fakeroot"; @@ -659,17 +658,17 @@ sub up_inst { # returns scalar references to five arrays; @targets = grep { ($V_REPO{$_}) } @targets if ($type eq "grpinst"); # exempt any locked ports from an sysup operation - %EXEMPT = map { $_ => 1 } @LOCKED; + %EXEMPT = map { $_ => 0 } @LOCKED; %WANTED = map { $_ => 1 } @requested; - if ($action eq "sysup") { @targets = grep {! defined $EXEMPT{$_}} @targets; + if ($action eq "sysup") { @targets = grep {! $EXEMPT{$_}} @targets; } else { - @targets = grep {(! defined $EXEMPT{$_}) or ($WANTED{$_})} @targets; + @targets = grep {(! $EXEMPT{$_}) or ($WANTED{$_})} @targets; } # first determine the directories from which pkgmk must be called, # the package that will appear after a successful build, # and where to save the build log. - my %builtpkg; my %mkcmd; my %addcmd; my %status; my %logfile; my %logfh; my %pvars; + my %builtpkg; my %mkcmd; my %addcmd; my %status; my %logfile; my %pvars; my ($COMPRESSION, $PKG_DIR) = parse_pkgmk_conf(); foreach my $t (@targets) { $opkg{$t} = $opkg{margs}; $pvars{'%n'}=$t; @@ -684,7 +683,8 @@ sub up_inst { # returns scalar references to five arrays; if ($olog{write} eq "enabled") { $logfile{$t} = ($olog{file}) ? $olog{file} : "/var/log/pkgmk/%n.log"; $logfile{$t} =~ s/(%n|%v|%r|%p)/$pvars{$1}/g; - $mkcmd{$t} .= ($olog{mode} eq "append") ? " >>$logfile{$t} 2>&1" : " >$logfile{$t} 2>&1"; + $mkcmd{$t} .= ($olog{mode} eq "append") ? " 2>&1 |/usr/bin/tee -a $logfile{$t}" + : " 2>&1 |/usr/bin/tee $logfile{$t}"; } } @@ -705,14 +705,8 @@ sub up_inst { # returns scalar references to five arrays; $status{$t} .= ( $?>>8 == 0 ) ? "pre-install ok. " : "pre-install failed. "; } ($opkg{test} eq "no") ? chdir $pdirs{$t} : print "cd $pdirs{$t}\n"; - print "target $t ... waiting for the log to be written\n" if (($opkg{test} eq "no") and ($logfile{$t})); ($opkg{test} eq "no") ? system("$mkcmd{$t}") : print "$mkcmd{$t}\n"; $status{$t} .= ( $?>>8 == 0 ) ? "build ok. " : "build failed. "; - if (($logfile{$t}) and (-r $logfile{$t}) and (-M $logfile{$t} < 0)) { - open (my $tailf, "$logfile{$t}"); - while (<$tailf>) { print $_; } - close ($tailf); print "\n"; - } $status{$t} = ( $mkcmd{$t} =~ /skipped/ ) ? "build skipped. " : $status{$t}; if ($status{$t} =~ /build ok/) { $addcmd{$t} =~ s/ -u / / if (port_diff("utd",$t)<0); @@ -843,6 +837,7 @@ COMMON OPTIONS -v show version in listing -vv show version and decription in listing --path print path to port if appropriate (search, list, depends) + --regex treat search term as a Perl-compatible regular expression --cache use a cache file --test do not actually run pkgmk/pkgadd, just print the commands on STDOUT EOF