From: Michael Tremer Date: Wed, 16 Jun 2010 09:52:17 +0000 (+0200) Subject: dejagnu: Add some patches. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e220cfe62b96320336ce4ab40a48f14a8ca76b9d;p=ipfire-3.x.git dejagnu: Add some patches. These patches were taken from fedora and will fix some issues when running the gcc testsuite. --- 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 index 000000000..2d75f4c33 --- /dev/null +++ b/pkgs/core/dejagnu/patches/dejagnu-1.4.4-runtest.patch @@ -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 index 000000000..0a30f459a --- /dev/null +++ b/pkgs/core/dejagnu/patches/dejagnu-1.4.4-smp-1.patch @@ -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 index 000000000..d9e07ea15 --- /dev/null +++ b/pkgs/core/dejagnu/patches/dejagnu-1.4.4-testsuite.patch @@ -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 + #include + #include ++#include + + 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 (®ex_pat, "\r\n\t#passed.*#failed.*#untested.*#unresolved", REG_NOSUB|REG_NEWLINE); +- if (regexec (®ex_pat, bbuuff, 0, (regmatch_t *)0, 0)) { ++ if (regexec (®ex_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 index 000000000..2823d5d32 --- /dev/null +++ b/pkgs/core/dejagnu/patches/dejagnu-1.4.4-utils-speedup.patch @@ -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