summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /dev-tex/luatex/files
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'dev-tex/luatex/files')
-rw-r--r--dev-tex/luatex/files/includes.patch25
-rw-r--r--dev-tex/luatex/files/kpathsea2012.patch28
-rw-r--r--dev-tex/luatex/files/poppler018.patch160
-rw-r--r--dev-tex/luatex/files/poppler020.patch75
-rw-r--r--dev-tex/luatex/files/poppler022.patch388
-rw-r--r--dev-tex/luatex/files/poppler026-backport.patch99
-rw-r--r--dev-tex/luatex/files/poppler026.patch143
-rw-r--r--dev-tex/luatex/files/remove-zlib-version-check.patch23
8 files changed, 941 insertions, 0 deletions
diff --git a/dev-tex/luatex/files/includes.patch b/dev-tex/luatex/files/includes.patch
new file mode 100644
index 000000000000..f93c7312b315
--- /dev/null
+++ b/dev-tex/luatex/files/includes.patch
@@ -0,0 +1,25 @@
+Index: source/texk/web2c/luatexdir/image/pdftoepdf.w
+===================================================================
+--- source.orig/texk/web2c/luatexdir/image/pdftoepdf.w
++++ source/texk/web2c/luatexdir/image/pdftoepdf.w
+@@ -26,6 +26,8 @@ static const char _svn_version[] =
+ // define DEBUG
+ #define __STDC_FORMAT_MACROS /* for PRId64 etc. */
+
++#include <stdint.h>
++#include <inttypes.h>
+ #include "image/epdf.h"
+
+ // This file is mostly C and not very much C++; it's just used to interface
+Index: source/texk/web2c/luatexdir/image/writejp2.w
+===================================================================
+--- source.orig/texk/web2c/luatexdir/image/writejp2.w
++++ source/texk/web2c/luatexdir/image/writejp2.w
+@@ -30,6 +30,7 @@ ISO/IEC 15444-1, Second edition, 2004-09
+ @c
+ #include <math.h>
+ #include <assert.h>
++#include <stdint.h>
+ #include "ptexlib.h"
+ #include "image/image.h"
+ #include "image/writejp2.h"
diff --git a/dev-tex/luatex/files/kpathsea2012.patch b/dev-tex/luatex/files/kpathsea2012.patch
new file mode 100644
index 000000000000..80c356d9de80
--- /dev/null
+++ b/dev-tex/luatex/files/kpathsea2012.patch
@@ -0,0 +1,28 @@
+From TeX Live svn rev 23421.
+Remove unnecessary headers. Fixes build with kpathsea from TeX Live 2012.
+
+
+Index: source/texk/web2c/luatexdir/luatex.c
+===================================================================
+--- source/texk/web2c/luatexdir/luatex.c (revision 23420)
++++ source/texk/web2c/luatexdir/luatex.c (revision 23421)
+@@ -32,7 +32,6 @@
+ #include <kpathsea/readable.h>
+ #include <kpathsea/variable.h>
+ #include <kpathsea/absolute.h>
+-#include <kpathsea/recorder.h>
+ #ifdef WIN32
+ #include <kpathsea/concatn.h>
+ #endif
+Index: source/texk/web2c/lib/texmfmp.c
+===================================================================
+--- source/texk/web2c/lib/texmfmp.c (revision 23420)
++++ source/texk/web2c/lib/texmfmp.c (revision 23421)
+@@ -17,7 +17,6 @@
+ #include <kpathsea/readable.h>
+ #include <kpathsea/variable.h>
+ #include <kpathsea/absolute.h>
+-#include <kpathsea/recorder.h>
+ #ifdef WIN32
+ #include <kpathsea/concatn.h>
+ #endif
diff --git a/dev-tex/luatex/files/poppler018.patch b/dev-tex/luatex/files/poppler018.patch
new file mode 100644
index 000000000000..d21253853db7
--- /dev/null
+++ b/dev-tex/luatex/files/poppler018.patch
@@ -0,0 +1,160 @@
+by Martin von Gagern
+https://bugs.gentoo.org/show_bug.cgi?id=384875
+http://thread.gmane.org/gmane.comp.tex.luatex/2630
+
+--- luatex-beta-0.70.1/source/texk/web2c/luatexdir/lua/lepdflib.cc
++++ luatex-beta-0.70.1/source/texk/web2c/luatexdir/lua/lepdflib.cc
+@@ -89,7 +89,6 @@ new_poppler_userdata(AnnotBorder);
+ new_poppler_userdata(Annots);
+ new_poppler_userdata(Array);
+ new_poppler_userdata(Catalog);
+-new_poppler_userdata(EmbFile);
+ new_poppler_userdata(Dict);
+ //new_poppler_userdata(GooString);
+ new_poppler_userdata(LinkDest);
+@@ -393,7 +392,7 @@ static int m_Annot__gc(lua_State * L)
+ printf("\n===== Annot GC ===== uin=<%p>\n", uin);
+ #endif
+ if (uin->atype == ALLOC_LEPDF)
+- delete(Annot *) uin->d;
++ ((Annot *) uin->d)->decRefCnt();
+ return 0;
+ }
+
+@@ -408,34 +407,6 @@ static const struct luaL_Reg Annot_m[] =
+ };
+
+ //**********************************************************************
+-// AnnotBorderStyle
+-
+-m_poppler_get_DOUBLE(AnnotBorderStyle, getWidth);
+-
+-m_poppler__tostring(AnnotBorderStyle);
+-
+-static int m_Annots__gc(lua_State * L)
+-{
+- udstruct *uin;
+- uin = (udstruct *) luaL_checkudata(L, 1, M_Annots);
+- if (uin->pd != NULL && uin->pd->pc != uin->pc)
+- pdfdoc_changed_error(L);
+-#ifdef DEBUG
+- printf("\n===== Annots GC ===== uin=<%p>\n", uin);
+-#endif
+- if (uin->atype == ALLOC_LEPDF)
+- delete(Annots *) uin->d;
+- return 0;
+-}
+-
+-static const struct luaL_Reg AnnotBorderStyle_m[] = {
+- {"getWidth", m_AnnotBorderStyle_getWidth},
+- {"__tostring", m_AnnotBorderStyle__tostring},
+- {"__gc", m_Annots__gc},
+- {NULL, NULL} // sentinel
+-};
+-
+-//**********************************************************************
+ // Annots
+
+ m_poppler_get_INT(Annots, getNumAnnots);
+@@ -683,31 +654,6 @@ static int m_Catalog_findDest(lua_State
+
+ m_poppler_get_poppler(Catalog, Object, getDests);
+ m_poppler_get_INT(Catalog, numEmbeddedFiles);
+-
+-static int m_Catalog_embeddedFile(lua_State * L)
+-{
+- EmbFile *ef;
+- int i, len;
+- udstruct *uin, *uout;
+- uin = (udstruct *) luaL_checkudata(L, 1, M_Catalog);
+- if (uin->pd != NULL && uin->pd->pc != uin->pc)
+- pdfdoc_changed_error(L);
+- i = luaL_checkint(L, 2);
+- len = ((Catalog *) uin->d)->numEmbeddedFiles();
+- if (i > 0 && i <= len) {
+- ef = ((Catalog *) uin->d)->embeddedFile(i - 1);
+- if (ef != NULL) {
+- uout = new_EmbFile_userdata(L);
+- uout->d = ef;
+- uout->pc = uin->pc;
+- uout->pd = uin->pd;
+- } else
+- lua_pushnil(L);
+- } else
+- lua_pushnil(L);
+- return 1;
+-}
+-
+ m_poppler_get_INT(Catalog, numJS);
+
+ static int m_Catalog_getJS(lua_State * L)
+@@ -749,7 +695,6 @@ static const struct luaL_Reg Catalog_m[]
+ {"findDest", m_Catalog_findDest},
+ {"getDests", m_Catalog_getDests},
+ {"numEmbeddedFiles", m_Catalog_numEmbeddedFiles},
+- {"embeddedFile", m_Catalog_embeddedFile},
+ {"numJS", m_Catalog_numJS},
+ {"getJS", m_Catalog_getJS},
+ {"getOutline", m_Catalog_getOutline},
+@@ -759,49 +704,6 @@ static const struct luaL_Reg Catalog_m[]
+ };
+
+ //**********************************************************************
+-// EmbFile
+-
+-m_poppler_get_GOOSTRING(EmbFile, name);
+-m_poppler_get_GOOSTRING(EmbFile, description);
+-m_poppler_get_INT(EmbFile, size);
+-m_poppler_get_GOOSTRING(EmbFile, modDate);
+-m_poppler_get_GOOSTRING(EmbFile, createDate);
+-m_poppler_get_GOOSTRING(EmbFile, checksum);
+-m_poppler_get_GOOSTRING(EmbFile, mimeType);
+-
+-static int m_EmbFile_streamObject(lua_State * L)
+-{
+- udstruct *uin, *uout;
+- uin = (udstruct *) luaL_checkudata(L, 1, M_EmbFile);
+- if (uin->pd != NULL && uin->pd->pc != uin->pc)
+- pdfdoc_changed_error(L);
+- uout = new_Object_userdata(L);
+- uout->d = new Object(); // automatic init to type "none"
+- ((EmbFile *) uin->d)->streamObject().copy((Object *) uout->d);
+- uout->pc = uin->pc;
+- uout->pd = uin->pd;
+- return 1;
+-}
+-
+-m_poppler_get_BOOL(EmbFile, isOk);
+-
+-m_poppler__tostring(EmbFile);
+-
+-static const struct luaL_Reg EmbFile_m[] = {
+- {"name", m_EmbFile_name},
+- {"description", m_EmbFile_description},
+- {"size", m_EmbFile_size},
+- {"modDate", m_EmbFile_modDate},
+- {"createDate", m_EmbFile_createDate},
+- {"checksum", m_EmbFile_checksum},
+- {"mimeType", m_EmbFile_mimeType},
+- {"streamObject", m_EmbFile_streamObject},
+- {"isOk", m_EmbFile_isOk},
+- {"__tostring", m_EmbFile__tostring},
+- {NULL, NULL} // sentinel
+-};
+-
+-//**********************************************************************
+ // Dict
+
+ static int m_Dict_incRef(lua_State * L)
+@@ -2683,11 +2585,9 @@ int luaopen_epdf(lua_State * L)
+ {
+ register_meta(Annot);
+ // TODO register_meta(AnnotBorder);
+- register_meta(AnnotBorderStyle);
+ register_meta(Annots);
+ register_meta(Array);
+ register_meta(Catalog);
+- register_meta(EmbFile);
+ register_meta(Dict);
+ register_meta(GooString);
+ register_meta(LinkDest);
diff --git a/dev-tex/luatex/files/poppler020.patch b/dev-tex/luatex/files/poppler020.patch
new file mode 100644
index 000000000000..d3db830d3430
--- /dev/null
+++ b/dev-tex/luatex/files/poppler020.patch
@@ -0,0 +1,75 @@
+https://bugs.gentoo.org/show_bug.cgi?id=416545
+build with poppler-0.20 by Rafał Mużyło
+
+--- source/texk/web2c/luatexdir/lua/lepdflib.cc 2012-05-18 16:23:53.000000000 +0200
++++ source/texk/web2c/luatexdir/lua/lepdflib.cc 2012-05-18 17:43:12.959843483 +0200
+@@ -151,7 +151,7 @@ static int l_new_Annot(lua_State * L)
+ pdfdoc_changed_error(L);
+ uout = new_Annot_userdata(L);
+ uout->d =
+- new Annot((XRef *) uxref->d, (Dict *) udict->d, (Catalog *) ucatalog->d,
++ new Annot(udict->pd->doc, (Dict *) udict->d,
+ (Object *) uref->d);
+ uout->atype = ALLOC_LEPDF;
+ uout->pc = uxref->pc;
+@@ -173,7 +173,7 @@ static int l_new_Annots(lua_State * L)
+ pdfdoc_changed_error(L);
+ uout = new_Annots_userdata(L);
+ uout->d =
+- new Annots((XRef *) uxref->d, (Catalog *) ucatalog->d,
++ new Annots(uannotsobj->pd->doc,
+ (Object *) uannotsobj->d);
+ uout->atype = ALLOC_LEPDF;
+ uout->pc = uxref->pc;
+@@ -363,7 +363,7 @@ static int m_##type##__tostring(lua_Stat
+ // Annot
+
+ m_poppler_get_BOOL(Annot, isOk);
+-m_poppler_get_OBJECT(Annot, getAppearance);
++m_poppler_get_OBJECT(Annot, getAppearanceResDict);
+ m_poppler_get_poppler(Annot, AnnotBorder, getBorder);
+
+ static int m_Annot_match(lua_State * L)
+@@ -398,7 +398,7 @@ static int m_Annot__gc(lua_State * L)
+
+ static const struct luaL_Reg Annot_m[] = {
+ {"isOk", m_Annot_isOk},
+- {"getAppearance", m_Annot_getAppearance},
++ {"getAppearanceResDict", m_Annot_getAppearanceResDict},
+ {"getBorder", m_Annot_getBorder},
+ {"match", m_Annot_match},
+ {"__tostring", m_Annot__tostring},
+@@ -1249,7 +1249,7 @@ static int m_Object_getType(lua_State *
+
+ static int m_Object_getTypeName(lua_State * L)
+ {
+- char *s;
++ const char *s;
+ udstruct *uin;
+ uin = (udstruct *) luaL_checkudata(L, 1, M_Object);
+ if (uin->pd != NULL && uin->pd->pc != uin->pc)
+@@ -1936,7 +1936,7 @@ static int m_Page_getLinks(lua_State * L
+ if ((uin->pd != NULL && uin->pd->pc != uin->pc)
+ || (ucat->pd != NULL && ucat->pd->pc != ucat->pd->pc))
+ pdfdoc_changed_error(L);
+- links = ((Page *) uin->d)->getLinks((Catalog *) ucat->d);
++ links = ((Page *) uin->d)->getLinks();
+ if (links != NULL) {
+ uout = new_Links_userdata(L);
+ uout->d = links;
+@@ -2531,7 +2531,6 @@ m_poppler_get_INT(XRef, getNumObjects);
+ m_poppler_get_INT(XRef, getRootNum);
+ m_poppler_get_INT(XRef, getRootGen);
+ // getStreamEnd
+-m_poppler_get_INT(XRef, getSize);
+ // getEntry
+ m_poppler_get_poppler(XRef, Object, getTrailerDict);
+
+@@ -2558,7 +2557,6 @@ static const struct luaL_Reg XRef_m[] =
+ {"getRootNum", m_XRef_getRootNum},
+ {"getRootGen", m_XRef_getRootGen},
+ //
+- {"getSize", m_XRef_getSize},
+ {"getTrailerDict", m_XRef_getTrailerDict},
+ {"__tostring", m_XRef__tostring},
+ {NULL, NULL} // sentinel
diff --git a/dev-tex/luatex/files/poppler022.patch b/dev-tex/luatex/files/poppler022.patch
new file mode 100644
index 000000000000..223cbcb27456
--- /dev/null
+++ b/dev-tex/luatex/files/poppler022.patch
@@ -0,0 +1,388 @@
+Patch updating lepdflib.cc to upstream revision 4415, which basically removes
+part of the exported interface and thereby circumvents the changes in
+poppler-0.20 -> 0.22. Experimental, rebased on our existing Gentoo patches
+poppler-0.18.patch and poppler-0.20.patch. Here to solve bug 449538.
+
+diff -ruN luatex-beta-0.70.1.gentoo/source/texk/web2c/luatexdir/lua/lepdflib.cc
+luatex-beta-0.70.1/source/texk/web2c/luatexdir/lua/lepdflib.cc
+--- luatex-beta-0.70.1.gentoo/source/texk/web2c/luatexdir/lua/lepdflib.cc 2013-03-10 13:31:22.000000000 +0100
++++ luatex-beta-0.70.1/source/texk/web2c/luatexdir/lua/lepdflib.cc 2013-03-10 13:47:24.000000000 +0100
+@@ -1,7 +1,7 @@
+ /* lepdflib.cc
+
+- Copyright 2009-2011 Taco Hoekwater <taco@luatex.org>
+- Copyright 2009-2011 Hartmut Henkel <hartmut@luatex.org>
++ Copyright 2009-2012 Taco Hoekwater <taco@luatex.org>
++ Copyright 2009-2012 Hartmut Henkel <hartmut@luatex.org>
+
+ This file is part of LuaTeX.
+
+@@ -49,15 +49,13 @@
+ //**********************************************************************
+
+ #define M_Annot "Annot"
+-#define M_AnnotBorder "AnnotBorder"
+-#define M_AnnotBorderStyle "AnnotBorderStyle"
+ #define M_Annots "Annots"
+ #define M_Array "Array"
+ #define M_Catalog "Catalog"
+-#define M_EmbFile "EmbFile"
+ #define M_Dict "Dict"
+ #define M_GooString "GooString"
+ #define M_LinkDest "LinkDest"
++#define M_Link "Link"
+ #define M_Links "Links"
+ #define M_Object "Object"
+ #define M_Page "Page"
+@@ -65,8 +63,8 @@
+ #define M_PDFRectangle "PDFRectangle"
+ #define M_Ref "Ref"
+ #define M_Stream "Stream"
+-#define M_XRef "XRef"
+ #define M_XRefEntry "XRefEntry"
++#define M_XRef "XRef"
+
+ //**********************************************************************
+
+@@ -84,13 +82,9 @@
+ new_poppler_userdata(PDFDoc);
+
+ new_poppler_userdata(Annot);
+-new_poppler_userdata(AnnotBorder);
+-//new_poppler_userdata(AnnotBorderStyle);
+-new_poppler_userdata(Annots);
+ new_poppler_userdata(Array);
+ new_poppler_userdata(Catalog);
+ new_poppler_userdata(Dict);
+-//new_poppler_userdata(GooString);
+ new_poppler_userdata(LinkDest);
+ new_poppler_userdata(Links);
+ new_poppler_userdata(Object);
+@@ -99,7 +93,6 @@
+ new_poppler_userdata(Ref);
+ new_poppler_userdata(Stream);
+ new_poppler_userdata(XRef);
+-//new_poppler_userdata(XRefEntry);
+
+ //**********************************************************************
+
+@@ -134,53 +127,6 @@
+ return 1; // doc path
+ }
+
+-static int l_new_Annot(lua_State * L)
+-{
+- udstruct *uxref, *udict, *ucatalog, *uref, *uout;
+- uxref = (udstruct *) luaL_checkudata(L, 1, M_XRef);
+- udict = (udstruct *) luaL_checkudata(L, 2, M_Dict);
+- ucatalog = (udstruct *) luaL_checkudata(L, 3, M_Catalog);
+- uref = (udstruct *) luaL_checkudata(L, 4, M_Ref);
+- if (uxref->pd != ucatalog->pd || uxref->pd != udict->pd
+- || uxref->pd != uref->pd)
+- pdfdoc_differs_error(L);
+- if ((uxref->pd != NULL && uxref->pd->pc != uxref->pc) ||
+- (ucatalog->pd != NULL && ucatalog->pd->pc != ucatalog->pc) ||
+- (udict->pd != NULL && udict->pd->pc != udict->pc) ||
+- (uref->pd != NULL && uref->pd->pc != uref->pc))
+- pdfdoc_changed_error(L);
+- uout = new_Annot_userdata(L);
+- uout->d =
+- new Annot(udict->pd->doc, (Dict *) udict->d,
+- (Object *) uref->d);
+- uout->atype = ALLOC_LEPDF;
+- uout->pc = uxref->pc;
+- uout->pd = uxref->pd;
+- return 1;
+-}
+-
+-static int l_new_Annots(lua_State * L)
+-{
+- udstruct *uxref, *ucatalog, *uannotsobj, *uout;
+- uxref = (udstruct *) luaL_checkudata(L, 1, M_XRef);
+- ucatalog = (udstruct *) luaL_checkudata(L, 2, M_Catalog);
+- uannotsobj = (udstruct *) luaL_checkudata(L, 3, M_Object);
+- if (uxref->pd != ucatalog->pd || uxref->pd != uannotsobj->pd)
+- pdfdoc_differs_error(L);
+- if ((uxref->pd != NULL && uxref->pd->pc != uxref->pc)
+- || (ucatalog->pd != NULL && ucatalog->pd->pc != ucatalog->pc)
+- || (uannotsobj->pd != NULL && uannotsobj->pd->pc != uannotsobj->pc))
+- pdfdoc_changed_error(L);
+- uout = new_Annots_userdata(L);
+- uout->d =
+- new Annots(uannotsobj->pd->doc,
+- (Object *) uannotsobj->d);
+- uout->atype = ALLOC_LEPDF;
+- uout->pc = uxref->pc;
+- uout->pd = uxref->pd;
+- return 1;
+-}
+-
+ static int l_new_Array(lua_State * L)
+ {
+ udstruct *uxref, *uout;
+@@ -235,8 +181,6 @@
+
+ static const struct luaL_Reg epdflib[] = {
+ {"open", l_open_PDFDoc},
+- {"Annot", l_new_Annot},
+- {"Annots", l_new_Annots},
+ {"Array", l_new_Array},
+ {"Dict", l_new_Dict},
+ {"Object", l_new_Object},
+@@ -359,12 +303,26 @@
+ return 1; \
+ }
+
++#define m_poppler_check_string(in, function) \
++static int m_##in##_##function(lua_State * L) \
++{ \
++ const char *s; \
++ udstruct *uin; \
++ uin = (udstruct *) luaL_checkudata(L, 1, M_##in); \
++ if (uin->pd != NULL && uin->pd->pc != uin->pc) \
++ pdfdoc_changed_error(L); \
++ s = luaL_checkstring(L, 2); \
++ if (((in *) uin->d)->function((char *) s)) \
++ lua_pushboolean(L, 1); \
++ else \
++ lua_pushboolean(L, 0); \
++ return 1; \
++}
++
+ //**********************************************************************
+ // Annot
+
+ m_poppler_get_BOOL(Annot, isOk);
+-m_poppler_get_OBJECT(Annot, getAppearanceResDict);
+-m_poppler_get_poppler(Annot, AnnotBorder, getBorder);
+
+ static int m_Annot_match(lua_State * L)
+ {
+@@ -398,8 +356,6 @@
+
+ static const struct luaL_Reg Annot_m[] = {
+ {"isOk", m_Annot_isOk},
+- {"getAppearanceResDict", m_Annot_getAppearanceResDict},
+- {"getBorder", m_Annot_getBorder},
+ {"match", m_Annot_match},
+ {"__tostring", m_Annot__tostring},
+ {"__gc", m_Annot__gc},
+@@ -654,6 +610,7 @@
+
+ m_poppler_get_poppler(Catalog, Object, getDests);
+ m_poppler_get_INT(Catalog, numEmbeddedFiles);
++
+ m_poppler_get_INT(Catalog, numJS);
+
+ static int m_Catalog_getJS(lua_State * L)
+@@ -770,20 +727,7 @@
+ return 0;
+ }
+
+-static int m_Dict_is(lua_State * L)
+-{
+- const char *s;
+- udstruct *uin;
+- uin = (udstruct *) luaL_checkudata(L, 1, M_Dict);
+- if (uin->pd != NULL && uin->pd->pc != uin->pc)
+- pdfdoc_changed_error(L);
+- s = luaL_checkstring(L, 2);
+- if (((Dict *) uin->d)->is((char *) s))
+- lua_pushboolean(L, 1);
+- else
+- lua_pushboolean(L, 0);
+- return 1;
+-}
++m_poppler_check_string(Dict, is);
+
+ static int m_Dict_lookup(lua_State * L)
+ {
+@@ -894,6 +838,8 @@
+ return 1;
+ }
+
++m_poppler_check_string(Dict, hasKey);
++
+ m_poppler__tostring(Dict);
+
+ static const struct luaL_Reg Dict_m[] = {
+@@ -910,6 +856,7 @@
+ {"getKey", m_Dict_getKey},
+ {"getVal", m_Dict_getVal},
+ {"getValNF", m_Dict_getValNF},
++ {"hasKey", m_Dict_hasKey},
+ {"__tostring", m_Dict__tostring},
+ {NULL, NULL} // sentinel
+ };
+@@ -1017,9 +964,13 @@
+ //**********************************************************************
+ // Links
+
++m_poppler_get_INT(Links, getNumLinks);
++
+ m_poppler__tostring(Links);
+
+ static const struct luaL_Reg Links_m[] = {
++ {"getNumLinks", m_Links_getNumLinks},
++ //{"getLink", m_Links_getLink},
+ {"__tostring", m_Links__tostring},
+ {NULL, NULL} // sentinel
+ };
+@@ -1925,28 +1876,6 @@
+ m_poppler_get_poppler(Page, Dict, getResourceDict);
+ m_poppler_get_OBJECT(Page, getAnnots);
+
+-static int m_Page_getLinks(lua_State * L)
+-{
+- Links *links;
+- udstruct *uin, *ucat, *uout;
+- uin = (udstruct *) luaL_checkudata(L, 1, M_Page);
+- ucat = (udstruct *) luaL_checkudata(L, 2, M_Catalog);
+- if (uin->pd != NULL && ucat->pd != NULL && uin->pd != ucat->pd)
+- pdfdoc_differs_error(L);
+- if ((uin->pd != NULL && uin->pd->pc != uin->pc)
+- || (ucat->pd != NULL && ucat->pd->pc != ucat->pd->pc))
+- pdfdoc_changed_error(L);
+- links = ((Page *) uin->d)->getLinks();
+- if (links != NULL) {
+- uout = new_Links_userdata(L);
+- uout->d = links;
+- uout->pc = uin->pc;
+- uout->pd = uin->pd;
+- } else
+- lua_pushnil(L);
+- return 1;
+-}
+-
+ m_poppler_get_OBJECT(Page, getContents);
+
+ m_poppler__tostring(Page);
+@@ -1973,7 +1902,6 @@
+ {"getSeparationInfo", m_Page_getSeparationInfo},
+ {"getResourceDict", m_Page_getResourceDict},
+ {"getAnnots", m_Page_getAnnots},
+- {"getLinks", m_Page_getLinks},
+ {"getContents", m_Page_getContents},
+ {"__tostring", m_Page__tostring},
+ {NULL, NULL} // sentinel
+@@ -2158,19 +2086,23 @@
+
+ static int m_PDFDoc_getLinks(lua_State * L)
+ {
+- int i;
++ int i, pages;
+ Links *links;
+ udstruct *uin, *uout;
+ uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc);
+ if (uin->pd != NULL && uin->pd->pc != uin->pc)
+ pdfdoc_changed_error(L);
+ i = luaL_checkint(L, 2);
+- links = ((PdfDocument *) uin->d)->doc->getLinks(i);
+- if (links != NULL) {
+- uout = new_Links_userdata(L);
+- uout->d = links;
+- uout->pc = uin->pc;
+- uout->pd = uin->pd;
++ pages = ((PdfDocument *) uin->d)->doc->getNumPages();
++ if (i > 0 && i <= pages) {
++ links = ((PdfDocument *) uin->d)->doc->getLinks(i);
++ if (links != NULL) {
++ uout = new_Links_userdata(L);
++ uout->d = links;
++ uout->pc = uin->pc;
++ uout->pd = uin->pd;
++ } else
++ lua_pushnil(L);
+ } else
+ lua_pushnil(L);
+ return 1;
+@@ -2249,6 +2181,8 @@
+ m_PDFDoc_INT(getPDFMajorVersion);
+ m_PDFDoc_INT(getPDFMinorVersion);
+
++m_poppler__tostring(PDFDoc);
++
+ static int m_PDFDoc__gc(lua_State * L)
+ {
+ udstruct *uin;
+@@ -2292,6 +2226,7 @@
+ {"getDocInfoNF", m_PDFDoc_getDocInfoNF},
+ {"getPDFMajorVersion", m_PDFDoc_getPDFMajorVersion},
+ {"getPDFMinorVersion", m_PDFDoc_getPDFMinorVersion},
++ {"__tostring", m_PDFDoc__tostring},
+ {"__gc", m_PDFDoc__gc}, // finalizer
+ {NULL, NULL} // sentinel
+ };
+@@ -2437,11 +2372,6 @@
+ "Flate", "JBIG2", "JPX", "Weird", NULL
+ };
+
+-#if 0
+-static const char *StreamColorSpaceModeNames[] =
+- { "CSNone", "CSDeviceGray", "CSDeviceRGB", "CSDeviceCMYK", NULL };
+-#endif
+-
+ m_poppler_get_INT(Stream, getKind);
+
+ static int m_Stream_getKindName(lua_State * L)
+@@ -2527,11 +2457,26 @@
+ m_poppler_get_OBJECT(XRef, getDocInfo);
+ m_poppler_get_OBJECT(XRef, getDocInfoNF);
+ m_poppler_get_INT(XRef, getNumObjects);
+-// getLastXRefPos
+ m_poppler_get_INT(XRef, getRootNum);
+ m_poppler_get_INT(XRef, getRootGen);
+ // getStreamEnd
+-// getEntry
++
++static int m_XRef_getNumEntry(lua_State * L)
++{
++ int i, offset;
++ udstruct *uin;
++ uin = (udstruct *) luaL_checkudata(L, 1, M_XRef);
++ if (uin->pd != NULL && uin->pd->pc != uin->pc)
++ pdfdoc_changed_error(L);
++ offset = luaL_checkint(L, 2);
++ i = ((XRef *) uin->d)->getNumEntry(offset);
++ if (i >= 0)
++ lua_pushinteger(L, i);
++ else
++ lua_pushnil(L);
++ return 1;
++}
++
+ m_poppler_get_poppler(XRef, Object, getTrailerDict);
+
+ m_poppler__tostring(XRef);
+@@ -2553,10 +2498,10 @@
+ {"getDocInfo", m_XRef_getDocInfo},
+ {"getDocInfoNF", m_XRef_getDocInfoNF},
+ {"getNumObjects", m_XRef_getNumObjects},
+- //
+ {"getRootNum", m_XRef_getRootNum},
+ {"getRootGen", m_XRef_getRootGen},
+- //
++ // {"getStreamEnd", m_XRef_getStreamEnd},
++ {"getNumEntry", m_XRef_getNumEntry},
+ {"getTrailerDict", m_XRef_getTrailerDict},
+ {"__tostring", m_XRef__tostring},
+ {NULL, NULL} // sentinel
+@@ -2565,7 +2510,10 @@
+ //**********************************************************************
+ // XRefEntry
+
++m_poppler__tostring(XRefEntry);
++
+ static const struct luaL_Reg XRefEntry_m[] = {
++ {"__tostring", m_XRefEntry__tostring},
+ {NULL, NULL} // sentinel
+ };
+
+@@ -2582,7 +2530,6 @@
+ int luaopen_epdf(lua_State * L)
+ {
+ register_meta(Annot);
+- // TODO register_meta(AnnotBorder);
+ register_meta(Annots);
+ register_meta(Array);
+ register_meta(Catalog);
diff --git a/dev-tex/luatex/files/poppler026-backport.patch b/dev-tex/luatex/files/poppler026-backport.patch
new file mode 100644
index 000000000000..ee151a30b47f
--- /dev/null
+++ b/dev-tex/luatex/files/poppler026-backport.patch
@@ -0,0 +1,99 @@
+diff -ruN luatex-beta-0.70.1.patched.orig/source/texk/web2c/luatexdir/image/epdf.h luatex-beta-0.70.1.patched/source/texk/web2c/luatexdir/image/epdf.h
+--- luatex-beta-0.70.1.patched.orig/source/texk/web2c/luatexdir/image/epdf.h 2011-05-19 07:38:37.000000000 +0200
++++ luatex-beta-0.70.1.patched/source/texk/web2c/luatexdir/image/epdf.h 2014-10-11 12:17:00.028331243 +0200
+@@ -33,6 +33,7 @@
+ # include <sys/stat.h>
+ # include <dirent.h>
+ # include <poppler-config.h>
++# include <StructTreeRoot.h>
+ # include <goo/GooString.h>
+ # include <goo/gmem.h>
+ # include <goo/gfile.h>
+diff -ruN luatex-beta-0.70.1.patched.orig/source/texk/web2c/luatexdir/lua/lepdflib.cc luatex-beta-0.70.1.patched/source/texk/web2c/luatexdir/lua/lepdflib.cc
+--- luatex-beta-0.70.1.patched.orig/source/texk/web2c/luatexdir/lua/lepdflib.cc 2014-10-11 12:24:52.509357663 +0200
++++ luatex-beta-0.70.1.patched/source/texk/web2c/luatexdir/lua/lepdflib.cc 2014-10-11 12:42:03.665415321 +0200
+@@ -48,23 +48,24 @@
+
+ //**********************************************************************
+
+-#define M_Annot "Annot"
+-#define M_Annots "Annots"
+-#define M_Array "Array"
+-#define M_Catalog "Catalog"
+-#define M_Dict "Dict"
+-#define M_GooString "GooString"
+-#define M_LinkDest "LinkDest"
+-#define M_Link "Link"
+-#define M_Links "Links"
+-#define M_Object "Object"
+-#define M_Page "Page"
+-#define M_PDFDoc "PDFDoc"
+-#define M_PDFRectangle "PDFRectangle"
+-#define M_Ref "Ref"
+-#define M_Stream "Stream"
+-#define M_XRefEntry "XRefEntry"
+-#define M_XRef "XRef"
++#define M_Annot "epdf.Annot" /* ls-hh: epdf.* gives better protection in registry */
++#define M_Annots "epdf.Annots"
++#define M_Array "epdf.Array"
++#define M_Catalog "epdf.Catalog"
++#define M_Dict "epdf.Dict"
++#define M_GooString "epdf.GooString"
++#define M_LinkDest "epdf.LinkDest"
++#define M_Link "epdf.Link"
++#define M_Links "epdf.Links"
++#define M_Object "epdf.Object"
++#define M_Page "epdf.Page"
++#define M_PDFDoc "epdf.PDFDoc"
++#define M_PDFRectangle "epdf.PDFRectangle"
++#define M_Ref "epdf.Ref"
++#define M_Stream "epdf.Stream"
++#define M_StructTreeRoot "epdf.StructTreeRoot"
++#define M_XRef "epdf.XRef"
++#define M_XRefEntry "epdf.XRefEntry"
+
+ //**********************************************************************
+
+@@ -92,6 +93,7 @@
+ new_poppler_userdata(PDFRectangle);
+ new_poppler_userdata(Ref);
+ new_poppler_userdata(Stream);
++new_poppler_userdata(StructTreeRoot);
+ new_poppler_userdata(XRef);
+
+ //**********************************************************************
+@@ -565,7 +567,11 @@
+
+ m_poppler_get_GOOSTRING(Catalog, getBaseURI);
+ m_poppler_get_GOOSTRING(Catalog, readMetadata);
++#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT
+ m_poppler_get_poppler(Catalog, Object, getStructTreeRoot);
++#else
++m_poppler_get_poppler(Catalog, StructTreeRoot, getStructTreeRoot);
++#endif
+
+ static int m_Catalog_findPage(lua_State * L)
+ {
+@@ -2048,14 +2054,22 @@
+
+ static int m_PDFDoc_getStructTreeRoot(lua_State * L)
+ {
++#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT
+ Object *obj;
++#else
++ StructTreeRoot *obj;
++#endif
+ udstruct *uin, *uout;
+ uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc);
+ 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();
++#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT
+ uout = new_Object_userdata(L);
++#else
++ uout = new_StructTreeRoot_userdata(L);
++#endif
+ uout->d = obj;
+ uout->pc = uin->pc;
+ uout->pd = uin->pd;
diff --git a/dev-tex/luatex/files/poppler026.patch b/dev-tex/luatex/files/poppler026.patch
new file mode 100644
index 000000000000..f7b5ba35b488
--- /dev/null
+++ b/dev-tex/luatex/files/poppler026.patch
@@ -0,0 +1,143 @@
+Source: NetBSD CVS
+http://mail-index.netbsd.org/pkgsrc-bugs/2014/04/29/msg053974.html
+http://cvsweb.de.netbsd.org/cgi-bin/cvsweb.cgi/pkgsrc/print/luatex/patches/
+
+
+diff -ruN luatex-beta-0.76.0.orig/source/texk/web2c/luatexdir/image/epdf.h luatex-beta-0.76.0/source/texk/web2c/luatexdir/image/epdf.h
+--- luatex-beta-0.76.0.orig/source/texk/web2c/luatexdir/image/epdf.h 2013-04-05 12:58:37.000000000 +0200
++++ luatex-beta-0.76.0/source/texk/web2c/luatexdir/image/epdf.h 2014-05-01 01:39:39.838462783 +0200
+@@ -37,6 +37,7 @@
+ # include <sys/stat.h>
+ # include <dirent.h>
+ # include <poppler-config.h>
++# include <StructTreeRoot.h>
+ # include <goo/GooString.h>
+ # include <goo/gmem.h>
+ # include <goo/gfile.h>
+diff -ruN luatex-beta-0.76.0.orig/source/texk/web2c/luatexdir/lua/lepdflib.cc luatex-beta-0.76.0/source/texk/web2c/luatexdir/lua/lepdflib.cc
+--- luatex-beta-0.76.0.orig/source/texk/web2c/luatexdir/lua/lepdflib.cc 2013-04-05 12:58:37.000000000 +0200
++++ luatex-beta-0.76.0/source/texk/web2c/luatexdir/lua/lepdflib.cc 2014-05-01 01:40:15.698461067 +0200
+@@ -48,25 +48,26 @@
+
+ //**********************************************************************
+
+-#define M_Annot "Annot"
+-#define M_Annots "Annots"
+-#define M_Array "Array"
+-#define M_Catalog "Catalog"
+-#define M_Dict "Dict"
+-#define M_EmbFile "EmbFile"
+-#define M_FileSpec "FileSpec"
+-#define M_GooString "GooString"
+-#define M_LinkDest "LinkDest"
+-#define M_Link "Link"
+-#define M_Links "Links"
+-#define M_Object "Object"
+-#define M_Page "Page"
+-#define M_PDFDoc "PDFDoc"
+-#define M_PDFRectangle "PDFRectangle"
+-#define M_Ref "Ref"
+-#define M_Stream "Stream"
+-#define M_XRefEntry "XRefEntry"
+-#define M_XRef "XRef"
++#define M_Annot "epdf.Annot" /* ls-hh: epdf.* gives better protection in registry */
++#define M_Annots "epdf.Annots"
++#define M_Array "epdf.Array"
++#define M_Catalog "epdf.Catalog"
++#define M_Dict "epdf.Dict"
++#define M_EmbFile "epdf.EmbFile"
++#define M_FileSpec "epdf.FileSpec"
++#define M_GooString "epdf.GooString"
++#define M_LinkDest "epdf.LinkDest"
++#define M_Link "epdf.Link"
++#define M_Links "epdf.Links"
++#define M_Object "epdf.Object"
++#define M_Page "epdf.Page"
++#define M_PDFDoc "epdf.PDFDoc"
++#define M_PDFRectangle "epdf.PDFRectangle"
++#define M_Ref "epdf.Ref"
++#define M_Stream "epdf.Stream"
++#define M_StructTreeRoot "epdf.StructTreeRoot"
++#define M_XRefEntry "epdf.XRefEntry"
++#define M_XRef "epdf.XRef"
+
+ //**********************************************************************
+
+@@ -96,6 +97,7 @@
+ new_poppler_userdata(PDFRectangle);
+ new_poppler_userdata(Ref);
+ new_poppler_userdata(Stream);
++new_poppler_userdata(StructTreeRoot);
+ new_poppler_userdata(XRef);
+
+ //**********************************************************************
+@@ -573,7 +575,11 @@
+
+ m_poppler_get_GOOSTRING(Catalog, getBaseURI);
+ m_poppler_get_GOOSTRING(Catalog, readMetadata);
++#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT
+ m_poppler_get_poppler(Catalog, Object, getStructTreeRoot);
++#else
++m_poppler_get_poppler(Catalog, StructTreeRoot, getStructTreeRoot);
++#endif
+
+ static int m_Catalog_findPage(lua_State * L)
+ {
+@@ -2146,14 +2152,22 @@
+
+ static int m_PDFDoc_getStructTreeRoot(lua_State * L)
+ {
++#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT
+ Object *obj;
++#else
++ StructTreeRoot *obj;
++#endif
+ udstruct *uin, *uout;
+ uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc);
+ 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();
++#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT
+ uout = new_Object_userdata(L);
++#else
++ uout = new_StructTreeRoot_userdata(L);
++#endif
+ uout->d = obj;
+ uout->pc = uin->pc;
+ uout->pd = uin->pd;
+@@ -2617,6 +2631,15 @@
+
+ //**********************************************************************
+
++#ifdef LuajitTeX
++#define setfuncs_meta(type) \
++ luaL_newmetatable(L, M_##type); \
++ lua_pushvalue(L, -1); \
++ lua_setfield(L, -2, "__index"); \
++ lua_pushstring(L, "no user access"); \
++ lua_setfield(L, -2, "__metatable"); \
++ luaL_register(L, NULL, type##_m)
++#else
+ #define setfuncs_meta(type) \
+ luaL_newmetatable(L, M_##type); \
+ lua_pushvalue(L, -1); \
+@@ -2624,6 +2647,7 @@
+ lua_pushstring(L, "no user access"); \
+ lua_setfield(L, -2, "__metatable"); \
+ luaL_setfuncs(L, type##_m, 0)
++#endif
+
+ int luaopen_epdf(lua_State * L)
+ {
+@@ -2646,6 +2670,10 @@
+ setfuncs_meta(XRef);
+ setfuncs_meta(XRefEntry);
+
++#ifdef LuajitTeX
++ luaL_register(L, "epdf", epdflib_f);
++#else
+ luaL_newlib(L, epdflib_f);
++#endif
+ return 1;
+ }
diff --git a/dev-tex/luatex/files/remove-zlib-version-check.patch b/dev-tex/luatex/files/remove-zlib-version-check.patch
new file mode 100644
index 000000000000..985085012511
--- /dev/null
+++ b/dev-tex/luatex/files/remove-zlib-version-check.patch
@@ -0,0 +1,23 @@
+Let soname dictate the ABI and do not check for minor/micro which requires
+needless rebuilds after every zlib update. By Ulrich Müller.
+
+https://bugs.gentoo.org/show_bug.cgi?id=310487
+http://www.ntg.nl/pipermail/dev-luatex/2012-July/004534.html
+
+--- luatex-beta-0.70.1-orig/source/texk/web2c/luatexdir/luazlib/lzlib.c
++++ luatex-beta-0.70.1/source/texk/web2c/luatexdir/luazlib/lzlib.c
+@@ -549,14 +549,6 @@
+
+ /* ====================================================================== */
+
+- /* make sure header and library version are consistent */
+- const char* version = zlibVersion();
+- if (strncmp(version, ZLIB_VERSION, 5))
+- {
+- lua_pushfstring(L, "zlib library version does not match - header: %s, library: %s", ZLIB_VERSION, version);
+- lua_error(L);
+- }
+-
+ /* create new metatable for zlib compression structures */
+ luaL_newmetatable(L, ZSTREAMMETA);
+ lua_pushliteral(L, "__index");