diff --git a/packages/texlive-bin/build.sh b/packages/texlive-bin/build.sh index 2329fe811..925e98ca8 100644 --- a/packages/texlive-bin/build.sh +++ b/packages/texlive-bin/build.sh @@ -2,9 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://www.tug.org/texlive/ TERMUX_PKG_DESCRIPTION="TeX Live is a distribution of the TeX typesetting system. This package contains architecture dependent binaries." TERMUX_PKG_MAINTAINER="Henrik Grimler @Grimler91" TERMUX_PKG_VERSION=20180414 -TERMUX_PKG_REVISION=5 -TERMUX_PKG_SRCURL=ftp://tug.org/texlive/historic/${TERMUX_PKG_VERSION:0:4}/texlive-${TERMUX_PKG_VERSION}-source.tar.xz -TERMUX_PKG_SHA256="fe0036d5f66708ad973cdc4e413c0bb9ee2385224481f7b0fb229700a0891e4e" +TERMUX_PKG_REVISION=6 +TERMUX_PKG_SHA256=b6251e2edefb174ca402109d7f82df3cb98e45d367fada627a61de7ed2d4380d +# FIXME: update version format and SRCURL when texlive 2019 is released +TERMUX_PKG_SRCURL=https://github.com/TeX-Live/texlive-source/archive/texlive-2018.2.tar.gz TERMUX_PKG_DEPENDS="freetype, libpng, libgd, libgmp, libmpfr, libicu, liblua, poppler, libgraphite, harfbuzz-icu, teckit" TERMUX_PKG_BUILD_DEPENDS="icu-devtools" TERMUX_PKG_BREAKS="texlive (<< 20180414)" diff --git a/packages/texlive-bin/luatex-poppler-0.64.patch b/packages/texlive-bin/luatex-poppler-0.64.patch deleted file mode 100644 index 9741d4f21..000000000 --- a/packages/texlive-bin/luatex-poppler-0.64.patch +++ /dev/null @@ -1,35 +0,0 @@ ---- ../pdftoepdf.w 2018-04-30 19:38:03.041290335 +0000 -+++ ./texk/web2c/luatexdir/image/pdftoepdf.w 2018-04-30 20:27:50.631512751 +0000 -@@ -472,10 +472,10 @@ - break; - */ - case objString: -- copyString(pdf, obj->getString()); -+ copyString(pdf, (GooString *)obj->getString()); - break; - case objName: -- copyName(pdf, obj->getName()); -+ copyName(pdf, (char *)obj->getName()); - break; - case objNull: - pdf_add_null(pdf); ---- ../lepdflib.cc 2018-04-30 19:37:10.553331209 +0000 -+++ ./texk/web2c/luatexdir/lua/lepdflib.cc 2018-04-30 20:40:55.079059154 +0000 -@@ -674,7 +674,7 @@ - uin = (udstruct *) luaL_checkudata(L, 1, M_##in); \ - if (uin->pd != NULL && uin->pd->pc != uin->pc) \ - pdfdoc_changed_error(L); \ -- gs = ((in *) uin->d)->function(); \ -+ gs = (GooString *)((in *) uin->d)->function(); \ - if (gs != NULL) \ - lua_pushlstring(L, gs->getCString(), gs->getLength()); \ - else \ -@@ -1813,7 +1813,7 @@ - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); - if (((Object *) uin->d)->isString()) { -- gs = ((Object *) uin->d)->getString(); -+ gs = (GooString *)((Object *) uin->d)->getString(); - lua_pushlstring(L, gs->getCString(), gs->getLength()); - } else - lua_pushnil(L); diff --git a/packages/texlive-bin/luatex-poppler-0.72.patch b/packages/texlive-bin/luatex-poppler-0.72.patch new file mode 100644 index 000000000..72b0d96e3 --- /dev/null +++ b/packages/texlive-bin/luatex-poppler-0.72.patch @@ -0,0 +1,315 @@ +Patch assimilated from archlinux + +diff -u -r ../texlive-source-texlive-2018.2.orig/texk/web2c/luatexdir/image/pdftoepdf.w ./texk/web2c/luatexdir/image/pdftoepdf.w +--- ../texlive-source-texlive-2018.2.orig/texk/web2c/luatexdir/image/pdftoepdf.w 2018-12-23 10:51:16.142985550 +0100 ++++ ./texk/web2c/luatexdir/image/pdftoepdf.w 2018-12-23 10:56:23.056297860 +0100 +@@ -35,7 +35,7 @@ + + extern void md5(Guchar *msg, int msgLen, Guchar *digest); + +-static GBool isInit = gFalse; ++static bool isInit = false; + + /* Maintain AVL tree of all PDF files for embedding */ + +@@ -363,10 +363,10 @@ + + static void copyString(PDF pdf, GooString * string) + { +- char *p; ++ const char *p; + unsigned char c; + size_t i, l; +- p = string->getCString(); ++ p = string->c_str(); + l = (size_t) string->getLength(); + if (pdf->cave) + pdf_out(pdf, ' '); +@@ -393,7 +393,7 @@ + pdf->cave = true; + } + +-static void copyName(PDF pdf, char *s) ++static void copyName(PDF pdf, const char *s) + { + pdf_out(pdf, '/'); + for (; *s != 0; s++) { +@@ -468,11 +468,11 @@ + break; + /* + case objNum: +- GBool isNum() { return type == objInt || type == objReal; } ++ bool isNum() { return type == objInt || type == objReal; } + break; + */ + case objString: +- copyString(pdf, obj->getString()); ++ copyString(pdf, (GooString *)obj->getString()); + break; + case objName: + copyName(pdf, obj->getName()); +@@ -531,22 +531,22 @@ + { + switch (pagebox_spec) { + case PDF_BOX_SPEC_MEDIA: +- return page->getMediaBox(); ++ return (PDFRectangle *) page->getMediaBox(); + break; + case PDF_BOX_SPEC_CROP: +- return page->getCropBox(); ++ return (PDFRectangle *) page->getCropBox(); + break; + case PDF_BOX_SPEC_BLEED: +- return page->getBleedBox(); ++ return (PDFRectangle *) page->getBleedBox(); + break; + case PDF_BOX_SPEC_TRIM: +- return page->getTrimBox(); ++ return (PDFRectangle *) page->getTrimBox(); + break; + case PDF_BOX_SPEC_ART: +- return page->getArtBox(); ++ return (PDFRectangle *) page->getArtBox(); + break; + default: +- return page->getMediaBox(); ++ return (PDFRectangle *) page->getMediaBox(); + break; + } + } +@@ -587,11 +587,11 @@ + PDFRectangle *pagebox; + int pdf_major_version_found, pdf_minor_version_found; + float xsize, ysize, xorig, yorig; +- if (isInit == gFalse) { ++ if (isInit == false) { + if (!(globalParams)) + globalParams = new GlobalParams(); +- globalParams->setErrQuiet(gFalse); +- isInit = gTrue; ++ globalParams->setErrQuiet(false); ++ isInit = true; + } + if (img_type(idict) == IMG_TYPE_PDF) + pdf_doc = refPdfDocument(img_filepath(idict), FE_FAIL); +@@ -966,7 +966,7 @@ + if (PdfDocumentTree != NULL) + avl_destroy(PdfDocumentTree, destroyPdfDocument); + PdfDocumentTree = NULL; +- if (isInit == gTrue) ++ if (isInit == true) + delete globalParams; +- isInit = gFalse; ++ isInit = false; + } +diff -u -r ../texlive-source-texlive-2018.2.orig/texk/web2c/luatexdir/lua/lepdflib.cc ./texk/web2c/luatexdir/lua/lepdflib.cc +--- ../texlive-source-texlive-2018.2.orig/texk/web2c/luatexdir/lua/lepdflib.cc 2018-12-23 10:51:16.142985550 +0100 ++++ ./texk/web2c/luatexdir/lua/lepdflib.cc 2018-12-23 10:56:23.056297860 +0100 +@@ -240,7 +240,7 @@ + if (uobj->pd != NULL && uobj->pd->pc != uobj->pc) + pdfdoc_changed_error(L); + uout = new_Attribute_userdata(L); +- uout->d = new Attribute(n, nlen, (Object *)uobj->d); ++ uout->d = new Attribute((GooString)n, (Object *)uobj->d); + uout->atype = ALLOC_LEPDF; + uout->pc = uobj->pc; + uout->pd = uobj->pd; +@@ -439,7 +439,7 @@ + break; + case 1: + if (lua_isboolean (L,1)) { +- uout->d = new Object(lua_toboolean(L, 1)? gTrue : gFalse); ++ uout->d = new Object(lua_toboolean(L, 1)? true : false); + uout->atype = ALLOC_LEPDF; + uout->pc = 0; + uout->pd = NULL; +@@ -596,7 +596,7 @@ + uin = (udstruct *) luaL_checkudata(L, 1, M_##in); \ + if (uin->pd != NULL && uin->pd->pc != uin->pc) \ + pdfdoc_changed_error(L); \ +- o = ((in *) uin->d)->function(); \ ++ o = (out *) ((in *) uin->d)->function(); \ + if (o != NULL) { \ + uout = new_##out##_userdata(L); \ + uout->d = o; \ +@@ -674,9 +674,9 @@ + uin = (udstruct *) luaL_checkudata(L, 1, M_##in); \ + if (uin->pd != NULL && uin->pd->pc != uin->pc) \ + pdfdoc_changed_error(L); \ +- gs = ((in *) uin->d)->function(); \ ++ gs = (GooString *)((in *) uin->d)->function(); \ + if (gs != NULL) \ +- lua_pushlstring(L, gs->getCString(), gs->getLength()); \ ++ lua_pushlstring(L, gs->c_str(), gs->getLength()); \ + else \ + lua_pushnil(L); \ + return 1; \ +@@ -911,7 +911,7 @@ + if (i > 0 && i <= len) { + gs = new GooString(); + if (((Array *) uin->d)->getString(i - 1, gs)) +- lua_pushlstring(L, gs->getCString(), gs->getLength()); ++ lua_pushlstring(L, gs->c_str(), gs->getLength()); + else + lua_pushnil(L); + delete gs; +@@ -1063,7 +1063,7 @@ + if (i > 0 && i <= len) { + gs = ((Catalog *) uin->d)->getJS(i - 1); + if (gs != NULL) +- lua_pushlstring(L, gs->getCString(), gs->getLength()); ++ lua_pushlstring(L, gs->c_str(), gs->getLength()); + else + lua_pushnil(L); + delete gs; +@@ -1125,12 +1125,12 @@ + + static int m_Dict_add(lua_State * L) + { +- char *s; ++ const char *s; + udstruct *uin, *uobj; + uin = (udstruct *) luaL_checkudata(L, 1, M_Dict); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- s = copyString(luaL_checkstring(L, 2)); ++ s = luaL_checkstring(L, 2); + uobj = (udstruct *) luaL_checkudata(L, 3, M_Object); + ((Dict *) uin->d)->add(s, std::move(*((Object *) uobj->d))); + return 0; +@@ -1378,7 +1378,7 @@ + uin = (udstruct *) luaL_checkudata(L, 1, M_GooString); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- lua_pushlstring(L, ((GooString *) uin->d)->getCString(), ++ lua_pushlstring(L, ((GooString *) uin->d)->c_str(), + ((GooString *) uin->d)->getLength()); + return 1; + } +@@ -1527,9 +1527,9 @@ + pdfdoc_changed_error(L); + luaL_checktype(L, 2, LUA_TBOOLEAN); + if (lua_toboolean(L, 2) != 0) +- *((Object *) uin->d) = Object(gTrue); ++ *((Object *) uin->d) = Object(true); + else +- *((Object *) uin->d) = Object(gFalse); ++ *((Object *) uin->d) = Object(false); + return 0; + } + +@@ -1813,8 +1813,8 @@ + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); + if (((Object *) uin->d)->isString()) { +- gs = ((Object *) uin->d)->getString(); +- lua_pushlstring(L, gs->getCString(), gs->getLength()); ++ gs = (GooString *)((Object *) uin->d)->getString(); ++ lua_pushlstring(L, gs->c_str(), gs->getLength()); + } else + lua_pushnil(L); + return 1; +@@ -2051,7 +2051,7 @@ + pdfdoc_changed_error(L); + if (!((Object *) uin->d)->isDict()) + luaL_error(L, "Object is not a Dict"); +- ((Object *) uin->d)->dictAdd(copyString(s), std::move(*((Object *) uobj->d))); ++ ((Object *) uin->d)->dictAdd(s, std::move(*((Object *) uobj->d))); + return 0; + } + +@@ -2470,9 +2470,9 @@ + uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- gs = ((PdfDocument *) uin->d)->doc->getFileName(); ++ gs = (GooString *) ((PdfDocument *) uin->d)->doc->getFileName(); + if (gs != NULL) +- lua_pushlstring(L, gs->getCString(), gs->getLength()); ++ lua_pushlstring(L, gs->c_str(), gs->getLength()); + else + lua_pushnil(L); + return 1; +@@ -2559,9 +2559,9 @@ + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); + if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) { +- gs = ((PdfDocument *) uin->d)->doc->readMetadata(); ++ gs = (GooString *) ((PdfDocument *) uin->d)->doc->readMetadata(); + if (gs != NULL) +- lua_pushlstring(L, gs->getCString(), gs->getLength()); ++ lua_pushlstring(L, gs->c_str(), gs->getLength()); + else + lua_pushnil(L); + } else +@@ -2577,7 +2577,7 @@ + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); + if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) { +- obj = ((PdfDocument *) uin->d)->doc->getStructTreeRoot(); ++ obj = (StructTreeRoot *) ((PdfDocument *) uin->d)->doc->getStructTreeRoot(); + uout = new_StructTreeRoot_userdata(L); + uout->d = obj; + uout->pc = uin->pc; +@@ -3038,12 +3038,12 @@ + + static int m_Attribute_setHidden(lua_State * L) + { +- GBool i; ++ bool i; + udstruct *uin; + uin = (udstruct *) luaL_checkudata(L, 1, M_Attribute); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- i = (GBool) lua_toboolean(L, 2); ++ i = (bool) lua_toboolean(L, 2); + ((Attribute *) uin->d)->setHidden(i); + return 0; + } +@@ -3180,7 +3180,7 @@ + // Ref is false if the C++ functione return false + static int m_StructElement_getPageRef(lua_State * L) + { +- GBool b; ++ bool b; + Ref *r; + udstruct *uin, *uout; + uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement); +@@ -3226,16 +3226,16 @@ + + static int m_StructElement_getText(lua_State * L) + { +- GBool i; ++ bool i; + GooString *gs; + udstruct *uin; + uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement); + if (uin->pd != NULL && uin->pd->pc != uin->pc) + pdfdoc_changed_error(L); +- i = (GBool) lua_toboolean(L, 2); ++ i = (bool) lua_toboolean(L, 2); + gs = ((StructElement *) uin->d)->getText(i); + if (gs != NULL) +- lua_pushlstring(L, gs->getCString(), gs->getLength()); ++ lua_pushlstring(L, gs->c_str(), gs->getLength()); + else + lua_pushnil(L); + return 1; +@@ -3321,7 +3321,7 @@ + { + Attribute::Type t; + Attribute::Owner o; +- GBool g; ++ bool g; + udstruct *uin, *uout; + const Attribute *a; + uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement); +@@ -3329,7 +3329,7 @@ + pdfdoc_changed_error(L); + t = (Attribute::Type) luaL_checkint(L,1); + o = (Attribute::Owner) luaL_checkint(L,2); +- g = (GBool) lua_toboolean(L, 3); ++ g = (bool) lua_toboolean(L, 3); + a = ((StructElement *) uin->d)->findAttribute(t,g,o); + + if (a!=NULL){ diff --git a/packages/texlive-bin/pdftex-poppler-0.64.patch b/packages/texlive-bin/pdftex-poppler-0.72.patch similarity index 85% rename from packages/texlive-bin/pdftex-poppler-0.64.patch rename to packages/texlive-bin/pdftex-poppler-0.72.patch index 2ba2efc14..7b42b6646 100644 --- a/packages/texlive-bin/pdftex-poppler-0.64.patch +++ b/packages/texlive-bin/pdftex-poppler-0.72.patch @@ -1,5 +1,5 @@ ---- ./texk/web2c/pdftexdir/pdftoepdf.cc 2016-11-25 18:24:37.000000000 +0000 -+++ ../pdftoepdf-newpoppler.cc 2018-04-30 18:45:14.463926082 +0000 +--- ../pdftoepdf.cc.orig 2018-12-20 22:46:08.473192736 +0100 ++++ ./texk/web2c/pdftexdir/pdftoepdf.cc 2018-12-20 17:49:07.629989680 +0100 @@ -1,5 +1,5 @@ /* -Copyright 1996-2016 Han The Thanh, @@ -16,7 +16,7 @@ +https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk +by Arch Linux. A little modifications are made to avoid a crash for +some kind of pdf images, such as figure_missing.pdf in gnuplot. -+The poppler should be 0.59.0 or newer versions. ++The poppler should be 0.72.0 or newer versions. +POPPLER_VERSION should be defined. +*/ + @@ -67,6 +67,15 @@ // When copying the Resources of the selected page, all objects are copied // recusively top-down. Indirect objects however are not fetched during // copying, but get a new object number from pdfTeX and then will be +@@ -139,7 +120,7 @@ + + static InObj *inObjList; + static UsedEncoding *encodingList; +-static GBool isInit = gFalse; ++static bool isInit = false; + + // -------------------------------------------------------------------- + // Maintain list of open embedded PDF files @@ -212,18 +193,6 @@ delete pdf_doc; } @@ -100,6 +109,15 @@ copyObject(&obj1); pdf_puts("\n"); } +@@ -348,7 +317,7 @@ + pdf_puts("<<\n"); + assert(r->type == objFont); // FontDescriptor is in fd_tree + for (i = 0, l = obj->dictGetLength(); i < l; ++i) { +- key = obj->dictGetKey(i); ++ key = (char *)obj->dictGetKey(i); + if (strncmp("FontDescriptor", key, strlen("FontDescriptor")) == 0 + || strncmp("BaseFont", key, strlen("BaseFont")) == 0 + || strncmp("Encoding", key, strlen("Encoding")) == 0) @@ -376,17 +345,17 @@ static void copyProcSet(Object * obj) { @@ -203,7 +221,7 @@ + charset = fontdesc.dictLookup("CharSet"); + if (!charset.isNull() && + charset.isString() && is_subsetable(fontmap)) -+ epdf_mark_glyphs(fd, (char *)charset.getString()->getCString()); ++ epdf_mark_glyphs(fd, (char *)charset.getString()->c_str()); else embed_whole_font(fd); - addFontDesc(fontdescRef->getRef(), fd); @@ -229,11 +247,12 @@ for (i = 0, l = obj->dictGetLength(); i < l; ++i) { - obj->dictGetValNF(i, &fontRef); - if (fontRef->isRef()) -+ fontRef = obj->dictGetValNF(i); -+ if (fontRef.isRef()) - copyFont(obj->dictGetKey(i), &fontRef); +- copyFont(obj->dictGetKey(i), &fontRef); - else if (fontRef->isDict()) { // some programs generate pdf with embedded font object - copyName(obj->dictGetKey(i)); ++ fontRef = obj->dictGetValNF(i); ++ if (fontRef.isRef()) ++ copyFont((char *)obj->dictGetKey(i), &fontRef); + else if (fontRef.isDict()) { // some programs generate pdf with embedded font object + copyName((char *)obj->dictGetKey(i)); pdf_puts(" "); @@ -255,15 +274,17 @@ int i, l, c; Ref ref; char *p; -@@ -571,7 +565,7 @@ +@@ -571,8 +565,8 @@ } else if (obj->isNum()) { pdf_printf("%s", convertNumToPDF(obj->getNum())); } else if (obj->isString()) { - s = obj->getString(); +- p = s->getCString(); + s = (GooString *)obj->getString(); - p = s->getCString(); ++ p = (char *)s->c_str(); l = s->getLength(); if (strlen(p) == (unsigned int) l) { + pdf_puts("("); @@ -595,14 +589,14 @@ pdf_puts(">"); } @@ -312,7 +333,16 @@ } } } -@@ -685,7 +676,7 @@ +@@ -673,7 +664,7 @@ + ("PDF inclusion: CID fonts are not supported" + " (try to disable font replacement to fix this)"); + } +- if ((s = ((Gfx8BitFont *) r->font)->getCharName(i)) != 0) ++ if ((s = (char *)((Gfx8BitFont *) r->font)->getCharName(i)) != 0) + glyphNames[i] = s; + else + glyphNames[i] = notdef; +@@ -685,14 +676,14 @@ #ifdef POPPLER_VERSION r->font->decRefCnt(); #else @@ -321,7 +351,20 @@ #endif delete r; } -@@ -728,7 +719,7 @@ + } + + // get the pagebox according to the pagebox_spec +-static PDFRectangle *get_pagebox(Page * page, int pagebox_spec) ++static const PDFRectangle *get_pagebox(Page * page, int pagebox_spec) + { + if (pagebox_spec == pdfboxspecmedia) + return page->getMediaBox(); +@@ -724,17 +715,17 @@ + { + PdfDocument *pdf_doc; + Page *page; +- PDFRectangle *pagebox; ++ const PDFRectangle *pagebox; #ifdef POPPLER_VERSION int pdf_major_version_found, pdf_minor_version_found; #else @@ -330,6 +373,14 @@ #endif // initialize if (!isInit) { + globalParams = new GlobalParams(); +- globalParams->setErrQuiet(gFalse); +- isInit = gTrue; ++ globalParams->setErrQuiet(false); ++ isInit = true; + } + // open PDF file + pdf_doc = find_add_document(image_name); @@ -760,19 +751,7 @@ } } @@ -362,7 +413,7 @@ bool writeSepGroup = false; Object info; char *key; -@@ -867,8 +846,8 @@ +@@ -867,10 +846,10 @@ encodingList = 0; page = pdf_doc->doc->getCatalog()->getPage(epdf_selected_page); pageRef = pdf_doc->doc->getCatalog()->getPageRef(epdf_selected_page); @@ -371,8 +422,11 @@ + pageObj = xref->fetch(pageRef->num, pageRef->gen); + pageDict = pageObj.getDict(); rotate = page->getRotate(); - PDFRectangle *pagebox; +- PDFRectangle *pagebox; ++ const PDFRectangle *pagebox; // write the Page header + pdf_puts("/Type /XObject\n"); + pdf_puts("/Subtype /Form\n"); @@ -886,7 +865,7 @@ pdf_printf("/%s.PageNumber %i\n", pdfkeyprefix, (int) epdf_selected_page); } @@ -445,14 +499,14 @@ + } + l = dic1.getLength(); + for (i = 0; i < l; i++) { -+ groupDict.dictAdd(copyString(dic1.getKey(i)), ++ groupDict.dictAdd((const char *)copyString(dic1.getKey(i)), + dic1.getValNF(i)); + } +// end modification pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval); } } -@@ -989,14 +993,14 @@ +@@ -989,28 +993,28 @@ pdftex_warn ("PDF inclusion: /Resources missing. 'This practice is not recommended' (PDF Ref)"); } else { @@ -465,11 +519,18 @@ pdf_puts("/Resources <<\n"); for (i = 0, l = obj1->dictGetLength(); i < l; ++i) { - obj1->dictGetVal(i, &obj2); +- key = obj1->dictGetKey(i); + obj2 = obj1->dictGetVal(i); - key = obj1->dictGetKey(i); ++ key = (char *)obj1->dictGetKey(i); if (strcmp("Font", key) == 0) copyFontResources(&obj2); -@@ -1009,8 +1013,8 @@ + else if (strcmp("ProcSet", key) == 0) + copyProcSet(&obj2); + else +- copyOtherResources(&obj2, key); ++ copyOtherResources(&obj2, (char *)key); + } + pdf_puts(">>\n"); } // write the page contents @@ -530,8 +591,8 @@ if (i < l - 1) pdf_newline(); // add a newline after each stream except the last } ---- ./texk/web2c/pdftexdir/pdftosrc.cc 2017-10-17 04:24:27.000000000 +0000 -+++ ../pdftosrc-newpoppler.cc 2018-04-30 18:45:24.223917354 +0000 +--- ../pdftosrc.cc.orig 2018-12-20 22:46:34.129859210 +0100 ++++ ./texk/web2c/pdftexdir/pdftosrc.cc 2018-12-20 17:49:58.393322645 +0100 @@ -16,6 +16,14 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . @@ -540,7 +601,7 @@ +/* +This is based on the patch texlive-poppler-0.59.patch <2017-09-19> at +https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk -+by Arch Linux. The poppler should be 0.59.0 or newer versions. ++by Arch Linux. The poppler should be 0.72.0 or newer versions. +POPPLER_VERSION should be defined. +*/ + @@ -559,7 +620,7 @@ #endif #include -@@ -86,31 +91,29 @@ +@@ -86,36 +91,34 @@ objgen = atoi(argv[3]); } xref = doc->getXRef(); @@ -588,7 +649,7 @@ exit(1); } - outname = srcName.getString()->getCString(); -+ outname = (char *)srcName.getString()->getCString(); ++ outname = (char *)srcName.getString()->c_str(); // We cannot free srcName, as objname shares its string. // srcName.free(); } else if (objnum > 0) { @@ -597,6 +658,21 @@ if (!srcStream.isStream()) { fprintf(stderr, "Not a Stream object\n"); exit(1); + } +- sprintf(buf, "%s", fileName->getCString()); ++ sprintf(buf, "%s", fileName->c_str()); + if ((p = strrchr(buf, '.')) == 0) + p = strchr(buf, 0); + if (objgen == 0) +@@ -125,7 +128,7 @@ + outname = buf; + } else { // objnum < 0 means we are extracting the XRef table + extract_xref_table = true; +- sprintf(buf, "%s", fileName->getCString()); ++ sprintf(buf, "%s", fileName->c_str()); + if ((p = strrchr(buf, '.')) == 0) + p = strchr(buf, 0); + sprintf(p, ".xref"); @@ -160,34 +163,27 @@ int localOffset = 0; Guint firstOffset; @@ -618,9 +694,10 @@ objStr.streamReset(); - obj1.initNull(); - str = new EmbedStream(objStr.getStream(), &obj1, gTrue, first); -+ str = new EmbedStream(objStr.getStream(), Object(objNull), gTrue, first); ++ str = new EmbedStream(objStr.getStream(), Object(objNull), true, first); lexer = new Lexer(xref, str); - parser = new Parser(xref, lexer, gFalse); +- parser = new Parser(xref, lexer, gFalse); ++ parser = new Parser(xref, lexer, false); for (n = 0; n < nObjects; ++n) { - parser->getObj(&obj1); - parser->getObj(&obj2); diff --git a/packages/texlive-bin/xetex-poppler-0.72.patch b/packages/texlive-bin/xetex-poppler-0.72.patch new file mode 100644 index 000000000..d91cd9318 --- /dev/null +++ b/packages/texlive-bin/xetex-poppler-0.72.patch @@ -0,0 +1,28 @@ +diff -u -r ../texlive-source-texlive-2018.2.orig/texk/web2c/xetexdir/pdfimage.cpp ./texk/web2c/xetexdir/pdfimage.cpp +--- ../texlive-source-texlive-2018.2.orig/texk/web2c/xetexdir/pdfimage.cpp 2018-12-23 10:51:16.249652209 +0100 ++++ ./texk/web2c/xetexdir/pdfimage.cpp 2018-12-23 12:00:04.419369459 +0100 +@@ -82,19 +82,19 @@ + switch (pdf_box) { + default: + case pdfbox_crop: +- r = page->getCropBox(); ++ r = (PDFRectangle *)page->getCropBox(); + break; + case pdfbox_media: +- r = page->getMediaBox(); ++ r = (PDFRectangle *)page->getMediaBox(); + break; + case pdfbox_bleed: +- r = page->getBleedBox(); ++ r = (PDFRectangle *)page->getBleedBox(); + break; + case pdfbox_trim: +- r = page->getTrimBox(); ++ r = (PDFRectangle *)page->getTrimBox(); + break; + case pdfbox_art: +- r = page->getArtBox(); ++ r = (PDFRectangle *)page->getArtBox(); + break; + } +