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