summaryrefslogtreecommitdiff
path: root/external/libepubgen
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2017-08-09 10:53:11 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-08-09 11:53:53 +0200
commit12b739aa2bf1f664acbbb4c4c815b3348c912977 (patch)
treef69048a0b5162952348774933c41586a531aa81b /external/libepubgen
parenta0e0b8372920e24672bb199e8e697fbc1cb8f5f2 (diff)
libepubgen: backport 3 validation fixes
A hello world ODT is now exported without validation errors. Change-Id: I2b160ee980f8ed9c80fd76945600d1edb1ee29bc Reviewed-on: https://gerrit.libreoffice.org/40908 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'external/libepubgen')
-rw-r--r--external/libepubgen/UnpackedTarball_libepubgen.mk6
-rw-r--r--external/libepubgen/libepubgen-validation1.patch.149
-rw-r--r--external/libepubgen/libepubgen-validation2.patch.134
-rw-r--r--external/libepubgen/libepubgen-validation3.patch.135
-rw-r--r--external/libepubgen/libepubgen-vc.patch.113
5 files changed, 137 insertions, 0 deletions
diff --git a/external/libepubgen/UnpackedTarball_libepubgen.mk b/external/libepubgen/UnpackedTarball_libepubgen.mk
index cd4ec7d56e83..5525ca3b2ce7 100644
--- a/external/libepubgen/UnpackedTarball_libepubgen.mk
+++ b/external/libepubgen/UnpackedTarball_libepubgen.mk
@@ -8,6 +8,12 @@
#
epubgen_patches :=
+# Backport of <https://sourceforge.net/p/libepubgen/code/ci/96e9786f5aba1078251f36e58feefc8d953cdea0/>.
+epubgen_patches += libepubgen-validation1.patch.1
+# Backport of <https://sourceforge.net/p/libepubgen/code/ci/2e51fb9163bbc6b9a27fa524382c5aad9700dd0d/>.
+epubgen_patches += libepubgen-validation2.patch.1
+# Backport of <https://sourceforge.net/p/libepubgen/code/ci/9041ef42f9e0a5c4bc3b0a912d36683c4e10ca84/>.
+epubgen_patches += libepubgen-validation3.patch.1
# Backport of <https://sourceforge.net/p/libepubgen/code/ci/49f6461d4751d3b16e32ab8f9c93a3856b33be49/>.
epubgen_patches += libepubgen-vc.patch.1
diff --git a/external/libepubgen/libepubgen-validation1.patch.1 b/external/libepubgen/libepubgen-validation1.patch.1
new file mode 100644
index 000000000000..18707e76205d
--- /dev/null
+++ b/external/libepubgen/libepubgen-validation1.patch.1
@@ -0,0 +1,49 @@
+From 96e9786f5aba1078251f36e58feefc8d953cdea0 Mon Sep 17 00:00:00 2001
+From: Miklos Vajna <vmiklos@collabora.co.uk>
+Date: Tue, 8 Aug 2017 16:54:24 +0200
+Subject: [PATCH 1/3] EPUBGenerator: fix validation error with empty
+ dc:identifier element
+
+<http://www.idpf.org/epub/31/spec/epub-packages.html#sec-opf-dcidentifier>
+"3.4.3.2.1 The identifier Element" says that the character content is
+not optional, so write it.
+---
+ configure.ac | 3 +++
+ src/lib/EPUBGenerator.cpp | 14 +++++++++++++-
+ 2 files changed, 16 insertions(+), 1 deletion(-)
+
+diff --git a/src/lib/EPUBGenerator.cpp b/src/lib/EPUBGenerator.cpp
+index 0d0f866..507eb14 100644
+--- a/src/lib/EPUBGenerator.cpp
++++ b/src/lib/EPUBGenerator.cpp
+@@ -7,6 +7,10 @@
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
++#include <boost/uuid/uuid.hpp>
++#include <boost/uuid/uuid_generators.hpp>
++#include <boost/uuid/uuid_io.hpp>
++
+ #include "EPUBCSSSink.h"
+ #include "EPUBHTMLGenerator.h"
+ #include "EPUBGenerator.h"
+@@ -193,7 +197,15 @@ void EPUBGenerator::writeRoot()
+
+ RVNGPropertyList identifierAttrs;
+ identifierAttrs.insert("id", uniqueId);
+- sink.insertEmptyElement("dc:identifier", identifierAttrs);
++ identifierAttrs.insert("opf:scheme", "UUID");
++ sink.openElement("dc:identifier", identifierAttrs);
++ // The identifier element is required to have a unique character content.
++ std::stringstream identifierStream("urn:uuid:");
++ boost::uuids::uuid uuid = boost::uuids::random_generator()();
++ identifierStream << uuid;
++ std::string identifierCharactrs = identifierStream.str();
++ sink.insertCharacters(identifierCharactrs.c_str());
++ sink.closeElement("dc:identifier");
+
+ sink.openElement("dc:title");
+ sink.closeElement("dc:title");
+--
+2.12.3
+
diff --git a/external/libepubgen/libepubgen-validation2.patch.1 b/external/libepubgen/libepubgen-validation2.patch.1
new file mode 100644
index 000000000000..a1807f33841b
--- /dev/null
+++ b/external/libepubgen/libepubgen-validation2.patch.1
@@ -0,0 +1,34 @@
+From 2e51fb9163bbc6b9a27fa524382c5aad9700dd0d Mon Sep 17 00:00:00 2001
+From: Miklos Vajna <vmiklos@collabora.co.uk>
+Date: Tue, 8 Aug 2017 17:23:38 +0200
+Subject: [PATCH 2/3] EPUBGenerator: don't write empty guide element
+
+<http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.6> "2.6:
+Guide" requires:
+
+ Within the package there may be one guide element, containing one or
+ more reference elements.
+
+Given that we never wrote reference child-elements, just don't write the
+guide element at all, especially seeing that it's deprecated in OPF3.
+---
+ src/lib/EPUBGenerator.cpp | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/src/lib/EPUBGenerator.cpp b/src/lib/EPUBGenerator.cpp
+index 507eb14..9dbccac 100644
+--- a/src/lib/EPUBGenerator.cpp
++++ b/src/lib/EPUBGenerator.cpp
+@@ -225,9 +225,6 @@ void EPUBGenerator::writeRoot()
+ m_htmlManager.writeSpineTo(sink);
+ sink.closeElement("spine");
+
+- sink.openElement("guide");
+- sink.closeElement("guide");
+-
+ sink.closeElement("package");
+
+ sink.writeTo(*m_package, "OEBPS/content.opf");
+--
+2.12.3
+
diff --git a/external/libepubgen/libepubgen-validation3.patch.1 b/external/libepubgen/libepubgen-validation3.patch.1
new file mode 100644
index 000000000000..b543e5a96e38
--- /dev/null
+++ b/external/libepubgen/libepubgen-validation3.patch.1
@@ -0,0 +1,35 @@
+From 9041ef42f9e0a5c4bc3b0a912d36683c4e10ca84 Mon Sep 17 00:00:00 2001
+From: Miklos Vajna <vmiklos@collabora.co.uk>
+Date: Tue, 8 Aug 2017 17:39:18 +0200
+Subject: [PATCH 3/3] EPUBHTMLManager: fix value of <navPoint playOrder"...">
+
+<http://www.niso.org/workrooms/daisy/Z39-86-2005.html#NCXplay> "8.4.3
+playOrder Attribute" says:
+
+ playOrder is a positive integer; the first playOrder value in a document
+ shall be 1.
+
+So instead of writing an empty attribute, write the same number that's
+already used for <navPoint id="...">.
+---
+ src/lib/EPUBHTMLManager.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/lib/EPUBHTMLManager.cpp b/src/lib/EPUBHTMLManager.cpp
+index e5add82..03dbf21 100644
+--- a/src/lib/EPUBHTMLManager.cpp
++++ b/src/lib/EPUBHTMLManager.cpp
+@@ -75,7 +75,9 @@ void EPUBHTMLManager::writeTocTo(EPUBXMLSink &sink, const EPUBPath &tocPath)
+ id << "section" << (i + 1);
+ navPointAttrs.insert("id", id.str().c_str());
+ navPointAttrs.insert("class", "document");
+- navPointAttrs.insert("playOrder", "");
++ std::ostringstream playOrder;
++ playOrder << (i + 1);
++ navPointAttrs.insert("playOrder", playOrder.str().c_str());
+ sink.openElement("navPoint", navPointAttrs);
+ sink.openElement("navLabel");
+ sink.openElement("text");
+--
+2.12.3
+
diff --git a/external/libepubgen/libepubgen-vc.patch.1 b/external/libepubgen/libepubgen-vc.patch.1
index d14b122f9575..4c929ed47a86 100644
--- a/external/libepubgen/libepubgen-vc.patch.1
+++ b/external/libepubgen/libepubgen-vc.patch.1
@@ -41,6 +41,19 @@ diff -Naur a/configure b/configure
#error "This is not a C++11 compiler"
+diff --git a/src/lib/EPUBGenerator.cpp b/src/lib/EPUBGenerator.cpp
+index 9dbccac..3357cf2 100644
+--- a/src/lib/EPUBGenerator.cpp
++++ b/src/lib/EPUBGenerator.cpp
+@@ -7,6 +7,8 @@
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
++#include <sstream>
++
+ #include <boost/uuid/uuid.hpp>
+ #include <boost/uuid/uuid_generators.hpp>
+ #include <boost/uuid/uuid_io.hpp>
--
2.12.3