diff options
Diffstat (limited to 'source/d')
6 files changed, 169 insertions, 16 deletions
diff --git a/source/d/doxygen/doxygen.SlackBuild b/source/d/doxygen/doxygen.SlackBuild index 2564b2ac..f4d61a8a 100755 --- a/source/d/doxygen/doxygen.SlackBuild +++ b/source/d/doxygen/doxygen.SlackBuild @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2008, 2009, 2010, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2008, 2009, 2010, 2018, 2021 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=doxygen VERSION=${VERSION:-$(basename $(echo doxygen-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) .src)} -BUILD=${BUILD:-3} +BUILD=${BUILD:-1} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} @@ -76,35 +76,41 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \+ +cat $CWD/patches/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch | patch -p1 --verbose || exit 1 +cat $CWD/patches/doxgen-1.9.1-crash-when-parsing-config-file.patch | patch -p1 --verbose || exit 1 +cat $CWD/patches/doxygen-1.9.1-Coverity_issues.patch | patch -p1 --verbose || exit 1 +cat $CWD/patches/doxygen-1.9.1-crash_in_docparser.patch | patch -p1 --verbose || exit 1 + mkdir build cd build cmake \ + -DPYTHON_EXECUTABLE=/usr/bin/python3 \ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DDOC_INSTALL_DIR:STRING="/doc/doxygen-$VERSION" \ - -Dbuild_app=yes \ - -Dbuild_doc=yes \ - -Dbuild_parse=yes \ - -Dbuild_search=yes \ - -Dbuild_wizard=yes \ - -Dbuild_xmlparser=yes \ - -Duse_sqlite3=yes \ + -DBUILD_SHARED_LIBS=OFF \ + -Dbuild_app=ON \ + -Dbuild_doc=OFF \ + -Dbuild_parse=ON \ + -Dbuild_search=ON \ + -Dbuild_wizard=ON \ + -Dbuild_xmlparser=ON \ + -Duse_sqlite3=ON \ -G "Unix Makefiles" .. || exit 1 make $NUMJOBS || make || exit 1 - make $NUMJOBS docs || make docs || exit 1 make install DESTDIR=$PKG || exit 1 cd .. find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null -# Fix manpage location -mv $PKG/usr/share/man $PKG/usr/man - -# Removed unused /usr/share -rmdir $PKG/usr/share 2>/dev/null +# Install manpages: +mkdir -p $PKG/usr/man/man1 +cp -a doc/*.1 $PKG/usr/man/man1 +chown root:root $PKG/usr/man/man1/* +chmod 644 $PKG/usr/man/man1/* # Compress and if needed symlink the man pages: if [ -d $PKG/usr/man ]; then diff --git a/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch b/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch new file mode 100644 index 00000000..38465ffb --- /dev/null +++ b/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch @@ -0,0 +1,22 @@ +diff -up doxygen/src/configimpl.l.orig doxygen/src/configimpl.l +--- doxygen/src/configimpl.l.orig 2021-01-19 17:25:00.933789247 +0100 ++++ doxygen/src/configimpl.l 2021-01-19 17:26:09.704744240 +0100 +@@ -1175,8 +1175,7 @@ static void substEnvVarsInStrList(String + for (const auto &s : sl) + { + QCString result = s.c_str(); +- // an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE. +- bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1); ++ bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1) || (result.find('"')!=-1); + // here we strip the quote again + substEnvVarsInString(result); + +@@ -1229,7 +1228,7 @@ static void substEnvVarsInStrList(String + } + if (p!=l) // add the leftover as a string + { +- results.push_back(result.right(l-p).data()); ++ results.push_back(result.right(l-p).str()); + } + } + else // just goto the next element in the list diff --git a/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file.patch b/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file.patch new file mode 100644 index 00000000..848750d6 --- /dev/null +++ b/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file.patch @@ -0,0 +1,64 @@ +commit 3b15963316b59cd1af3468a43535d90343916ffb +Author: Dimitri van Heesch <doxygen@gmail.com> +Date: Mon Jan 18 19:59:16 2021 +0100 + + issue #8343: doxygen-1.9.1 crashes when parsing config file + +diff --git a/src/configimpl.l b/src/configimpl.l +index 7f73ec01..56a2e108 100644 +--- a/src/configimpl.l ++++ b/src/configimpl.l +@@ -1210,7 +1210,7 @@ static void substEnvVarsInStrList(StringVector &sl) + c=result.at(i); + if (c=='"') // end quote + { +- results.push_back(result.mid(p,i-p).data()); ++ results.push_back(result.mid(p,i-p).str()); + p=i+1; + break; + } +@@ -1222,7 +1222,7 @@ static void substEnvVarsInStrList(StringVector &sl) + } + else if (c==' ' || c=='\t') // separator + { +- if (i>p) results.push_back(result.mid(p,i-p).data()); ++ if (i>p) results.push_back(result.mid(p,i-p).str()); + p=i+1; + } + } +@@ -1234,7 +1234,7 @@ static void substEnvVarsInStrList(StringVector &sl) + } + else // just goto the next element in the list + { +- if (!result.isEmpty()) results.push_back(result.data()); ++ if (!result.isEmpty()) results.push_back(result.str()); + } + } + sl = results; +@@ -1409,7 +1409,7 @@ static void cleanUpPaths(StringVector &str) + QFileInfo fi(path.c_str()); + if (fi.exists() && fi.isDir()) + { +- path = fi.absFilePath().utf8().data(); ++ path = fi.absFilePath().utf8().str(); + if (path[path.size()-1]!='/') path+='/'; + } + } +@@ -1545,7 +1545,7 @@ void Config::checkAndCorrect() + QString p = QDir::currentDirPath(); + if (p.at(p.length()-1)!='/') + p.append('/'); +- stripFromPath.push_back(p.utf8().data()); ++ stripFromPath.push_back(p.utf8().str()); + } + else + { +@@ -1882,7 +1882,7 @@ void Config::checkAndCorrect() + if (inputSources.empty()) + { + // use current dir as the default +- inputSources.push_back(QDir::currentDirPath().utf8().data()); ++ inputSources.push_back(QDir::currentDirPath().utf8().str()); + } + else + { diff --git a/source/d/doxygen/patches/doxygen-1.9.1-Coverity_issues.patch b/source/d/doxygen/patches/doxygen-1.9.1-Coverity_issues.patch new file mode 100644 index 00000000..a1848e62 --- /dev/null +++ b/source/d/doxygen/patches/doxygen-1.9.1-Coverity_issues.patch @@ -0,0 +1,49 @@ +diff -up doxygen-1.9.1/src/context.cpp.me doxygen-1.9.1/src/context.cpp +--- doxygen-1.9.1/src/context.cpp.me 2021-02-10 10:56:44.575251899 +0100 ++++ doxygen-1.9.1/src/context.cpp 2021-02-10 10:57:54.522809720 +0100 +@@ -4062,11 +4062,11 @@ class MemberContext::Private : public De + s_inst.addProperty("nameWithContextFor", &Private::nameWithContextFor); + init=TRUE; + } +- if (md && !md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); } ++ if (!md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); } + + Cachable &cache = getCache(); + cache.propertyAttrs.reset(TemplateList::alloc()); +- if (md && md->isProperty()) ++ if (md->isProperty()) + { + if (md->isGettable()) cache.propertyAttrs->append("get"); + if (md->isPrivateGettable()) cache.propertyAttrs->append("private get"); +@@ -4076,7 +4076,7 @@ class MemberContext::Private : public De + if (md->isProtectedSettable()) cache.propertyAttrs->append("protected set"); + } + cache.eventAttrs.reset(TemplateList::alloc()); +- if (md && md->isEvent()) ++ if (md->isEvent()) + { + if (md->isAddable()) cache.eventAttrs->append("add"); + if (md->isRemovable()) cache.eventAttrs->append("remove"); +diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp +--- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:58:11.491500540 +0100 ++++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 11:00:35.905512597 +0100 +@@ -1524,7 +1524,7 @@ reparsetoken: + { + QCString scope; + doctokenizerYYsetStateSetScope(); +- doctokenizerYYlex(); ++ (void)doctokenizerYYlex(); + scope = g_token->name; + g_context = scope; + //printf("Found scope='%s'\n",scope.data()); +diff -up doxygen-1.9.1/src/dotgroupcollaboration.cpp.me doxygen-1.9.1/src/dotgroupcollaboration.cpp +--- doxygen-1.9.1/src/dotgroupcollaboration.cpp.me 2021-02-10 11:01:10.588530954 +0100 ++++ doxygen-1.9.1/src/dotgroupcollaboration.cpp 2021-02-10 11:02:54.216221350 +0100 +@@ -309,6 +309,7 @@ void DotGroupCollaboration::Edge::write( + { + if (first) first=FALSE; else t << "\\n"; + t << DotNode::convertLabel(link->label); ++ count++; + } + if (count==maxLabels) t << "\\n..."; + t << "\""; diff --git a/source/d/doxygen/patches/doxygen-1.9.1-crash_in_docparser.patch b/source/d/doxygen/patches/doxygen-1.9.1-crash_in_docparser.patch new file mode 100644 index 00000000..adcd1440 --- /dev/null +++ b/source/d/doxygen/patches/doxygen-1.9.1-crash_in_docparser.patch @@ -0,0 +1,12 @@ +diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp +--- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:52:09.481086282 +0100 ++++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 10:55:32.418781686 +0100 +@@ -951,7 +951,7 @@ static void handlePendingStyleCommands(D + children.append(new DocStyleChange(parent,g_nodeStack.count(),sc->style(),sc->tagName(),FALSE)); + g_initialStyleStack.push(sc); + g_styleStack.pop(); +- sc = g_styleStack.top(); ++ sc = !g_styleStack.isEmpty() ? g_styleStack.top() : 0; + } + } + } diff --git a/source/d/doxygen/slack-desc b/source/d/doxygen/slack-desc index 8220d232..114a4529 100644 --- a/source/d/doxygen/slack-desc +++ b/source/d/doxygen/slack-desc @@ -15,5 +15,5 @@ doxygen: keeping docs and code in sync. Doxygen produces documentation in doxygen: several output formats, including HTML, LaTeX, man pages, RTF, XML, doxygen: compressed HTML, PostScript, and PDF. doxygen: -doxygen: +doxygen: Homepage: https://www.doxygen.org doxygen: |