commit: 86036b508ce4244a68e97bbc0d1f7d6aaa2c2097 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Mon Apr 28 20:53:49 2025 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Mon Apr 28 21:47:20 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=86036b50
app-text/krop: treeclean Closes: https://bugs.gentoo.org/947726 (pkgremoved) Closes: https://bugs.gentoo.org/948581 (pkgremoved) Closes: https://bugs.gentoo.org/952250 (pkgremoved) Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> app-text/krop/Manifest | 1 - app-text/krop/files/krop-0.6.0-links.patch | 64 ------------ app-text/krop/files/krop-0.6.0-pikepdf.patch | 150 --------------------------- app-text/krop/krop-0.6.0-r3.ebuild | 38 ------- app-text/krop/metadata.xml | 14 --- profiles/package.mask | 7 -- 6 files changed, 274 deletions(-) diff --git a/app-text/krop/Manifest b/app-text/krop/Manifest deleted file mode 100644 index f618c954865f..000000000000 --- a/app-text/krop/Manifest +++ /dev/null @@ -1 +0,0 @@ -DIST krop-0.6.0.tar.gz 48331 BLAKE2B ca6a00a410ed4e18a401fab3a21bc49c86f73165f68b192ab83c8fad74111ba9a9941f464a2646faa5a3317bbb45cdc89bed19c901999c0b11db353ac2997a65 SHA512 51a988e4fcb65d11cc26cf5b0c808e79097a66ef8ec4751a6c051289cd77b3328ebc8ecd9829adc466f87330beb8bc715d290cc20be415a7b8f179378b7bcb4f diff --git a/app-text/krop/files/krop-0.6.0-links.patch b/app-text/krop/files/krop-0.6.0-links.patch deleted file mode 100644 index c311b10cf88e..000000000000 --- a/app-text/krop/files/krop-0.6.0-links.patch +++ /dev/null @@ -1,64 +0,0 @@ -From a39f8328cf59492e68643f499c0d0fbda910444c Mon Sep 17 00:00:00 2001 -From: Armin Straub <[email protected]> -Date: Sun, 17 Jan 2021 15:50:49 -0600 -Subject: [PATCH] Preserve links within a PDF (thanks to chrthi) - ---- - ChangeLog | 4 ++++ - krop/mainwindow.py | 1 + - krop/pdfcropper.py | 11 +++++++++++ - 3 files changed, 16 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index eb7dbb1..4ffbedb 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+krop (0.6.1) 2021-00-00 -- Armin Straub -+ -+ * Preserve links within a PDF (thanks to chrthi for doing this). -+ - krop (0.6.0) 2020-06-09 -- Armin Straub - - + Fixed aspect ratios, like letter size, can be chosen for selections. -diff --git a/krop/mainwindow.py b/krop/mainwindow.py -index fd1ae32..e8adadf 100644 ---- a/krop/mainwindow.py -+++ b/krop/mainwindow.py -@@ -413,6 +413,7 @@ def slotKrop(self): - pdf = PdfFile() - pdf.loadFromFile(inputFileName) - cropper = PdfCropper() -+ cropper.copyDocumentRoot(pdf) - for nr in pages: - c = self.viewer.cropValues(nr) - cropper.addPageCropped(pdf, nr, c, alwaysinclude, rotation) -diff --git a/krop/pdfcropper.py b/krop/pdfcropper.py -index 679c6fc..db30646 100644 ---- a/krop/pdfcropper.py -+++ b/krop/pdfcropper.py -@@ -55,6 +55,8 @@ def writeToFile(self, filename): - stream.close() - def addPageCropped(self, pdffile, pagenumber, croplist, rotate=0): - pass -+ def copyDocumentRoot(self, pdffile): -+ pass - - - class PyPdfFile(AbstractPdfFile): -@@ -110,6 +112,15 @@ def cropPage(self, page, crop, rotate): - if rotate != 0: - page.rotateClockwise(rotate) - -+ def copyDocumentRoot(self, pdffile): -+ # Sounds promising in PyPDF2 (see PdfFileWriter.cloneDocumentFromReader), -+ # but doesn't seem to produce a readable PDF: -+ # self.output.cloneReaderDocumentRoot(pdffile.reader) -+ # Instead, this copies at least the named destinations for links: -+ for dest in pdffile.reader.namedDestinations.values(): -+ self.output.addNamedDestinationObject(dest) -+ -+ - def optimizePdfGhostscript(oldfilename, newfilename): - import subprocess - subprocess.check_call(('gs', '-sDEVICE=pdfwrite', '-sOutputFile=' + newfilename, diff --git a/app-text/krop/files/krop-0.6.0-pikepdf.patch b/app-text/krop/files/krop-0.6.0-pikepdf.patch deleted file mode 100644 index 17f59f2f72b3..000000000000 --- a/app-text/krop/files/krop-0.6.0-pikepdf.patch +++ /dev/null @@ -1,150 +0,0 @@ -From b1d17b605088e118a8799fd027a892310e00d29e Mon Sep 17 00:00:00 2001 -From: Hongzhuo Liang <[email protected]> -Date: Fri, 27 Jan 2023 17:57:04 +0100 -Subject: [PATCH] support pikepdf instead of pypdf2 - ---- - krop/mainwindow.py | 1 - - krop/pdfcropper.py | 79 ++++++++++++++-------------------------------- - 2 files changed, 24 insertions(+), 56 deletions(-) - -diff --git a/krop/mainwindow.py b/krop/mainwindow.py -index e8adadf..fd1ae32 100644 ---- a/krop/mainwindow.py -+++ b/krop/mainwindow.py -@@ -413,7 +413,6 @@ def slotKrop(self): - pdf = PdfFile() - pdf.loadFromFile(inputFileName) - cropper = PdfCropper() -- cropper.copyDocumentRoot(pdf) - for nr in pages: - c = self.viewer.cropValues(nr) - cropper.addPageCropped(pdf, nr, c, alwaysinclude, rotation) -diff --git a/krop/pdfcropper.py b/krop/pdfcropper.py -index db30646..42500de 100644 ---- a/krop/pdfcropper.py -+++ b/krop/pdfcropper.py -@@ -15,23 +15,8 @@ - - import copy - import sys -+from pikepdf import Pdf - --# Unless specified otherwise, use PyPDF2 instead of pyPdf if available. --usepypdf2 = '--no-PyPDF2' not in sys.argv --if usepypdf2: -- try: -- from PyPDF2 import PdfFileReader, PdfFileWriter -- except ImportError: -- usepypdf2 = False --if not usepypdf2: -- try: -- from pyPdf import PdfFileReader, PdfFileWriter -- except ImportError: -- _msg = "Please install PyPDF2 (or its predecessor pyPdf) first."\ -- "\n\tOn recent versions of Ubuntu, the following should do the trick:"\ -- "\n\tsudo apt-get install python-pypdf2"\ -- "\n\t(or, if using python3) sudo apt-get install python3-pypdf2" -- raise RuntimeError(_msg) - - class PdfEncryptedError(Exception): - pass -@@ -55,8 +40,6 @@ def writeToFile(self, filename): - stream.close() - def addPageCropped(self, pdffile, pagenumber, croplist, rotate=0): - pass -- def copyDocumentRoot(self, pdffile): -- pass - - - class PyPdfFile(AbstractPdfFile): -@@ -64,23 +47,16 @@ class PyPdfFile(AbstractPdfFile): - def __init__(self): - self.reader = None - def loadFromStream(self, stream): -- if usepypdf2: -- self.reader = PdfFileReader(stream, strict=False) -- else: -- self.reader = PdfFileReader(stream) -- if self.reader.isEncrypted: -- try: -- if not self.reader.decrypt(''): -- raise PdfEncryptedError -- except: -- raise PdfEncryptedError -- def getPage(self, nr): -- page = self.reader.getPage(nr-1) -+ self.reader = Pdf.open(stream) -+ if self.reader.is_encrypted: -+ raise PdfEncryptedError -+ - - class PyPdfCropper(AbstractPdfCropper): - """Implementation of PdfCropper using pyPdf""" - def __init__(self): -- self.output = PdfFileWriter() -+ self.pdf = Pdf.new() -+ - def writeToStream(self, stream): - # For certain large pdf files, PdfFileWriter.write() causes the error: - # maximum recursion depth exceeded while calling a Python object -@@ -88,37 +64,31 @@ def writeToStream(self, stream): - # We therefore temporarily increase the recursion limit. - old_reclimit = sys.getrecursionlimit() - sys.setrecursionlimit(10000) -- self.output.write(stream) -+ self.pdf.save(stream) - sys.setrecursionlimit(old_reclimit) -+ - def addPageCropped(self, pdffile, pagenumber, croplist, alwaysinclude, rotate=0): -- page = pdffile.reader.getPage(pagenumber) -+ page = pdffile.reader.pages[pagenumber] - if not croplist and alwaysinclude: -- self.output.addPage(page) -+ self.pdf.pages.append(page) - for c in croplist: -- newpage = copy.copy(page) -- self.cropPage(newpage, c, rotate) -- self.output.addPage(newpage) -- def cropPage(self, page, crop, rotate): -+ new_box = self.getCropPageParm(page, c) -+ # Update the various PDF boxes -+ new_page = copy.copy(page) -+ new_page.mediabox = new_box -+ new_page.cropbox = new_box -+ new_page.trimbox = new_box -+ if rotate != 0: -+ new_page.rotate(rotate, True) -+ self.pdf.pages.append(new_page) -+ -+ def getCropPageParm(self, page, crop): - # Note that the coordinate system is up-side down compared with Qt. -- x0, y0 = page.cropBox.lowerLeft -- x1, y1 = page.cropBox.upperRight -+ x0, y0, x1, y1 = page.cropbox - x0, y0, x1, y1 = float(x0), float(y0), float(x1), float(y1) - x0, x1 = x0+crop[0]*(x1-x0), x1-crop[2]*(x1-x0) - y0, y1 = y0+crop[3]*(y1-y0), y1-crop[1]*(y1-y0) -- # Update the various PDF boxes -- for box in (page.artBox, page.bleedBox, page.cropBox, page.mediaBox, page.trimBox): -- box.lowerLeft = (x0, y0) -- box.upperRight = (x1, y1) -- if rotate != 0: -- page.rotateClockwise(rotate) -- -- def copyDocumentRoot(self, pdffile): -- # Sounds promising in PyPDF2 (see PdfFileWriter.cloneDocumentFromReader), -- # but doesn't seem to produce a readable PDF: -- # self.output.cloneReaderDocumentRoot(pdffile.reader) -- # Instead, this copies at least the named destinations for links: -- for dest in pdffile.reader.namedDestinations.values(): -- self.output.addNamedDestinationObject(dest) -+ return [x0, y0, x1, y1] - - - def optimizePdfGhostscript(oldfilename, newfilename): -@@ -128,4 +98,3 @@ def optimizePdfGhostscript(oldfilename, newfilename): - - PdfFile = PyPdfFile - PdfCropper = PyPdfCropper -- diff --git a/app-text/krop/krop-0.6.0-r3.ebuild b/app-text/krop/krop-0.6.0-r3.ebuild deleted file mode 100644 index e2be70ba84a5..000000000000 --- a/app-text/krop/krop-0.6.0-r3.ebuild +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{10..12} ) - -inherit desktop distutils-r1 xdg - -if [[ ${PV} == 9999 ]] ; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/arminstraub/krop.git" -else - SRC_URI="https://github.com/arminstraub/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="amd64 ~x86" -fi - -DESCRIPTION="A tool to crop PDF files" -HOMEPAGE="http://arminstraub.com/software/krop" -LICENSE="GPL-3+" -SLOT="0" - -PATCHES=( - "${FILESDIR}/${P}-links.patch" - "${FILESDIR}/${P}-pikepdf.patch" -) - -RDEPEND=" - dev-python/python-poppler-qt5[${PYTHON_USEDEP}] - dev-python/pikepdf[${PYTHON_USEDEP}] - dev-python/pyqt5[${PYTHON_USEDEP},gui,widgets] -" - -src_install() { - distutils-r1_src_install - domenu "${WORKDIR}/${P}/${PN}.desktop" -} diff --git a/app-text/krop/metadata.xml b/app-text/krop/metadata.xml deleted file mode 100644 index 0581997322f1..000000000000 --- a/app-text/krop/metadata.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> -<pkgmetadata> -<maintainer type="person"> - <email>[email protected]</email> -</maintainer> -<maintainer type="project"> - <email>[email protected]</email> - <name>Gentoo Printing Project</name> -</maintainer> -<upstream> - <remote-id type="github">arminstraub/krop</remote-id> -</upstream> -</pkgmetadata> diff --git a/profiles/package.mask b/profiles/package.mask index 4e9d851bb86c..a8c8f4d69a41 100644 --- a/profiles/package.mask +++ b/profiles/package.mask @@ -213,13 +213,6 @@ dev-java/jcalendar dev-java/jgoodies-looks dev-java/jgoodies-common -# Andreas Sturmlechner <[email protected]> (2025-03-30) -# Depends on dev-python/python-poppler-qt5, stuck on py3.12, new 0.7.0 -# release available w/ PyQt6 support would require packaging new pymupdf -# dependency (bug #949686). Use media-gfx/inkscape or app-text/pdfarranger -# alternatively. Removal on 2025-04-29. Bugs #947726, #952250 -app-text/krop - # Conrad Kostecki <[email protected]> (2025-03-28) # Upstream is dead and broken. All 'whatsapp' deps # will be last-rited on 2025-04-28.
