This patch fixes the ugly race condition created through build_opt_tbl

running twice at the same time, overwriting its output files. This caused
a depending rule to produce an object file with no symbols in it.

This should silence up the regularly happening build failure messages on
the mailing list since we moved to the newer, much faster server.

Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de>
Acked-by: Peter Stuge <peter@stuge.se>


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3777 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Stefan Reinauer 2008-11-28 11:56:27 +00:00 committed by Patrick Georgi
parent d95e43cc8f
commit 38bee3c8b6
2 changed files with 7 additions and 14 deletions

View file

@ -179,21 +179,16 @@ makerule build_opt_tbl
action "$(HOSTCC) $(HOSTCFLAGS) $(CPUFLAGS) $< -o $@" action "$(HOSTCC) $(HOSTCFLAGS) $(CPUFLAGS) $< -o $@"
end end
makerule option_table.c makerule option_table.h option_table.c
depends "build_opt_tbl $(MAINBOARD)/cmos.layout" depends "build_opt_tbl $(MAINBOARD)/cmos.layout"
action "./build_opt_tbl -b --config $(MAINBOARD)/cmos.layout --header option_table.h" action "./build_opt_tbl -b --config $(MAINBOARD)/cmos.layout --header option_table.h --option option_table.c"
end
makerule option_table.h
depends "build_opt_tbl $(MAINBOARD)/cmos.layout"
action "./build_opt_tbl -b --config $(MAINBOARD)/cmos.layout --header option_table.h"
end end
if HAVE_OPTION_TABLE if HAVE_OPTION_TABLE
object ./option_table.o object ./option_table.o
end end
makerule clean makerule clean
action "rm -f coreboot.* *~" action "rm -f coreboot.* *~"
action "rm -f coreboot" action "rm -f coreboot"
action "rm -f ldscript.ld" action "rm -f ldscript.ld"

View file

@ -1607,6 +1607,7 @@ parser Config:
token PATH: r'[-a-zA-Z0-9_.][-a-zA-Z0-9/_.]+[-a-zA-Z0-9_.]+' token PATH: r'[-a-zA-Z0-9_.][-a-zA-Z0-9/_.]+[-a-zA-Z0-9_.]+'
# Dir's on the other hand are abitrary # Dir's on the other hand are abitrary
# this may all be stupid. # this may all be stupid.
token RULE: r'[-a-zA-Z0-9_$()./]+[-a-zA-Z0-9_ $()./]+[-a-zA-Z0-9_$()./]+'
token DIRPATH: r'[-a-zA-Z0-9_$()./]+' token DIRPATH: r'[-a-zA-Z0-9_$()./]+'
token ID: r'[a-zA-Z_.]+[a-zA-Z0-9_.]*' token ID: r'[a-zA-Z_.]+[a-zA-Z0-9_.]*'
token DELEXPR: r'{([^}]+|\\.)*}' token DELEXPR: r'{([^}]+|\\.)*}'
@ -1703,13 +1704,10 @@ parser Config:
[ ELSE (stmt<<C and not c>>)* ] [ ELSE (stmt<<C and not c>>)* ]
END END
rule depsacts<<ID, C>>: rule makerule<<C>>: MAKERULE RULE {{ if (C): addrule(RULE) }}
( DEPENDS STR {{ if (C): adddep(ID, STR) }} ( DEPENDS STR {{ if (C): adddep(RULE, STR) }}
| ACTION STR {{ if (C): addaction(ID, STR) }} | ACTION STR {{ if (C): addaction(RULE, STR) }}
)* )*
rule makerule<<C>>: MAKERULE DIRPATH {{ if (C): addrule(DIRPATH) }}
depsacts<<DIRPATH, C>>
END END
rule makedefine<<C>>: rule makedefine<<C>>: