perl: Skip $0 test on busybox in dist/threads/t/join.t
authorMarcel Denia <naoir@gmx.net>
Mon, 24 Aug 2015 14:27:22 +0000 (16:27 +0200)
committerMarcel Denia <naoir@gmx.net>
Tue, 1 Sep 2015 07:23:24 +0000 (09:23 +0200)
This test requires a ps which provides the -f option, as well as suitable output.
We can't provide either with busybox. Just skip it for now.

Signed-off-by: Marcel Denia <naoir@gmx.net>
lang/perl/patches/700-threads_join-skip_ps_on_busybox.patch [new file with mode: 0644]

diff --git a/lang/perl/patches/700-threads_join-skip_ps_on_busybox.patch b/lang/perl/patches/700-threads_join-skip_ps_on_busybox.patch
new file mode 100644 (file)
index 0000000..27ee757
--- /dev/null
@@ -0,0 +1,83 @@
+perl: Skip $0 test on busybox
+
+This test requires a ps which provides the -f option, as well as suitable output.
+We can't provide either with busybox. Just skip it for now.
+
+Signed-off-by: Marcel Denia <naoir@gmx.net>
+
+Index: perl-5.22.0/dist/threads/t/join.t
+===================================================================
+--- perl-5.22.0.orig/dist/threads/t/join.t
++++ perl-5.22.0/dist/threads/t/join.t
+@@ -110,36 +110,41 @@ sub skip {
+ # We parse ps output so this is OS-dependent.
+ if ($^O eq 'linux') {
+-    # First modify $0 in a subthread.
+-    #print "# mainthread: \$0 = $0\n";
+-    threads->create(sub{ #print "# subthread: \$0 = $0\n";
+-                        $0 = "foobar";
+-                        #print "# subthread: \$0 = $0\n"
+-                 })->join;
+-    #print "# mainthread: \$0 = $0\n";
+-    #print "# pid = $$\n";
+-    if (open PS, "ps -f |") { # Note: must work in (all) systems.
+-        my ($sawpid, $sawexe);
+-        while (<PS>) {
+-            chomp;
+-            #print "# [$_]\n";
+-            if (/^\s*\S+\s+$$\s/) {
+-                $sawpid++;
+-                if (/\sfoobar\s*$/) { # Linux 2.2 leaves extra trailing spaces.
+-                    $sawexe++;
+-                }
+-                last;
+-            }
+-        }
+-        close PS or die;
+-        if ($sawpid) {
+-            ok($sawpid && $sawexe, 'altering $0 is effective');
+-        } else {
+-            skip("\$0 check: did not see pid $$ in 'ps -f |'");
+-        }
+-    } else {
+-        skip("\$0 check: opening 'ps -f |' failed: $!");
+-    }
++      if (readlink('/bin/ps') ne 'busybox') {
++              # First modify $0 in a subthread.
++              #print "# mainthread: \$0 = $0\n";
++              threads->create(sub{ #print "# subthread: \$0 = $0\n";
++                                                      $0 = "foobar";
++                                                      #print "# subthread: \$0 = $0\n"
++                                      })->join;
++              #print "# mainthread: \$0 = $0\n";
++              #print "# pid = $$\n";
++              if (open PS, "ps -f |") { # Note: must work in (all) systems.
++                      my ($sawpid, $sawexe);
++                      while (<PS>) {
++                              chomp;
++                              #print "# [$_]\n";
++                              if (/^\s*\S+\s+$$\s/) {
++                                      $sawpid++;
++                                      if (/\sfoobar\s*$/) { # Linux 2.2 leaves extra trailing spaces.
++                                              $sawexe++;
++                                      }
++                                      last;
++                              }
++                      }
++                      close PS or die;
++                      if ($sawpid) {
++                              ok($sawpid && $sawexe, 'altering $0 is effective');
++                      } else {
++                              skip("\$0 check: did not see pid $$ in 'ps -f |'");
++                      }
++              } else {
++                      skip("\$0 check: opening 'ps -f |' failed: $!");
++              }
++      }
++      else {
++              skip("\$0 check: incompatible with busybox");
++      }
+ } else {
+     skip("\$0 check: only on Linux");
+ }