diff options
author | markd <markd@pkgsrc.org> | 2017-12-31 00:41:19 +0000 |
---|---|---|
committer | markd <markd@pkgsrc.org> | 2017-12-31 00:41:19 +0000 |
commit | d8eead5f28c35bd1d1217f8c9b7afae513822bd0 (patch) | |
tree | 9c8e8d749614771c975c84f35a908750654f2afe | |
parent | e9a6704c6c35f5c1fb0e0a5409bfcdca1ee97d36 (diff) | |
download | pkgsrc-d8eead5f28c35bd1d1217f8c9b7afae513822bd0.tar.gz |
luatex: support for newer poppler, from ArchLinux
-rw-r--r-- | print/luatex/Makefile | 15 | ||||
-rw-r--r-- | print/luatex/distinfo | 6 | ||||
-rw-r--r-- | print/luatex/patches/patch-texk_web2c_luatexdir_image_pdftoepdf.w | 185 | ||||
-rw-r--r-- | print/luatex/patches/patch-texk_web2c_luatexdir_lua_lepdflib.cc | 439 | ||||
-rw-r--r-- | print/luatex/patches/patch-texk_web2c_luatexdir_lua_lpdfscannerlib.cc | 15 |
5 files changed, 648 insertions, 12 deletions
diff --git a/print/luatex/Makefile b/print/luatex/Makefile index f770059e000..a1251423ee1 100644 --- a/print/luatex/Makefile +++ b/print/luatex/Makefile @@ -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 @@ LICENSE= gnu-gpl-v2 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 @@ CONFIGURE_ARGS+= --disable-aleph --disable-etex --disable-pdftex \ --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 @@ CONFIGURE_ARGS+= --with-system-gmp \ --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 @@ CFLAGS.SunOS+= -std=gnu99 -D_XOPEN_SOURCE_EXTENDED=0 .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 --git a/print/luatex/distinfo b/print/luatex/distinfo index d197569e25e..d34f2ecbe3d 100644 --- a/print/luatex/distinfo +++ b/print/luatex/distinfo @@ -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 @@ Size (texlive-20170524-source.tar.xz) = 63483372 bytes 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 --git a/print/luatex/patches/patch-texk_web2c_luatexdir_image_pdftoepdf.w b/print/luatex/patches/patch-texk_web2c_luatexdir_image_pdftoepdf.w index a0e97631e5e..a2f1e5e30e6 100644 --- a/print/luatex/patches/patch-texk_web2c_luatexdir_image_pdftoepdf.w +++ b/print/luatex/patches/patch-texk_web2c_luatexdir_image_pdftoepdf.w @@ -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 @@ Gentoo which avoids this problem by using newlines. } 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 --git a/print/luatex/patches/patch-texk_web2c_luatexdir_lua_lepdflib.cc b/print/luatex/patches/patch-texk_web2c_luatexdir_lua_lepdflib.cc new file mode 100644 index 00000000000..6f4d6cd1397 --- /dev/null +++ b/print/luatex/patches/patch-texk_web2c_luatexdir_lua_lepdflib.cc @@ -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) + { +- int i; + udstruct *uin; + uin = (udstruct *) luaL_checkudata(L, 1, M_Array); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- i = ((Array *) uin->d)->incRef(); +- lua_pushinteger(L, i); ++ lua_pushinteger(L, 1); + return 1; + } + +@@ -685,8 +683,7 @@ static int m_Array_decRef(lua_State * L) + uin = (udstruct *) luaL_checkudata(L, 1, M_Array); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- i = ((Array *) uin->d)->decRef(); +- lua_pushinteger(L, i); ++ lua_pushinteger(L, 1); + return 1; + } + +@@ -702,7 +699,7 @@ static int m_Array_add(lua_State * L) + if ((uin->pd != NULL && uin->pd->pc != uin->pc) + || (uobj->pd != NULL && uobj->pd->pc != uobj->pc)) + pdfdoc_changed_error(L); +- ((Array *) uin->d)->add(((Object *) uobj->d)); ++ ((Array *) uin->d)->add(std::move(*((Object *) uobj->d))); + return 0; + } + +@@ -718,7 +715,7 @@ static int m_Array_get(lua_State * L) + if (i > 0 && i <= len) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Array *) uin->d)->get(i - 1, (Object *) uout->d); ++ *((Object *) uout->d) = ((Array *) uin->d)->get(i - 1); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -739,7 +736,7 @@ static int m_Array_getNF(lua_State * L) + if (i > 0 && i <= len) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Array *) uin->d)->getNF(i - 1, (Object *) uout->d); ++ *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -953,25 +950,21 @@ static const struct luaL_Reg Catalog_m[] + + static int m_Dict_incRef(lua_State * L) + { +- int i; + udstruct *uin; + uin = (udstruct *) luaL_checkudata(L, 1, M_Dict); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- i = ((Dict *) uin->d)->incRef(); +- lua_pushinteger(L, i); ++ lua_pushinteger(L, 1); + return 1; + } + + static int m_Dict_decRef(lua_State * L) + { +- int i; + udstruct *uin; + uin = (udstruct *) luaL_checkudata(L, 1, M_Dict); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- i = ((Dict *) uin->d)->decRef(); +- lua_pushinteger(L, i); ++ lua_pushinteger(L, 1); + return 1; + } + +@@ -986,7 +979,7 @@ static int m_Dict_add(lua_State * L) + pdfdoc_changed_error(L); + s = copyString(luaL_checkstring(L, 2)); + uobj = (udstruct *) luaL_checkudata(L, 3, M_Object); +- ((Dict *) uin->d)->add(s, ((Object *) uobj->d)); ++ ((Dict *) uin->d)->add(s, std::move(*((Object *) uobj->d))); + return 0; + } + +@@ -999,7 +992,7 @@ static int m_Dict_set(lua_State * L) + pdfdoc_changed_error(L); + s = luaL_checkstring(L, 2); + uobj = (udstruct *) luaL_checkudata(L, 3, M_Object); +- ((Dict *) uin->d)->set(s, ((Object *) uobj->d)); ++ ((Dict *) uin->d)->set(s, std::move(*((Object *) uobj->d))); + return 0; + } + +@@ -1027,7 +1020,7 @@ static int m_Dict_lookup(lua_State * L) + s = luaL_checkstring(L, 2); + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Dict *) uin->d)->lookup(s, (Object *) uout->d); ++ *((Object *) uout->d) = ((Dict *) uin->d)->lookup(s); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -1044,7 +1037,7 @@ static int m_Dict_lookupNF(lua_State * L + s = luaL_checkstring(L, 2); + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Dict *) uin->d)->lookupNF(s, (Object *) uout->d); ++ *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -1096,7 +1089,7 @@ static int m_Dict_getVal(lua_State * L) + if (i > 0 && i <= len) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Dict *) uin->d)->getVal(i - 1, (Object *) uout->d); ++ *((Object *) uout->d) = ((Dict *) uin->d)->getVal(i - 1); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -1117,7 +1110,7 @@ static int m_Dict_getValNF(lua_State * L + if (i > 0 && i <= len) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Dict *) uin->d)->getValNF(i - 1, (Object *) uout->d); ++ *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -1381,9 +1374,9 @@ static int m_Object_initBool(lua_State * + pdfdoc_changed_error(L); + luaL_checktype(L, 2, LUA_TBOOLEAN); + if (lua_toboolean(L, 2) != 0) +- ((Object *) uin->d)->initBool(gTrue); ++ *((Object *) uin->d) = Object(gTrue); + else +- ((Object *) uin->d)->initBool(gFalse); ++ *((Object *) uin->d) = Object(gFalse); + return 0; + } + +@@ -1395,7 +1388,7 @@ static int m_Object_initInt(lua_State * + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); + i = luaL_checkint(L, 2); +- ((Object *) uin->d)->initInt(i); ++ *((Object *) uin->d) = Object(i); + return 0; + } + +@@ -1407,7 +1400,7 @@ static int m_Object_initReal(lua_State * + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); + d = luaL_checknumber(L, 2); +- ((Object *) uin->d)->initReal(d); ++ *((Object *) uin->d) = Object(d); + return 0; + } + +@@ -1422,7 +1415,7 @@ static int m_Object_initString(lua_State + pdfdoc_changed_error(L); + s = luaL_checklstring(L, 2, &len); + gs = new GooString(s, len); +- ((Object *) uin->d)->initString(gs); ++ *((Object *) uin->d) = Object(gs); + return 0; + } + +@@ -1434,7 +1427,7 @@ static int m_Object_initName(lua_State * + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); + s = luaL_checkstring(L, 2); +- ((Object *) uin->d)->initName(s); ++ *((Object *) uin->d) = Object(objName, s); + return 0; + } + +@@ -1444,13 +1437,14 @@ static int m_Object_initNull(lua_State * + uin = (udstruct *) luaL_checkudata(L, 1, M_Object); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- ((Object *) uin->d)->initNull(); ++ *((Object *) uin->d) = Object(objNull); + return 0; + } + + static int m_Object_initArray(lua_State * L) + { + udstruct *uin, *uxref; ++ Array *a; + uin = (udstruct *) luaL_checkudata(L, 1, M_Object); + uxref = (udstruct *) luaL_checkudata(L, 2, M_XRef); + if (uin->pd != NULL && uxref->pd != NULL && uin->pd != uxref->pd) +@@ -1458,7 +1452,8 @@ static int m_Object_initArray(lua_State + if ((uin->pd != NULL && uin->pd->pc != uin->pc) + || (uxref->pd != NULL && uxref->pd->pc != uxref->pc)) + pdfdoc_changed_error(L); +- ((Object *) uin->d)->initArray((XRef *) uxref->d); ++ a = new Array((XRef *) uxref->d); ++ *((Object *) uin->d) = Object(a); + return 0; + } + +@@ -1469,6 +1464,7 @@ static int m_Object_initArray(lua_State + static int m_Object_initDict(lua_State * L) + { + udstruct *uin, *uxref; ++ Dict *d; + uin = (udstruct *) luaL_checkudata(L, 1, M_Object); + uxref = (udstruct *) luaL_checkudata(L, 2, M_XRef); + if (uin->pd != NULL && uxref->pd != NULL && uin->pd != uxref->pd) +@@ -1476,7 +1472,8 @@ static int m_Object_initDict(lua_State * + if ((uin->pd != NULL && uin->pd->pc != uin->pc) + || (uxref->pd != NULL && uxref->pd->pc != uxref->pc)) + pdfdoc_changed_error(L); +- ((Object *) uin->d)->initDict((XRef *) uxref->d); ++ d = new Dict((XRef *) uxref->d); ++ *((Object *) uin->d) = Object(d); + return 0; + } + +@@ -1490,7 +1487,7 @@ static int m_Object_initStream(lua_State + if ((uin->pd != NULL && uin->pd->pc != uin->pc) + || (ustream->pd != NULL && ustream->pd->pc != ustream->pc)) + pdfdoc_changed_error(L); +- ((Object *) uin->d)->initStream((Stream *) ustream->d); ++ *((Object *) uin->d) = Object((Stream *) ustream->d); + return 0; + } + +@@ -1503,7 +1500,7 @@ static int m_Object_initRef(lua_State * + pdfdoc_changed_error(L); + num = luaL_checkint(L, 2); + gen = luaL_checkint(L, 3); +- ((Object *) uin->d)->initRef(num, gen); ++ *((Object *) uin->d) = Object(num, gen); + return 0; + } + +@@ -1515,7 +1512,7 @@ static int m_Object_initCmd(lua_State * + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); + s = luaL_checkstring(L, 2); +- ((Object *) uin->d)->initCmd(CHARP_CAST s); ++ *((Object *) uin->d) = Object(objCmd, CHARP_CAST s); + return 0; + } + +@@ -1525,7 +1522,7 @@ static int m_Object_initError(lua_State + uin = (udstruct *) luaL_checkudata(L, 1, M_Object); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- ((Object *) uin->d)->initError(); ++ *((Object *) uin->d) = Object(objError); + return 0; + } + +@@ -1535,7 +1532,7 @@ static int m_Object_initEOF(lua_State * + uin = (udstruct *) luaL_checkudata(L, 1, M_Object); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- ((Object *) uin->d)->initEOF(); ++ *((Object *) uin->d) = Object(objEOF); + return 0; + } + +@@ -1551,7 +1548,7 @@ static int m_Object_fetch(lua_State * L) + pdfdoc_changed_error(L); + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Object *) uin->d)->fetch((XRef *) uxref->d, (Object *) uout->d); ++ *((Object *) uout->d) = ((Object *) uin->d)->fetch((XRef *) uxref->d); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -1816,7 +1813,7 @@ static int m_Object_arrayAdd(lua_State * + pdfdoc_changed_error(L); + if (!((Object *) uin->d)->isArray()) + luaL_error(L, "Object is not an Array"); +- ((Object *) uin->d)->arrayAdd((Object *) uobj->d); ++ ((Object *) uin->d)->arrayAdd(std::move(*((Object *) uobj->d))); + return 0; + } + +@@ -1833,7 +1830,7 @@ static int m_Object_arrayGet(lua_State * + if (i > 0 && i <= len) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Object *) uin->d)->arrayGet(i - 1, (Object *) uout->d); ++ *((Object *) uout->d) = ((Object *) uin->d)->arrayGet(i - 1); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -1857,7 +1854,7 @@ static int m_Object_arrayGetNF(lua_State + if (i > 0 && i <= len) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Object *) uin->d)->arrayGetNF(i - 1, (Object *) uout->d); ++ *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -1897,7 +1894,7 @@ static int m_Object_dictAdd(lua_State * + pdfdoc_changed_error(L); + if (!((Object *) uin->d)->isDict()) + luaL_error(L, "Object is not a Dict"); +- ((Object *) uin->d)->dictAdd(copyString(s), (Object *) uobj->d); ++ ((Object *) uin->d)->dictAdd(copyString(s), std::move(*((Object *) uobj->d))); + return 0; + } + +@@ -1915,7 +1912,7 @@ static int m_Object_dictSet(lua_State * + pdfdoc_changed_error(L); + if (!((Object *) uin->d)->isDict()) + luaL_error(L, "Object is not a Dict"); +- ((Object *) uin->d)->dictSet(s, (Object *) uobj->d); ++ ((Object *) uin->d)->dictSet(s, std::move(*((Object *) uobj->d))); + return 0; + } + +@@ -1930,7 +1927,7 @@ static int m_Object_dictLookup(lua_State + if (((Object *) uin->d)->isDict()) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Object *) uin->d)->dictLookup(s, (Object *) uout->d); ++ *((Object *) uout->d) = ((Object *) uin->d)->dictLookup(s); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -1950,7 +1947,7 @@ static int m_Object_dictLookupNF(lua_Sta + if (((Object *) uin->d)->isDict()) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Object *) uin->d)->dictLookupNF(s, (Object *) uout->d); ++ *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -1991,7 +1988,7 @@ static int m_Object_dictGetVal(lua_State + if (i > 0 && i <= len) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Object *) uin->d)->dictGetVal(i - 1, (Object *) uout->d); ++ *((Object *) uout->d) = ((Object *) uin->d)->dictGetVal(i - 1); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -2015,7 +2012,7 @@ static int m_Object_dictGetValNF(lua_Sta + if (i > 0 && i <= len) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((Object *) uin->d)->dictGetValNF(i - 1, (Object *) uout->d); ++ *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -2243,7 +2240,7 @@ m_poppler_get_poppler(Page, Stream, getM + m_poppler_get_poppler(Page, Dict, getPieceInfo); + m_poppler_get_poppler(Page, Dict, getSeparationInfo); + m_poppler_get_poppler(Page, Dict, getResourceDict); +-m_poppler_get_OBJECT(Page, getAnnots); ++m_poppler_get_OBJECT(Page, getAnnotsObject); + + m_poppler_get_OBJECT(Page, getContents); + +@@ -2270,7 +2267,7 @@ static const struct luaL_Reg Page_m[] = + {"getPieceInfo", m_Page_getPieceInfo}, + {"getSeparationInfo", m_Page_getSeparationInfo}, + {"getResourceDict", m_Page_getResourceDict}, +- {"getAnnots", m_Page_getAnnots}, ++ {"getAnnots", m_Page_getAnnotsObject}, + {"getContents", m_Page_getContents}, + {"__tostring", m_Page__tostring}, + {NULL, NULL} // sentinel +@@ -2520,7 +2517,7 @@ static int m_PDFDoc_getDocInfo(lua_State + if (((PdfDocument *) uin->d)->doc->getXRef()->isOk()) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((PdfDocument *) uin->d)->doc->getDocInfo((Object *) uout->d); ++ *((Object *) uout->d) = ((PdfDocument *) uin->d)->doc->getDocInfo(); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -2538,7 +2535,7 @@ static int m_PDFDoc_getDocInfoNF(lua_Sta + if (((PdfDocument *) uin->d)->doc->getXRef()->isOk()) { + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((PdfDocument *) uin->d)->doc->getDocInfoNF((Object *) uout->d); ++ *((Object *) uout->d) = ((PdfDocument *) uin->d)->doc->getDocInfoNF(); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -2841,7 +2838,7 @@ static int m_Attribute_getValue(lua_Stat + uout = new_Object_userdata(L); + uout->d = new Object(); + origin = (Object *) (((Attribute *) uin->d)->getValue()); +- origin->copy ( ((Object *)uout->d) ); ++ *((Object *) uout->d) = origin->copy(); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -3320,7 +3317,7 @@ static int m_StructTreeRoot_findParentEl + parent = root->findParentElement(i-1); + if (parent != NULL) { + uout = new_StructElement_userdata(L); +- uout->d = new StructElement( *parent ); ++ uout->d = (StructElement *) parent; + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; +@@ -3370,7 +3367,7 @@ static int m_XRef_fetch(lua_State * L) + gen = luaL_checkint(L, 3); + uout = new_Object_userdata(L); + uout->d = new Object(); +- ((XRef *) uin->d)->fetch(num, gen, (Object *) uout->d); ++ *((Object *) uout->d) = ((XRef *) uin->d)->fetch(num, gen); + uout->atype = ALLOC_LEPDF; + uout->pc = uin->pc; + uout->pd = uin->pd; diff --git a/print/luatex/patches/patch-texk_web2c_luatexdir_lua_lpdfscannerlib.cc b/print/luatex/patches/patch-texk_web2c_luatexdir_lua_lpdfscannerlib.cc new file mode 100644 index 00000000000..a6db6e23595 --- /dev/null +++ b/print/luatex/patches/patch-texk_web2c_luatexdir_lua_lpdfscannerlib.cc @@ -0,0 +1,15 @@ +$NetBSD: patch-texk_web2c_luatexdir_lua_lpdfscannerlib.cc,v 1.1 2017/12/31 00:41:19 markd Exp $ + +Add support for newer poppler's from ArchLinux + +--- texk/web2c/luatexdir/lua/lpdfscannerlib.cc.orig 2016-11-25 18:09:15.000000000 +0000 ++++ texk/web2c/luatexdir/lua/lpdfscannerlib.cc +@@ -634,7 +634,7 @@ static int scanner_scan(lua_State * L) + int i; + for (i=0;i<count;i++) { + Object *val = new Object(); +- arrayref->get(i, val); ++ *val = arrayref->get(i); + if (val->isStream()) { + ObjectList *rover = self->_streams; + ObjectList *item = (ObjectList *)priv_xmalloc (sizeof(ObjectList)); |