From d11bb6da1c909d4961d6337479ca7fc0cd15ca64 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 Dec 2012 07:29:42 +0000 Subject: [PATCH] webkit: fix build with bison 2.6 WebKit 1.2.7 does not build with Bison 2.6, but Bison 2.6 is our host-bison, so if the build machine has bison 2.6, or if by chance it gets built before webkit, then the build fails with errors such as: http://autobuild.buildroot.org/results/0b7cfbebd4388cabfa243b5ef74e3b6316fd9fd9/build-end.log (the real error is not visible due to the overwhelming number of warnings). So, we add a patch that modifies WebKit to make it compatible with Bison 2.6 (patch taken from upstream), and we also add 'host-bison' to the WebKit dependencies, so that we are sure that a well-known version of bison is used. Signed-off-by: Thomas Petazzoni Signed-off-by: Peter Korsgaard --- package/webkit/webkit-bison-2-6-compat.patch | 672 +++++++++++++++++++ package/webkit/webkit.mk | 4 +- 2 files changed, 674 insertions(+), 2 deletions(-) create mode 100644 package/webkit/webkit-bison-2-6-compat.patch diff --git a/package/webkit/webkit-bison-2-6-compat.patch b/package/webkit/webkit-bison-2-6-compat.patch new file mode 100644 index 0000000000..7a94164fe6 --- /dev/null +++ b/package/webkit/webkit-bison-2-6-compat.patch @@ -0,0 +1,672 @@ +Bison 2.6 compatibility fix + +Taken from upstream at http://trac.webkit.org/changeset/124099, with +minor adaptations. + +Signed-off-by: Thomas Petazzoni + +Index: webkit-1.2.7/WebCore/ChangeLog +=================================================================== +--- webkit-1.2.7.orig/WebCore/ChangeLog 2010-12-28 13:27:37.000000000 +0100 ++++ webkit-1.2.7/WebCore/ChangeLog 2012-12-15 15:48:40.000000000 +0100 +@@ -1,3 +1,28 @@ ++2012-07-30 Alexis Menard ++ ++ Build fix with newer bison 2.6. ++ https://bugs.webkit.org/show_bug.cgi?id=92264 ++ ++ Reviewed by Adam Barth. ++ ++ As stated in http://www.gnu.org/software/bison/manual/html_node/Table-of-Symbols.html ++ YYLEX_PARAM and YYPARSE_PARAM are depecreated since version 1.875. So far all Mac OS ++ version I had access to as well as recent Linux runs at least version 2.3 so it's safe ++ to use the replacement of these deprecated macros in favor of %lex-param and %parse-param. ++ As announced http://lists.gnu.org/archive/html/info-gnu/2012-07/msg00011.html with the release ++ of version 2.6 YYLEX_PARAM and YYPARSE_PARAM are not supported anymore. ++ ++ No new tests : build fix and the patch should not trigger any regressions ++ ++ * css/CSSGrammar.y: ++ * css/CSSParser.cpp: ++ * xml/XPathGrammar.y: Refactored a bit to not use an intermediate PARSER define. ++ * xml/XPathParser.cpp: bison 2.6 declare xpathyyparse in the .h file now, i.e. XPathGrammar.h ++ therefore including this file within the namespace {} declarations leads to xpathyyparse being ++ defined part of WebCore::XPath namespaces but the actual implementation of xpathyyparse is in XPathGrammar.cpp ++ (generated) and not implemented within the WebCore::XPath so it lead to linking issues. Last, XPathGrammar.h needs ++ to be included after the other includes as it uses some XPath types. It breaks the style but CSSParser.cpp is doing the same. ++ + 2010-06-21 Philippe Normand + + Reviewed by Xan Lopez. +Index: webkit-1.2.7/WebCore/css/CSSParser.cpp +=================================================================== +--- webkit-1.2.7.orig/WebCore/css/CSSParser.cpp 2010-12-28 13:24:33.000000000 +0100 ++++ webkit-1.2.7/WebCore/css/CSSParser.cpp 2012-12-15 17:29:57.000000000 +0100 +@@ -81,7 +81,7 @@ + extern int cssyydebug; + #endif + +-extern int cssyyparse(void* parser); ++extern int cssyyparse(WebCore::CSSParser*); + + using namespace std; + using namespace WTF; +@@ -226,7 +226,7 @@ + m_defaultNamespace = starAtom; // Reset the default namespace. + + setupParser("", string, ""); +- cssyyparse(this); ++ ::cssyyparse(this); + m_rule = 0; + } + +@@ -235,7 +235,7 @@ + m_styleSheet = sheet; + m_allowNamespaceDeclarations = false; + setupParser("@-webkit-rule{", string, "} "); +- cssyyparse(this); ++ ::cssyyparse(this); + return m_rule.release(); + } + +@@ -243,7 +243,7 @@ + { + m_styleSheet = sheet; + setupParser("@-webkit-keyframe-rule{ ", string, "} "); +- cssyyparse(this); ++ ::cssyyparse(this); + return m_keyframe.release(); + } + +@@ -257,7 +257,7 @@ + m_id = id; + m_important = important; + +- cssyyparse(this); ++ ::cssyyparse(this); + + m_rule = 0; + +@@ -304,7 +304,7 @@ + m_styleSheet = static_cast(declaration->stylesheet()); + + setupParser("@-webkit-decls{color:", string, "} "); +- cssyyparse(this); ++ ::cssyyparse(this); + m_rule = 0; + + return (m_numParsedProperties && m_parsedProperties[0]->m_id == CSSPropertyColor); +@@ -319,7 +319,7 @@ + + setupParser("@-webkit-selector{", string, "}"); + +- cssyyparse(this); ++ ::cssyyparse(this); + + m_selectorListForParseSelector = 0; + } +@@ -330,7 +330,7 @@ + m_styleSheet = static_cast(declaration->stylesheet()); + + setupParser("@-webkit-decls{", string, "} "); +- cssyyparse(this); ++ ::cssyyparse(this); + m_rule = 0; + + bool ok = false; +@@ -354,7 +354,7 @@ + // can't use { because tokenizer state switches from mediaquery to initial state when it sees { token. + // instead insert one " " (which is WHITESPACE in CSSGrammar.y) + setupParser("@-webkit-mediaquery ", string, "} "); +- cssyyparse(this); ++ ::cssyyparse(this); + + bool ok = false; + if (m_mediaQuery) { +@@ -5191,7 +5191,7 @@ + nameValuePair += variableValue; + + setupParser("@-webkit-variables-decls{", nameValuePair, "} "); +- cssyyparse(this); ++ ::cssyyparse(this); + m_rule = 0; + + bool ok = false; +Index: webkit-1.2.7/WebCore/css/CSSGrammar.y +=================================================================== +--- webkit-1.2.7.orig/WebCore/css/CSSGrammar.y 2010-09-10 15:20:33.000000000 +0200 ++++ webkit-1.2.7/WebCore/css/CSSGrammar.y 2012-12-15 15:48:40.000000000 +0100 +@@ -51,14 +51,13 @@ + #define YYMAXDEPTH 10000 + #define YYDEBUG 0 + +-// FIXME: Replace with %parse-param { CSSParser* parser } once we can depend on bison 2.x +-#define YYPARSE_PARAM parser +-#define YYLEX_PARAM parser +- + %} + + %pure_parser + ++%parse-param { CSSParser* parser } ++%lex-param { CSSParser* parser } ++ + %union { + bool boolean; + char character; +@@ -85,7 +84,7 @@ + + %{ + +-static inline int cssyyerror(const char*) ++static inline int cssyyerror(void*, const char*) + { + return 1; + } +Index: webkit-1.2.7/WebCore/xml/XPathParser.cpp +=================================================================== +--- webkit-1.2.7.orig/WebCore/xml/XPathParser.cpp 2010-09-10 15:20:33.000000000 +0200 ++++ webkit-1.2.7/WebCore/xml/XPathParser.cpp 2012-12-15 15:56:37.000000000 +0100 +@@ -35,20 +35,18 @@ + #include "XPathEvaluator.h" + #include "XPathException.h" + #include "XPathNSResolver.h" ++#include "XPathPath.h" + #include "XPathStep.h" + #include + +-int xpathyyparse(void*); +- ++using namespace WebCore; + using namespace WTF; + using namespace Unicode; + +-namespace WebCore { +-namespace XPath { +- +-class LocationPath; ++using namespace XPath; + +-#include "XPathGrammar.h" ++extern int xpathyyparse(WebCore::XPath::Parser*); ++#include "XPathGrammar.h" + + Parser* Parser::currentParser = 0; + +@@ -630,7 +628,5 @@ + delete t; + } + +-} +-} + + #endif // ENABLE(XPATH) +Index: webkit-1.2.7/WebCore/xml/XPathGrammar.y +=================================================================== +--- webkit-1.2.7.orig/WebCore/xml/XPathGrammar.y 2010-02-05 17:26:58.000000000 +0100 ++++ webkit-1.2.7/WebCore/xml/XPathGrammar.y 2012-12-15 15:48:40.000000000 +0100 +@@ -36,6 +36,7 @@ + #include "XPathParser.h" + #include "XPathPath.h" + #include "XPathPredicate.h" ++#include "XPathStep.h" + #include "XPathVariableReference.h" + #include + +@@ -46,8 +47,6 @@ + #define YYLTYPE_IS_TRIVIAL 1 + #define YYDEBUG 0 + #define YYMAXDEPTH 10000 +-#define YYPARSE_PARAM parserParameter +-#define PARSER static_cast(parserParameter) + + using namespace WebCore; + using namespace XPath; +@@ -55,6 +54,7 @@ + %} + + %pure_parser ++%parse-param { WebCore::XPath::Parser* parser } + + %union + { +@@ -73,7 +73,7 @@ + %{ + + static int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); } +-static void xpathyyerror(const char*) { } ++static void xpathyyerror(void*, const char*) { } + + %} + +@@ -120,7 +120,7 @@ + Expr: + OrExpr + { +- PARSER->m_topExpr = $1; ++ parser->m_topExpr = $1; + } + ; + +@@ -140,7 +140,7 @@ + '/' + { + $$ = new LocationPath; +- PARSER->registerParseNode($$); ++ parser->registerParseNode($$); + } + | + '/' RelativeLocationPath +@@ -152,7 +152,7 @@ + { + $$ = $2; + $$->insertFirstStep($1); +- PARSER->unregisterParseNode($1); ++ parser->unregisterParseNode($1); + } + ; + +@@ -161,22 +161,22 @@ + { + $$ = new LocationPath; + $$->appendStep($1); +- PARSER->unregisterParseNode($1); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->registerParseNode($$); + } + | + RelativeLocationPath '/' Step + { + $$->appendStep($3); +- PARSER->unregisterParseNode($3); ++ parser->unregisterParseNode($3); + } + | + RelativeLocationPath DescendantOrSelf Step + { + $$->appendStep($2); + $$->appendStep($3); +- PARSER->unregisterParseNode($2); +- PARSER->unregisterParseNode($3); ++ parser->unregisterParseNode($2); ++ parser->unregisterParseNode($3); + } + ; + +@@ -185,58 +185,58 @@ + { + if ($2) { + $$ = new Step(Step::ChildAxis, *$1, *$2); +- PARSER->deletePredicateVector($2); ++ parser->deletePredicateVector($2); + } else + $$ = new Step(Step::ChildAxis, *$1); +- PARSER->deleteNodeTest($1); +- PARSER->registerParseNode($$); ++ parser->deleteNodeTest($1); ++ parser->registerParseNode($$); + } + | + NAMETEST OptionalPredicateList + { + String localName; + String namespaceURI; +- if (!PARSER->expandQName(*$1, localName, namespaceURI)) { +- PARSER->m_gotNamespaceError = true; ++ if (!parser->expandQName(*$1, localName, namespaceURI)) { ++ parser->m_gotNamespaceError = true; + YYABORT; + } + + if ($2) { + $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$2); +- PARSER->deletePredicateVector($2); ++ parser->deletePredicateVector($2); + } else + $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI)); +- PARSER->deleteString($1); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->registerParseNode($$); + } + | + AxisSpecifier NodeTest OptionalPredicateList + { + if ($3) { + $$ = new Step($1, *$2, *$3); +- PARSER->deletePredicateVector($3); ++ parser->deletePredicateVector($3); + } else + $$ = new Step($1, *$2); +- PARSER->deleteNodeTest($2); +- PARSER->registerParseNode($$); ++ parser->deleteNodeTest($2); ++ parser->registerParseNode($$); + } + | + AxisSpecifier NAMETEST OptionalPredicateList + { + String localName; + String namespaceURI; +- if (!PARSER->expandQName(*$2, localName, namespaceURI)) { +- PARSER->m_gotNamespaceError = true; ++ if (!parser->expandQName(*$2, localName, namespaceURI)) { ++ parser->m_gotNamespaceError = true; + YYABORT; + } + + if ($3) { + $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$3); +- PARSER->deletePredicateVector($3); ++ parser->deletePredicateVector($3); + } else + $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI)); +- PARSER->deleteString($2); +- PARSER->registerParseNode($$); ++ parser->deleteString($2); ++ parser->registerParseNode($$); + } + | + AbbreviatedStep +@@ -261,23 +261,23 @@ + else if (*$1 == "comment") + $$ = new Step::NodeTest(Step::NodeTest::CommentNodeTest); + +- PARSER->deleteString($1); +- PARSER->registerNodeTest($$); ++ parser->deleteString($1); ++ parser->registerNodeTest($$); + } + | + PI '(' ')' + { + $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest); +- PARSER->deleteString($1); +- PARSER->registerNodeTest($$); ++ parser->deleteString($1); ++ parser->registerNodeTest($$); + } + | + PI '(' LITERAL ')' + { + $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest, $3->stripWhiteSpace()); +- PARSER->deleteString($1); +- PARSER->deleteString($3); +- PARSER->registerNodeTest($$); ++ parser->deleteString($1); ++ parser->deleteString($3); ++ parser->registerNodeTest($$); + } + ; + +@@ -295,14 +295,14 @@ + { + $$ = new Vector; + $$->append(new Predicate($1)); +- PARSER->unregisterParseNode($1); +- PARSER->registerPredicateVector($$); ++ parser->unregisterParseNode($1); ++ parser->registerPredicateVector($$); + } + | + PredicateList Predicate + { + $$->append(new Predicate($2)); +- PARSER->unregisterParseNode($2); ++ parser->unregisterParseNode($2); + } + ; + +@@ -317,7 +317,7 @@ + SLASHSLASH + { + $$ = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); +- PARSER->registerParseNode($$); ++ parser->registerParseNode($$); + } + ; + +@@ -325,13 +325,13 @@ + '.' + { + $$ = new Step(Step::SelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); +- PARSER->registerParseNode($$); ++ parser->registerParseNode($$); + } + | + DOTDOT + { + $$ = new Step(Step::ParentAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); +- PARSER->registerParseNode($$); ++ parser->registerParseNode($$); + } + ; + +@@ -339,8 +339,8 @@ + VARIABLEREFERENCE + { + $$ = new VariableReference(*$1); +- PARSER->deleteString($1); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->registerParseNode($$); + } + | + '(' Expr ')' +@@ -351,15 +351,15 @@ + LITERAL + { + $$ = new StringExpression(*$1); +- PARSER->deleteString($1); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->registerParseNode($$); + } + | + NUMBER + { + $$ = new Number($1->toDouble()); +- PARSER->deleteString($1); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->registerParseNode($$); + } + | + FunctionCall +@@ -371,8 +371,8 @@ + $$ = createFunction(*$1); + if (!$$) + YYABORT; +- PARSER->deleteString($1); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->registerParseNode($$); + } + | + FUNCTIONNAME '(' ArgumentList ')' +@@ -380,9 +380,9 @@ + $$ = createFunction(*$1, *$3); + if (!$$) + YYABORT; +- PARSER->deleteString($1); +- PARSER->deleteExpressionVector($3); +- PARSER->registerParseNode($$); ++ parser->deleteString($1); ++ parser->deleteExpressionVector($3); ++ parser->registerParseNode($$); + } + ; + +@@ -391,14 +391,14 @@ + { + $$ = new Vector; + $$->append($1); +- PARSER->unregisterParseNode($1); +- PARSER->registerExpressionVector($$); ++ parser->unregisterParseNode($1); ++ parser->registerExpressionVector($$); + } + | + ArgumentList ',' Argument + { + $$->append($3); +- PARSER->unregisterParseNode($3); ++ parser->unregisterParseNode($3); + } + ; + +@@ -414,9 +414,9 @@ + $$ = new Union; + $$->addSubExpression($1); + $$->addSubExpression($3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; + +@@ -432,9 +432,9 @@ + { + $3->setAbsolute(true); + $$ = new Path(static_cast($1), $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + | + FilterExpr DescendantOrSelf RelativeLocationPath +@@ -442,10 +442,10 @@ + $3->insertFirstStep($2); + $3->setAbsolute(true); + $$ = new Path(static_cast($1), $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($2); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($2); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; + +@@ -455,9 +455,9 @@ + PrimaryExpr PredicateList + { + $$ = new Filter($1, *$2); +- PARSER->unregisterParseNode($1); +- PARSER->deletePredicateVector($2); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->deletePredicateVector($2); ++ parser->registerParseNode($$); + } + ; + +@@ -467,9 +467,9 @@ + OrExpr OR AndExpr + { + $$ = new LogicalOp(LogicalOp::OP_Or, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; + +@@ -479,9 +479,9 @@ + AndExpr AND EqualityExpr + { + $$ = new LogicalOp(LogicalOp::OP_And, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; + +@@ -491,9 +491,9 @@ + EqualityExpr EQOP RelationalExpr + { + $$ = new EqTestOp($2, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; + +@@ -503,9 +503,9 @@ + RelationalExpr RELOP AdditiveExpr + { + $$ = new EqTestOp($2, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; + +@@ -515,17 +515,17 @@ + AdditiveExpr PLUS MultiplicativeExpr + { + $$ = new NumericOp(NumericOp::OP_Add, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + | + AdditiveExpr MINUS MultiplicativeExpr + { + $$ = new NumericOp(NumericOp::OP_Sub, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; + +@@ -535,9 +535,9 @@ + MultiplicativeExpr MULOP UnaryExpr + { + $$ = new NumericOp($2, $1, $3); +- PARSER->unregisterParseNode($1); +- PARSER->unregisterParseNode($3); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($1); ++ parser->unregisterParseNode($3); ++ parser->registerParseNode($$); + } + ; + +@@ -548,8 +548,8 @@ + { + $$ = new Negative; + $$->addSubExpression($2); +- PARSER->unregisterParseNode($2); +- PARSER->registerParseNode($$); ++ parser->unregisterParseNode($2); ++ parser->registerParseNode($$); + } + ; + diff --git a/package/webkit/webkit.mk b/package/webkit/webkit.mk index 326be146dc..a9701e43e7 100644 --- a/package/webkit/webkit.mk +++ b/package/webkit/webkit.mk @@ -7,8 +7,8 @@ WEBKIT_VERSION = 1.2.7 WEBKIT_SITE = http://www.webkitgtk.org WEBKIT_INSTALL_STAGING = YES -WEBKIT_DEPENDENCIES = host-flex host-gperf icu libcurl libxml2 libxslt \ - libgtk2 sqlite enchant libsoup jpeg libgail +WEBKIT_DEPENDENCIES = host-flex host-bison host-gperf icu libcurl libxml2 \ + libxslt libgtk2 sqlite enchant libsoup jpeg libgail # Give explicit path to icu-config, and silence gazillions of warnings # with recent gcc versions. -- 2.30.2