From 2f055ba6e3c503edf2edc58e72ff4ea6c4b208ac Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Aug 28 2020 19:08:13 +0000 Subject: Fix issue with enums being defined in multiple files This is a regression in 1.8.20 that causes python-wxpython4 to FTBFS. More information about the issue is available here: https://github.com/doxygen/doxygen/issues/7979 --- diff --git a/doxygen-1.8.20-enums-multiple-files.patch b/doxygen-1.8.20-enums-multiple-files.patch new file mode 100644 index 0000000..78cb44c --- /dev/null +++ b/doxygen-1.8.20-enums-multiple-files.patch @@ -0,0 +1,86 @@ +From 9d9d08582ccea7ef90000acebfd09f8c8acc577a Mon Sep 17 00:00:00 2001 +From: Dimitri van Heesch +Date: Fri, 28 Aug 2020 20:22:46 +0200 +Subject: [PATCH] issue #7979: C++ enums being defined in multiple files after + b265433 (multi-thread input processing) + +--- + src/scanner.l | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/src/scanner.l b/src/scanner.l +index 7c710fa4..70f15d65 100644 +--- a/src/scanner.l ++++ b/src/scanner.l +@@ -60,6 +60,9 @@ + + #define USE_STATE2STRING 0 + ++static AtomicInt anonCount; ++static AtomicInt anonNSCount; ++ + struct scannerYY_state + { + OutlineParserInterface *thisParser; +@@ -105,8 +108,6 @@ struct scannerYY_state + int yyBegLineNr = 1 ; + int yyColNr = 1 ; + int yyBegColNr = 1 ; +- int anonCount = 0 ; +- int anonNSCount = 0 ; + QCString yyFileName; + MethodTypes mtype = Method; + bool stat = false; +@@ -3784,7 +3785,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) + BEGIN(MemberSpecSkip); + } + ";" { /* typedef of anonymous type */ +- yyextra->current->name.sprintf("@%d",yyextra->anonCount++); ++ yyextra->current->name.sprintf("@%d",anonCount++); + if ((yyextra->current->section == Entry::ENUM_SEC) || (yyextra->current->spec&Entry::Enum)) + { + yyextra->current->program+=','; // add field terminator +@@ -3859,7 +3860,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) + { + // anonymous compound yyextra->inside -> insert dummy variable name + //printf("Adding anonymous variable for scope %s\n",p->name.data()); +- yyextra->msName.sprintf("@%d",yyextra->anonCount++); ++ yyextra->msName.sprintf("@%d",anonCount++); + break; + } + } +@@ -5644,12 +5645,12 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) + } + else // use invisible name + { +- yyextra->current->name.sprintf("@%d",yyextra->anonNSCount); ++ yyextra->current->name.sprintf("@%d",anonNSCount.load()); + } + } + else + { +- yyextra->current->name.sprintf("@%d",yyextra->anonCount++); ++ yyextra->current->name.sprintf("@%d",anonCount++); + } + } + yyextra->curlyCount=0; +@@ -7247,7 +7248,6 @@ static void parseMain(yyscan_t yyscanner, + yyextra->column = 0; + scannerYYrestart(0,yyscanner); + +- //yyextra->anonCount = 0; // don't reset per file + //depthIf = 0; + yyextra->protection = Public; + yyextra->mtype = Method; +@@ -7301,7 +7301,7 @@ static void parseMain(yyscan_t yyscanner, + + parseCompounds(yyscanner,rt); + +- yyextra->anonNSCount++; ++ anonNSCount++; + + // add additional entries that were created during processing + for (auto &kv: yyextra->outerScopeEntries) +-- +2.26.2 + diff --git a/doxygen.spec b/doxygen.spec index d104e77..71aa328 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.20 -Release: 1%{?dist} +Release: 2%{?dist} # No version is specified. License: GPL+ @@ -25,6 +25,7 @@ Source0: http://doxygen.nl/files/%{name}-%{version}.src.tar.gz # this icon is part of kdesdk Source1: doxywizard.desktop # upstream patches +Patch0: doxygen-1.8.20-enums-multiple-files.patch BuildRequires: %{_bindir}/python3 BuildRequires: ImageMagick @@ -302,6 +303,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Fri Aug 28 2020 Scott Talbert - 1:1.8.20-2 +- Fix issue with enums being defined in multiple files + * Tue Aug 25 2020 Than Ngo - 1.8.20-1 - update to 1.8.20