[PATCH] gnu: texlive-bin: Add patch files to repo.

  • Done
  • quality assurance status badge
Details
3 participants
  • Maxim Cournoyer
  • Martin Becze
  • zimoun
Owner
unassigned
Submitted by
Martin Becze
Severity
normal
M
M
Martin Becze wrote on 2 Aug 2021 11:36
(address . guix-patches@gnu.org)(name . Martin Becze)(address . mjbecze@riseup.net)
20210802093627.17908-1-mjbecze@riseup.net
This adds two patch files that used to be hosted by the arch linux community
but was recently moved.

* gnu/packages/patches/texlive-poppler-0.84.patch: New file.
* gnu/packages/patches/pdftex-poppler0.76.patch: New file.
* gnu/packages/tex.scm (texlive-bin): Changed to use local patch files.
---
gnu/packages/patches/pdftex-poppler0.76.patch | 1411 +++++++++++++++++
.../patches/texlive-poppler-0.84.patch | 44 +
gnu/packages/tex.scm | 23 +-
3 files changed, 1461 insertions(+), 17 deletions(-)
create mode 100644 gnu/packages/patches/pdftex-poppler0.76.patch
create mode 100644 gnu/packages/patches/texlive-poppler-0.84.patch

Toggle diff (564 lines)
diff --git a/gnu/packages/patches/pdftex-poppler0.76.patch b/gnu/packages/patches/pdftex-poppler0.76.patch
new file mode 100644
index 0000000000..784fe0c93f
--- /dev/null
+++ b/gnu/packages/patches/pdftex-poppler0.76.patch
@@ -0,0 +1,1411 @@
+commit 473d82b2e33621d51f5c961baf8b42cdb4c955eb
+Author: Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+Date: Fri May 3 04:05:07 2019 +0000
+
+ support system poppler 0.76.[01]
+
+ git-svn-id: svn://tug.org/texlive/trunk/Build/source@50960 c570f23f-e606-0410-a88d-b1316a301751
+
+diff --git a/texk/web2c/pdftexdir/ChangeLog b/texk/web2c/pdftexdir/ChangeLog
+index 8af394342..0a43b927c 100644
+--- a/texk/web2c/pdftexdir/ChangeLog
++++ b/texk/web2c/pdftexdir/ChangeLog
+@@ -1,3 +1,8 @@
++2019-05-03 Akira Kakuto <kakuto@w32tex.org>
++
++ * pdftosrc-poppler0.76.0.cc, pdftoepdf-poppler0.76.0.cc:
++ Added to support system poppler 0.76.[01].
++
+ 2019-04-07 Karl Berry <karl@freefriends.org>
+
+ * TeX Live 2019.
+diff --git a/texk/web2c/pdftexdir/NEWS b/texk/web2c/pdftexdir/NEWS
+index c21898395..ddc933be4 100644
+--- a/texk/web2c/pdftexdir/NEWS
++++ b/texk/web2c/pdftexdir/NEWS
+@@ -28,13 +28,15 @@ pdfTeX 3.14159265-2.6-1.40.19 (TeX Live 2018) (April 14, 2018)
+ Provide new files:
+ pdftosrc-newpoppler.cc for poppler-0.59.0 upto poppler-0.70.1.
+ pdftosrc-poppler0.71.0 for poppler-0.71.0.
+- pdftosrc-poppler0.72.0 for poppler-0.72.0 and newer.
++ pdftosrc-poppler0.72.0 for poppler-0.72.0 upto poppler-0.75.0.
++ pdftosrc-poppler0.76.0 for poppler-0.76.0 and newer.
+ pdftoepdf-poppler0.68.0.cc for poppler-0.59.0 upto poppler-0.68.0.
+ pdftoepdf-poppler0.69.0.cc for poppler-0.69.0.
+ pdftoepdf-poppler0.70.0.cc for poppler-0.70.0 and poppler-0.70.1.
+ pdftoepdf-poppler0.71.0.cc for poppler-0.71.0.
+ pdftoepdf-poppler0.72.0.cc for poppler-0.72.0 upto poppler-0.74.0.
+- pdftoepdf-poppler0.75.0.cc for poppler-0.75.0 and newer.
++ pdftoepdf-poppler0.75.0.cc for poppler-0.75.0.
++ pdftoepdf-poppler0.76.0.cc for poppler-0.76.0 and newer.
+ Note that pdftosrc-*.cc and pdftoepdf-*.cc should be
+ renamed as pdftosrc.cc, and pdftoepdf.cc, respectively, before
+ compilation.
+diff --git a/texk/web2c/pdftexdir/pdftoepdf-poppler0.72.0.cc b/texk/web2c/pdftexdir/pdftoepdf-poppler0.72.0.cc
+index 630d3366d..6617cfe8b 100644
+--- a/texk/web2c/pdftexdir/pdftoepdf-poppler0.72.0.cc
++++ b/texk/web2c/pdftexdir/pdftoepdf-poppler0.72.0.cc
+@@ -23,6 +23,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.72.0 or newer versions.
++It is tested upto the poppler 0.74.0.
+ POPPLER_VERSION should be defined.
+ */
+
+diff --git a/texk/web2c/pdftexdir/pdftoepdf-poppler0.75.0.cc b/texk/web2c/pdftexdir/pdftoepdf-poppler0.75.0.cc
+index 13c3bd5ef..30f8fed58 100644
+--- a/texk/web2c/pdftexdir/pdftoepdf-poppler0.75.0.cc
++++ b/texk/web2c/pdftexdir/pdftoepdf-poppler0.75.0.cc
+@@ -22,7 +22,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. 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.75.0 or newer versions.
++The poppler should be 0.75.0.
+ POPPLER_VERSION should be defined.
+ */
+
+diff --git a/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc b/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc
+new file mode 100644
+index 000000000..e7614aa5c
+--- /dev/null
++++ b/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc
+@@ -0,0 +1,1113 @@
++/*
++Copyright 1996-2017 Han The Thanh, <thanh@pdftex.org>
++
++This file is part of pdfTeX.
++
++pdfTeX is free software; you can redistribute it and/or modify
++it under the terms of the GNU General Public License as published by
++the Free Software Foundation; either version 2 of the License, or
++(at your option) any later version.
++
++pdfTeX is distributed in the hope that it will be useful,
++but WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++GNU General Public License for more details.
++
++You should have received a copy of the GNU General Public License along
++with this program. If not, see <http://www.gnu.org/licenses/>.
++*/
++
++/*
++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. 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.76.0 or newer versions.
++POPPLER_VERSION should be defined.
++*/
++
++/* Do this early in order to avoid a conflict between
++ MINGW32 <rpcndr.h> defining 'boolean' as 'unsigned char' and
++ <kpathsea/types.h> defining Pascal's boolean as 'int'.
++*/
++#include <w2c/config.h>
++#include <kpathsea/lib.h>
++
++#include <stdlib.h>
++#include <math.h>
++#include <stddef.h>
++#include <stdio.h>
++#include <string.h>
++#include <ctype.h>
++
++#ifdef POPPLER_VERSION
++#include <dirent.h>
++#include <poppler-config.h>
++#include <goo/GooString.h>
++#include <goo/gmem.h>
++#include <goo/gfile.h>
++#define GString GooString
++#else
++#error POPPLER_VERSION should be defined.
++#endif
++#include <assert.h>
++
++#include "Object.h"
++#include "Stream.h"
++#include "Array.h"
++#include "Dict.h"
++#include "XRef.h"
++#include "Catalog.h"
++#include "Link.h"
++#include "Page.h"
++#include "GfxFont.h"
++#include "PDFDoc.h"
++#include "GlobalParams.h"
++#include "Error.h"
++
++// This file is mostly C and not very much C++; it's just used to interface
++// the functions of xpdf, which are written in C++.
++
++extern "C" {
++#include <pdftexdir/ptexmac.h>
++#include <pdftexdir/pdftex-common.h>
++
++// These functions from pdftex.web gets declared in pdftexcoerce.h in the
++// usual web2c way, but we cannot include that file here because C++
++// does not allow it.
++extern int getpdfsuppresswarningpagegroup(void);
++extern integer getpdfsuppressptexinfo(void);
++extern integer zround(double);
++}
++
++// The prefix "PTEX" for the PDF keys is special to pdfTeX;
++// this has been registered with Adobe by Hans Hagen.
++
++#define pdfkeyprefix "PTEX"
++
++#define MASK_SUPPRESS_PTEX_FULLBANNER 0x01
++#define MASK_SUPPRESS_PTEX_FILENAME 0x02
++#define MASK_SUPPRESS_PTEX_PAGENUMBER 0x04
++#define MASK_SUPPRESS_PTEX_INFODICT 0x08
++
++// 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
++// appended into a linked list. Duplicates are checked and removed from the
++// list of indirect objects during appending.
++
++enum InObjType {
++ objFont,
++ objFontDesc,
++ objOther
++};
++
++struct InObj {
++ Ref ref; // ref in original PDF
++ InObjType type; // object type
++ InObj *next; // next entry in list of indirect objects
++ int num; // new object number in output PDF
++ fd_entry *fd; // pointer to /FontDescriptor object structure
++ int enc_objnum; // Encoding for objFont
++ int written; // has it been written to output PDF?
++};
++
++struct UsedEncoding {
++ int enc_objnum;
++ GfxFont *font;
++ UsedEncoding *next;
++};
++
++static InObj *inObjList;
++static UsedEncoding *encodingList;
++static bool isInit = false;
++
++// --------------------------------------------------------------------
++// Maintain list of open embedded PDF files
++// --------------------------------------------------------------------
++
++struct PdfDocument {
++ char *file_name;
++ PDFDoc *doc;
++ XRef *xref;
++ InObj *inObjList;
++ int occurences; // number of references to the document; the doc can be
++ // deleted when this is negative
++ PdfDocument *next;
++};
++
++static PdfDocument *pdfDocuments = 0;
++
++static XRef *xref = 0;
++
++// Returns pointer to PdfDocument record for PDF file.
++// Creates a new record if it doesn't exist yet.
++// xref is made current for the document.
++
++static PdfDocument *find_add_document(char *file_name)
++{
++ PdfDocument *p = pdfDocuments;
++ while (p && strcmp(p->file_name, file_name) != 0)
++ p = p->next;
++ if (p) {
++ xref = p->xref;
++ (p->occurences)++;
++ return p;
++ }
++ p = new PdfDocument;
++ p->file_name = xstrdup(file_name);
++ p->xref = xref = 0;
++ p->occurences = 0;
++ GString *docName = new GString(p->file_name);
++ p->doc = new PDFDoc(docName); // takes ownership of docName
++ if (!p->doc->isOk() || !p->doc->okToPrint()) {
++ pdftex_fail("xpdf: reading PDF image failed");
++ }
++ p->inObjList = 0;
++ p->next = pdfDocuments;
++ pdfDocuments = p;
++ return p;
++}
++
++// Deallocate a PdfDocument with all its resources
++
++static void delete_document(PdfDocument * pdf_doc)
++{
++ PdfDocument **p = &pdfDocuments;
++ while (*p && *p != pdf_doc)
++ p = &((*p)->next);
++ // should not happen:
++ if (!*p)
++ return;
++ // unlink from list
++ *p = pdf_doc->next;
++ // free pdf_doc's resources
++ InObj *r, *n;
++ for (r = pdf_doc->inObjList; r != 0; r = n) {
++ n = r->next;
++ delete r;
++ }
++ xref = pdf_doc->xref;
++ delete pdf_doc->doc;
++ xfree(pdf_doc->file_name);
++ delete pdf_doc;
++}
++
++// --------------------------------------------------------------------
++
++static int addEncoding(GfxFont * gfont)
++{
++ UsedEncoding *n;
++ n = new UsedEncoding;
++ n->next = encodingList;
++ encodingList = n;
++ n->font = gfont;
++ n->enc_objnum = pdfnewobjnum();
++ return n->enc_objnum;
++}
++
++#define addFont(ref, fd, enc_objnum) \
++ addInObj(objFont, ref, fd, enc_objnum)
++
++// addFontDesc is only used to avoid writing the original FontDescriptor
++// from the PDF file.
++
++#define addFontDesc(ref, fd) \
++ addInObj(objFontDesc, ref, fd, 0)
++
++#define addOther(ref) \
++ addInObj(objOther, ref, 0, 0)
++
++static int addInObj(InObjType type, Ref ref, fd_entry * fd, int e)
++{
++ InObj *p, *q, *n = new InObj;
++ if (ref.num == 0)
++ pdftex_fail("PDF inclusion: invalid reference");
++ n->ref = ref;
++ n->type = type;
++ n->next = 0;
++ n->fd = fd;
++ n->enc_objnum = e;
++ n->written = 0;
++ if (inObjList == 0)
++ inObjList = n;
++ else {
++ for (p = inObjList; p != 0; p = p->next) {
++ if (p->ref.num == ref.num && p->ref.gen == ref.gen) {
++ delete n;
++ return p->num;
++ }
++ q = p;
++ }
++ // it is important to add new objects at the end of the list,
++ // because new objects are being added while the list is being
++ // written out.
++ q->next = n;
++ }
++ if (type == objFontDesc)
++ n->num = get_fd_objnum(fd);
++ else
++ n->num = pdfnewobjnum();
++ return n->num;
++}
++
++#if 0 /* unusewd */
++static int getNewObjectNumber(Ref ref)
++{
++ InObj *p;
++ if (inObjList == 0) {
++ pdftex_fail("No objects copied yet");
++ } else {
++ for (p = inObjList; p != 0; p = p->next) {
++ if (p->ref.num == ref.num && p->ref.gen == ref.gen) {
++ return p->num;
++ }
++ }
++ pdftex_fail("Object not yet copied: %i %i", ref.num, ref.gen);
++ }
++#ifdef _MSC_VER
++ /* Never reached, but without __attribute__((noreturn)) for pdftex_fail()
++ MSVC 5.0 requires an int return value. */
++ return -60000;
++#endif
++}
++#endif
++
++static void copyObject(Object *);
++
++static void copyName(char *s)
++{
++ pdf_puts("/");
++ for (; *s != 0; s++) {
++ if (isdigit(*s) || isupper(*s) || islower(*s) || *s == '_' ||
++ *s == '.' || *s == '-' || *s == '+')
++ pdfout(*s);
++ else
++ pdf_printf("#%.2X", *s & 0xFF);
++ }
++}
++
++static void copyDictEntry(Object * obj, int i)
++{
++ Object obj1;
++ copyName((char *)obj->dictGetKey(i));
++ pdf_puts(" ");
++ obj1 = obj->dictGetValNF(i).copy();
++ copyObject(&obj1);
++ pdf_puts("\n");
++}
++
++static void copyDict(Object * obj)
++{
++ int i, l;
++ if (!obj->isDict())
++ pdftex_fail("PDF inclusion: invalid dict type <%s>",
++ obj->getTypeName());
++ for (i = 0, l = obj->dictGetLength(); i < l; ++i)
++ copyDictEntry(obj, i);
++}
++
++static void copyFontDict(Object * obj, InObj * r)
++{
++ int i, l;
++ char *key;
++ if (!obj->isDict())
++ pdftex_fail("PDF inclusion: invalid dict type <%s>",
++ obj->getTypeName());
++ pdf_puts("<<\n");
++ assert(r->type == objFont); // FontDescriptor is in fd_tree
++ for (i = 0, l = obj->dictGetLength(); i < l; ++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)
++ continue; // skip original values
++ copyDictEntry(obj, i);
++ }
++ // write new FontDescriptor, BaseFont, and Encoding
++ pdf_printf("/FontDescriptor %d 0 R\n", get_fd_objnum(r->fd));
++ pdf_printf("/BaseFont %d 0 R\n", get_fn_objnum(r->fd));
++ pdf_printf("/Encoding %d 0 R\n", r->enc_objnum);
++ pdf_puts(">>");
++}
++
++static void copyStream(Stream * str)
++{
++ int c, c2 = 0;
++ str->reset();
++ while ((c = str->getChar()) != EOF) {
++ pdfout(c);
++ c2 = c;
++ }
++ pdflastbyte = c2;
++}
++
++static void copyProcSet(Object * obj)
++{
++ int i, l;
++ Object procset;
++ if (!obj->isArray())
++ pdftex_fail("PDF inclusion: invalid ProcSet array type <%s>",
++ obj->getTypeName());
++ pdf_puts("/ProcSet [ ");
++ for (i = 0, l = obj->arrayGetLength(); i < l; ++i) {
++ procset = obj->arrayGetNF(i).copy();
++ if (!procset.isName())
++ pdftex_fail("PDF inclusion: invalid ProcSet entry type <%s>",
++ procset.getTypeName());
++ copyName((char *)procset.getName());
++ pdf_puts(" ");
++ }
++ pdf_puts("]\n");
++}
++
++#define REPLACE_TYPE1C true
++
++static bool embeddableFont(Object * fontdesc)
++{
++ Object fontfile, ffsubtype;
++
++ if (!fontdesc->isDict())
++ return false;
++ fontfile = fontdesc->dictLookup("FontFile");
++ if (fontfile.isStream())
++ return true;
++ if (REPLACE_TYPE1C) {
++ fontfile = fontdesc->dictLookup("FontFile3");
++ if (!fontfile.isStream())
++ return false;
++ ffsubtype = fontfile.streamGetDict()->lookup("Subtype");
++ return ffsubtype.isName() && !strcmp(ffsubtype.getName(), "Type1C");
++ }
++ return false;
++}
++
++static void copyFont(char *tag, Object * fontRef)
++{
++ Object fontdict, subtype, basefont, fontdescRef, fontdesc, charset,
++ stemV;
++ GfxFont *gfont;
++ fd_entry *fd;
++ fm_entry *fontmap;
++ // Check whether the font has already been embedded before analysing it.
++ InObj *p;
++ Ref ref = fontRef->getRef();
++ for (p = inObjList; p; p = p->next) {
++ if (p->ref.num == ref.num && p->ref.gen == ref.gen) {
++ copyName(tag);
++ pdf_printf(" %d 0 R ", p->num);
++ return;
++ }
++ }
++ // Only handle included Type1 (and Type1C) fonts; anything else will be copied.
++ // Type1C fonts are replaced by Type1 fonts, if REPLACE_TYPE1C is true.
++ fontdict = fontRef->fetch(xref);
++ fontdesc = Object(objNull);
++ if (fontdict.isDict()) {
++ subtype = fontdict.dictLookup("Subtype");
++ basefont = fontdict.dictLookup("BaseFont");
++ fontdescRef = fontdict.dictLookupNF("FontDescriptor").copy();
++ if (fontdescRef.isRef()) {
++ fontdesc = fontdescRef.fetch(xref);
++ }
++ }
++ if (!fixedinclusioncopyfont && fontdict.isDict()
++ && subtype.isName()
++ && !strcmp(subtype.getName(), "Type1")
++ && basefont.isName()
++ && fontdescRef.isRef()
++ && fontdesc.isDict()
++ && embeddableFont(&fontdesc)
++ && (fontmap = lookup_fontmap((char *)basefont.getName())) != NULL) {
++ // round /StemV value, since the PDF input is a float
++ // (see Font Descriptors in PDF reference), but we only store an
++ // integer, since we don't want to change the struct.
++ stemV = fontdesc.dictLookup("StemV");
++ fd = epdf_create_fontdescriptor(fontmap, zround(stemV.getNum()));
++ charset = fontdesc.dictLookup("CharSet");
++ if (!charset.isNull() &&
++ charset.isString() && is_subsetable(fontmap))
++ epdf_mark_glyphs(fd, (char *)charset.getString()->c_str());
++ else
++ embed_whole_font(fd);
++ addFontDesc(fontdescRef.getRef(), fd);
++ copyName(tag);
++ gfont = GfxFont::makeFont(xref, tag, fontRef->getRef(),
++ fontdict.getDict());
++ pdf_printf(" %d 0 R ", addFont(fontRef->getRef(), fd,
++ addEncoding(gfont)));
++ } else {
++ copyName(tag);
++ pdf_puts(" ");
++ copyObject(fontRef);
++ }
++}
++
++static void copyFontResources(Object * obj)
++{
++ Object fontRef;
++ int i, l;
++ if (!obj->isDict())
++ pdftex_fail("PDF inclusion: invalid font resources dict type <%s>",
++ obj->getTypeName());
++ pdf_puts("/Font << ");
++ for (i = 0, l = obj->dictGetLength(); i < l; ++i) {
++ fontRef = obj->dictGetValNF(i).copy();
++ 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(" ");
++ copyObject(&fontRef);
++ }
++ else
++ pdftex_fail("PDF inclusion: invalid font in reference type <%s>",
++ fontRef.getTypeName());
++ }
++ pdf_puts(">>\n");
++}
++
++static void copyOtherResources(Object * obj, char *key)
++{
++ // copies all other resources (write_epdf handles Fonts and ProcSets),
++
++ // if Subtype is present, it must be a name
++ if (strcmp("Subtype", key) == 0) {
++ if (!obj->isName()) {
++ pdftex_warn("PDF inclusion: Subtype in Resources dict is not a name"
++ " (key '%s', type <%s>); ignored.",
++ key, obj->getTypeName());
++ return;
++ }
++ } else if (!obj->isDict()) {
++ //FIXME: Write the message only to the log file
++ pdftex_warn("PDF inclusion:
This message was truncated. Download the full message here.
M
M
Maxim Cournoyer wrote on 3 Aug 2021 20:56
(name . Martin Becze)(address . mjbecze@riseup.net)(address . 49820@debbugs.gnu.org)
87im0m9x27.fsf@gmail.com
Hi,

Martin Becze <mjbecze@riseup.net> writes:

Toggle quote (14 lines)
> This adds two patch files that used to be hosted by the arch linux community
> but was recently moved.
>
> * gnu/packages/patches/texlive-poppler-0.84.patch: New file.
> * gnu/packages/patches/pdftex-poppler0.76.patch: New file.
> * gnu/packages/tex.scm (texlive-bin): Changed to use local patch files.
> ---
> gnu/packages/patches/pdftex-poppler0.76.patch | 1411 +++++++++++++++++
> .../patches/texlive-poppler-0.84.patch | 44 +
> gnu/packages/tex.scm | 23 +-
> 3 files changed, 1461 insertions(+), 17 deletions(-)
> create mode 100644 gnu/packages/patches/pdftex-poppler0.76.patch
> create mode 100644 gnu/packages/patches/texlive-poppler-0.84.patch

[...]

I'm afraid this can't go to master as 'guix refresh -l texlive-bin' says
5160 packages would need to be rebuilt. It's also not needed for
core-updates as it contains TeX Live 2021 which doesn't need these
patches anymore.

Thanks,

Maxim
Z
Z
zimoun wrote on 2 Feb 2022 19:13
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
878rut9lxs.fsf_-_@gmail.com
Hi,

On Tue, 03 Aug 2021 at 14:56, Maxim Cournoyer <maxim.cournoyer@gmail.com> wrote:
Toggle quote (9 lines)
> Martin Becze <mjbecze@riseup.net> writes:
>
>> This adds two patch files that used to be hosted by the arch linux community
>> but was recently moved.
>>
>> * gnu/packages/patches/texlive-poppler-0.84.patch: New file.
>> * gnu/packages/patches/pdftex-poppler0.76.patch: New file.
>> * gnu/packages/tex.scm (texlive-bin): Changed to use local patch files.

[...]

Toggle quote (5 lines)
> I'm afraid this can't go to master as 'guix refresh -l texlive-bin' says
> 5160 packages would need to be rebuilt. It's also not needed for
> core-updates as it contains TeX Live 2021 which doesn't need these
> patches anymore.

Indeed, but sadly we overlooked at the issue raised by this patch; not
the patch themselves, the move of Arch to another hosting system.

The consequence is many time-machine are now broken, for instance:

$ guix time-machine --commit=e77412362f -- help

Toggle snippet (6 lines)
sha256 hash mismatch for /gnu/store/7c5jx9zbnh8nlapbxqv1wl8056lhhl2l-texlive-bin-pdftex-poppler0.75.patch:
expected hash: 1cqpcp7h1qyxyp3wjbpcmx2wgvj9ywpz60hvy280mp9w633yzyg3
actual hash: 0ribvsg4bka1cyj1wz4cd6vrxkvhqvlmjr75d7fdz5pw9r3rlgk8
hash mismatch for store item '/gnu/store/7c5jx9zbnh8nlapbxqv1wl8056lhhl2l-texlive-bin-pdftex-poppler0.75.patch'

because this kind of snippet:

Toggle snippet (17 lines)
(let ((arch-patch
(lambda (name revision hash)
(origin
(method url-fetch)
(uri (string-append "https://git.archlinux.org/svntogit/packages.git"
"/plain/trunk/" name "?h=packages/texlive-bin"
"&id=" revision))
(file-name (string-append "texlive-bin-" name))
(sha256 (base32 hash)))))
(arch-revision "418dd6f008c3d41a461353fdb60f2d73d87c58ed"))
(append (search-patches "texlive-bin-CVE-2018-17407.patch"
"texlive-bin-luatex-poppler-compat.patch")
(list
(arch-patch "pdftex-poppler0.75.patch" arch-revision
"1cqpcp7h1qyxyp3wjbpcmx2wgvj9ywpz60hvy280mp9w633yzyg3")

Another story!


Well, I think this patch proposal for master can be closed. WDYT?


Cheers,
simon
M
M
Maxim Cournoyer wrote on 3 Feb 2022 03:56
(name . zimoun)(address . zimon.toutoune@gmail.com)
875ypw4q05.fsf@gmail.com
Hi Simon,

zimoun <zimon.toutoune@gmail.com> writes:

Toggle quote (55 lines)
> Hi,
>
> On Tue, 03 Aug 2021 at 14:56, Maxim Cournoyer <maxim.cournoyer@gmail.com> wrote:
>> Martin Becze <mjbecze@riseup.net> writes:
>>
>>> This adds two patch files that used to be hosted by the arch linux community
>>> but was recently moved.
>>>
>>> * gnu/packages/patches/texlive-poppler-0.84.patch: New file.
>>> * gnu/packages/patches/pdftex-poppler0.76.patch: New file.
>>> * gnu/packages/tex.scm (texlive-bin): Changed to use local patch files.
>
> [...]
>
>> I'm afraid this can't go to master as 'guix refresh -l texlive-bin' says
>> 5160 packages would need to be rebuilt. It's also not needed for
>> core-updates as it contains TeX Live 2021 which doesn't need these
>> patches anymore.
>
> Indeed, but sadly we overlooked at the issue raised by this patch; not
> the patch themselves, the move of Arch to another hosting system.
>
> The consequence is many time-machine are now broken, for instance:
>
> $ guix time-machine --commit=e77412362f -- help
>
> sha256 hash mismatch for /gnu/store/7c5jx9zbnh8nlapbxqv1wl8056lhhl2l-texlive-bin-pdftex-poppler0.75.patch:
> expected hash: 1cqpcp7h1qyxyp3wjbpcmx2wgvj9ywpz60hvy280mp9w633yzyg3
> actual hash: 0ribvsg4bka1cyj1wz4cd6vrxkvhqvlmjr75d7fdz5pw9r3rlgk8
> hash mismatch for store item '/gnu/store/7c5jx9zbnh8nlapbxqv1wl8056lhhl2l-texlive-bin-pdftex-poppler0.75.patch'
>
>
> because this kind of snippet:
>
> (let ((arch-patch
> (lambda (name revision hash)
> (origin
> (method url-fetch)
> (uri (string-append "https://git.archlinux.org/svntogit/packages.git"
> "/plain/trunk/" name "?h=packages/texlive-bin"
> "&id=" revision))
> (file-name (string-append "texlive-bin-" name))
> (sha256 (base32 hash)))))
> (arch-revision "418dd6f008c3d41a461353fdb60f2d73d87c58ed"))
> (append (search-patches "texlive-bin-CVE-2018-17407.patch"
> "texlive-bin-luatex-poppler-compat.patch")
> (list
> (arch-patch "pdftex-poppler0.75.patch" arch-revision
> "1cqpcp7h1qyxyp3wjbpcmx2wgvj9ywpz60hvy280mp9w633yzyg3")
>
> Another story!
>
>
> Well, I think this patch proposal for master can be closed. WDYT?

Yes!

Thanks for your efforts in tidying the house :-).

Closing for now.

Maxim
Closed
?