[webkitgtk] Backport a build fix with bison 2.6
Kalev Lember
kalev at fedoraproject.org
Mon Aug 6 19:32:26 UTC 2012
commit f739c4ec7705b8bacc3ea7e08b969d6c3d55daaf
Author: Kalev Lember <kalevlember at gmail.com>
Date: Mon Aug 6 22:27:18 2012 +0300
Backport a build fix with bison 2.6
0001-Build-fix-with-newer-bison-2.6.patch | 593 +++++++++++++++++++++++++++++
webkitgtk.spec | 8 +-
2 files changed, 600 insertions(+), 1 deletions(-)
---
diff --git a/0001-Build-fix-with-newer-bison-2.6.patch b/0001-Build-fix-with-newer-bison-2.6.patch
new file mode 100644
index 0000000..d5b2ea2
--- /dev/null
+++ b/0001-Build-fix-with-newer-bison-2.6.patch
@@ -0,0 +1,593 @@
+From a08c55d5ff7180c44fce68f3fc9fac299f8786f3 Mon Sep 17 00:00:00 2001
+From: "alexis.menard at openbossa.org"
+ <alexis.menard at openbossa.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
+Date: Mon, 30 Jul 2012 22:18:20 +0000
+Subject: [PATCH] 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.
+
+
+git-svn-id: http://svn.webkit.org/repository/webkit/trunk@124099 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+---
+ Source/WebCore/css/CSSGrammar.y | 9 +-
+ Source/WebCore/css/CSSParser.cpp | 2 +-
+ Source/WebCore/xml/XPathGrammar.y | 180 ++++++++++++++++++-------------------
+ Source/WebCore/xml/XPathParser.cpp | 17 ++--
+ 5 files changed, 126 insertions(+), 107 deletions(-)
+
+diff --git a/Source/WebCore/css/CSSGrammar.y b/Source/WebCore/css/CSSGrammar.y
+index c7c10b5..1c604e7 100644
+--- a/Source/WebCore/css/CSSGrammar.y
++++ b/Source/WebCore/css/CSSGrammar.y
+@@ -53,14 +53,13 @@ using namespace HTMLNames;
+ #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;
+@@ -89,7 +88,7 @@ using namespace HTMLNames;
+
+ %{
+
+-static inline int cssyyerror(const char*)
++static inline int cssyyerror(void*, const char*)
+ {
+ return 1;
+ }
+diff --git a/Source/WebCore/css/CSSParser.cpp b/Source/WebCore/css/CSSParser.cpp
+index c3ff2ab..584506e 100644
+--- a/Source/WebCore/css/CSSParser.cpp
++++ b/Source/WebCore/css/CSSParser.cpp
+@@ -114,7 +114,7 @@
+ extern int cssyydebug;
+ #endif
+
+-extern int cssyyparse(void* parser);
++extern int cssyyparse(WebCore::CSSParser*);
+
+ using namespace std;
+ using namespace WTF;
+diff --git a/Source/WebCore/xml/XPathGrammar.y b/Source/WebCore/xml/XPathGrammar.y
+index 2eba5b3..d558211 100644
+--- a/Source/WebCore/xml/XPathGrammar.y
++++ b/Source/WebCore/xml/XPathGrammar.y
+@@ -34,6 +34,7 @@
+ #include "XPathParser.h"
+ #include "XPathPath.h"
+ #include "XPathPredicate.h"
++#include "XPathStep.h"
+ #include "XPathVariableReference.h"
+ #include <wtf/FastMalloc.h>
+
+@@ -44,8 +45,6 @@
+ #define YYLTYPE_IS_TRIVIAL 1
+ #define YYDEBUG 0
+ #define YYMAXDEPTH 10000
+-#define YYPARSE_PARAM parserParameter
+-#define PARSER static_cast<Parser*>(parserParameter)
+
+ using namespace WebCore;
+ using namespace XPath;
+@@ -53,6 +52,7 @@ using namespace XPath;
+ %}
+
+ %pure_parser
++%parse-param { WebCore::XPath::Parser* parser }
+
+ %union
+ {
+@@ -71,7 +71,7 @@ using namespace XPath;
+ %{
+
+ static int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); }
+-static void xpathyyerror(const char*) { }
++static void xpathyyerror(void*, const char*) { }
+
+ %}
+
+@@ -118,7 +118,7 @@ static void xpathyyerror(const char*) { }
+ Expr:
+ OrExpr
+ {
+- PARSER->m_topExpr = $1;
++ parser->m_topExpr = $1;
+ }
+ ;
+
+@@ -138,7 +138,7 @@ AbsoluteLocationPath:
+ '/'
+ {
+ $$ = new LocationPath;
+- PARSER->registerParseNode($$);
++ parser->registerParseNode($$);
+ }
+ |
+ '/' RelativeLocationPath
+@@ -150,7 +150,7 @@ AbsoluteLocationPath:
+ {
+ $$ = $2;
+ $$->insertFirstStep($1);
+- PARSER->unregisterParseNode($1);
++ parser->unregisterParseNode($1);
+ }
+ ;
+
+@@ -159,22 +159,22 @@ RelativeLocationPath:
+ {
+ $$ = 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);
+ }
+ ;
+
+@@ -183,58 +183,58 @@ Step:
+ {
+ 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
+@@ -259,23 +259,23 @@ NodeTest:
+ 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($$);
+ }
+ ;
+
+@@ -293,14 +293,14 @@ PredicateList:
+ {
+ $$ = new Vector<Predicate*>;
+ $$->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);
+ }
+ ;
+
+@@ -315,7 +315,7 @@ DescendantOrSelf:
+ SLASHSLASH
+ {
+ $$ = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest));
+- PARSER->registerParseNode($$);
++ parser->registerParseNode($$);
+ }
+ ;
+
+@@ -323,13 +323,13 @@ AbbreviatedStep:
+ '.'
+ {
+ $$ = 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($$);
+ }
+ ;
+
+@@ -337,8 +337,8 @@ PrimaryExpr:
+ VARIABLEREFERENCE
+ {
+ $$ = new VariableReference(*$1);
+- PARSER->deleteString($1);
+- PARSER->registerParseNode($$);
++ parser->deleteString($1);
++ parser->registerParseNode($$);
+ }
+ |
+ '(' Expr ')'
+@@ -349,15 +349,15 @@ PrimaryExpr:
+ 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
+@@ -369,8 +369,8 @@ FunctionCall:
+ $$ = createFunction(*$1);
+ if (!$$)
+ YYABORT;
+- PARSER->deleteString($1);
+- PARSER->registerParseNode($$);
++ parser->deleteString($1);
++ parser->registerParseNode($$);
+ }
+ |
+ FUNCTIONNAME '(' ArgumentList ')'
+@@ -378,9 +378,9 @@ FunctionCall:
+ $$ = createFunction(*$1, *$3);
+ if (!$$)
+ YYABORT;
+- PARSER->deleteString($1);
+- PARSER->deleteExpressionVector($3);
+- PARSER->registerParseNode($$);
++ parser->deleteString($1);
++ parser->deleteExpressionVector($3);
++ parser->registerParseNode($$);
+ }
+ ;
+
+@@ -389,14 +389,14 @@ ArgumentList:
+ {
+ $$ = new Vector<Expression*>;
+ $$->append($1);
+- PARSER->unregisterParseNode($1);
+- PARSER->registerExpressionVector($$);
++ parser->unregisterParseNode($1);
++ parser->registerExpressionVector($$);
+ }
+ |
+ ArgumentList ',' Argument
+ {
+ $$->append($3);
+- PARSER->unregisterParseNode($3);
++ parser->unregisterParseNode($3);
+ }
+ ;
+
+@@ -412,9 +412,9 @@ UnionExpr:
+ $$ = new Union;
+ $$->addSubExpression($1);
+ $$->addSubExpression($3);
+- PARSER->unregisterParseNode($1);
+- PARSER->unregisterParseNode($3);
+- PARSER->registerParseNode($$);
++ parser->unregisterParseNode($1);
++ parser->unregisterParseNode($3);
++ parser->registerParseNode($$);
+ }
+ ;
+
+@@ -430,9 +430,9 @@ PathExpr:
+ {
+ $3->setAbsolute(true);
+ $$ = new Path(static_cast<Filter*>($1), $3);
+- PARSER->unregisterParseNode($1);
+- PARSER->unregisterParseNode($3);
+- PARSER->registerParseNode($$);
++ parser->unregisterParseNode($1);
++ parser->unregisterParseNode($3);
++ parser->registerParseNode($$);
+ }
+ |
+ FilterExpr DescendantOrSelf RelativeLocationPath
+@@ -440,10 +440,10 @@ PathExpr:
+ $3->insertFirstStep($2);
+ $3->setAbsolute(true);
+ $$ = new Path(static_cast<Filter*>($1), $3);
+- PARSER->unregisterParseNode($1);
+- PARSER->unregisterParseNode($2);
+- PARSER->unregisterParseNode($3);
+- PARSER->registerParseNode($$);
++ parser->unregisterParseNode($1);
++ parser->unregisterParseNode($2);
++ parser->unregisterParseNode($3);
++ parser->registerParseNode($$);
+ }
+ ;
+
+@@ -453,9 +453,9 @@ FilterExpr:
+ PrimaryExpr PredicateList
+ {
+ $$ = new Filter($1, *$2);
+- PARSER->unregisterParseNode($1);
+- PARSER->deletePredicateVector($2);
+- PARSER->registerParseNode($$);
++ parser->unregisterParseNode($1);
++ parser->deletePredicateVector($2);
++ parser->registerParseNode($$);
+ }
+ ;
+
+@@ -465,9 +465,9 @@ OrExpr:
+ 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($$);
+ }
+ ;
+
+@@ -477,9 +477,9 @@ AndExpr:
+ 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($$);
+ }
+ ;
+
+@@ -489,9 +489,9 @@ EqualityExpr:
+ EqualityExpr EQOP RelationalExpr
+ {
+ $$ = new EqTestOp($2, $1, $3);
+- PARSER->unregisterParseNode($1);
+- PARSER->unregisterParseNode($3);
+- PARSER->registerParseNode($$);
++ parser->unregisterParseNode($1);
++ parser->unregisterParseNode($3);
++ parser->registerParseNode($$);
+ }
+ ;
+
+@@ -501,9 +501,9 @@ RelationalExpr:
+ RelationalExpr RELOP AdditiveExpr
+ {
+ $$ = new EqTestOp($2, $1, $3);
+- PARSER->unregisterParseNode($1);
+- PARSER->unregisterParseNode($3);
+- PARSER->registerParseNode($$);
++ parser->unregisterParseNode($1);
++ parser->unregisterParseNode($3);
++ parser->registerParseNode($$);
+ }
+ ;
+
+@@ -513,17 +513,17 @@ AdditiveExpr:
+ 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($$);
+ }
+ ;
+
+@@ -533,9 +533,9 @@ MultiplicativeExpr:
+ MultiplicativeExpr MULOP UnaryExpr
+ {
+ $$ = new NumericOp($2, $1, $3);
+- PARSER->unregisterParseNode($1);
+- PARSER->unregisterParseNode($3);
+- PARSER->registerParseNode($$);
++ parser->unregisterParseNode($1);
++ parser->unregisterParseNode($3);
++ parser->registerParseNode($$);
+ }
+ ;
+
+@@ -546,8 +546,8 @@ UnaryExpr:
+ {
+ $$ = new Negative;
+ $$->addSubExpression($2);
+- PARSER->unregisterParseNode($2);
+- PARSER->registerParseNode($$);
++ parser->unregisterParseNode($2);
++ parser->registerParseNode($$);
+ }
+ ;
+
+diff --git a/Source/WebCore/xml/XPathParser.cpp b/Source/WebCore/xml/XPathParser.cpp
+index 62d8ee3..b5e6a92 100644
+--- a/Source/WebCore/xml/XPathParser.cpp
++++ b/Source/WebCore/xml/XPathParser.cpp
+@@ -32,24 +32,21 @@
+ #include "XPathEvaluator.h"
+ #include "XPathException.h"
+ #include "XPathNSResolver.h"
++#include "XPathPath.h"
+ #include "XPathStep.h"
+ #include <wtf/StdLibExtras.h>
+ #include <wtf/text/StringHash.h>
+
+-int xpathyyparse(void*);
+-
++using namespace WebCore;
+ using namespace WTF;
+ using namespace Unicode;
++using namespace XPath;
+
+-namespace WebCore {
+-namespace XPath {
+-
+-class LocationPath;
+-
+-#include "XPathGrammar.h"
++extern int xpathyyparse(WebCore::XPath::Parser*);
++#include "XPathGrammar.h"
+
+ Parser* Parser::currentParser = 0;
+-
++
+ enum XMLCat { NameStart, NameCont, NotPartOfName };
+
+ typedef HashMap<String, Step::Axis> AxisNamesMap;
+@@ -630,5 +627,3 @@ void Parser::deleteNodeTest(Step::NodeTest* t)
+ delete t;
+ }
+
+-}
+-}
+--
+1.7.11.2
+
diff --git a/webkitgtk.spec b/webkitgtk.spec
index 3e1a34d..b2bde16 100644
--- a/webkitgtk.spec
+++ b/webkitgtk.spec
@@ -23,7 +23,7 @@
Name: webkitgtk
Version: 1.8.1
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: GTK+ Web content engine library
Provides: WebKit-gtk = %{version}-%{release}
@@ -35,6 +35,8 @@ URL: http://www.webkitgtk.org/
Source0: http://www.webkitgtk.org/releases/webkit-%{version}.tar.xz
+# Fix the build with bison 2.6
+Patch1: 0001-Build-fix-with-newer-bison-2.6.patch
# add support for nspluginwrapper.
Patch2: webkit-1.3.10-nspluginwrapper.patch
@@ -101,6 +103,7 @@ This package contains developer documentation for %{name}.
%prep
%setup -qn "webkit-%{version}"
+%patch1 -p1 -b .bison26
%patch2 -p1 -b .nspluginwrapper
%build
@@ -216,6 +219,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || :
%{_datadir}/gtk-doc/html/webkitgtk
%changelog
+* Mon Aug 06 2012 Kalev Lember <kalevlember at gmail.com> - 1.8.1-5
+- Backport a build fix with bison 2.6
+
* Sun Jul 22 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.8.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
More information about the scm-commits
mailing list