Bug #1171
closedGMP-inside-GCC does not configure correctly when invoked from QA server
0%
Description
The error it prints is
configure:33935: flex conftest.l flex: fatal internal error, exec failed flex: error writing output file lex.yy.c
The error prevents QA tests from actually building the system, and thus blocks all commits into master.
This is a known problem, see how this guy tried to debug it. But it's hard to reproduce.
When we run our configuration tools from our consoles it works.
When I run QA server checking script (actually, a git update hook) from a Bash shell, it works.
When the script is automatically run via a creepy shell gitosis invokes, it fails. Most likely, it's a Python-related issue, since gitosis is implemented in Python (and the guy referenced above also uses Python.)
Updated by Pavel Shved over 13 years ago
Hm, that guy has debugged the problem, and explained it here.
I'll keep thinking how to work it around in our setup.
Updated by Pavel Shved over 13 years ago
A sample script to reproduce:
#!/bin/bash cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { yyless (input () != 0); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF trap "" SIGPIPE M4=dddd flex conftest.l ls -l lex.yy.c >/dev/null 2>/dev/null || echo "NO FLEX!" rm -f lex.yy.c
Updated by Pavel Shved over 13 years ago
We could fix gitosis, but it requires Python3, as the feature to avoid restoring signals was introduced there...
Updated by Pavel Shved over 13 years ago
No, we'll fix what is under our control.
Since Python traps the SIGPIPE signal for its internal purposes, I'll just fix the QA script to invoke compilation in the environment with the restored SIGPIPE handler.
Unfortunately, Bash can't do this. So I'll use Perl:
perl -e '$SIG{"PIPE"} = "DEFAULT"; exec("make");'
Hacks for the win!
Updated by Pavel Shved over 13 years ago
Re-invoked tests from inside python. Let's see if it works...
Updated by Pavel Shved over 13 years ago
- Status changed from Open to Resolved
Configuration from inside of Python script went well, but let's wait for a couple of commits successfully verified without manual interference before closing this.
Updated by Pavel Shved over 13 years ago
- Status changed from Resolved to Closed
It's been working for several days without any issues; I guess, we may close it now.
Please, do not forget to reset SIGPIPE when you are invoking GCC with GMP installation from within a Python script.