commit:     01e26b007b888ff0b0931f41531319de2a8fbb8f
Author:     Matthias Maier <tamiko <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 10 23:25:08 2015 +0000
Commit:     Matthias Maier <tamiko <AT> gentoo <DOT> org>
CommitDate: Thu Dec 10 23:47:18 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=01e26b00

app-doc/doxygen: fix version check for sys-devel/flex-2.6.0

Apply a patch to fix doxygen's build system to successfully detect
flex-2.6.0 as sufficiently modern version. The build system accidentally
only compared the minor version number...

Upstream: https://github.com/doxygen/doxygen/pull/413

Gentoo-Bug: 567018

Package-Manager: portage-2.2.26

 app-doc/doxygen/doxygen-1.8.10-r1.ebuild           |  2 +-
 .../files/doxygen-1.8.10-fix_flex_check.patch      | 96 ++++++++++++++++++++++
 2 files changed, 97 insertions(+), 1 deletion(-)

diff --git a/app-doc/doxygen/doxygen-1.8.10-r1.ebuild 
b/app-doc/doxygen/doxygen-1.8.10-r1.ebuild
index 4682421..54a13b3 100644
--- a/app-doc/doxygen/doxygen-1.8.10-r1.ebuild
+++ b/app-doc/doxygen/doxygen-1.8.10-r1.ebuild
@@ -101,8 +101,8 @@ src_prepare() {
        # Call dot with -Teps instead of -Tps for EPS generation - bug #282150
        sed -i -e '/addJob("ps"/ s/"ps"/"eps"/g' src/dot.cpp || die
 
-       # prefix search tools patch, plus OSX fixes
        epatch "${FILESDIR}"/${PN}-1.8.9.1-empty-line-sigsegv.patch #454348
+       epatch "${FILESDIR}"/${P}-fix_flex_check.patch #567018
 
        epatch "${FILESDIR}"/${P}-link_with_pthread.patch
 

diff --git a/app-doc/doxygen/files/doxygen-1.8.10-fix_flex_check.patch 
b/app-doc/doxygen/files/doxygen-1.8.10-fix_flex_check.patch
new file mode 100644
index 0000000..24a3b64
--- /dev/null
+++ b/app-doc/doxygen/files/doxygen-1.8.10-fix_flex_check.patch
@@ -0,0 +1,96 @@
+From 5fcb13572417a3b4a05217e9023c683864f35643 Mon Sep 17 00:00:00 2001
+From: Heiko Becker <[email protected]>
+Date: Thu, 19 Nov 2015 12:00:54 +0100
+Subject: [PATCH] Support flex-2.6.0
+
+The version checks only considered YY_FLEX_SUBMINOR_VERSION and did not
+take YY_FLEX_MINOR_VERSION into account, which made them fail with
+flex-2.6.0.
+
+diff --git a/src/code.l b/src/code.l
+index 3323580..25719af 100644
+--- a/src/code.l
++++ b/src/code.l
+@@ -3700,7 +3700,7 @@ void codeFreeScanner()
+ extern "C" { // some bogus code to keep the compiler happy
+   void codeYYdummy() { yy_flex_realloc(0,0); } 
+ }
+-#elif YY_FLEX_SUBMINOR_VERSION<33
++#elif YY_FLEX_MINOR_VERSION<6 && YY_FLEX_SUBMINOR_VERSION<33
+ #error "You seem to be using a version of flex newer than 2.5.4 but older 
than 2.5.33. These versions do NOT work with doxygen! Please use version 
<=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!"
+ #endif
+ 
+diff --git a/src/commentscan.l b/src/commentscan.l
+index cf892a0..2629857 100644
+--- a/src/commentscan.l
++++ b/src/commentscan.l
+@@ -1128,7 +1128,7 @@ RCSTAG    "$"{ID}":"[^\n$]+"$"
+                                             // but we need to know the 
position in the input buffer where this 
+                                             // rule matched.
+                                             // for flex 2.5.33+ we should use 
YY_CURRENT_BUFFER_LVALUE
+-#if YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33
++#if YY_FLEX_MINOR_VERSION>5 || YY_FLEX_MINOR_VERSION>=5 && 
YY_FLEX_SUBMINOR_VERSION>=33
+                                             inputPosition=prevPosition + 
(int)(yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);
+ #else
+                                             inputPosition=prevPosition + 
(int)(yy_bp - yy_current_buffer->yy_ch_buf);
+@@ -1190,7 +1190,7 @@ RCSTAG    "$"{ID}":"[^\n$]+"$"
+                                           g_memberGroupHeader.resize(0);
+                                         parseMore=TRUE;
+                                           needNewEntry = TRUE;
+-#if YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33
++#if YY_FLEX_MINOR_VERSION>5 || YY_FLEX_MINOR_VERSION>=5 && 
YY_FLEX_SUBMINOR_VERSION>=33
+                                         inputPosition=prevPosition + 
(int)(yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf) + strlen(yytext);
+ #else
+                                         inputPosition=prevPosition + 
(int)(yy_bp - yy_current_buffer->yy_ch_buf) + strlen(yytext);
+diff --git a/src/fortrancode.l b/src/fortrancode.l
+index fb91a83..352912b 100644
+--- a/src/fortrancode.l
++++ b/src/fortrancode.l
+@@ -1306,7 +1306,7 @@ void parseFortranCode(CodeOutputInterface &od,const char 
*className,const QCStri
+ extern "C" { // some bogus code to keep the compiler happy
+   void fortrancodeYYdummy() { yy_flex_realloc(0,0); } 
+ }
+-#elif YY_FLEX_SUBMINOR_VERSION<33
++#elif YY_FLEX_MINOR_VERSION<6 && YY_FLEX_SUBMINOR_VERSION<33
+ #error "You seem to be using a version of flex newer than 2.5.4 but older 
than 2.5.33. These versions do NOT work with doxygen! Please use version 
<=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!"
+ #else
+ extern "C" { // some bogus code to keep the compiler happy
+diff --git a/src/pycode.l b/src/pycode.l
+index 3c41a69..f58f7c1 100644
+--- a/src/pycode.l
++++ b/src/pycode.l
+@@ -1503,7 +1503,7 @@ void parsePythonCode(CodeOutputInterface &od,const char 
* /*className*/,
+ extern "C" { // some bogus code to keep the compiler happy
+   void pycodeYYdummy() { yy_flex_realloc(0,0); } 
+ }
+-#elif YY_FLEX_SUBMINOR_VERSION<33
++#elif YY_FLEX_MINOR_VERSION<6 && YY_FLEX_SUBMINOR_VERSION<33
+ #error "You seem to be using a version of flex newer than 2.5.4. These are 
currently incompatible with 2.5.4, and do NOT work with doxygen! Please use 
version 2.5.4 or expect things to be parsed wrongly! A bug report has been 
submitted (#732132)."
+ #endif
+ 
+diff --git a/src/vhdlcode.l b/src/vhdlcode.l
+index 369ae48..6957048 100644
+--- a/src/vhdlcode.l
++++ b/src/vhdlcode.l
+@@ -1613,7 +1613,7 @@ void codeFreeVhdlScanner()
+ extern "C" { // some bogus code to keep the compiler happy
+   void vhdlcodeYYdummy() { yy_flex_realloc(0,0); } 
+ }
+-#elif YY_FLEX_SUBMINOR_VERSION<33
++#elif YY_FLEX_MINOR_VERSION<6 && YY_FLEX_SUBMINOR_VERSION<33
+ #error "You seem to be using a version of flex newer than 2.5.4 but older 
than 2.5.33. These versions do NOT work with doxygen! Please use version 
<=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!"
+ #endif
+ 
+diff --git a/src/xmlcode.l b/src/xmlcode.l
+index 15b5d7e..2bef4a0 100644
+--- a/src/xmlcode.l
++++ b/src/xmlcode.l
+@@ -407,7 +407,7 @@ void resetXmlCodeParserState()
+ extern "C" { // some bogus code to keep the compiler happy
+   void xmlcodeYYdummy() { yy_flex_realloc(0,0); } 
+ }
+-#elif YY_FLEX_SUBMINOR_VERSION<33
++#elif YY_FLEX_MINOR_VERSION<6 && YY_FLEX_SUBMINOR_VERSION<33
+ #error "You seem to be using a version of flex newer than 2.5.4. These are 
currently incompatible with 2.5.4, and do NOT work with doxygen! Please use 
version 2.5.4 or expect things to be parsed wrongly! A bug report has been 
submitted (#732132)."
+ #endif
+ 

Reply via email to