Skip to content

Commit

Permalink
app-doc/doxygen: fix version check for sys-devel/flex-2.6.0
Browse files Browse the repository at this point in the history
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: doxygen/doxygen#413

Gentoo-Bug: 567018

Package-Manager: portage-2.2.26
  • Loading branch information
tamiko committed Dec 10, 2015
1 parent 31eafb6 commit 01e26b0
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 1 deletion.
2 changes: 1 addition & 1 deletion app-doc/doxygen/doxygen-1.8.10-r1.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
96 changes: 96 additions & 0 deletions app-doc/doxygen/files/doxygen-1.8.10-fix_flex_check.patch
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 01e26b0

Please sign in to comment.