]> git.ipfire.org Git - people/ms/ipfire-3.x.git/commitdiff
dejagnu: Add some patches.
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 16 Jun 2010 09:52:17 +0000 (11:52 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 16 Jun 2010 09:52:17 +0000 (11:52 +0200)
These patches were taken from fedora and will fix some issues
when running the gcc testsuite.

pkgs/core/dejagnu/patches/dejagnu-1.4.4-runtest.patch [new file with mode: 0644]
pkgs/core/dejagnu/patches/dejagnu-1.4.4-smp-1.patch [new file with mode: 0644]
pkgs/core/dejagnu/patches/dejagnu-1.4.4-testsuite.patch [new file with mode: 0644]
pkgs/core/dejagnu/patches/dejagnu-1.4.4-utils-speedup.patch [new file with mode: 0644]

diff --git a/pkgs/core/dejagnu/patches/dejagnu-1.4.4-runtest.patch b/pkgs/core/dejagnu/patches/dejagnu-1.4.4-runtest.patch
new file mode 100644 (file)
index 0000000..2d75f4c
--- /dev/null
@@ -0,0 +1,12 @@
+--- dejagnu-1.4.4/runtest.exp.old      2003-10-15 15:22:52.000000000 +0200
++++ dejagnu-1.4.4/runtest.exp  2008-08-27 16:22:18.000000000 +0200
+@@ -1443,8 +1443,7 @@
+     global tool
+     clone_output "Running $test_file_name ..."
+-    set prms_id       0
+-    set bug_id        0
++    reset_vars
+     set test_result ""
+     if [file exists $test_file_name] {
diff --git a/pkgs/core/dejagnu/patches/dejagnu-1.4.4-smp-1.patch b/pkgs/core/dejagnu/patches/dejagnu-1.4.4-smp-1.patch
new file mode 100644 (file)
index 0000000..0a30f45
--- /dev/null
@@ -0,0 +1,26 @@
+--- dejagnu-1.4.4/lib/remote.exp.smp   2003-10-10 23:42:46.000000000 -0700
++++ dejagnu-1.4.4/lib/remote.exp       2005-08-05 12:32:10.107161990 -0700
+@@ -91,9 +91,13 @@ proc local_exec { commandline inp outp t
+     # programs that bear children. We can't use tcl's exec because it has
+     # no way to timeout programs that hang. *sigh*
+     #
++    # The expect command will close the connection when it sees EOF. On
++    # SMP machine, close the connection may send SIGHUP to the child
++    # and cause it to exit before it can exit normally.  We should make
++    # the child to ignore SIGHUP.
+     if { "$inp" == "" && "$outp" == "" } {
+       set id -1
+-      set result [catch "eval spawn \{${commandline}\}" pid]
++      set result [catch "eval spawn -ignore SIGHUP \{${commandline}\}" pid]
+       if { $result == 0 } {
+           set result2 0
+       } else {
+@@ -134,7 +138,7 @@ proc local_exec { commandline inp outp t
+           return [list -1 "open of $commandline $inp $outp failed: $errorInfo"]
+       }
+       set pid [pid $id]
+-      set result [catch "spawn -leaveopen $id" result2]
++      set result [catch "spawn -ignore SIGHUP -leaveopen $id" result2]
+     }
+     # Prepend "-" to each pid, to generate the "process group IDs" needed by
+     # kill.
diff --git a/pkgs/core/dejagnu/patches/dejagnu-1.4.4-testsuite.patch b/pkgs/core/dejagnu/patches/dejagnu-1.4.4-testsuite.patch
new file mode 100644 (file)
index 0000000..d9e07ea
--- /dev/null
@@ -0,0 +1,93 @@
+diff -Burp dejagnu-1.4.4/testsuite/libdejagnu/unit.cc dejagnu-1.4.4-pm/testsuite/libdejagnu/unit.cc
+--- dejagnu-1.4.4/testsuite/libdejagnu/unit.cc 2003-08-17 03:33:06.000000000 +0200
++++ dejagnu-1.4.4-pm/testsuite/libdejagnu/unit.cc      2007-10-03 18:31:03.000000000 +0200
+@@ -7,6 +7,7 @@
+ #include <fstream>
+ #include <set>
+ #include <dejagnu.h>
++#include <sstream>
+ using namespace std;
+@@ -49,12 +50,8 @@ main (int argc, char *argv[]) {
+     // Replace the output buffer for cout, so we can examine it to
+     // see what was displayed. Otherwise, there is no way we can test
+     // the logging functions completely.
+-    char bbuuff[5120];
+-#ifdef __STDC_HOSTED__
+-    cout.rdbuf()->pubsetbuf(bbuuff, 5120);
+-#else
+-    cout.rdbuf()->setbuf(bbuuff, 5120);
+-#endif
++    stringstream stream;
++    streambuf * buf = cout.rdbuf(stream.rdbuf());
+     testClass1.tname = "testType1";
+     testClass1.tnum = 1;
+@@ -65,53 +62,59 @@ main (int argc, char *argv[]) {
+     // Test the pass message
+     test.pass ("bogus pass message for testing");
++    cout.flush();
+     outstate = os2;
+-    if (strncmp(bbuuff, "\tPAS: bogus pass message", 22) == 0) {
++    if (strncmp(stream.str().c_str(), "\tPAS: bogus pass message", 22) == 0) {
+       runtest.pass ("Pass message");
+     } else {
+       runtest.fail ("Pass message");
+     }
++    stream.str("");
+     // Test the fail message
+     outstate = os1;
+     test.fail ("bogus fail message for testing");
+     cout.flush();
+     outstate = os2;
+-    if (strncmp(bbuuff, "\tFAI: bogus fail message", 22) == 0) {
++    if (strncmp(stream.str().c_str(), "\tFAI: bogus fail message", 22) == 0) {
+       runtest.pass ("Fail message");
+     } else {
+       runtest.fail ("Fail message");
+     }
++    stream.str("");
+     // Test the untested message
+     outstate = os1;
+     test.untested ("bogus untested message for testing");
+     cout.flush();
+     outstate = os2;
+-    if (strncmp(bbuuff, "\tUNT: bogus untested message", 21) == 0) {
++    if (strncmp(stream.str().c_str(), "\tUNT: bogus untested message", 21) == 0) {
+       runtest.pass ("Untested message");
+     } else {
+       runtest.fail ("Untested message");
+     }
++    stream.str("");
+     // Test the unresolved message
+     outstate = os1;
+     test.unresolved ("bogus unresolved message for testing");
+     cout.flush();
+     outstate = os2;
+-    if (strncmp(bbuuff, "\tUNR: bogus unresolved message", 21) == 0) {
++    if (strncmp(stream.str().c_str(), "\tUNR: bogus unresolved message", 21) == 0) {
+       runtest.pass ("Unresolved message");
+     } else {
+       runtest.fail ("Unresolved message");
+     }
++    stream.str("");
+     // Make sure we got everything in the totals
+     regcomp (&regex_pat, "\r\n\t#passed.*#failed.*#untested.*#unresolved", REG_NOSUB|REG_NEWLINE);
+-    if (regexec (&regex_pat, bbuuff, 0, (regmatch_t *)0, 0)) {
++    if (regexec (&regex_pat, stream.str().c_str(), 0, (regmatch_t *)0, 0)) {
+       runtest.pass ("Totals message");
+     } else {
+       runtest.fail ("Totals message");
+     }
+-}
+-
++    stream.str("");
++    cout.rdbuf(buf);
++}
diff --git a/pkgs/core/dejagnu/patches/dejagnu-1.4.4-utils-speedup.patch b/pkgs/core/dejagnu/patches/dejagnu-1.4.4-utils-speedup.patch
new file mode 100644 (file)
index 0000000..2823d5d
--- /dev/null
@@ -0,0 +1,20 @@
+--- dejagnu-1.4.4/lib/utils.exp        2009-10-16 12:58:38.000000000 +0200
++++ dejagnu-1.4.4/lib/utils.exp        2010-01-21 21:12:54.144855458 +0100
+@@ -106,7 +106,7 @@ proc find { rootdir pattern } {
+     foreach i $dirs {
+       verbose "Looking in $i" 3
+       foreach match [glob -nocomplain $i/$pattern] {
+-          if ![file isdirectory $match] {
++          if {![file isdirectory $match]} {
+               lappend files $match
+               verbose "Adding $match to file list" 3
+           }
+@@ -216,7 +216,7 @@ proc prune { list pattern } {
+     set tmp {}
+     foreach i $list {
+       verbose "Checking pattern \"$pattern\" against $i" 3
+-      if ![string match $pattern $i] {
++      if {![string match $pattern $i]} {
+           lappend tmp $i
+       } else {
+           verbose "Removing element $i from list" 3