[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#28954] [PATCH] Update Scribus to 1.5.3. Re-vamp package.
From: |
Nicolas Goaziou |
Subject: |
[bug#28954] [PATCH] Update Scribus to 1.5.3. Re-vamp package. |
Date: |
Tue, 24 Oct 2017 17:34:18 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) |
Hello,
Eric Bavier <address@hidden> writes:
> Remove the blank line between entries.
Fixed.
> Could you include a url where these patches came from in the patches
> themselves? You mention in the package definition that they came from
> upstream's trunk.
>
> Or, for large patches, some have experimented with using an origin that
> fetches the patch from upstream rather than pulling the patch into
> Guix.
I cloned project's git mirror and picked two specific commits. There is
no proper URL that I know of.
You can see them at
https://www.scribus.net/websvn/listing.php?repname=Scribus&peg=22197&rev=22154
and
https://www.scribus.net/websvn/listing.php?repname=Scribus&peg=22197&rev=22155
although not as patch files.
>> + `(#:tests? #f ;no test target
>
> I see no need for this whitespace-only change.
Considering I rewrote a large part of the package definition, I might as
well fix indentation issues. This one is going to bother anyone editing
the package with Emacs. With this change, the line isn't modified when
re-indenting the whole S-exp.
If you are not convinced, consider this to be a nitpicking of mine.
> Could you move this into an origin snippet instead? We'd want a fix
> like this included in the source when someone uses 'guix build -S
> scribus'
Done.
> Is boost really a native input? I'm surprised. Is it used only for
> build-related things?
I don't know. I think Archlinux put that in the build side. However,
I never know when a package is meant to be a native-input or not. I know
the difference between native inputs and inputs, though.
Thank you for the review.
Regards,
--
Nicolas Goaziou 0x80A93738
>From 6fdd0727a064cd041d3581eed0f8d2a30d1f8bfe Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <address@hidden>
Date: Mon, 23 Oct 2017 12:25:13 +0200
Subject: [PATCH] gnu: scribus: Update to 1.5.3. Re-vamp package.
* gnu/packages/patches/scribus-fix-poppler-0.58-breakage.patch:
* gnu/packages/patches/scribus-fix-poppler-packaging.patch: New files.
* gnu/local.mk (dist_patch_DATA): Register new files.
* gnu/packages/scribus.scm (scribus): Update to 1.5.3.
[input]: Add fontconfig, harfbuzz, hunspell, icu4c, libcdr, libfreehand,
libmspub, librevenge, libvisio, openssl, podofo, poppler.
[native-input]: Move qttools from inputs. Add boost.
[home-page]: Fix URL.
---
gnu/local.mk | 2 +
.../scribus-fix-poppler-0.58-breakage.patch | 526 +++++++++++++++++++++
.../patches/scribus-fix-poppler-packaging.patch | 95 ++++
gnu/packages/scribus.scm | 56 ++-
4 files changed, 667 insertions(+), 12 deletions(-)
create mode 100644 gnu/packages/patches/scribus-fix-poppler-0.58-breakage.patch
create mode 100644 gnu/packages/patches/scribus-fix-poppler-packaging.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 6b70300ff..ff0e74a0b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1022,6 +1022,8 @@ dist_patch_DATA =
\
%D%/packages/patches/rxvt-unicode-escape-sequences.patch \
%D%/packages/patches/scheme48-tests.patch \
%D%/packages/patches/scotch-test-threading.patch \
+ %D%/packages/patches/scribus-fix-poppler-0.58-breakage.patch \
+ %D%/packages/patches/scribus-fix-poppler-packaging.patch \
%D%/packages/patches/sdl-libx11-1.6.patch \
%D%/packages/patches/seq24-rename-mutex.patch \
%D%/packages/patches/shishi-fix-libgcrypt-detection.patch \
diff --git a/gnu/packages/patches/scribus-fix-poppler-0.58-breakage.patch
b/gnu/packages/patches/scribus-fix-poppler-0.58-breakage.patch
new file mode 100644
index 000000000..cd95e9b2a
--- /dev/null
+++ b/gnu/packages/patches/scribus-fix-poppler-0.58-breakage.patch
@@ -0,0 +1,526 @@
+diff --git a/scribus/plugins/import/pdf/importpdf.cpp
b/scribus/plugins/import/pdf/importpdf.cpp
+index 4c462bead..1c0bd8a88 100644
+--- a/scribus/plugins/import/pdf/importpdf.cpp
++++ b/scribus/plugins/import/pdf/importpdf.cpp
+@@ -22,6 +22,7 @@ for which a new license (GPL+exception) is in place.
+ #include <poppler/PageTransition.h>
+ #include <poppler/ViewerPreferences.h>
+ #include <poppler/poppler-config.h>
++#include <poppler/cpp/poppler-version.h>
+ #include <poppler/SplashOutputDev.h>
+ #include <poppler/splash/SplashBitmap.h>
+
+@@ -59,6 +60,12 @@ for which a new license (GPL+exception) is in place.
+ #include "ui/multiprogressdialog.h"
+ #include "ui/propertiespalette.h"
+
++#define POPPLER_VERSION_ENCODE(major, minor, micro) ( \
++ ((major) * 10000) \
++ + ((minor) * 100) \
++ + ((micro) * 1))
++#define POPPLER_ENCODED_VERSION POPPLER_VERSION_ENCODE(POPPLER_VERSION_MAJOR,
POPPLER_VERSION_MINOR, POPPLER_VERSION_MICRO)
++
+ PdfPlug::PdfPlug(ScribusDoc* doc, int flags)
+ {
+ tmpSele = new Selection(this, false);
+@@ -507,12 +514,20 @@ bool PdfPlug::convert(const QString& fn)
+ {
+ for (int i = 0;
i < order->getLength (); ++i)
+ {
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ Object
orderItem = order->get(i);
++#else
+ Object
orderItem;
+
order->get(i, &orderItem);
++#endif
+ if
(orderItem.isDict())
+ {
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++
Object ref = order->getNF(i);
++#else
+
Object ref;
+
order->getNF(i, &ref);
++#endif
+
if (ref.isRef())
+
{
+
OptionalContentGroup *oc = ocg->findOcgByRef(ref.getRef());
+@@ -523,7 +538,9 @@ bool PdfPlug::convert(const QString& fn)
+
ocgNames.append(ocgName);
+
}
+
}
++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 58, 0)
+
ref.free();
++#endif
+ }
+ else
+ {
+@@ -597,39 +614,71 @@ bool PdfPlug::convert(const QString& fn)
+ dev->layersSetByOCG =
true;
+ }
+ #endif
++
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ Object info =
pdfDoc->getDocInfo();
++ if (info.isDict())
++ {
++ Object obj;
++ Dict *infoDict =
info.getDict();
++ obj =
infoDict->lookup((char*) "Title");
++ if (obj.isString())
++ {
++
m_Doc->documentInfo().setTitle(UnicodeParsedString(obj.getString()));
++ }
++ obj =
infoDict->lookup((char*) "Author");
++ if (obj.isString())
++ {
++
m_Doc->documentInfo().setAuthor(UnicodeParsedString(obj.getString()));
++ }
++ obj =
infoDict->lookup((char*) "Subject");
++ if (obj.isString())
++ {
++
m_Doc->documentInfo().setSubject(UnicodeParsedString(obj.getString()));
++ }
++ obj =
infoDict->lookup((char*) "Keywords");
++ if (obj.isString())
++ {
++ //
s1 = obj.getString();
++
m_Doc->documentInfo().setKeywords(UnicodeParsedString(obj.getString()));
++ }
++ }
++ info = Object();
++#else
+ Object info;
+ pdfDoc->getDocInfo(&info);
+ if (info.isDict())
+ {
+ Object obj;
+- // GooString *s1;
++ // GooString *s1;
+ Dict *infoDict =
info.getDict();
+- if
(infoDict->lookup((char*)"Title", &obj )->isString())
++ if
(infoDict->lookup((char*)"Title", &obj)->isString())
+ {
+- // s1 =
obj.getString();
++ //
s1 = obj.getString();
+
m_Doc->documentInfo().setTitle(UnicodeParsedString(obj.getString()));
+ obj.free();
+ }
+- if
(infoDict->lookup((char*)"Author", &obj )->isString())
++ if
(infoDict->lookup((char*)"Author", &obj)->isString())
+ {
+- // s1 =
obj.getString();
++ //
s1 = obj.getString();
+
m_Doc->documentInfo().setAuthor(UnicodeParsedString(obj.getString()));
+ obj.free();
+ }
+- if
(infoDict->lookup((char*)"Subject", &obj )->isString())
++ if
(infoDict->lookup((char*)"Subject", &obj)->isString())
+ {
+- // s1 =
obj.getString();
++ //
s1 = obj.getString();
+
m_Doc->documentInfo().setSubject(UnicodeParsedString(obj.getString()));
+ obj.free();
+ }
+- if
(infoDict->lookup((char*)"Keywords", &obj )->isString())
++ if
(infoDict->lookup((char*)"Keywords", &obj)->isString())
+ {
+- // s1 =
obj.getString();
++ //
s1 = obj.getString();
+
m_Doc->documentInfo().setKeywords(UnicodeParsedString(obj.getString()));
+ obj.free();
+ }
+ }
+ info.free();
++#endif
+ if (cropped)
+ {
+ QRectF crBox =
getCBox(contentRect, pageNs[0]);
+@@ -746,8 +795,13 @@ bool PdfPlug::convert(const QString& fn)
+
pdfDoc->displayPage(dev, pp, hDPI, vDPI, rotate, useMediaBox, crop, printing,
NULL, NULL, dev->annotations_callback, dev);
+ }
+ PDFPresentationData ef;
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ Object trans =
pdfDoc->getPage(pp)->getTrans();
++ Object *transi = &trans;
++#else
+ Object trans;
+ Object *transi =
pdfDoc->getPage(pp)->getTrans(&trans);
++#endif
+ if (transi->isDict())
+ {
+
m_Doc->pdfOptions().PresentMode = true;
+@@ -793,32 +847,51 @@ bool PdfPlug::convert(const QString& fn)
+ delete pgTrans;
+ }
+
m_Doc->currentPage()->PresentVals = ef;
++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 58, 0)
+ trans.free();
+ transi->free();
++#endif
+ }
+ int numjs =
pdfDoc->getCatalog()->numJS();
+ if (numjs > 0)
+ {
+ NameTree *jsNameTreeP =
new NameTree();
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ Object catDict =
pdfDoc->getXRef()->getCatalog();
++#else
+ Object catDict;
+
pdfDoc->getXRef()->getCatalog(&catDict);
++#endif
+ if (catDict.isDict())
+ {
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ Object names =
catDict.dictLookup("Names");
++#else
+ Object names;
+
catDict.dictLookup("Names", &names);
++#endif
+ if
(names.isDict())
+ {
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ Object
obj = names.dictLookup("JavaScript");
++
jsNameTreeP->init(pdfDoc->getXRef(), &obj);
++#else
+ Object
obj;
+
names.dictLookup("JavaScript", &obj);
+
jsNameTreeP->init(pdfDoc->getXRef(), &obj);
+
obj.free();
++#endif
+ }
+ for (int a = 0;
a < numjs; a++)
+ {
+
m_Doc->JavaScripts.insert(UnicodeParsedString(jsNameTreeP->getName(a)),
UnicodeParsedString(pdfDoc->getCatalog()->getJS(a)));
+ }
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ names =
catDict.dictLookup("OpenAction");
++#else
+ names.free();
+
catDict.dictLookup("OpenAction", &names);
++#endif
+ if
(names.isDict())
+ {
+
LinkAction *linkAction = NULL;
+@@ -839,9 +912,13 @@ bool PdfPlug::convert(const QString& fn)
+
}
+ }
+ }
++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 58, 0)
+ names.free();
++#endif
+ }
++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 58, 0)
+ catDict.free();
++#endif
+ delete jsNameTreeP;
+ }
+ m_Doc->pdfOptions().Version =
(PDFOptions::PDFVersion)qMin(15, qMax(13, pdfDoc->getPDFMajorVersion() * 10 +
pdfDoc->getPDFMinorVersion()));
+diff --git a/scribus/plugins/import/pdf/slaoutput.cpp
b/scribus/plugins/import/pdf/slaoutput.cpp
+index 32cfed101..ffa417a3b 100644
+--- a/scribus/plugins/import/pdf/slaoutput.cpp
++++ b/scribus/plugins/import/pdf/slaoutput.cpp
+@@ -6,6 +6,7 @@ for which a new license (GPL+exception) is in place.
+ */
+
+ #include "slaoutput.h"
++#include <poppler/cpp/poppler-version.h>
+ #include <poppler/GlobalParams.h>
+ #include <poppler/poppler-config.h>
+ #include <poppler/FileSpec.h>
+@@ -19,11 +20,49 @@ for which a new license (GPL+exception) is in place.
+ #include "util_math.h"
+ #include <tiffio.h>
+
++#define POPPLER_VERSION_ENCODE(major, minor, micro) ( \
++ ((major) * 10000) \
++ + ((minor) * 100) \
++ + ((micro) * 1))
++#define POPPLER_ENCODED_VERSION POPPLER_VERSION_ENCODE(POPPLER_VERSION_MAJOR,
POPPLER_VERSION_MINOR, POPPLER_VERSION_MICRO)
++
+ LinkSubmitForm::LinkSubmitForm(Object *actionObj)
+ {
+ Object obj1, obj2, obj3;
+ fileName = NULL;
+ m_flags = 0;
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ if (actionObj->isDict())
++ {
++ obj1 = actionObj->dictLookup("F");
++ if (!obj1.isNull())
++ {
++ if (obj1.isDict())
++ {
++ obj3 = obj1.dictLookup("FS");
++ if (!obj3.isNull())
++ {
++ if (obj3.isName())
++ {
++ char *name = obj3.getName();
++ if (!strcmp(name, "URL"))
++ {
++ obj2 =
obj1.dictLookup("F");
++ if (!obj2.isNull())
++ fileName =
obj2.getString()->copy();
++ }
++ }
++ }
++ }
++ }
++ obj1 = actionObj->dictLookup("Flags");
++ if (!obj1.isNull())
++ {
++ if (obj1.isNum())
++ m_flags = obj1.getInt();
++ }
++ }
++#else
+ if (actionObj->isDict())
+ {
+ if (!actionObj->dictLookup("F", &obj1)->isNull())
+@@ -54,6 +93,7 @@ LinkSubmitForm::LinkSubmitForm(Object *actionObj)
+ }
+ obj1.free();
+ }
++#endif
+ }
+
+ LinkSubmitForm::~LinkSubmitForm()
+@@ -66,11 +106,25 @@ LinkImportData::LinkImportData(Object *actionObj)
+ {
+ Object obj1, obj3;
+ fileName = NULL;
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ if (actionObj->isDict())
++ {
++ obj1 = actionObj->dictLookup("F");
++ if (!obj1.isNull())
++ {
++ obj3 = getFileSpecNameForPlatform(&obj1);
++ if (!obj3.isNull())
++ {
++ fileName = obj3.getString()->copy();
++ }
++ }
++ }
++#else
+ if (actionObj->isDict())
+ {
+ if (!actionObj->dictLookup("F", &obj1)->isNull())
+ {
+- if (getFileSpecNameForPlatform (&obj1, &obj3))
++ if (getFileSpecNameForPlatform(&obj1, &obj3))
+ {
+ fileName = obj3.getString()->copy();
+ obj3.free();
+@@ -78,6 +132,7 @@ LinkImportData::LinkImportData(Object *actionObj)
+ }
+ obj1.free();
+ }
++#endif
+ }
+
+ LinkImportData::~LinkImportData()
+@@ -256,6 +311,27 @@ LinkAction* SlaOutputDev::SC_getAction(AnnotWidget *ano)
+ Object obj;
+ Ref refa = ano->getRef();
+ Object additionalActions;
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ obj = xref->fetch(refa.num, refa.gen);
++ if (obj.isDict())
++ {
++ Dict* adic = obj.getDict();
++ additionalActions = adic->lookupNF("A");
++ Object additionalActionsObject =
additionalActions.fetch(pdfDoc->getXRef());
++ if (additionalActionsObject.isDict())
++ {
++ Object actionObject =
additionalActionsObject.dictLookup("S");
++ if (actionObject.isName("ImportData"))
++ {
++ linkAction = new
LinkImportData(&additionalActionsObject);
++ }
++ else if (actionObject.isName("SubmitForm"))
++ {
++ linkAction = new
LinkSubmitForm(&additionalActionsObject);
++ }
++ }
++ }
++#else
+ Object *act = xref->fetch(refa.num, refa.gen, &obj);
+ if (act)
+ {
+@@ -283,6 +359,7 @@ LinkAction* SlaOutputDev::SC_getAction(AnnotWidget *ano)
+ }
+ }
+ obj.free();
++#endif
+ return linkAction;
+ }
+
+@@ -293,6 +370,22 @@ LinkAction* SlaOutputDev::SC_getAdditionalAction(const
char *key, AnnotWidget *a
+ Object obj;
+ Ref refa = ano->getRef();
+ Object additionalActions;
++
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ obj = xref->fetch(refa.num, refa.gen);
++ if (obj.isDict())
++ {
++ Dict* adic = obj.getDict();
++ additionalActions = adic->lookupNF("AA");
++ Object additionalActionsObject =
additionalActions.fetch(pdfDoc->getXRef());
++ if (additionalActionsObject.isDict())
++ {
++ Object actionObject =
additionalActionsObject.dictLookup(key);
++ if (actionObject.isDict())
++ linkAction =
LinkAction::parseAction(&actionObject, pdfDoc->getCatalog()->getBaseURI());
++ }
++ }
++#else
+ Object *act = xref->fetch(refa.num, refa.gen, &obj);
+ if (act)
+ {
+@@ -313,6 +406,7 @@ LinkAction* SlaOutputDev::SC_getAdditionalAction(const
char *key, AnnotWidget *a
+ }
+ }
+ obj.free();
++#endif
+ return linkAction;
+ }
+
+@@ -838,6 +932,33 @@ bool SlaOutputDev::handleWidgetAnnot(Annot* annota,
double xCoor, double yCoor,
+ {
+ Object obj1;
+ Ref refa = annota->getRef();
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ obj1 = xref->fetch(refa.num, refa.gen);
++ if (obj1.isDict())
++ {
++ Dict* dict = obj1.getDict();
++ Object obj2 = dict->lookup("Kids");
++ //childs
++ if (obj2.isArray())
++ {
++ // Load children
++ QList<int> radList;
++ for (int i = 0; i < obj2.arrayGetLength(); i++)
++ {
++ Object childRef = obj2.arrayGetNF(i);
++ if (!childRef.isRef())
++ continue;
++ Object childObj = obj2.arrayGet(i);
++ if (!childObj.isDict())
++ continue;
++ const Ref ref = childRef.getRef();
++ radList.append(ref.num);
++ }
++ QString tmTxt =
UnicodeParsedString(annota->getName());
++ m_radioMap.insert(tmTxt, radList);
++ }
++ }
++#else
+ Object *act = xref->fetch(refa.num, refa.gen, &obj1);
+ if (act && act->isDict())
+ {
+@@ -873,6 +994,7 @@ bool SlaOutputDev::handleWidgetAnnot(Annot* annota, double
xCoor, double yCoor,
+ obj2.free();
+ }
+ obj1.free();
++#endif
+ }
+ return retVal;
+ }
+@@ -3007,6 +3129,23 @@ void SlaOutputDev::beginMarkedContent(char *name,
Object *dictRef)
+ }
+ else
+ {
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ dictObj = dictRef->fetch(xref);
++ if (!dictObj.isDict())
++ return;
++ dict = dictObj.getDict();
++ dictType = dict->lookup("Type");
++ if (dictType.isName("OCG"))
++ {
++ oc =
contentConfig->findOcgByRef(dictRef->getRef());
++ if (oc)
++ {
++ //
qDebug() << "Begin OCG Content with Name " <<
UnicodeParsedString(oc->getName());
++
m_doc->setActiveLayer(UnicodeParsedString(oc->getName()));
++ mSte.ocgName =
UnicodeParsedString(oc->getName());
++ }
++ }
++#else
+ dictRef->fetch(xref, &dictObj);
+ if (!dictObj.isDict())
+ {
+@@ -3027,6 +3166,7 @@ void SlaOutputDev::beginMarkedContent(char *name, Object
*dictRef)
+ }
+ dictType.free();
+ dictObj.free();
++#endif
+ }
+ }
+ m_mcStack.push(mSte);
+@@ -3046,14 +3186,20 @@ void SlaOutputDev::beginMarkedContent(char *name, Dict
*properties)
+ {
+ if (layersSetByOCG)
+ return;
+- Object obj;
+ QString lName = QString("Layer_%1").arg(layerNum + 1);
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ Object obj = properties->lookup((char*) "Title");
++ if (obj.isString())
++ lName = QString(obj.getString()->getCString());
++#else
++ Object obj;
+ if (properties->lookup((char*)"Title", &obj))
+ {
+ if (obj.isString())
+ lName =
QString(obj.getString()->getCString());
+ obj.free();
+ }
++#endif
+ for (ScLayers::iterator it = m_doc->Layers.begin(); it
!= m_doc->Layers.end(); ++it)
+ {
+ if (it->Name == lName)
+@@ -3066,6 +3212,29 @@ void SlaOutputDev::beginMarkedContent(char *name, Dict
*properties)
+ if (!firstLayer)
+ currentLayer = m_doc->addLayer(lName, true);
+ firstLayer = false;
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 58, 0)
++ obj = properties->lookup((char*) "Visible");
++ if (obj.isBool())
++ m_doc->setLayerVisible(currentLayer,
obj.getBool());
++ obj = properties->lookup((char*) "Editable");
++ if (obj.isBool())
++ m_doc->setLayerLocked(currentLayer,
!obj.getBool());
++ obj = properties->lookup((char*) "Printed");
++ if (obj.isBool())
++ m_doc->setLayerPrintable(currentLayer,
obj.getBool());
++ obj = properties->lookup((char*)"Color");
++ if (obj.isArray())
++ {
++ Object obj1;
++ obj1 = obj.arrayGet(0);
++ int r = obj1.getNum() / 256;
++ obj1 = obj.arrayGet(1);
++ int g = obj1.getNum() / 256;
++ obj1 = obj.arrayGet(2);
++ int b = obj1.getNum() / 256;
++ m_doc->setLayerMarker(currentLayer, QColor(r,
g, b));
++ }
++#else
+ if (properties->lookup((char*)"Visible", &obj))
+ {
+ if (obj.isBool())
+@@ -3102,6 +3271,7 @@ void SlaOutputDev::beginMarkedContent(char *name, Dict
*properties)
+ }
+ obj.free();
+ }
++#endif
+ }
+ }
+ }
+--
+2.14.2
+
diff --git a/gnu/packages/patches/scribus-fix-poppler-packaging.patch
b/gnu/packages/patches/scribus-fix-poppler-packaging.patch
new file mode 100644
index 000000000..2659bafa6
--- /dev/null
+++ b/gnu/packages/patches/scribus-fix-poppler-packaging.patch
@@ -0,0 +1,95 @@
+diff --git a/.travis.yml b/.travis.yml
+index 6e9562b2c..f4273227a 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -31,8 +31,8 @@ before_install:
+ libhyphen-dev liblcms2-dev libpodofo-dev libtiff-dev libxml2-dev
+ python-all-dev zlib1g-dev qt58base qt58declarative
+ qt58tools libgraphicsmagick++1-dev
+- libopenscenegraph-dev libpoppler-dev libcairo2-dev libwpg-dev
libmspub-dev
+- libcdr-dev libvisio-dev libharfbuzz-dev libharfbuzz-icu0
++ libopenscenegraph-dev libpoppler-dev libpoppler-cpp-dev libcairo2-dev
libwpg-dev
++ libmspub-dev libcdr-dev libvisio-dev libharfbuzz-dev libharfbuzz-icu0
+ coreutils binutils python-tk;
+ fi
+ # OSX
+diff --git a/cmake/modules/FindPOPPLER.cmake b/cmake/modules/FindPOPPLER.cmake
+index d684bd503..899284db6 100644
+--- a/cmake/modules/FindPOPPLER.cmake
++++ b/cmake/modules/FindPOPPLER.cmake
+@@ -1,12 +1,16 @@
+ if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
+ include(UsePkgConfig)
+ PKGCONFIG(poppler _libPopplerIncDir _libPopplerLinkDir
_libPopplerLinkFlags _libPopplerCflags)
+- set(PKG_POPPLER_INCLUDE_DIRS ${_libPopplerIncDir})
+- set(PKG_POPPLER_LIBRARIES ${_libPopplerLinkDir})
+- else (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
+- include(FindPkgConfig)
++ set(PKG_POPPLER_INCLUDE_DIRS ${_libPopplerIncDir})
++ set(PKG_POPPLER_LIBRARIES ${_libPopplerLinkDir})
++else (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
++ include(FindPkgConfig)
+ pkg_search_module(POPPLER libpoppler>=0.19.0 poppler>=0.19.0)
+- endif (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
++ if (POPPLER_FOUND)
++ pkg_search_module(POPPLER_CPP REQUIRED libpoppler-cpp>=0.19.0
poppler-cpp>=0.19.0)
++ endif(POPPLER_FOUND)
++endif (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
++
+ find_path(POPPLER_INCLUDE_DIR
+ NAMES poppler-config.h
+ PATHS ${PKG_POPPLER_INCLUDE_DIRS} ${POPPLER_INCLUDE_DIRS}
/usr/local/include /usr/include
+@@ -14,16 +18,31 @@ find_path(POPPLER_INCLUDE_DIR
+ NO_DEFAULT_PATH
+ )
+
++find_path(POPPLER_CPP_INCLUDE_DIR
++ NAMES poppler-version.h
++ PATHS ${PKG_POPPLER_CPP_INCLUDE_DIRS} ${POPPLER_CPP_INCLUDE_DIRS}
/usr/local/include /usr/include
++ PATH_SUFFIXES poppler
++ NO_DEFAULT_PATH
++)
++
+ find_library(POPPLER_LIBRARY
+ NAMES libpoppler poppler
+ PATHS ${PKG_POPPLER_LIBRARIES} ${POPPLER_LIBRARY_DIRS} /usr/local/lib
/usr/lib /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
+ PATH_SUFFIXES poppler
+ NO_DEFAULT_PATH
+ )
++
++find_library(POPPLER_CPP_LIBRARY
++ NAMES libpoppler-cpp poppler-cpp
++ PATHS ${PKG_POPPLER_CPP_LIBRARIES} ${POPPLER_CPP_LIBRARY_DIRS}
/usr/local/lib /usr/lib /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
++ PATH_SUFFIXES poppler
++ NO_DEFAULT_PATH
++)
++
+ if (POPPLER_LIBRARY)
+- if (POPPLER_INCLUDE_DIR)
++ if (POPPLER_INCLUDE_DIR AND POPPLER_CPP_INCLUDE_DIR)
+ set( FOUND_POPPLER 1 )
+- set( POPPLER_LIBRARIES ${POPPLER_LIBRARY} )
+- set( POPPLER_INCLUDES ${POPPLER_INCLUDE_DIR})
+- endif (POPPLER_INCLUDE_DIR)
++ set( POPPLER_LIBRARIES ${POPPLER_LIBRARY} ${POPPLER_CPP_LIBRARY} )
++ set( POPPLER_INCLUDES ${POPPLER_INCLUDE_DIR} ${POPPLER_CPP_INCLUDE_DIR} )
++ endif (POPPLER_INCLUDE_DIR AND POPPLER_CPP_INCLUDE_DIR)
+ endif (POPPLER_LIBRARY)
+diff --git a/scribus/plugins/import/pdf/CMakeLists.txt
b/scribus/plugins/import/pdf/CMakeLists.txt
+index cd1610298..85760d96e 100644
+--- a/scribus/plugins/import/pdf/CMakeLists.txt
++++ b/scribus/plugins/import/pdf/CMakeLists.txt
+@@ -2,9 +2,9 @@ include_directories(
+ ${CMAKE_SOURCE_DIR}
+ ${CMAKE_SOURCE_DIR}/scribus
+ ${POPPLER_INCLUDE_DIR}
++ ${POPPLER_CPP_INCLUDE_DIR}
+ )
+
+-
+ set(IMPORTPDF_PLUGIN_UI_SRC
+ pdfimportoptions.ui
+ )
+--
+2.14.2
+
diff --git a/gnu/packages/scribus.scm b/gnu/packages/scribus.scm
index d48051ee3..3c5232ec3 100644
--- a/gnu/packages/scribus.scm
+++ b/gnu/packages/scribus.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <address@hidden>
;;; Copyright © 2016 Efraim Flashner <address@hidden>
+;;; Copyright © 2017 Nicolas Goaziou <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -24,53 +25,84 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
+ #:use-module (gnu packages boost)
#:use-module (gnu packages compression)
#:use-module (gnu packages cups)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
+ #:use-module (gnu packages imagemagick)
+ #:use-module (gnu packages libreoffice)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages pdf)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
- #:use-module (gnu packages imagemagick)
+ #:use-module (gnu packages tls)
#:use-module (gnu packages xml))
(define-public scribus
(package
(name "scribus")
- (version "1.5.2")
+ (version "1.5.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/scribus/scribus-devel/"
version "/scribus-" version ".tar.xz"))
(sha256
(base32
- "1xbl7h4x32y2nfhn57ivjziyvlnwadcbizqwfqx5srfsmqiyqppc"))))
+ "0kyp45vidxa3v35ic9592db4zk3m8al26vck38q5v7z14x3hp8vk"))
+ (patches
+ ;; These patches are necessary to build package with Poppler >=
+ ;; 0.58. They are extracted from trunk and will be included in
+ ;; Scribus 1.5.4.
+ (search-patches "scribus-fix-poppler-0.58-breakage.patch"
+ "scribus-fix-poppler-packaging.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Fix typo. Patch included in trunk. See
+ ;; <https://bugs.scribus.net/view.php?id=14850>.
+ '(substitute* "cmake/modules/FindLIBPODOFO.cmake"
+ (("find_package\\(OPENSSL\\)") "find_package(OpenSSL)")))))
(build-system cmake-build-system)
(arguments
- `(#:tests? #f ; no test target
+ `(#:tests? #f ;no test target
#:configure-flags
- '("-DCMAKE_CXX_FLAGS=-std=gnu++11")))
+ '("-DWANT_GRAPHICSMAGICK=1")))
(inputs
- `(("cairo" ,cairo)
+ `(("boost" ,boost)
+ ("cairo" ,cairo)
("cups" ,cups)
+ ("fontconfig" ,fontconfig)
+ ("freetype" ,freetype)
("graphicsmagick" ,graphicsmagick)
+ ("harfbuzz" ,harfbuzz)
+ ("hunspell" ,hunspell)
+ ("icu4c" ,icu4c)
("lcms" ,lcms)
+ ("libcdr" ,libcdr)
+ ("libfreehand" ,libfreehand)
("libjpeg" ,libjpeg)
+ ("libmspub" ,libmspub)
+ ("libpagemaker" ,libpagemaker)
+ ("librevenge" ,librevenge)
("libtiff" ,libtiff)
+ ("libvisio" ,libvisio)
("libxml2" ,libxml2)
- ("python" ,python-2)
- ("freetype" ,freetype)
+ ("openssl" ,openssl)
+ ("podofo" ,podofo)
+ ("poppler" ,poppler)
+ ("python" ,python-2) ;need Python library
("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
- ("qttools" ,qttools)
("zlib" ,zlib)))
(native-inputs
- `(("util-linux" ,util-linux)
- ("pkg-config" ,pkg-config)))
- (home-page "http://scribus.net")
+ `(("pkg-config" ,pkg-config)
+ ("qttools" ,qttools)
+ ("util-linux" ,util-linux)))
+ (home-page "https://www.scribus.net")
(synopsis "Desktop publishing and page layout program")
(description
"Scribus is a @dfn{desktop publishing} (DTP) application and can be used
--
2.14.2