summaryrefslogtreecommitdiff
path: root/source/d
diff options
context:
space:
mode:
Diffstat (limited to 'source/d')
-rwxr-xr-xsource/d/doxygen/doxygen.SlackBuild36
-rw-r--r--source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch22
-rw-r--r--source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file.patch64
-rw-r--r--source/d/doxygen/patches/doxygen-1.9.1-Coverity_issues.patch49
-rw-r--r--source/d/doxygen/patches/doxygen-1.9.1-crash_in_docparser.patch12
-rw-r--r--source/d/doxygen/slack-desc2
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: