* make test in a debian-11 container
@ 2021-09-09 18:23 Konstantin Ryabitsev
2021-09-09 20:45 ` [PATCH] gcf2: die if pkg-config is missing Eric Wong
0 siblings, 1 reply; 8+ messages in thread
From: Konstantin Ryabitsev @ 2021-09-09 18:23 UTC (permalink / raw)
To: meta
Hello:
I can't seem to get a clean "make test" in the Debian container. It's possible
that I'm missing some of the packages, as the official Debian container image
is very minimal.
The dockerfile is here: https://gist.github.com/mricon/046ba7c8b03bd92176dbe83e04f2466c
The pertinent section is:
RUN apt-get -y install git liburi-perl libemail-mime-perl libplack-perl libtimedate-perl \
libdbd-sqlite3-perl libsearch-xapian-perl libnet-server-perl \
libinline-c-perl libemail-address-xs-perl libparse-recdescent-perl \
xapian-tools libencode-perl libdbi-perl liblinux-inotify2-perl \
libio-compress-perl curl libmail-imapclient-perl sqlite3 \
libgit2-dev make eatmydata
When I run "make test", I get the following failures:
...
t/gcf2.t ..................... Use of uninitialized value $file in index at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 348.
Use of uninitialized value $file in concatenation (.) or string at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 350.
Use of uninitialized value in subroutine entry at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 388.
Use of uninitialized value in join or string at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 389.
t/gcf2.t ..................... skipped: PublicInbox::Gcf2 missing for t/gcf2.t
t/gcf2_client.t .............. Use of uninitialized value $file in index at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 348.
Use of uninitialized value $file in concatenation (.) or string at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 350.
Use of uninitialized value in subroutine entry at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 388.
Use of uninitialized value in join or string at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 389.
t/gcf2_client.t .............. skipped: PublicInbox::Gcf2 missing for t/gcf2_client.t
t/git.t ...................... 1/? fatal: Needed a single revision
t/git.t ...................... ok
t/gzip_filter.t .............. ok
t/hl_mod.t ................... skipped: failed to load highlight.pm for t/hl_mod.t
t/httpd-corner.t ............. ok
t/httpd-https.t .............. skipped: certs/ missing for t/httpd-https.t, run /usr/bin/perl ./create-certs.perl in certs/
t/httpd-unix.t ............... ok
t/httpd.t .................... ok
t/hval.t ..................... ok
t/idx_stack.t ................ ok
t/imap.t ..................... ok
t/imap_searchqp.t ............ ok
t/imap_tracker.t ............. ok
t/imapd-tls.t ................ skipped: certs/ missing for t/imapd-tls.t, run /usr/bin/perl ./create-certs.perl in certs/
t/imapd.t .................... 1/? # waiting for initial fetch...
# inbox unlocked on initial fetch, waiting for IDLE
t/imapd.t .................... 180/? # waiting for IMAP IDLE wakeup
# inbox unlocked on IDLE wakeup
# waiting for -watch reload + initial fetch
# waiting for PollInterval wakeup
# inbox unlocked (poll)
# Failed test 'no uninitialized warnings'
# at t/imapd.t line 543.
# 'Use of uninitialized value $file in index at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 348.
# Use of uninitialized value $file in concatenation (.) or string at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 350.
# Use of uninitialized value in subroutine entry at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 388.
# Use of uninitialized value in join or string at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 389.
# '
# matches '(?^i:uninitialized)'
# Looks like you failed 1 test of 186.
t/imapd.t .................... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/186 subtests
...
What am I missing?
-K
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] gcf2: die if pkg-config is missing
2021-09-09 18:23 make test in a debian-11 container Konstantin Ryabitsev
@ 2021-09-09 20:45 ` Eric Wong
2021-09-09 21:01 ` Konstantin Ryabitsev
0 siblings, 1 reply; 8+ messages in thread
From: Eric Wong @ 2021-09-09 20:45 UTC (permalink / raw)
To: Konstantin Ryabitsev; +Cc: meta
Konstantin Ryabitsev <konstantin@linuxfoundation.org> wrote:
> Hello:
>
> I can't seem to get a clean "make test" in the Debian container. It's possible
> that I'm missing some of the packages, as the official Debian container image
> is very minimal.
Not sure, it's taking forever to update one of my VMs...
> The dockerfile is here: https://gist.github.com/mricon/046ba7c8b03bd92176dbe83e04f2466c
>
> The pertinent section is:
> RUN apt-get -y install git liburi-perl libemail-mime-perl libplack-perl libtimedate-perl \
> libdbd-sqlite3-perl libsearch-xapian-perl libnet-server-perl \
> libinline-c-perl libemail-address-xs-perl libparse-recdescent-perl \
> xapian-tools libencode-perl libdbi-perl liblinux-inotify2-perl \
> libio-compress-perl curl libmail-imapclient-perl sqlite3 \
> libgit2-dev make eatmydata
Oops, pkg-config is needed for libgit2-dev. I thought most
*-dev packages would pull it in...
------------8<------------
Subject: [PATCH] gcf2: die if pkg-config is missing
We can't link properly to libgit2 without pkg-config telling
us which libraries and headers to use.
---
lib/PublicInbox/Gcf2.pm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/PublicInbox/Gcf2.pm b/lib/PublicInbox/Gcf2.pm
index 99f4ae04..0f967579 100644
--- a/lib/PublicInbox/Gcf2.pm
+++ b/lib/PublicInbox/Gcf2.pm
@@ -17,7 +17,8 @@ BEGIN {
die 'PERL_INLINE_DIRECTORY not defined';
my $f = "$inline_dir/.public-inbox.lock";
open $lockfh, '>', $f or die "failed to open $f: $!\n";
- my $pc = which($ENV{PKG_CONFIG} // 'pkg-config');
+ my $pc = which($ENV{PKG_CONFIG} // 'pkg-config') //
+ die "pkg-config missing for libgit2";
my ($dir) = (__FILE__ =~ m!\A(.+?)/[^/]+\z!);
my $rdr = {};
open $rdr->{2}, '>', '/dev/null' or die "open /dev/null: $!";
> When I run "make test", I get the following failures:
>
> ...
> t/gcf2.t ..................... Use of uninitialized value $file in index at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 348.
> Use of uninitialized value $file in concatenation (.) or string at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 350.
> Use of uninitialized value in subroutine entry at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 388.
> Use of uninitialized value in join or string at /home/user/work/temp/pi/blib/lib/PublicInbox/Spawn.pm line 389.
Otherwise, maybe printing a stacktrace can shine a light on the problem:
diff --git a/lib/PublicInbox/Spawn.pm b/lib/PublicInbox/Spawn.pm
index fe7aa0a8..473d0716 100644
--- a/lib/PublicInbox/Spawn.pm
+++ b/lib/PublicInbox/Spawn.pm
@@ -343,8 +343,10 @@ unless ($set_nodatacow) {
undef $set_nodatacow;
undef $all_libc;
+use Carp;
sub which ($) {
my ($file) = @_;
+ warn "file undefined ",Carp::longmess() unless defined($file);
return $file if index($file, '/') >= 0;
for my $p (split(/:/, $ENV{PATH})) {
$p .= "/$file";
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] gcf2: die if pkg-config is missing
2021-09-09 20:45 ` [PATCH] gcf2: die if pkg-config is missing Eric Wong
@ 2021-09-09 21:01 ` Konstantin Ryabitsev
2021-09-09 21:14 ` Eric Wong
0 siblings, 1 reply; 8+ messages in thread
From: Konstantin Ryabitsev @ 2021-09-09 21:01 UTC (permalink / raw)
To: Eric Wong; +Cc: meta
On Thu, Sep 09, 2021 at 08:45:41PM +0000, Eric Wong wrote:
> Konstantin Ryabitsev <konstantin@linuxfoundation.org> wrote:
> > Hello:
> >
> > I can't seem to get a clean "make test" in the Debian container. It's possible
> > that I'm missing some of the packages, as the official Debian container image
> > is very minimal.
>
> Not sure, it's taking forever to update one of my VMs...
>
> > The dockerfile is here: https://gist.github.com/mricon/046ba7c8b03bd92176dbe83e04f2466c
> >
> > The pertinent section is:
> > RUN apt-get -y install git liburi-perl libemail-mime-perl libplack-perl libtimedate-perl \
> > libdbd-sqlite3-perl libsearch-xapian-perl libnet-server-perl \
> > libinline-c-perl libemail-address-xs-perl libparse-recdescent-perl \
> > xapian-tools libencode-perl libdbi-perl liblinux-inotify2-perl \
> > libio-compress-perl curl libmail-imapclient-perl sqlite3 \
> > libgit2-dev make eatmydata
>
> Oops, pkg-config is needed for libgit2-dev. I thought most
> *-dev packages would pull it in...
Yep, that was the culprit. After installing pkg-config, gcf2 builds and tests
pass. I still have this while running "make test":
t/git.t ...................... 1/? fatal: Needed a single revision
But I do get "All tests successful" in the end, so I assume that's the
expected condition.
Thanks,
-K
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] gcf2: die if pkg-config is missing
2021-09-09 21:01 ` Konstantin Ryabitsev
@ 2021-09-09 21:14 ` Eric Wong
2021-09-09 21:21 ` Konstantin Ryabitsev
0 siblings, 1 reply; 8+ messages in thread
From: Eric Wong @ 2021-09-09 21:14 UTC (permalink / raw)
To: Konstantin Ryabitsev; +Cc: meta
Konstantin Ryabitsev <konstantin@linuxfoundation.org> wrote:
> Yep, that was the culprit. After installing pkg-config, gcf2 builds and tests
> pass. I still have this while running "make test":
Good to know. We'll have to document that when adding libgit2
stuff to the already-huge INSTALL file.
> t/git.t ...................... 1/? fatal: Needed a single revision
>
> But I do get "All tests successful" in the end, so I assume that's the
> expected condition.
Yes, it was making sure errors got propagated properly.
It always got lost in the "make -j4 check" parallel output for me :x
--------8<---------
Subject: [PATCH] t/git.t: quiet intentional git-rev-parse failure
It can get confusing, especially when running non-parallel "make test"
Link: https://public-inbox.org/meta/20210909210138.ssiv5tri65mf4l4o@meerkat.local/
---
t/git.t | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/t/git.t b/t/git.t
index bc1dea50..844e0111 100644
--- a/t/git.t
+++ b/t/git.t
@@ -98,8 +98,10 @@ if (1) {
$gcf->qx(qw(repack -adq));
ok($gcf->packed_bytes > 0, 'packed size is positive');
- $gcf->qx(qw(rev-parse --verify bogus));
- isnt($?, 0, '$? set on failure'.$?);
+ my $rdr;
+ open $rdr->{2}, '+>', '/dev/null' or xbail "open $!";
+ $gcf->qx([qw(rev-parse --verify bogus)], undef, $rdr);
+ isnt($?, 0, '$? set on failure: '.$?);
}
SKIP: {
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] gcf2: die if pkg-config is missing
2021-09-09 21:14 ` Eric Wong
@ 2021-09-09 21:21 ` Konstantin Ryabitsev
2021-09-09 21:23 ` Eric Wong
0 siblings, 1 reply; 8+ messages in thread
From: Konstantin Ryabitsev @ 2021-09-09 21:21 UTC (permalink / raw)
To: Eric Wong; +Cc: meta
On Thu, Sep 09, 2021 at 09:14:36PM +0000, Eric Wong wrote:
> Konstantin Ryabitsev <konstantin@linuxfoundation.org> wrote:
> > Yep, that was the culprit. After installing pkg-config, gcf2 builds and tests
> > pass. I still have this while running "make test":
>
> Good to know. We'll have to document that when adding libgit2
> stuff to the already-huge INSTALL file.
Annoyingly, after I blow away the container to start fresh, I get:
t/gcf2.t ..................... skipped: PublicInbox::Gcf2 missing for t/gcf2.t
That means gcf2 isn't getting built, right?
-K
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] gcf2: die if pkg-config is missing
2021-09-09 21:21 ` Konstantin Ryabitsev
@ 2021-09-09 21:23 ` Eric Wong
2021-09-09 21:29 ` Konstantin Ryabitsev
0 siblings, 1 reply; 8+ messages in thread
From: Eric Wong @ 2021-09-09 21:23 UTC (permalink / raw)
To: Konstantin Ryabitsev; +Cc: meta
Konstantin Ryabitsev <konstantin@linuxfoundation.org> wrote:
> On Thu, Sep 09, 2021 at 09:14:36PM +0000, Eric Wong wrote:
> > Konstantin Ryabitsev <konstantin@linuxfoundation.org> wrote:
> > > Yep, that was the culprit. After installing pkg-config, gcf2 builds and tests
> > > pass. I still have this while running "make test":
> >
> > Good to know. We'll have to document that when adding libgit2
> > stuff to the already-huge INSTALL file.
>
> Annoyingly, after I blow away the container to start fresh, I get:
>
> t/gcf2.t ..................... skipped: PublicInbox::Gcf2 missing for t/gcf2.t
>
> That means gcf2 isn't getting built, right?
Yeah, assuming all dependencies are there;
is PERL_INLINE_DIRECTORY set (or ~/.cache/public-inbox/inline-c exists?)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] gcf2: die if pkg-config is missing
2021-09-09 21:23 ` Eric Wong
@ 2021-09-09 21:29 ` Konstantin Ryabitsev
2021-09-09 21:34 ` Eric Wong
0 siblings, 1 reply; 8+ messages in thread
From: Konstantin Ryabitsev @ 2021-09-09 21:29 UTC (permalink / raw)
To: Eric Wong; +Cc: meta
On Thu, Sep 09, 2021 at 09:23:48PM +0000, Eric Wong wrote:
> > Annoyingly, after I blow away the container to start fresh, I get:
> >
> > t/gcf2.t ..................... skipped: PublicInbox::Gcf2 missing for t/gcf2.t
> >
> > That means gcf2 isn't getting built, right?
>
> Yeah, assuming all dependencies are there;
> is PERL_INLINE_DIRECTORY set (or ~/.cache/public-inbox/inline-c exists?)
Ah, yes, when I build as part of the dockerfile image, that dir is absent.
It shouldn't matter for actual usage, though -- so we can ignore this.
Sorry for a lot of noise about it, just want to make sure I got everything
working. :)
I'll follow up with my draft instructions on how to get things running with
toolbox.
Best,
-K
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] gcf2: die if pkg-config is missing
2021-09-09 21:29 ` Konstantin Ryabitsev
@ 2021-09-09 21:34 ` Eric Wong
0 siblings, 0 replies; 8+ messages in thread
From: Eric Wong @ 2021-09-09 21:34 UTC (permalink / raw)
To: Konstantin Ryabitsev; +Cc: meta
Konstantin Ryabitsev <konstantin@linuxfoundation.org> wrote:
> On Thu, Sep 09, 2021 at 09:23:48PM +0000, Eric Wong wrote:
> > > Annoyingly, after I blow away the container to start fresh, I get:
> > >
> > > t/gcf2.t ..................... skipped: PublicInbox::Gcf2 missing for t/gcf2.t
> > >
> > > That means gcf2 isn't getting built, right?
> >
> > Yeah, assuming all dependencies are there;
> > is PERL_INLINE_DIRECTORY set (or ~/.cache/public-inbox/inline-c exists?)
>
> Ah, yes, when I build as part of the dockerfile image, that dir is absent.
> It shouldn't matter for actual usage, though -- so we can ignore this.
>
> Sorry for a lot of noise about it, just want to make sure I got everything
> working. :)
>
> I'll follow up with my draft instructions on how to get things running with
> toolbox.
No worries, I think the test can show diagnostic info without
being too alarming for optional dependencies:
--------8<--------
Subject: [PATCH] test_common: print diagnostic for missing dependencies
The "#" prefix should prevent it from being too alarming if
a dependency is expected to be missing, but still useful if a
dependency is misconfigured.
---
lib/PublicInbox/TestCommon.pm | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm
index 83dcf650..2e3e9ecc 100644
--- a/lib/PublicInbox/TestCommon.pm
+++ b/lib/PublicInbox/TestCommon.pm
@@ -144,6 +144,7 @@ sub require_mods {
eval "require $mod";
}
if ($@) {
+ diag "require $mod: $@";
push @need, $mod;
} elsif ($mod eq 'IO::Socket::SSL' &&
# old versions of IO::Socket::SSL aren't supported
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2021-09-09 21:34 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-09-09 18:23 make test in a debian-11 container Konstantin Ryabitsev
2021-09-09 20:45 ` [PATCH] gcf2: die if pkg-config is missing Eric Wong
2021-09-09 21:01 ` Konstantin Ryabitsev
2021-09-09 21:14 ` Eric Wong
2021-09-09 21:21 ` Konstantin Ryabitsev
2021-09-09 21:23 ` Eric Wong
2021-09-09 21:29 ` Konstantin Ryabitsev
2021-09-09 21:34 ` Eric Wong
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).