summaryrefslogtreecommitdiff
path: root/net-print
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-04-08 18:31:11 +0100
committerV3n3RiX <venerix@koprulu.sector>2024-04-08 18:31:11 +0100
commitc510d9ec7aca9b092e381a7a4ff213757c7a9709 (patch)
tree761e15713e0c17f3211dc12e0dd9a82d5a96c1c8 /net-print
parent2cfe62a1f75cfb07a50f631f29d56bff5d09bf47 (diff)
gentoo auto-resync : 08:04:2024 - 18:31:11
Diffstat (limited to 'net-print')
-rw-r--r--net-print/Manifest.gzbin6417 -> 6418 bytes
-rw-r--r--net-print/cups-filters/Manifest1
-rw-r--r--net-print/cups-filters/cups-filters-2.0.0-r1.ebuild55
-rw-r--r--net-print/libcupsfilters/Manifest4
-rw-r--r--net-print/libcupsfilters/files/libcupsfilters-2.0.0-color-space.patch254
-rw-r--r--net-print/libcupsfilters/files/libcupsfilters-2.0.0-raster-build-fix.patch28
-rw-r--r--net-print/libcupsfilters/files/libcupsfilters-2.0.0-raster-gray.patch50
-rw-r--r--net-print/libcupsfilters/libcupsfilters-2.0.0-r4.ebuild77
8 files changed, 469 insertions, 0 deletions
diff --git a/net-print/Manifest.gz b/net-print/Manifest.gz
index d99ebd41572f..2e9d8311464a 100644
--- a/net-print/Manifest.gz
+++ b/net-print/Manifest.gz
Binary files differ
diff --git a/net-print/cups-filters/Manifest b/net-print/cups-filters/Manifest
index 01a1aa42bdf4..97e0ec3db94e 100644
--- a/net-print/cups-filters/Manifest
+++ b/net-print/cups-filters/Manifest
@@ -4,5 +4,6 @@ AUX cups-filters-1.28.17-c++17.patch 1066 BLAKE2B 149001a37c5799210a7cbc6c79ab1b
DIST cups-filters-1.28.17.tar.xz 1516052 BLAKE2B 87258391901d55d9e59b06d54603d014e54d224a373529bd70fcd38cded9dc96c88ca73bcea63d7633c065caea3f9e3274cd450aec5f1bd90130d9a88c0d3421 SHA512 320544a48206165581adafb28dbef58f39c66bebd3641be3d180a692605349d9e6af6d464044db9f7bda17a67f4a079370d8cc880cd7873d684b2209882deb35
DIST cups-filters-2.0.0.tar.xz 447648 BLAKE2B be5e2aab4eb921aa67bfcc93aa5f95a9f1fe1a269ed73d18273a0e9a3e816187e9e32750ba6521c3ab083c3c7b7a60bb1fa679e16d4a5917f911a4ba8d4b7207 SHA512 fc8ba3bbf92d5ede295884023d1c42422c4c250dbbf21c948f160a04ded3259784df4bd17eea64492f9417f866e566be1a9fcde47d29655cd4204ef4cc7af134
EBUILD cups-filters-1.28.17-r2.ebuild 3679 BLAKE2B 6f49716b9a904f063cf4356d856a87af14ce1d8536ff87aa92fe025f2df53d863373b8268524143500a17993b6dc98ede742c85a8ea931d279402e4dc70d5c36 SHA512 0e5d1a2d6c63ae020cab8f598d9b06e72712b95af8f3daf0b8a6eccbce311d89596e57ebcfa19dc9fcbc55c20714f22792ae84d29d1decdc07d20f1e7a03d1a3
+EBUILD cups-filters-2.0.0-r1.ebuild 1572 BLAKE2B 554eeca88be668f81a632527fe7b7913d48bdb5b0958a4b5541b9495b5a301f2c62a143eb01d3e7ae701fcaa542e293783be626ed57d09dfdb9f6dada1f43485 SHA512 5151eb4505f7c6d014c013a048620cfe1aa67a304bb66971aced03a267d11c0649f598815197313d0abf18c526146b282011afed6750e356268a99162f1cad88
EBUILD cups-filters-2.0.0.ebuild 1422 BLAKE2B c85fcc33008f41ad75c2b8c25e5ed6671d18a3e6049afe410becf97c0f2821f8984fb78dbe301552b2972534af92cf6de1dddf381d3a241d5cd8f1edc6e5c8d8 SHA512 e997a777141dd75987c9f5b6a405076bb791d8e581471668a6a7719cc739d38388866bde5299f728174047fe4ee00c32e371b3094ed829f8599e73b2650a347f
MISC metadata.xml 585 BLAKE2B c3ae887bff09343b882156b9020c185a9bd0d7bfabee240c71d714b8811761ef23176e4ee71f731022103a3da2255e1683b7ac4aca0f677afd994de5bedc96ca SHA512 313722d8912f26c1a7754a837b1d64dd122ac005cd9bb644ae65cac7b7a442845b25befa7891669abbf43011e9958988a6ad084dfa6ed393decbd198e852b196
diff --git a/net-print/cups-filters/cups-filters-2.0.0-r1.ebuild b/net-print/cups-filters/cups-filters-2.0.0-r1.ebuild
new file mode 100644
index 000000000000..462a52f62558
--- /dev/null
+++ b/net-print/cups-filters/cups-filters-2.0.0-r1.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Cups filters"
+HOMEPAGE="https://wiki.linuxfoundation.org/openprinting/cups-filters"
+SRC_URI="https://github.com/OpenPrinting/cups-filters/releases/download/${PV}/${P}.tar.xz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="+foomatic"
+
+RDEPEND="
+ net-print/libcupsfilters
+ net-print/libppd
+ >=net-print/cups-1.7.3
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ >=sys-devel/gettext-0.18.3
+ virtual/pkgconfig
+"
+
+# The tests are composed of:
+# - built program
+# - test case itself: filter/test.sh
+#
+# The latter is not wired up, and it becomes immediately evident why.
+# Bow to this reality and don't claim we can run anything. As a side
+# effect, don't compile in src_test, that which we never use.
+RESTRICT="test"
+
+src_configure() {
+ local myeconfargs=(
+ --enable-imagefilters
+ --enable-driverless
+ --enable-poppler
+ --localstatedir="${EPREFIX}"/var
+ --with-fontdir="fonts/conf.avail"
+ # cups-browsed is split out and avahi is not needed for filters
+ # https://github.com/OpenPrinting/cups-filters/pull/558
+ --disable-avahi
+ # These are just probed for the path. Always enable them.
+ --with-gs-path="${EPREFIX}"/usr/bin/gs
+ --with-mutool-path="${EPREFIX}"/usr/bin/mutool
+
+ $(use_enable foomatic)
+ )
+
+ # bash for configure until https://github.com/OpenPrinting/cups-filters/pull/567 (bug #920346)
+ # lands in a release.
+ CONFIG_SHELL="${BROOT}"/bin/bash econf "${myeconfargs[@]}"
+}
diff --git a/net-print/libcupsfilters/Manifest b/net-print/libcupsfilters/Manifest
index 711383a01147..4fff636cd4f3 100644
--- a/net-print/libcupsfilters/Manifest
+++ b/net-print/libcupsfilters/Manifest
@@ -1,4 +1,8 @@
+AUX libcupsfilters-2.0.0-color-space.patch 8846 BLAKE2B 204e948b02db64854bc875fbf97c19a59a64217dbedae8733bcff3a1bb142f6c4758521863a3d101eface20b23ecdd6d6e237aabd271e5139de06c096bebaeec SHA512 59655046cd7f4c75af75673ba244bb41bb95bb7f5cfc652acff741c8aa8e2797b6d82f01bff97cc37c4b2f14eb193b55327dcd30f6fd97ad6a2bdbc8673830f8
AUX libcupsfilters-2.0.0-r3-c++17.patch 622 BLAKE2B a36f3b54b7047cbf1c7b8ff1a615d53fcaa23d9a5cda7abd8a565b40b05ebf3dbf277c7008d99f17d907fb3c3a5e38ff3726a6a56c0bf9c4821d1c11665acff2 SHA512 4bfed9113913b8788f111334df3fa08536c965d316f5b627d614914d6ef2bb14747b8eb25a6c9bd69a092a6082829a97468111c70f3717ce1c762737faddcb07
+AUX libcupsfilters-2.0.0-raster-build-fix.patch 842 BLAKE2B 37abde9acc45311a62edc669498bef9d6f86e691de3c9632aec66ca575c5af9a0dab03b9e7bcf97ad1b927580825a98ee7dcad3fe3e00d1679e25ec7b0f0e843 SHA512 2e639d238c2dbb8646174c3b76c9b5c4450639c8fd0fd1969545d86370fe077f04720412e561108dde88bd86e8a29cf6fe2233a45398494b50a3f6908aa834aa
+AUX libcupsfilters-2.0.0-raster-gray.patch 1889 BLAKE2B 515b29df1141389262458205d1104f430f986f2ef5eefb9e2624c34715c4afd1f07b01deb57267fc322707f0799f8b31f17408c96af9f39c38d5eabbdc5eb678 SHA512 b63d639ac5472848a54f23bf0562dff58704b31864d753ce2f3502f56bd427feef4d2439f79e6fa20ab3bfcb61a4d0ac9f783c98716e09e1ed289c01ee570da2
DIST libcupsfilters-2.0.0.tar.xz 1279856 BLAKE2B ce9d839bb700017c303c1301c7a97fd02e3657a908e685377be49557d995574a7fc5a31d4fcbda5eeb9ba2d3cd07858224540dbf0bc9fa078cfd25a58ee15a41 SHA512 279bff6dcfa76312b10dae97480914345defd90eab79c4716d4553870f73e0f9db404786fd7e2948a86ae5aedb10dca0c2984ccb4222acbd4e835cd572030d6a
EBUILD libcupsfilters-2.0.0-r3.ebuild 1613 BLAKE2B 40d181809f6dab64c2318ca6036e1649443c8e6a2193ac563dfb422c953c50ec9e7c00b75216125c3497459c3b4834b09311d1e4aff64ea7f26deba48c27dde2 SHA512 280951268cd099fe5e69efab93fee02df42cff893b6b4a4f48d25b67ef2aacd926166af95c764a31f37064c9e16bd0f9c025c63ad378589aefc0df52f24c7b3f
+EBUILD libcupsfilters-2.0.0-r4.ebuild 1738 BLAKE2B 911e77b10b8695417cb8ba3d0ed745921fa2c5a7ba26326e3fccaffc380647df90d00c1e461e3dc6c1b912a9af151b8c0daf0d36e7ad17f95525f8a9d3db5885 SHA512 5b6eccd14997f0766e686277409ba70729a6c23ed1440b714403b178b97488375295f97190c154cfb677133ae8114516a5f89fbb4dcb1e393553546f0394ef65
MISC metadata.xml 426 BLAKE2B 60d605203c938ba35e60bc4dfa121d6fb0223d70fdd1bdea4ed02693034a46ff039a580f5c0a5925aa3c4c33220243503096b8de233f6031447a6425a974182a SHA512 04811e0d82ce0365308b4391a33e03da423dc924cc7ff16a2eeedbdb51705b9a62cffe67d7e25b9221a0b511caaa3b19c184301fbecc59056a282a811ad9df7e
diff --git a/net-print/libcupsfilters/files/libcupsfilters-2.0.0-color-space.patch b/net-print/libcupsfilters/files/libcupsfilters-2.0.0-color-space.patch
new file mode 100644
index 000000000000..37a8bce64d7b
--- /dev/null
+++ b/net-print/libcupsfilters/files/libcupsfilters-2.0.0-color-space.patch
@@ -0,0 +1,254 @@
+https://bugs.gentoo.org/927137
+https://github.com/OpenPrinting/cups-filters/issues/578
+https://github.com/OpenPrinting/libcupsfilters/commit/c6175a2f3f66dbf76bb35ec8d1ba0dc094c9dbac
+
+From c6175a2f3f66dbf76bb35ec8d1ba0dc094c9dbac Mon Sep 17 00:00:00 2001
+From: Till Kamppeter <till.kamppeter@gmail.com>
+Date: Wed, 29 Nov 2023 00:25:16 +0100
+Subject: [PATCH] raster_base_header(): Several fixes on color space selection
+
+Fixes #38
+
+The internal (static) funcrion raster_base_header() creates a CUPS or
+PWG Raster header from scratch, without using data of a PPD file by
+means of Raster header derived from the PPD. It solely uses IPP
+attributes or command line options.
+
+It distinguishes between CUPS Raster and PWG/Apple Raster headers.
+
+There were several bugs in selecting the correct color space and depth
+settings:
+
+- For PWG-Raster all attributes and options got ignored and standard
+ 8-bit sRGB set.
+
+- Without any valid color space/depth setting attribute or "auto"
+ always standard 8-bit sRGB got set as the default, regardless
+ whether the printer is actually a color printer.
+
+- Color spaces for printing in color could be set on monochrome
+ printers by options or atrributes.
+
+- Color spaces not valid on PWG Raster could be set on PWG Raster.
+
+- DeviceN modes could only be set by specifying a depth, like
+ "Device4_8" not just "Device4".
+
+Now we use 8-bit SGray as default for monochrome printers and 8-bit
+RGB for color printers. We use the printer IPP attribute
+"color-supported" to check whether the printer is color.
+
+IPP ttributes or command line options setting a color mode on a
+monochrome printer are ignored now, also, if the output format is PWG
+Raster, setting a color space not supported by PWG Raster is ignored.
+
+Now for monochrome AirPrint (Apple Raster) printers, the Raster data
+sent should be actually monochrome (grayscale) and not color.
+---
+ cupsfilters/raster.c | 103 +++++++++++++++++++++++++------------------
+ 1 file changed, 61 insertions(+), 42 deletions(-)
+
+diff --git a/cupsfilters/raster.c b/cupsfilters/raster.c
+index 32a8b807..5e10f3bb 100644
+--- a/cupsfilters/raster.c
++++ b/cupsfilters/raster.c
+@@ -792,7 +792,7 @@ cfRasterSetColorSpace(cups_page_header_t *h, // I - Raster header
+
+
+ static int // O - -1 on error, 0 on success
+-raster_base_header(cups_page_header2_t *h, // O - Raster header
++raster_base_header(cups_page_header2_t *h, // O - Raster header
+ cf_filter_data_t *data, // I - Filter data
+ int pwg_raster) // I - 1 if PWG/Apple Raster
+ {
+@@ -1420,41 +1420,46 @@ raster_base_header(cups_page_header_t *h, // O - Raster header
+ // TODO - Support for MediaType number
+ h->cupsMediaType = 0;
+
+- // Only for CUPS Raster, if we do not have a sample header from a PPD file
+- if (pwg_raster == 0 &&
+- ((val = cupsGetOption("pwg-raster-document-type", num_options,
+- options)) != NULL ||
+- (val = cupsGetOption("PwgRasterDocumentType", num_options,
+- options)) != NULL ||
+- (val = cupsGetOption("color-space", num_options, options)) != NULL ||
+- (val = cupsGetOption("ColorSpace", num_options, options)) != NULL ||
+- (val = cupsGetOption("color-model", num_options, options)) != NULL ||
+- (val = cupsGetOption("ColorModel", num_options, options)) != NULL ||
+- (val = cupsGetOption("print-color-mode", num_options, options)) !=
+- NULL ||
+- (val = cupsGetOption("output-mode", num_options, options)) != NULL ||
+- (val = cupsGetOption("OutputMode", num_options, options)) != NULL ||
+- (val = cfIPPAttrEnumValForPrinter(data->printer_attrs,
+- data->job_attrs,
+- "print-color-mode")) != NULL))
++
++ // Do we have a color printer?
++ bool is_color =
++ ((attr = ippFindAttribute(data->printer_attrs, "color-supported",
++ IPP_TAG_BOOLEAN)) != NULL &&
++ ippGetBoolean(attr, 0));
++
++ // Color modes
++ int numcolors = 0; // Number of colorants
++ if ((val = cupsGetOption("pwg-raster-document-type", num_options,
++ options)) != NULL ||
++ (val = cupsGetOption("PwgRasterDocumentType", num_options,
++ options)) != NULL ||
++ (val = cupsGetOption("color-space", num_options, options)) != NULL ||
++ (val = cupsGetOption("ColorSpace", num_options, options)) != NULL ||
++ (val = cupsGetOption("color-model", num_options, options)) != NULL ||
++ (val = cupsGetOption("ColorModel", num_options, options)) != NULL ||
++ (val = cupsGetOption("print-color-mode", num_options, options)) !=
++ NULL ||
++ (val = cupsGetOption("output-mode", num_options, options)) != NULL ||
++ (val = cupsGetOption("OutputMode", num_options, options)) != NULL ||
++ (val = cfIPPAttrEnumValForPrinter(data->printer_attrs,
++ data->job_attrs,
++ "print-color-mode")) != NULL)
+ {
+ int bitspercolor, // Bits per color
+ bitsperpixel, // Bits per pixel
+- colorspace, // CUPS/PWG raster color space
+- numcolors; // Number of colorants
++ colorspace; // CUPS/PWG raster color space;
+ const char *ptr; // Pointer into value
+
+ ptr = NULL;
+- numcolors = 0;
+ bitspercolor = 8;
+- if (!strncasecmp(val, "AdobeRgb", 8))
++ if (is_color && !strncasecmp(val, "AdobeRgb", 8))
+ {
+ if (*(val + 8) == '_' || *(val + 8) == '-')
+ ptr = val + 9;
+ colorspace = 20;
+ numcolors = 3;
+ }
+- else if (!strncasecmp(val, "adobe-rgb", 9))
++ else if (is_color && !strncasecmp(val, "adobe-rgb", 9))
+ {
+ if (*(val + 9) == '_' || *(val + 9) == '-')
+ ptr = val + 10;
+@@ -1500,19 +1505,19 @@ raster_base_header(cups_page_header_t *h, // O - Raster header
+ colorspace = 18;
+ numcolors = 1;
+ }
+- else if (!strcasecmp(val, "color"))
++ else if (is_color && !strcasecmp(val, "color"))
+ {
+ colorspace = 19;
+ numcolors = 3;
+ }
+- else if (!strncasecmp(val, "Cmyk", 4))
++ else if (is_color && !strncasecmp(val, "Cmyk", 4))
+ {
+ if (*(val + 4) == '_' || *(val + 4) == '-')
+ ptr = val + 5;
+ colorspace = 6;
+ numcolors = 4;
+ }
+- else if (!strncasecmp(val, "Cmy", 3))
++ else if (!pwg_raster && is_color && !strncasecmp(val, "Cmy", 3))
+ {
+ if (*(val + 3) == '_' || *(val + 3) == '-')
+ ptr = val + 4;
+@@ -1524,10 +1529,9 @@ raster_base_header(cups_page_header_t *h, // O - Raster header
+ ptr = val + 6;
+ numcolors = strtol(ptr, (char **)&ptr, 10);
+ if (*ptr == '_' || *ptr == '-')
+- {
+ ptr ++;
++ if (numcolors > 0 && numcolors < 16)
+ colorspace = 47 + numcolors;
+- }
+ else
+ {
+ numcolors = 0;
+@@ -1548,21 +1552,21 @@ raster_base_header(cups_page_header_t *h, // O - Raster header
+ colorspace = 18;
+ numcolors = 1;
+ }
+- else if (!strncasecmp(val, "Srgb", 4))
++ else if (is_color && !strncasecmp(val, "Srgb", 4))
+ {
+ if (*(val + 4) == '_' || *(val + 4) == '-')
+ ptr = val + 5;
+ colorspace = 19;
+ numcolors = 3;
+ }
+- else if (!strncasecmp(val, "Rgbw", 4))
++ else if (!pwg_raster && is_color && !strncasecmp(val, "Rgbw", 4))
+ {
+ if (*(val + 4) == '_' || *(val + 4) == '-')
+ ptr = val + 5;
+ colorspace = 17;
+ numcolors = 4;
+ }
+- else if (!strncasecmp(val, "Rgb", 3))
++ else if (is_color && !strncasecmp(val, "Rgb", 3))
+ {
+ if (*(val + 3) == '_' || *(val + 3) == '-')
+ ptr = val + 4;
+@@ -1572,12 +1576,22 @@ raster_base_header(cups_page_header_t *h, // O - Raster header
+ else if (!strcasecmp(val, "auto"))
+ {
+ // Let "auto" not look like an error
+- colorspace = 19;
+- numcolors = 3;
++ if (is_color)
++ {
++ colorspace = 19;
++ numcolors = 3;
++ }
++ else
++ {
++ colorspace = 18;
++ numcolors = 1;
++ }
+ }
++
++ // Color mode found
+ if (numcolors > 0)
+ {
+- if (ptr)
++ if (ptr && *ptr)
+ bitspercolor = strtol(ptr, (char **)&ptr, 10);
+ bitsperpixel = bitspercolor * numcolors;
+ // In 1-bit-per-color RGB modes we add a forth bit to each pixel
+@@ -1590,20 +1604,25 @@ raster_base_header(cups_page_header_t *h, // O - Raster header
+ h->cupsColorSpace = colorspace;
+ h->cupsNumColors = numcolors;
+ }
+- else
++ }
++
++ // No color mode found
++ if (numcolors == 0)
++ {
++ if (is_color)
+ {
+ h->cupsBitsPerColor = 8;
+ h->cupsBitsPerPixel = 24;
+ h->cupsColorSpace = 19;
+ h->cupsNumColors = 3;
+ }
+- }
+- else
+- {
+- h->cupsBitsPerColor = 8;
+- h->cupsBitsPerPixel = 24;
+- h->cupsColorSpace = 19;
+- h->cupsNumColors = 3;
++ else
++ {
++ h->cupsBitsPerColor = 8;
++ h->cupsBitsPerPixel = 8;
++ h->cupsColorSpace = 18;
++ h->cupsNumColors = 1;
++ }
+ }
+
+ // TODO - Support for color orders 1 (banded) and 2 (planar)
+
+
diff --git a/net-print/libcupsfilters/files/libcupsfilters-2.0.0-raster-build-fix.patch b/net-print/libcupsfilters/files/libcupsfilters-2.0.0-raster-build-fix.patch
new file mode 100644
index 000000000000..c274b8473c47
--- /dev/null
+++ b/net-print/libcupsfilters/files/libcupsfilters-2.0.0-raster-build-fix.patch
@@ -0,0 +1,28 @@
+https://bugs.gentoo.org/927137
+https://github.com/OpenPrinting/cups-filters/issues/578
+https://github.com/OpenPrinting/libcupsfilters/commit/107091186dce1c0cb2f042f8b880f571089acaf1
+
+From 107091186dce1c0cb2f042f8b880f571089acaf1 Mon Sep 17 00:00:00 2001
+From: zdohnal <zdohnal@redhat.com>
+Date: Wed, 29 Nov 2023 13:30:48 +0100
+Subject: [PATCH] raster.c: Fix build after last fix (#40)
+
+Add header file `stdbool`, since we started to use `bool` in
+`raster_base_header()`.
+---
+ cupsfilters/raster.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/cupsfilters/raster.c b/cupsfilters/raster.c
+index 5e10f3bb..e9a8ad1f 100644
+--- a/cupsfilters/raster.c
++++ b/cupsfilters/raster.c
+@@ -29,6 +29,7 @@
+ #include <cupsfilters/ipp.h>
+ #include <cupsfilters/libcups2-private.h>
+ #include <cups/pwg.h>
++#include <stdbool.h>
+
+ //
+ // Local functions
+
diff --git a/net-print/libcupsfilters/files/libcupsfilters-2.0.0-raster-gray.patch b/net-print/libcupsfilters/files/libcupsfilters-2.0.0-raster-gray.patch
new file mode 100644
index 000000000000..e1648c041e97
--- /dev/null
+++ b/net-print/libcupsfilters/files/libcupsfilters-2.0.0-raster-gray.patch
@@ -0,0 +1,50 @@
+https://bugs.gentoo.org/927137
+https://github.com/OpenPrinting/cups-filters/issues/578
+https://github.com/OpenPrinting/libcupsfilters/commit/78cc6758d98c31397c8addefaa3dfd8746331b72
+
+From 78cc6758d98c31397c8addefaa3dfd8746331b72 Mon Sep 17 00:00:00 2001
+From: zdohnal <zdohnal@redhat.com>
+Date: Thu, 7 Mar 2024 18:27:06 +0100
+Subject: [PATCH] raster.c: Always use sRGB/sGray if driver is PWG/URF and
+ RGB/Gray is requested (#51)
+
+Some driverless printers (EPSON L3160 in Fedora report) stopped working
+after commit c6175a2 if `ColorModel=RGB` is passed as option. A
+different CUPS color space is assigned with the fix - CUPS_CSPACE_RGB,
+which results in no ICC profile being assigned into Ghostscript command
+line.
+
+Probably we can try other .icc profiles with CUPS_CSPACE_RGB (srgb.icc
+does not work with RGB color space), but I tested with reporter that
+using sRGB space + srgb.icc works for the printer - so the patch is to
+use sRGB if the driver is URF/PWG.
+
+Same logic applied for grayscale printing, if Gray is requested, sGray is
+used for URF/PWG.
+---
+ cupsfilters/raster.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cupsfilters/raster.c b/cupsfilters/raster.c
+index e9a8ad1f..7b62b922 100644
+--- a/cupsfilters/raster.c
++++ b/cupsfilters/raster.c
+@@ -1550,7 +1550,7 @@ raster_base_header(cups_page_header_t *h, // O - Raster header
+ {
+ if (*(val + 4) == '_' || *(val + 4) == '-')
+ ptr = val + 5;
+- colorspace = 18;
++ colorspace = pwg_raster ? 18 : 3;
+ numcolors = 1;
+ }
+ else if (is_color && !strncasecmp(val, "Srgb", 4))
+@@ -1571,7 +1571,7 @@ raster_base_header(cups_page_header_t *h, // O - Raster header
+ {
+ if (*(val + 3) == '_' || *(val + 3) == '-')
+ ptr = val + 4;
+- colorspace = 1;
++ colorspace = pwg_raster ? 19 : 1;
+ numcolors = 3;
+ }
+ else if (!strcasecmp(val, "auto"))
+
diff --git a/net-print/libcupsfilters/libcupsfilters-2.0.0-r4.ebuild b/net-print/libcupsfilters/libcupsfilters-2.0.0-r4.ebuild
new file mode 100644
index 000000000000..1d3b175d5905
--- /dev/null
+++ b/net-print/libcupsfilters/libcupsfilters-2.0.0-r4.ebuild
@@ -0,0 +1,77 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit libtool
+
+DESCRIPTION="library for developing printing features, split out of cups-filters"
+HOMEPAGE="https://github.com/OpenPrinting/libcupsfilters"
+SRC_URI="https://github.com/OpenPrinting/libcupsfilters/releases/download/${PV}/${P}.tar.xz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="dbus exif jpeg pdf +poppler +postscript png test tiff"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=app-text/qpdf-8.3.0:=
+ media-libs/fontconfig
+ media-libs/lcms:2
+ >=net-print/cups-2
+ !<net-print/cups-filters-2.0.0
+
+ exif? ( media-libs/libexif )
+ dbus? ( sys-apps/dbus )
+ jpeg? ( media-libs/libjpeg-turbo:= )
+ pdf? ( app-text/mupdf )
+ postscript? ( app-text/ghostscript-gpl[cups] )
+ poppler? ( >=app-text/poppler-0.32[cxx] )
+ png? ( media-libs/libpng:= )
+ tiff? ( media-libs/tiff:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ >=sys-devel/gettext-0.18.3
+ virtual/pkgconfig
+ test? ( media-fonts/dejavu )
+"
+
+PATCHES=(
+ "${FILESDIR}/${P}-r3-c++17.patch"
+ "${FILESDIR}/${P}-color-space.patch"
+ "${FILESDIR}/${P}-raster-build-fix.patch"
+ "${FILESDIR}/${P}-raster-gray.patch"
+)
+
+src_prepare() {
+ default
+
+ # respect --as-needed
+ elibtoolize
+}
+
+src_configure() {
+ local myeconfargs=(
+ --enable-imagefilters
+ --localstatedir="${EPREFIX}"/var
+ --with-cups-rundir="${EPREFIX}"/run/cups
+
+ $(use_enable exif)
+ $(use_enable dbus)
+ $(use_enable poppler)
+ $(use_enable postscript ghostscript)
+ $(use_enable pdf mutool)
+ $(use_with jpeg)
+ $(use_with png)
+ $(use_with tiff)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+ find "${ED}" -name '*.la' -delete || die
+}