From b2647be5a187dc4b82cb4c82ade578f9b4553f65 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Jan 11 2021 16:48:59 +0000 Subject: rebase to 1.9.1 --- diff --git a/.gitignore b/.gitignore index a84b6bb..8769b24 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.8.17.src.tar.gz /doxygen-1.8.18.src.tar.gz /doxywizard-icons.tar.xz +/doxygen-1.9.1.src.tar.gz diff --git a/doxygen-1.8.20-attribute-target-redefined-in-svg.patch b/doxygen-1.8.20-attribute-target-redefined-in-svg.patch deleted file mode 100644 index 7db3a60..0000000 --- a/doxygen-1.8.20-attribute-target-redefined-in-svg.patch +++ /dev/null @@ -1,20 +0,0 @@ -commit ff021223c89995bf2abc4f33befddb1c97cab1d8 -Author: albert-github -Date: Thu Sep 24 19:12:10 2020 +0200 - - issue #8053 error: Attribute target redefined in SVG - - regression on #7706 (although it has nothing to do with double runs in my opinion as indicated in the title of that issue: " Md5 hash does not match for two different runs") looks like this statement should be present. - -diff --git a/src/dotfilepatcher.cpp b/src/dotfilepatcher.cpp -index 099359d9..285c0bb8 100644 ---- a/src/dotfilepatcher.cpp -+++ b/src/dotfilepatcher.cpp -@@ -174,6 +174,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, - if (!ref.isEmpty()) - { - result = externalLinkTarget(true); -+ if (!result.isEmpty())targetAlreadySet=true; - } - result+= href+"=\""; - result+=externalRef(relPath,ref,TRUE); diff --git a/doxygen-1.8.20-broken-ref-for-enum-entry.patch b/doxygen-1.8.20-broken-ref-for-enum-entry.patch deleted file mode 100644 index 62e8337..0000000 --- a/doxygen-1.8.20-broken-ref-for-enum-entry.patch +++ /dev/null @@ -1,49 +0,0 @@ -commit 63dc5b9b1b3e8fb875304a954e4df934b249034b -Author: Dimitri van Heesch -Date: Wed Aug 26 21:23:29 2020 +0200 - - issue #7977: Broken ref for enum entry (doxygen 1.8.18 -> 1.8.19) - -diff --git a/src/doxygen.cpp b/src/doxygen.cpp -index 757e7831..d5512925 100644 ---- a/src/doxygen.cpp -+++ b/src/doxygen.cpp -@@ -6946,7 +6946,14 @@ static void addEnumValuesToEnums(const Entry *root) - MemberName *mn = mnsd->find(name); // for all members with this name - if (mn) - { -- std::vector< std::unique_ptr > extraMembers; -+ struct EnumValueInfo -+ { -+ EnumValueInfo(const QCString &n,std::unique_ptr &md) : -+ name(n), member(std::move(md)) {} -+ QCString name; -+ std::unique_ptr member; -+ }; -+ std::vector< EnumValueInfo > extraMembers; - // for each enum in this list - for (const auto &md : *mn) - { -@@ -7006,8 +7013,7 @@ static void addEnumValuesToEnums(const Entry *root) - fmd->setAnchor(); - md->insertEnumField(fmd.get()); - fmd->setEnumScope(md.get(),TRUE); -- mn=mnsd->add(e->name); -- extraMembers.push_back(std::move(fmd)); -+ extraMembers.push_back(EnumValueInfo(e->name,fmd)); - } - } - else -@@ -7071,9 +7077,10 @@ static void addEnumValuesToEnums(const Entry *root) - } - } - // move the newly added members into mn -- for (auto &md : extraMembers) -+ for (auto &e : extraMembers) - { -- mn->push_back(std::move(md)); -+ MemberName *emn=mnsd->add(e.name); -+ emn->push_back(std::move(e.member)); - } - } - } diff --git a/doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch b/doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch deleted file mode 100644 index 971de82..0000000 --- a/doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch +++ /dev/null @@ -1,58 +0,0 @@ -commit 7c429806b072dd8bf777d93035ffda817976adc0 -Author: albert-github -Date: Wed Sep 2 11:32:42 2020 +0200 - - issue #7995 Doxygen doesn't handle very simple example in the .md file - - Besides "keep utf8 characters together..." as done for the C-type parser in code.l (commit d3d9dd8540ec159de080859c8f34a2581c4147f0) this also has to be done for the Fortran, SQL and VHDL code lexers. The code lexers for python and xml already didn't give errors as they already handled these cases for the example. - -diff --git a/src/fortrancode.l b/src/fortrancode.l -index 4951001c..5d036e8a 100644 ---- a/src/fortrancode.l -+++ b/src/fortrancode.l -@@ -1272,6 +1272,17 @@ LANGUAGE_BIND_SPEC BIND{BS}"("{BS}C{BS}(,{BS}NAME{BS}"="{BS}"\""(.*)"\""{BS})?") - } - <*>^{BS}"type"{BS}"=" { g_code->codify(yytext); } - -+<*>[\x80-\xFF]* { // keep utf8 characters together... -+ if (g_isFixedForm && yy_my_start > fixedCommentAfter) -+ { -+ startFontClass("comment"); -+ codifyLines(yytext); -+ } -+ else -+ { -+ g_code->codify(yytext); -+ } -+ } - <*>. { - if (g_isFixedForm && yy_my_start > fixedCommentAfter) - { -diff --git a/src/sqlcode.l b/src/sqlcode.l -index 58a2fce9..22a5e170 100644 ---- a/src/sqlcode.l -+++ b/src/sqlcode.l -@@ -190,6 +190,9 @@ commentclose "\*/" - codifyLines(yytext,yyscanner); - } - -+[\x80-\xFF]* { // keep utf8 characters together... -+ codifyLines(yytext,yyscanner); -+ } - . { - codifyLines(yytext,yyscanner); - } -diff --git a/src/vhdlcode.l b/src/vhdlcode.l -index 808e5a29..dcace05d 100644 ---- a/src/vhdlcode.l -+++ b/src/vhdlcode.l -@@ -1497,6 +1497,9 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI - BEGIN(Bases); - } - -+<*>[\x80-\xFF]* { // keep utf8 characters together... -+ g_code->codify(vhdlcodeYYtext); -+ } - <*>. { - g_code->codify(vhdlcodeYYtext); - } diff --git a/doxygen-1.8.20-enums-multiple-files.patch b/doxygen-1.8.20-enums-multiple-files.patch deleted file mode 100644 index 78cb44c..0000000 --- a/doxygen-1.8.20-enums-multiple-files.patch +++ /dev/null @@ -1,86 +0,0 @@ -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-1.8.20-glibc-assert.patch b/doxygen-1.8.20-glibc-assert.patch deleted file mode 100644 index ab17398..0000000 --- a/doxygen-1.8.20-glibc-assert.patch +++ /dev/null @@ -1,41 +0,0 @@ -commit d067baf495d0415283ce724ad32cb9a08dc17c83 -Author: Dimitri van Heesch -Date: Thu Sep 17 20:14:39 2020 +0200 - - issue #8034: doxygen crashes - -diff --git a/src/definition.cpp b/src/definition.cpp -index 7874a5e4..dc968399 100644 ---- a/src/definition.cpp -+++ b/src/definition.cpp -@@ -176,14 +176,14 @@ static bool matchExcludedSymbols(const char *name) - QRegExp re(substitute(pattern,"*",".*"),TRUE); - int pl; - int i = re.match(symName,0,&pl); -- //printf(" %d = re.match(%s) pattern=%s\n",i,symName.data(),pattern.data()); -+ //printf(" %d = re.match(%s) pattern=%s pl=%d len=%d\n",i,symName.data(),pattern.data(),pl,symName.length()); - if (i!=-1) // wildcard match - { - uint ui=(uint)i; - uint sl=symName.length(); - // check if it is a whole word match -- if ((ui==0 || pattern.at(0)=='*' || (!isId(symName.at(ui-1)) && !forceStart)) && -- (ui+pl==sl || pattern.at(ui+pl)=='*' || (!isId(symName.at(ui+pl)) && !forceEnd)) -+ if ((ui==0 || pattern.at(0)=='*' || (!isId(symName.at(ui-1)) && !forceStart)) && -+ (ui+pl==sl || pattern.at(pattern.length()-1)=='*' || (!isId(symName.at(ui+pl)) && !forceEnd)) - ) - { - //printf("--> name=%s pattern=%s match at %d\n",symName.data(),pattern.data(),i); -diff --git a/src/util.cpp b/src/util.cpp -index 0581b5fa..34df8d7b 100644 ---- a/src/util.cpp -+++ b/src/util.cpp -@@ -5714,7 +5714,7 @@ QCString normalizeNonTemplateArgumentsInString( - result += name.mid(p,i-p); - QCString n = name.mid(i,l); - bool found=FALSE; -- for (const Argument formArg : formalArgs) -+ for (const Argument &formArg : formalArgs) - { - if (formArg.name == n) - { diff --git a/doxygen-1.8.20-links-using-ref-stopp-working.patch b/doxygen-1.8.20-links-using-ref-stopp-working.patch deleted file mode 100644 index 5ae04fc..0000000 --- a/doxygen-1.8.20-links-using-ref-stopp-working.patch +++ /dev/null @@ -1,117 +0,0 @@ -commit dfc82af001c56254c6fde0affd009f80e19b1548 -Author: Dimitri van Heesch -Date: Mon Sep 21 12:20:57 2020 +0200 - - issue #8037: Links using @ref stopped working in doxygen 1.8.19 - -diff --git a/src/classdef.cpp b/src/classdef.cpp -index c3cd3ee2..5e2b2fa1 100644 ---- a/src/classdef.cpp -+++ b/src/classdef.cpp -@@ -1248,6 +1248,7 @@ void ClassDefImpl::distributeMemberGroupDocumentation() - - void ClassDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - if (m_impl->memberGroupSDict) - { -diff --git a/src/commentscan.l b/src/commentscan.l -index c151294d..ce495a1c 100644 ---- a/src/commentscan.l -+++ b/src/commentscan.l -@@ -666,6 +666,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" - optList = QCStringList::split(',',optStr); - } - auto it = docCmdMap.find(cmdName.data()); -+ //printf("lookup command '%s' found=%d\n",cmdName.data(),it!=docCmdMap.end()); - if (it!=docCmdMap.end()) // special action is required - { - int i=0; -diff --git a/src/docparser.cpp b/src/docparser.cpp -index 73131f67..b79f8c82 100644 ---- a/src/docparser.cpp -+++ b/src/docparser.cpp -@@ -2448,8 +2448,8 @@ DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) : - } - m_isSubPage = pd && pd->hasParentPage(); - if (sec->type()!=SectionType::Page || m_isSubPage) m_anchor = sec->label(); -- //printf("m_text=%s,m_ref=%s,m_file=%s,m_refToAnchor=%d type=%d\n", -- // m_text.data(),m_ref.data(),m_file.data(),m_refToAnchor,sec->type); -+ //printf("m_text=%s,m_ref=%s,m_file=%s,type=%d\n", -+ // m_text.data(),m_ref.data(),m_file.data(),m_refType); - return; - } - else if (resolveLink(context,target,TRUE,&compound,anchor)) -diff --git a/src/filedef.cpp b/src/filedef.cpp -index f07201d4..b74fda9b 100644 ---- a/src/filedef.cpp -+++ b/src/filedef.cpp -@@ -311,6 +311,7 @@ void FileDefImpl::distributeMemberGroupDocumentation() - - void FileDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - if (m_memberGroupSDict) - { -diff --git a/src/groupdef.cpp b/src/groupdef.cpp -index 9b333567..7cd6cf26 100644 ---- a/src/groupdef.cpp -+++ b/src/groupdef.cpp -@@ -228,6 +228,7 @@ void GroupDefImpl::distributeMemberGroupDocumentation() - - void GroupDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - MemberGroupSDict::Iterator mgli(*m_memberGroupSDict); - MemberGroup *mg; -diff --git a/src/markdown.cpp b/src/markdown.cpp -index 3089b8e7..2e6ab3ea 100644 ---- a/src/markdown.cpp -+++ b/src/markdown.cpp -@@ -2662,6 +2662,7 @@ QCString markdownFileNameToId(const QCString &fileName) - int i = baseFn.findRev('.'); - if (i!=-1) baseFn = baseFn.left(i); - QCString baseName = substitute(substitute(substitute(baseFn," ","_"),"/","_"),":","_"); -+ //printf("markdownFileNameToId(%s)=md_%s\n",qPrint(fileName),qPrint(baseName)); - return "md_"+baseName; - } - -diff --git a/src/memberdef.cpp b/src/memberdef.cpp -index 6d179c21..2f92ea01 100644 ---- a/src/memberdef.cpp -+++ b/src/memberdef.cpp -@@ -4838,6 +4838,7 @@ ClassDef *MemberDefImpl::accessorClass() const - - void MemberDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - } - -diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp -index 88eea5d2..65456ac0 100644 ---- a/src/namespacedef.cpp -+++ b/src/namespacedef.cpp -@@ -349,6 +349,7 @@ void NamespaceDefImpl::distributeMemberGroupDocumentation() - - void NamespaceDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - MemberGroupSDict::Iterator mgli(*memberGroupSDict); - MemberGroup *mg; -diff --git a/src/pagedef.cpp b/src/pagedef.cpp -index 09152def..75e50ed1 100644 ---- a/src/pagedef.cpp -+++ b/src/pagedef.cpp -@@ -99,6 +99,7 @@ PageDefImpl::~PageDefImpl() - - void PageDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - } - diff --git a/doxygen-1.8.20-python3.patch b/doxygen-1.8.20-python3.patch deleted file mode 100644 index 4eede41..0000000 --- a/doxygen-1.8.20-python3.patch +++ /dev/null @@ -1,56 +0,0 @@ -commit 6383a72200df27b0515b6e3d09bfad8934eb5c76 -Author: albert-github -Date: Tue Sep 8 13:31:15 2020 +0200 - - Make testsqlite3.py python script running with python 3 - - The testsqlite3.py didn't run under python 3 (found by means of pylint). - Making it runnable under python 2 and python 3. - -diff --git a/testing/testsqlite3.py b/testing/testsqlite3.py -index b4227b44..1d94f701 100755 ---- a/testing/testsqlite3.py -+++ b/testing/testsqlite3.py -@@ -13,7 +13,7 @@ g_conn=None - val=[] - def print_unprocessed_attributes(node): - for key in node.attrib: -- print "WARNING: '%s' has unprocessed attr '%s'" % (node.tag,key) -+ print("WARNING: '%s' has unprocessed attr '%s'" % (node.tag,key)) - - def extract_attribute(node,attribute,pnl): - if not attribute in node.attrib: -@@ -69,7 +69,7 @@ def process_memberdef(node): - extract_element(node,chld,q) - - for chld in node.getchildren(): -- print "WARNING: '%s' has unprocessed child elem '%s'" % (node.tag,chld.tag) -+ print("WARNING: '%s' has unprocessed child elem '%s'" % (node.tag,chld.tag)) - - extract_attribute(node,"kind",q) - extract_attribute(node,"prot",q) -@@ -90,12 +90,12 @@ def process_memberdef(node): - r=[] - try: - r = g_conn.execute(query,val).fetchall() -- except sqlite3.OperationalError,e: -- print "SQL_ERROR:%s"%e -+ except(sqlite3.OperationalError,e): -+ print("SQL_ERROR:%s"%e) - - del val[:] - if not len(r) > 0: -- print "TEST_ERROR: Member not found in SQL DB" -+ print("TEST_ERROR: Member not found in SQL DB") - - - def load_xml(name): -@@ -104,7 +104,7 @@ def load_xml(name): - for event, elem in context: - if event == "end" and elem.tag == "memberdef": - process_memberdef(elem) -- print "\n== Unprocessed XML ==" -+ print("\n== Unprocessed XML ==") - # ET.dump(root) - - diff --git a/doxygen-different-results-on-64-and-32-bit.patch b/doxygen-different-results-on-64-and-32-bit.patch deleted file mode 100644 index 2167f3b..0000000 --- a/doxygen-different-results-on-64-and-32-bit.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 1fda77f54a2eacba32658001329bd9084f4df1e7 Mon Sep 17 00:00:00 2001 -From: Dimitri van Heesch -Date: Fri, 11 Sep 2020 15:38:01 +0200 -Subject: [PATCH] issue #8022: Different results on 64 and 32 bit - ---- - src/doxygen.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/doxygen.cpp b/src/doxygen.cpp -index b218d382..0832e5c6 100644 ---- a/src/doxygen.cpp -+++ b/src/doxygen.cpp -@@ -164,7 +164,7 @@ DefinesPerFileList Doxygen::macroDefinitions; - bool Doxygen::clangAssistedParsing = FALSE; - - // locally accessible globals --static std::unordered_map< std::string, const Entry* > g_classEntries; -+static std::map< std::string, const Entry* > g_classEntries; - static StringVector g_inputFiles; - static QDict g_compoundKeywordDict(7); // keywords recognised as compounds - static OutputList *g_outputList = 0; // list of output generating objects --- -2.26.2 - diff --git a/doxygen.spec b/doxygen.spec index 9e42a9a..28a2c72 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -15,8 +15,8 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 -Version: 1.8.20 -Release: 6%{?dist} +Version: 1.9.1 +Release: 1%{?dist} # No version is specified. License: GPL+ @@ -27,14 +27,6 @@ Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz # upstream patches -Patch0: doxygen-1.8.20-enums-multiple-files.patch -Patch1: doxygen-different-results-on-64-and-32-bit.patch -Patch2: doxygen-1.8.20-glibc-assert.patch -Patch3: doxygen-1.8.20-broken-ref-for-enum-entry.patch -Patch4: doxygen-1.8.20-links-using-ref-stopp-working.patch -Patch5: doxygen-1.8.20-python3.patch -Patch6: doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch -Patch7: doxygen-1.8.20-attribute-target-redefined-in-svg.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -308,6 +300,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Mon Jan 11 2021 Than Ngo - 1.9.1-1 +- update to 1.9.1 + * Mon Jan 11 2021 Than Ngo - 1.8.20-6 - drop BR on ImageMagick in RHEL diff --git a/sources b/sources index 2d15d51..b0ecdcf 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (doxygen-1.8.20.src.tar.gz) = 15dc95850440aed2a56971d8c04bf3bdfac861bcc38c60c7be22fd3b922b9fe2a750ea8877cb0716832bb6ad7901afcdf4950ba985b09890027030bdf828eee3 SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad +SHA512 (doxygen-1.9.1.src.tar.gz) = a84fbea1874921317b58345c53fc4eac0382c9e593f0e1ee899a31e67ead3fd12b2da8145b37e2e09d665e28d060e6717c92de7e8d0a31fc5f24fdcc4715f54d