pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/print/luatex luatex: support for newer poppler, from A...
details: https://anonhg.NetBSD.org/pkgsrc/rev/c4422b72092c
branches: trunk
changeset: 373346:c4422b72092c
user: markd <markd%pkgsrc.org@localhost>
date: Sun Dec 31 00:41:19 2017 +0000
description:
luatex: support for newer poppler, from ArchLinux
diffstat:
print/luatex/Makefile | 15 +-
print/luatex/distinfo | 6 +-
print/luatex/patches/patch-texk_web2c_luatexdir_image_pdftoepdf.w | 185 ++++-
print/luatex/patches/patch-texk_web2c_luatexdir_lua_lepdflib.cc | 439 ++++++++++
print/luatex/patches/patch-texk_web2c_luatexdir_lua_lpdfscannerlib.cc | 15 +
5 files changed, 648 insertions(+), 12 deletions(-)
diffs (truncated from 740 to 300 lines):
diff -r ec786ad1ffaf -r c4422b72092c print/luatex/Makefile
--- a/print/luatex/Makefile Sun Dec 31 00:36:04 2017 +0000
+++ b/print/luatex/Makefile Sun Dec 31 00:41:19 2017 +0000
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.63 2017/12/31 00:36:04 markd Exp $
+# $NetBSD: Makefile,v 1.64 2017/12/31 00:41:19 markd Exp $
DISTNAME= texlive-20170524-source
PKGNAME= luatex-1.0.4
-PKGREVISION= 5
+PKGREVISION= 6
CATEGORIES= print
MASTER_SITES= ftp://tug.org/historic/systems/texlive/2017/
EXTRACT_SUFX= .tar.xz
@@ -15,13 +15,12 @@
EXTRACT_ELEMENTS= ${DISTNAME}/build-aux \
${DISTNAME}/libs/lua52 \
${DISTNAME}/libs/luajit \
- ${DISTNAME}/libs/poppler \
${DISTNAME}/texk/web2c
GNU_CONFIGURE= yes
USE_LANGUAGES= c c++11
USE_LIBTOOL= yes
-USE_TOOLS+= gmake lex perl pkg-config yacc
+USE_TOOLS+= gmake gsed lex perl pkg-config yacc
CONFIGURE_ARGS+= --disable-aleph --disable-etex --disable-pdftex \
--enable-luatex --disable-mf --disable-mf-nowin \
--with-x=no \
@@ -30,8 +29,7 @@
--disable-ptex --disable-eptex --disable-uptex --disable-euptex \
--disable-web-progs \
--enable-web2c --disable-xetex
-#CONFIGURE_ARGS+= --with-system-poppler
-#CONFIGURE_ARGS+= --with-system-xpdf
+CONFIGURE_ARGS+= --with-system-poppler
CONFIGURE_ARGS+= \
--with-fontconfig-includes=${BUILDLINK_PREFIX.fontconfig}/include \
--with-fontconfig-libdir=${BUILDLINK_PREFIX.fontconfig}/lib
@@ -52,7 +50,6 @@
--with-gmp-libdir=${BUILDLINK_PREFIX.gmp}/lib
CONFIGURE_DIRS= libs/lua52
-CONFIGURE_DIRS+= libs/poppler
CONFIGURE_DIRS+= texk/web2c
INSTALLATION_DIRS+= bin lib
@@ -71,8 +68,8 @@
.include "../../math/mpfr/buildlink3.mk"
BUILDLINK_API_DEPENDS.kpathsea+= kpathsea>=6.2.1
.include "../../print/kpathsea/buildlink3.mk"
-#.include "../../print/poppler/buildlink3.mk"
-#.include "../../print/poppler-includes/buildlink3.mk"
+.include "../../print/poppler/buildlink3.mk"
+.include "../../print/poppler-includes/buildlink3.mk"
.include "../../x11/pixman/buildlink3.mk"
pre-configure:
diff -r ec786ad1ffaf -r c4422b72092c print/luatex/distinfo
--- a/print/luatex/distinfo Sun Dec 31 00:36:04 2017 +0000
+++ b/print/luatex/distinfo Sun Dec 31 00:41:19 2017 +0000
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.27 2017/12/31 00:36:04 markd Exp $
+$NetBSD: distinfo,v 1.28 2017/12/31 00:41:19 markd Exp $
SHA1 (texlive-20170524-source.tar.xz) = 1c1383ddb1b871c6b8ce49a4ae3c1a33d454a7b6
RMD160 (texlive-20170524-source.tar.xz) = a8430c19fe1727cf308fe03e5838105260c0d71e
@@ -7,6 +7,8 @@
SHA1 (patch-ac) = 1ee83833a03eace2eada892130ddb2198e829f3d
SHA1 (patch-libs_luajit_LuaJIT-src_src_host_buildvm__asm.c) = 34fa742ed696f97df637c5086bf1faf3d718cb69
SHA1 (patch-libs_luajit_LuaJIT-src_src_vm__x86.dasc) = 491d33adbbaab8b2b81a65a8d7ba30aee775b75f
-SHA1 (patch-texk_web2c_luatexdir_image_pdftoepdf.w) = 9f7563e5d3011c183092c9eb157560f912113d77
+SHA1 (patch-texk_web2c_luatexdir_image_pdftoepdf.w) = 7ce1ce5fd8cb277229d43c1408d34189ae741657
+SHA1 (patch-texk_web2c_luatexdir_lua_lepdflib.cc) = 2077e2f681d63d48b54eac5ef9751447dcc3ea8f
+SHA1 (patch-texk_web2c_luatexdir_lua_lpdfscannerlib.cc) = ddb11816de22cc7b3f286b3a7838dcf6debbf892
SHA1 (patch-texk_web2c_luatexdir_luaffi_ctype.c) = 57d51564d5dd0200be10154216158fe801d7c630
SHA1 (patch-texk_web2c_luatexdir_luaffi_ffi.h) = 2fbf91152fc3438d8e989d5f5f95877faaec6790
diff -r ec786ad1ffaf -r c4422b72092c print/luatex/patches/patch-texk_web2c_luatexdir_image_pdftoepdf.w
--- a/print/luatex/patches/patch-texk_web2c_luatexdir_image_pdftoepdf.w Sun Dec 31 00:36:04 2017 +0000
+++ b/print/luatex/patches/patch-texk_web2c_luatexdir_image_pdftoepdf.w Sun Dec 31 00:41:19 2017 +0000
@@ -1,9 +1,11 @@
-$NetBSD: patch-texk_web2c_luatexdir_image_pdftoepdf.w,v 1.2 2017/08/21 11:14:26 jperkin Exp $
+$NetBSD: patch-texk_web2c_luatexdir_image_pdftoepdf.w,v 1.3 2017/12/31 00:41:19 markd Exp $
The ctangle tex-to-C generator strips whitespace, resulting in "C++11 requires
a space between literal and identifier" failures. Pull in hacky patch from
Gentoo which avoids this problem by using newlines.
+Add support for newer poppler's from ArchLinux
+
--- texk/web2c/luatexdir/image/pdftoepdf.w.orig 2016-11-25 18:09:14.000000000 +0000
+++ texk/web2c/luatexdir/image/pdftoepdf.w
@@ -71,7 +71,11 @@ static char *get_file_checksum(const cha
@@ -19,3 +21,184 @@
} else {
switch (fe) {
case FE_FAIL:
+@@ -224,7 +228,7 @@ PdfDocument *refMemStreamPdfDocument(cha
+ free(checksum);
+ }
+ if (pdf_doc->doc == NULL) {
+- docmemstream = new MemStream( docstream,0,streamsize, obj.initNull() );
++ docmemstream = new MemStream( docstream,0,streamsize, Object(objNull) );
+ doc = new PDFDoc(docmemstream); /* takes ownership of docmemstream */
+ pdf_doc->pc++;
+ if (!doc->isOk() || !doc->okToPrint()) {
+@@ -408,9 +412,8 @@ static void copyArray(PDF pdf, PdfDocume
+ Object obj1;
+ pdf_begin_array(pdf);
+ for (i = 0, l = array->getLength(); i < l; ++i) {
+- array->getNF(i, &obj1);
++ obj1 = array->getNF(i);
+ copyObject(pdf, pdf_doc, &obj1);
+- obj1.free();
+ }
+ pdf_end_array(pdf);
+ }
+@@ -422,9 +425,8 @@ static void copyDict(PDF pdf, PdfDocumen
+ pdf_begin_dict(pdf);
+ for (i = 0, l = dict->getLength(); i < l; ++i) {
+ copyName(pdf, dict->getKey(i));
+- dict->getValNF(i, &obj1);
++ obj1 = dict->getValNF(i);
+ copyObject(pdf, pdf_doc, &obj1);
+- obj1.free();
+ }
+ pdf_end_dict(pdf);
+ }
+@@ -510,13 +512,12 @@ static void writeRefs(PDF pdf, PdfDocume
+ PDFDoc *doc = pdf_doc->doc;
+ xref = doc->getXRef();
+ for (r = pdf_doc->inObjList; r != NULL;) {
+- xref->fetch(r->ref.num, r->ref.gen, &obj1);
++ obj1 = xref->fetch(r->ref.num, r->ref.gen);
+ if (obj1.isStream())
+ pdf_begin_obj(pdf, r->num, OBJSTM_NEVER);
+ else
+ pdf_begin_obj(pdf, r->num, 2);
+ copyObject(pdf, pdf_doc, &obj1);
+- obj1.free();
+ pdf_end_obj(pdf);
+ n = r->next;
+ delete r;
+@@ -740,7 +741,7 @@ void write_epdf(PDF pdf, image_dict * id
+ catalog = doc->getCatalog();
+ page = catalog->getPage(img_pagenum(idict));
+ pageref = catalog->getPageRef(img_pagenum(idict));
+- doc->getXRef()->fetch(pageref->num, pageref->gen, &pageobj);
++ pageobj = doc->getXRef()->fetch(pageref->num, pageref->gen);
+ pageDict = pageobj.getDict();
+ /* write the Page header */
+ pdf_begin_obj(pdf, img_objnum(idict), OBJSTM_NEVER);
+@@ -757,12 +758,11 @@ void write_epdf(PDF pdf, image_dict * id
+ pdf_dict_add_int(pdf, "PTEX.PageNumber", (int) img_pagenum(idict));
+ }
+ if ((suppress_optional_info & 8) == 0) {
+- doc->getDocInfoNF(&obj1);
++ obj1 = doc->getDocInfoNF();
+ if (obj1.isRef()) {
+ /* the info dict must be indirect (PDF Ref p. 61) */
+ pdf_dict_add_ref(pdf, "PTEX.InfoDict", addInObj(pdf, pdf_doc, obj1.getRef()));
+ }
+- obj1.free();
+ }
+ if (img_is_bbox(idict)) {
+ bbox[0] = sp2bp(img_bbox(idict)[0]);
+@@ -788,19 +788,17 @@ void write_epdf(PDF pdf, image_dict * id
+ Now all relevant parts of the Page dictionary are copied. Metadata validity
+ check is needed(as a stream it must be indirect).
+ */
+- pageDict->lookupNF("Metadata", &obj1);
++ obj1 = pageDict->lookupNF("Metadata");
+ if (!obj1.isNull() && !obj1.isRef())
+ formatted_warning("pdf inclusion","/Metadata must be indirect object");
+- obj1.free();
+ /* copy selected items in Page dictionary */
+ for (i = 0; pagedictkeys[i] != NULL; i++) {
+- pageDict->lookupNF(pagedictkeys[i], &obj1);
++ obj1 = pageDict->lookupNF(pagedictkeys[i]);
+ if (!obj1.isNull()) {
+ pdf_add_name(pdf, pagedictkeys[i]);
+ /* preserves indirection */
+ copyObject(pdf, pdf_doc, &obj1);
+ }
+- obj1.free();
+ }
+ /*
+ If there are no Resources in the Page dict of the embedded page,
+@@ -808,32 +806,28 @@ void write_epdf(PDF pdf, image_dict * id
+ PDF file, climbing up the tree until the Resources are found.
+ (This fixes a problem with Scribus 1.3.3.14.)
+ */
+- pageDict->lookupNF("Resources", &obj1);
++ obj1 = pageDict->lookupNF("Resources");
+ if (obj1.isNull()) {
+ op1 = &pagesobj1;
+ op2 = &pagesobj2;
+- pageDict->lookup("Parent", op1);
++ *op1 = pageDict->lookup("Parent");
+ while (op1->isDict()) {
+- obj1.free();
+- op1->dictLookupNF("Resources", &obj1);
++ obj1 = op1->dictLookupNF("Resources");
+ if (!obj1.isNull()) {
+ pdf_add_name(pdf, "Resources");
+ copyObject(pdf, pdf_doc, &obj1);
+ break;
+ }
+- op1->dictLookup("Parent", op2);
++ *op2 = op1->dictLookup("Parent");
+ optmp = op1;
+ op1 = op2;
+ op2 = optmp;
+- op2->free();
+ };
+ if (!op1->isDict())
+ formatted_warning("pdf inclusion","Page /Resources missing");
+- op1->free();
+ }
+- obj1.free();
+ /* Write the Page contents. */
+- page->getContents(&contents);
++ contents = page->getContents();
+ if (contents.isStream()) {
+ /*
+ Variant A: get stream and recompress under control of \pdfcompresslevel
+@@ -844,27 +838,23 @@ void write_epdf(PDF pdf, image_dict * id
+
+ Variant B: copy stream without recompressing
+ */
+- contents.streamGetDict()->lookup("F", &obj1);
++ obj1 = contents.streamGetDict()->lookup("F");
+ if (!obj1.isNull()) {
+ normal_error("pdf inclusion","unsupported external stream");
+ }
+- obj1.free();
+- contents.streamGetDict()->lookup("Length", &obj1);
++ obj1 = contents.streamGetDict()->lookup("Length");
+ pdf_add_name(pdf, "Length");
+ copyObject(pdf, pdf_doc, &obj1);
+- obj1.free();
+- contents.streamGetDict()->lookup("Filter", &obj1);
++ obj1 = contents.streamGetDict()->lookup("Filter");
+ if (!obj1.isNull()) {
+ pdf_add_name(pdf, "Filter");
+ copyObject(pdf, pdf_doc, &obj1);
+- obj1.free();
+- contents.streamGetDict()->lookup("DecodeParms", &obj1);
++ obj1 = contents.streamGetDict()->lookup("DecodeParms");
+ if (!obj1.isNull()) {
+ pdf_add_name(pdf, "DecodeParms");
+ copyObject(pdf, pdf_doc, &obj1);
+ }
+ }
+- obj1.free();
+ pdf_end_dict(pdf);
+ pdf_begin_stream(pdf);
+ copyStreamStream(pdf, contents.getStream()->getUndecodedStream());
+@@ -875,8 +865,8 @@ void write_epdf(PDF pdf, image_dict * id
+ pdf_end_dict(pdf);
+ pdf_begin_stream(pdf);
+ for (i = 0, l = contents.arrayGetLength(); i < l; ++i) {
+- copyStreamStream(pdf, (contents.arrayGet(i, &obj1))->getStream());
+- obj1.free();
++ obj1 = contents.arrayGet(i);
++ copyStreamStream(pdf, obj1.getStream());
+ if (i < (l - 1)) {
+ /*
+ Put a space between streams to be on the safe side (streams
+@@ -897,8 +887,6 @@ void write_epdf(PDF pdf, image_dict * id
+ }
+ /* write out all indirect objects */
+ writeRefs(pdf, pdf_doc);
+- contents.free();
+- pageobj.free();
+ /*
+ unrefPdfDocument() must come after contents.free() and pageobj.free()!
+ TH: The next line makes repeated pdf inclusion unacceptably slow
diff -r ec786ad1ffaf -r c4422b72092c print/luatex/patches/patch-texk_web2c_luatexdir_lua_lepdflib.cc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/print/luatex/patches/patch-texk_web2c_luatexdir_lua_lepdflib.cc Sun Dec 31 00:41:19 2017 +0000
@@ -0,0 +1,439 @@
+$NetBSD: patch-texk_web2c_luatexdir_lua_lepdflib.cc,v 1.3 2017/12/31 00:41:19 markd Exp $
+
+Add support for newer poppler's from ArchLinux
+
+--- texk/web2c/luatexdir/lua/lepdflib.cc.orig 2017-03-11 01:04:06.000000000 +0000
++++ texk/web2c/luatexdir/lua/lepdflib.cc
+@@ -538,7 +538,7 @@ static int m_##in##_##function(lua_State
+ pdfdoc_changed_error(L); \
+ uout = new_Object_userdata(L); \
+ uout->d = new Object(); \
+- ((in *) uin->d)->function((Object *) uout->d); \
++ *((Object *)uout->d) = ((in *) uin->d)->function(); \
+ uout->atype = ALLOC_LEPDF; \
+ uout->pc = uin->pc; \
+ uout->pd = uin->pd; \
+@@ -668,13 +668,11 @@ static const struct luaL_Reg Annots_m[]
+
+ static int m_Array_incRef(lua_State * L)
Home |
Main Index |
Thread Index |
Old Index