mirror of
https://github.com/CHN-beta/nixpkgs.git
synced 2026-01-11 18:32:23 +08:00
[Backport release-25.05] epson-inkjet-printer-workforce-840-series: init at 1.0.0 (#441463)
This commit is contained in:
@@ -9749,6 +9749,12 @@
|
||||
githubId = 665472;
|
||||
matrix = "@hehongbo:matrix.org";
|
||||
};
|
||||
heichro = {
|
||||
github = "heichro";
|
||||
githubId = 76887148;
|
||||
keys = [ { fingerprint = "BBA7 9E8E 17FE 9C3F BFEA 61E8 30D0 186F 4E19 7E48"; } ];
|
||||
name = "heichro";
|
||||
};
|
||||
heijligen = {
|
||||
email = "src@posteo.de";
|
||||
github = "heijligen";
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
diff --git a/src/raster_to_epson.c b/src/raster_to_epson.c
|
||||
index 6e621c8..a5ca797 100644
|
||||
--- a/src/raster_to_epson.c
|
||||
+++ b/src/raster_to_epson.c
|
||||
@@ -438,14 +438,14 @@ static int print_page (void)
|
||||
break;
|
||||
}
|
||||
|
||||
- if (eps_raster_print(raster_h, image_raw, pageRegion.bytesPerLine, pageRegion.width, &nraster)) {
|
||||
+ if (eps_raster_print(raster_h, image_raw, pageRegion.bytesPerLine, pageRegion.width, (int *) &nraster)) {
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// flushing page
|
||||
- eps_raster_print(raster_h, NULL, 0, 0, &nraster);
|
||||
+ eps_raster_print(raster_h, NULL, 0, 0, (int *) &nraster);
|
||||
|
||||
bAbort = (error) ? TRUE : FALSE;
|
||||
if (epcgEndPage (bAbort)) {
|
||||
@@ -0,0 +1,23 @@
|
||||
diff --git a/src/pagemanager/pagemanager.c b/src/pagemanager/pagemanager.c
|
||||
index 029e6d3..2881585 100644
|
||||
--- a/src/pagemanager/pagemanager.c
|
||||
+++ b/src/pagemanager/pagemanager.c
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "debuglog.h"
|
||||
#include "memory.h"
|
||||
#include "raster.h"
|
||||
+#include "raster-helper.h"
|
||||
#include "pagemanager.h"
|
||||
|
||||
extern int JobCanceled;
|
||||
diff --git a/src/raster_to_epson.c b/src/raster_to_epson.c
|
||||
index 6e621c8..6eea77c 100644
|
||||
--- a/src/raster_to_epson.c
|
||||
+++ b/src/raster_to_epson.c
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "raster.h"
|
||||
#include "memory.h"
|
||||
#include "raster_to_epson.h"
|
||||
+#include "raster-helper.h"
|
||||
#include "pagemanager.h"
|
||||
#include "filter_option.h"
|
||||
@@ -0,0 +1,131 @@
|
||||
{
|
||||
autoreconfHook,
|
||||
cups,
|
||||
libjpeg,
|
||||
rpmextract,
|
||||
fetchurl,
|
||||
lib,
|
||||
stdenv,
|
||||
}:
|
||||
|
||||
let
|
||||
srcdirs = {
|
||||
filter = "epson-inkjet-printer-filter-1.0.0";
|
||||
driver = "epson-inkjet-printer-workforce-840-series-1.0.0";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "epson-inkjet-printer-workforce-840-series";
|
||||
version = "1.0.0";
|
||||
|
||||
# The Epson may be unreliable, and it has been since sometime in
|
||||
# 2024. Non-browser requests using commands like fetchurl receive a
|
||||
# 403 error, an access denied response -- last checked on
|
||||
# 2025-08-21.
|
||||
#
|
||||
# Therefore, an archive.org link has been added as a fallback
|
||||
# option just in case.
|
||||
src = fetchurl {
|
||||
# NOTE: Don't forget to update the webarchive link too!
|
||||
urls = [
|
||||
"https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-workforce-840-series-${finalAttrs.version}-1lsb3.2.src.rpm"
|
||||
"https://web.archive.org/web/https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-workforce-840-series-${finalAttrs.version}-1lsb3.2.src.rpm"
|
||||
];
|
||||
hash = "sha256-rTYnEmgzqR/wOZYYIe2rO9x2cX8s2qDyTuRaTjzJjbg=";
|
||||
};
|
||||
sourceRoot = srcdirs.filter;
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
rpmextract
|
||||
];
|
||||
buildInputs = [
|
||||
cups
|
||||
libjpeg
|
||||
];
|
||||
|
||||
unpackPhase = ''
|
||||
runHook preUnpack
|
||||
|
||||
rpmextract "$src"
|
||||
for i in ${lib.concatStringsSep " " (builtins.attrValues srcdirs)}; do
|
||||
tar xvf "$i".tar.gz
|
||||
done
|
||||
|
||||
runHook postUnpack
|
||||
'';
|
||||
|
||||
# Both patches fix errors that occur when building with GCC 14.
|
||||
#
|
||||
# eps_raster_print-cast.patch fixes 'error: passing argument 5 of
|
||||
# ‘eps_raster_print’ from incompatible pointer type' in file
|
||||
# raster_to_epson.c
|
||||
#
|
||||
# include-raster-helper.patch fixes 'error: implicit declaration of
|
||||
# function' in files pagemanager.c and raster_to_epson.c
|
||||
patches = [
|
||||
./eps_raster_print-cast.patch
|
||||
./include-raster-helper.patch
|
||||
];
|
||||
|
||||
installPhase =
|
||||
let
|
||||
filterdir = "$out/lib/cups/filter";
|
||||
docdir = "$out/share/doc/epson-inkjet-printer-workforce-840-series";
|
||||
ppddir = "$out/share/cups/model/epson-inkjet-printer-workforce-840-series";
|
||||
libdir =
|
||||
if stdenv.hostPlatform.isx86_64 then
|
||||
"lib64"
|
||||
else
|
||||
throw "Platforms other than x86_64-linux are not (yet) supported.";
|
||||
in
|
||||
''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p "$out" "${docdir}" "${filterdir}" "${ppddir}"
|
||||
cp src/epson_inkjet_printer_filter "${filterdir}"
|
||||
|
||||
cp AUTHORS COPYING COPYING.EPSON COPYING.LIB "${docdir}"
|
||||
|
||||
cd ../${srcdirs.driver}
|
||||
cp Manual.txt README "${docdir}"
|
||||
for ppd in ppds/*; do
|
||||
substituteInPlace "$ppd" --replace-fail '/opt/epson-inkjet-printer-workforce-840-series/cups/lib' "$out/lib/cups"
|
||||
gzip -c "$ppd" > "${ppddir}/''${ppd#*/}"
|
||||
done
|
||||
cp -r resource watermark ${libdir} "$out"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Proprietary CUPS drivers for Epson inkjet printers";
|
||||
longDescription = ''
|
||||
This software is a filter program used with the Common UNIX Printing
|
||||
System (CUPS) under Linux. It supplies high quality printing with
|
||||
Seiko Epson Color Ink Jet Printers.
|
||||
|
||||
This printer driver is supporting the following printers.
|
||||
|
||||
Epson Stylus Office BX925
|
||||
Epson WorkForce 840
|
||||
|
||||
To use the driver adjust your configuration.nix file:
|
||||
```nix
|
||||
{
|
||||
services.printing = {
|
||||
enable = true;
|
||||
drivers = [ pkgs.epson-inkjet-printer-workforce-840-series ];
|
||||
};
|
||||
}
|
||||
```
|
||||
'';
|
||||
downloadPage = "http://download.ebz.epson.net/dsc/du/02/DriverDownloadInfo.do?LG2=EN&CN2=&DSCMI=16839&DSCCHK=3d7bc6bdfca08006abfb859fb1967183156a7252";
|
||||
license = with lib.licenses; [
|
||||
lgpl21
|
||||
epson
|
||||
];
|
||||
maintainers = with lib.maintainers; [ heichro ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
})
|
||||
Reference in New Issue
Block a user