[PATCH] gnu: Add gutenprint.

  • Open
  • quality assurance status badge
Details
6 participants
  • Brice Waegeneire
  • John Doe
  • Faré
  • Jonathan Brielmaier
  • Ludovic Courtès
  • Milan Svoboda
Owner
unassigned
Submitted by
John Doe
Severity
normal
J
J
John Doe wrote on 8 Jan 2021 12:38
(address . guix-patches@gnu.org)(name . John Doe)(address . dftxbs3e@free.fr)
20210108113822.24978-1-dftxbs3e@free.fr
* gnu/packages/cups.scm (gutenprint): New variable.
---
gnu/packages/cups.scm | 45 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)

Toggle diff (72 lines)
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index c8ca5db1a0..12a5d05857 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -32,6 +32,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages fonts) ; font-dejavu
#:use-module (gnu packages fontutils)
+ #:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages glib)
#:use-module (gnu packages groff)
@@ -46,6 +47,7 @@
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
#:use-module (gnu packages scanner)
+ #:use-module (gnu packages time)
#:use-module (gnu packages tls)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
@@ -921,6 +923,49 @@ obtained and installed separately.")
(home-page "http://splix.ap2c.org/")
(license license:gpl2))))
+(define-public gutenprint
+ (package
+ (name "gutenprint")
+ (version "5.3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/gimp-print/" name "-"
+ (version-major+minor version) "/" version "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32 "0wm0akfm0dp0wrwnn03j90hqxs8vx8iy896baf68blb7isyfqybj"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:test-target "check-parallel"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-paths
+ (lambda* (#:key outputs native-inputs #:allow-other-keys)
+ (substitute* "Makefile.in"
+ (("/usr/bin/time") "time"))
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "src/cups/Makefile.in"
+ (("cups_conf_serverbin = @cups_conf_serverbin@")
+ (string-append "cups_conf_serverbin = " out "/lib/cups"))
+ (("cups_conf_serverroot = @cups_conf_serverroot@")
+ (string-append "cups_conf_serverroot = " out "/etc/cups"))
+ (("cups_conf_datadir = @cups_conf_datadir@")
+ (string-append "cups_conf_datadir = " out "/share/cups")))
+ #t))))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("time" ,time)))
+ (inputs
+ `(("cups" ,cups-minimal)))
+ (synopsis "Printer drivers for CUPS on GNU/Linux")
+ (description "A very high quality package of printer drivers for
+CUPS on GNU/Linux, Macintosh OS X, and other POSIX-compliant operating systems.
+This project also maintains an enhanced Print plug-in for GIMP 2.x from
+the same code base.")
+ (home-page "http://gimp-print.sourceforge.net/")
+ (license license:gpl2+)))
+
(define-public python-pycups
(package
(name "python-pycups")
--
2.30.0
J
J
John Doe wrote on 8 Jan 2021 12:51
[PATCH v2] gnu: Add gutenprint.
(address . 45725@debbugs.gnu.org)(name . John Doe)(address . dftxbs3e@free.fr)
20210108115134.25661-1-dftxbs3e@free.fr
* gnu/packages/cups.scm (gutenprint): New variable.
---
Remove unused gettext use statement.

gnu/packages/cups.scm | 44 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)

Toggle diff (64 lines)
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index c8ca5db1a0..1fadb0de78 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -46,6 +46,7 @@
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
#:use-module (gnu packages scanner)
+ #:use-module (gnu packages time)
#:use-module (gnu packages tls)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
@@ -921,6 +922,49 @@ obtained and installed separately.")
(home-page "http://splix.ap2c.org/")
(license license:gpl2))))
+(define-public gutenprint
+ (package
+ (name "gutenprint")
+ (version "5.3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/gimp-print/" name "-"
+ (version-major+minor version) "/" version "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32 "0wm0akfm0dp0wrwnn03j90hqxs8vx8iy896baf68blb7isyfqybj"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:test-target "check-parallel"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-paths
+ (lambda* (#:key outputs native-inputs #:allow-other-keys)
+ (substitute* "Makefile.in"
+ (("/usr/bin/time") "time"))
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "src/cups/Makefile.in"
+ (("cups_conf_serverbin = @cups_conf_serverbin@")
+ (string-append "cups_conf_serverbin = " out "/lib/cups"))
+ (("cups_conf_serverroot = @cups_conf_serverroot@")
+ (string-append "cups_conf_serverroot = " out "/etc/cups"))
+ (("cups_conf_datadir = @cups_conf_datadir@")
+ (string-append "cups_conf_datadir = " out "/share/cups")))
+ #t))))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("time" ,time)))
+ (inputs
+ `(("cups" ,cups-minimal)))
+ (synopsis "Printer drivers for CUPS on GNU/Linux")
+ (description "A very high quality package of printer drivers for
+CUPS on GNU/Linux, Macintosh OS X, and other POSIX-compliant operating systems.
+This project also maintains an enhanced Print plug-in for GIMP 2.x from
+the same code base.")
+ (home-page "http://gimp-print.sourceforge.net/")
+ (license license:gpl2+)))
+
(define-public python-pycups
(package
(name "python-pycups")
--
2.30.0
D
D
dftxbs3e wrote on 8 Jan 2021 13:09
(address . 45725@debbugs.gnu.org)
34c33f60812e072c276783623502c75b7aa04a26.camel@free.fr
There's still runtime errors related to cups not being able to open
PPDs, so don't merge as-is. I am still working on it.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQQozTys6hLca3Ekt8u3HhLxn6GoewUCX/hLbwAKCRC3HhLxn6Go
e0P8AQD1ZBePCb2Pfq9jW9PhsFlWWYX6fNhSt6MvMmTEQzLrjAD/R9NDhQi3xTFC
l0nvPXdwPLHwNGxfgStL2zWNjz3MBwQ=
=DH9v
-----END PGP SIGNATURE-----


J
J
Jonathan Brielmaier wrote on 8 Jan 2021 13:50
Re: [bug#45725] [PATCH v2] gnu: Add gutenprint.
71dfd13b-3086-cd34-60c0-c48273d4a1a7@web.de
On 08.01.21 12:51, John Doe wrote:
Toggle quote (1 lines)
> * gnu/packages/cups.scm (gutenprint): New variable.
[...]
Toggle quote (2 lines)
> + (synopsis "Printer drivers for CUPS on GNU/Linux")
> + (description "A very high quality package of printer drivers for
^---------------^
I think you can remove that statement, it sounds a bit like marketing :)

Toggle quote (6 lines)
> +CUPS on GNU/Linux, Macintosh OS X, and other POSIX-compliant operating systems.
> +This project also maintains an enhanced Print plug-in for GIMP 2.x from
> +the same code base.")
> + (home-page "http://gimp-print.sourceforge.net/")
> + (license license:gpl2+)))
> +
J
J
John Doe wrote on 9 Jan 2021 12:12
[PATCH v3] gnu: Add gutenprint.
(address . 45725@debbugs.gnu.org)(name . John Doe)(address . dftxbs3e@free.fr)
20210109111236.31405-1-dftxbs3e@free.fr
* gnu/packages/cups.scm (gutenprint): New variable.
---
Neutralize description, add list of supported printers, fix runtime
lookup of PPDs. Still not working properly, filter binaries being looked
up by CUPS in it's own directory instead of gutenprint's.

gnu/packages/cups.scm | 3624 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 3624 insertions(+)

Toggle diff (713 lines)
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index c8ca5db1a0..7e1d172bf0 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -46,6 +46,7 @@
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
#:use-module (gnu packages scanner)
+ #:use-module (gnu packages time)
#:use-module (gnu packages tls)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
@@ -921,6 +922,3629 @@ obtained and installed separately.")
(home-page "http://splix.ap2c.org/")
(license license:gpl2))))
+(define-public gutenprint
+ (package
+ (name "gutenprint")
+ (version "5.3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/gimp-print/" name "-"
+ (version-major+minor version) "/" version "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32 "0wm0akfm0dp0wrwnn03j90hqxs8vx8iy896baf68blb7isyfqybj"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:test-target "check-parallel"
+ #:configure-flags (list "--enable-cups-level3-ppds"
+ "--enable-globalized-cups-ppds"
+ "--enable-cups-ppds"
+ "--enable-cups-1_2-enhancements")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-paths
+ (lambda* (#:key outputs native-inputs #:allow-other-keys)
+ (substitute* "Makefile.in"
+ (("/usr/bin/time") "time"))
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* (find-files "." "^(Makefile|Makefile\\.in|configure)$")
+ (("^(\\s*)cups_conf_serverbin(\\s*)=(.+)$")
+ (string-append "cups_conf_serverbin=" out "/lib/cups\n"))
+ (("^(\\s*)cups_conf_serverroot(\\s*)=(.+)$")
+ (string-append "cups_conf_serverroot=" out "/etc/cups\n"))
+ (("^(\\s*)cups_conf_datadir(\\s*)=(.+)$")
+ (string-append "cups_conf_datadir=" out "/share/cups\n")))
+ (substitute* "src/cups/Makefile.in"
+ (("^(\\s*)bindir(\\s*)=(.+)$")
+ (string-append "bindir = " out "/bin\n"))
+ (("^(\\s*)sbindir(\\s*)=(.+)$")
+ (string-append "sbindir = " out "/sbin\n")))
+ #t))))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("time" ,time)))
+ (inputs
+ `(("cups" ,cups-minimal)))
+ (synopsis "Printer drivers for CUPS on GNU/Linux")
+ ;; Supported printers list from:
+ ;; http://gimp-print.sourceforge.net/p_Supported_Printers.php
+ ;; Remember to update on version bumps with this command:
+ ;; $ curl http://gimp-print.sourceforge.net/p_Supported_Printers.php | \
+ ;; grep -Po '(?<=^<tr><td>).+?(?=</td>)' | sed 's/^/@item /g'
+ (description "Printer drivers for
+CUPS on GNU/Linux, Macintosh OS X, and other POSIX-compliant operating systems.
+This project also maintains an enhanced Print plug-in for GIMP 2.x from
+the same code base. This driver claims to support these printers:
+
+@enumerate
+@item Canon BJ-30
+@item Canon BJC-50
+@item Canon BJC-55
+@item Canon BJC-80
+@item Canon BJC-85
+@item Canon BJC-210
+@item Canon BJC-240
+@item Canon BJC-250
+@item Canon BJC-1000
+@item Canon BJC-2000
+@item Canon BJC-2010
+@item Canon BJC-2100
+@item Canon BJC-2110
+@item Canon BJC-3000
+@item Canon BJC-4000
+@item Canon BJC-4300
+@item Canon BJC-4400
+@item Canon BJC-4550
+@item Canon BJC-5100
+@item Canon BJC-5500
+@item Canon BJC-5500J
+@item Canon BJC-6000
+@item Canon BJC-6100
+@item Canon BJC-6200
+@item Canon BJC-6500
+@item Canon BJC-7000
+@item Canon BJC-7100
+@item Canon BJC-8200
+@item Canon BJC-8500
+@item Canon S100
+@item Canon S200
+@item Canon S300
+@item Canon S330
+@item Canon S400
+@item Canon S450
+@item Canon S500
+@item Canon S520
+@item Canon S530D
+@item Canon S600
+@item Canon S630
+@item Canon S750
+@item Canon S800
+@item Canon S820
+@item Canon S830D
+@item Canon S900
+@item Canon S9000
+@item Canon S4500
+@item Canon SELPHY DS700
+@item Canon SELPHY DS810
+@item Canon PIXMA mini220
+@item Canon PIXUS mini220
+@item Canon PIXMA mini320
+@item Canon PIXMA mini360
+@item Canon PIXUS mini360
+@item Canon iP90 series
+@item Canon PIXMA iP90
+@item Canon PIXUS iP90
+@item Canon PIXMA iP90v
+@item Canon PIXUS iP90v
+@item Canon iP110 series
+@item Canon PIXMA iP110
+@item Canon PIXUS iP110
+@item Canon iP2000 series
+@item Canon PIXMA iP2000
+@item Canon PIXUS iP2000
+@item Canon iP2700 series
+@item Canon PIXMA iP2700
+@item Canon PIXUS iP2700
+@item Canon PIXMA iP2701
+@item Canon PIXMA iP2702
+@item Canon PIXMA iP2740
+@item Canon PIXMA iP2760
+@item Canon PIXMA iP2770
+@item Canon PIXMA iP2772
+@item Canon PIXMA iP2780
+@item Canon PIXMA iP2788
+@item Canon iP2800 series
+@item Canon PIXMA iP2810
+@item Canon PIXMA iP2820
+@item Canon PIXMA iP2840
+@item Canon PIXMA iP2850
+@item Canon PIXMA iP2870
+@item Canon PIXMA iP2872
+@item Canon PIXMA iP2880
+@item Canon PIXMA iP2890
+@item Canon PIXMA iP2899
+@item Canon PIXMA iP3000
+@item Canon PIXMA iP3100
+@item Canon PIXUS iP3100
+@item Canon iP3300 series
+@item Canon PIXMA iP3300
+@item Canon PIXUS iP3300
+@item Canon iP3500 series
+@item Canon PIXMA iP3500
+@item Canon PIXUS iP3500
+@item Canon iP3600 series
+@item Canon PIXMA iP3600
+@item Canon PIXUS iP3600
+@item Canon PIXMA iP3680
+@item Canon PIXMA iP4000
+@item Canon PIXMA iP4000R
+@item Canon PIXMA iP4100
+@item Canon PIXUS iP4100
+@item Canon PIXUS iP4100R
+@item Canon PIXMA iP4100R
+@item Canon iP4200 series
+@item Canon PIXMA iP4200
+@item Canon PIXUS iP4200
+@item Canon iP4300 series
+@item Canon PIXMA iP4300
+@item Canon PIXUS iP4300
+@item Canon iP4500 series
+@item Canon PIXMA iP4500
+@item Canon PIXUS iP4500
+@item Canon iP4600 series
+@item Canon PIXMA iP4600
+@item Canon PIXUS iP4600
+@item Canon PIXMA iP4680
+@item Canon iP4700 series
+@item Canon PIXMA iP4700
+@item Canon PIXUS iP4700
+@item Canon PIXMA iP4760
+@item Canon iP4800 series
+@item Canon PIXMA iP4800
+@item Canon PIXMA iP4810
+@item Canon PIXMA iP4820
+@item Canon PIXUS iP4830
+@item Canon PIXMA iP4840
+@item Canon PIXMA iP4850
+@item Canon PIXMA iP4870
+@item Canon PIXMA iP4880
+@item Canon iP4900 series
+@item Canon PIXMA iP4900
+@item Canon PIXMA iP4910
+@item Canon PIXMA iP4920
+@item Canon PIXUS iP4930
+@item Canon PIXMA iP4940
+@item Canon PIXMA iP4950
+@item Canon PIXMA iP4970
+@item Canon PIXMA iP4980
+@item Canon PIXMA iP5000
+@item Canon PIXMA iP5200
+@item Canon iP5200R series
+@item Canon PIXMA iP5200R
+@item Canon PIXUS iP5200R
+@item Canon PIXMA iP5300
+@item Canon PIXMA iP6000D
+@item Canon PIXMA iP6100D
+@item Canon PIXUS iP6100D
+@item Canon PIXMA iP6210D
+@item Canon PIXMA iP6220D
+@item Canon PIXMA iP6310D
+@item Canon PIXMA iP6320D
+@item Canon iP6600D series
+@item Canon PIXMA iP6600D
+@item Canon PIXUS iP6600D
+@item Canon iP6700D series
+@item Canon PIXMA iP6700D
+@item Canon PIXUS iP6700D
+@item Canon PIXMA iP7100
+@item Canon PIXUS iP7100
+@item Canon iP7200 series
+@item Canon PIXMA iP7210
+@item Canon PIXMA iP7220
+@item Canon PIXUS iP7230
+@item Canon PIXMA iP7240
+@item Canon PIXMA iP7250
+@item Canon PIXMA iP7260
+@item Canon PIXMA iP7270
+@item Canon PIXMA iP7280
+@item Canon PIXMA iP7500
+@item Canon PIXUS iP7500
+@item Canon PIXMA iP8100
+@item Canon PIXUS iP8100
+@item Canon PIXMA iP8500
+@item Canon PIXMA iP8600
+@item Canon PIXUS iP8600
+@item Canon iP8700 series
+@item Canon PIXMA iP7810
+@item Canon PIXMA iP8720
+@item Canon PIXUS iP8730
+@item Canon PIXMA iP8740
+@item Canon PIXMA iP8750
+@item Canon PIXMA iP8760
+@item Canon PIXMA iP8770
+@item Canon PIXMA iP8780
+@item Canon PIXMA iP9910
+@item Canon PIXUS iP9910
+@item Canon PIXMA iX4000
+@item Canon iX5000 series
+@item Canon PIXMA iX5000
+@item Canon PIXUS iX5000
+@item Canon iX6500 series
+@item Canon PIXMA iX6500
+@item Canon PIXMA iX6510
+@item Canon PIXMA iX6520
+@item Canon PIXUS iX6530
+@item Canon PIXMA iX6540
+@item Canon PIXMA iX6550
+@item Canon PIXMA iX6560
+@item Canon PIXMA iX6580
+@item Canon iX6700 series
+@item Canon PIXMA iX6770
+@item Canon PIXMA iX6780
+@item Canon iX6800 series
+@item Canon PIXMA iX6810
+@item Canon PIXMA iX6820
+@item Canon PIXUS iX6830
+@item Canon PIXMA iX6840
+@item Canon PIXMA iX6850
+@item Canon PIXMA iX6860
+@item Canon PIXMA iX6870
+@item Canon PIXMA iX6880
+@item Canon iX7000 series
+@item Canon PIXMA iX7000
+@item Canon PIXUS iX7000
+@item Canon Pro9000 series
+@item Canon PIXMA Pro9000
+@item Canon PIXUS Pro9000
+@item Canon Pro9000 Mk.II series
+@item Canon PIXMA Pro9000mk2
+@item Canon PIXUS Pro9000mk2
+@item Canon Pro9500 series
+@item Canon PIXMA Pro9500
+@item Canon PIXUS Pro9500
+@item Canon Pro9500 Mk.II series
+@item Canon PIXMA Pro9500mk2
+@item Canon PIXUS Pro9500mk2
+@item Canon SmartBase MPC400
+@item Canon SmartBase MPC600F
+@item Canon PIXUS MP55
+@item Canon MP140 series
+@item Canon PIXMA MP140
+@item Canon PIXMA MP145
+@item Canon MP150 series
+@item Canon PIXMA MP150
+@item Canon MP160 series
+@item Canon PIXMA MP160
+@item Canon MP170 series
+@item Canon PIXMA MP170
+@item Canon PIXUS MP170
+@item Canon MP180 series
+@item Canon PIXMA MP180
+@item Canon MP190 series
+@item Canon PIXMA MP190
+@item Canon PIXMA MP198
+@item Canon MP210 series
+@item Canon PIXMA MP210
+@item Canon PIXMA MP218
+@item Canon MP220 series
+@item Canon PIXMA MP220
+@item Canon PIXMA MP228
+@item Canon MP230 series
+@item Canon PIXMA MP230
+@item Canon PIXMA MP236
+@item Canon PIXMA MP237
+@item Canon MP240 series
+@item Canon PIXMA MP240
+@item Canon PIXMA MP245
+@item Canon MP250 series
+@item Canon PIXMA MP250
+@item Canon PIXMA MP252
+@item Canon PIXMA MP258
+@item Canon PIXMA MP259
+@item Canon MP260 series
+@item Canon PIXMA MP260
+@item Canon PIXMA MP268
+@item Canon MP270 series
+@item Canon PIXMA MP270
+@item Canon PIXUS MP270
+@item Canon PIXMA MP272
+@item Canon PIXMA MP276
+@item Canon MP280 series
+@item Canon PIXMA MP280
+@item Canon PIXUS MP280
+@item Canon PIXMA MP282
+@item Canon PIXMA MP287
+@item Canon PIXMA MP288
+@item Canon MP360 series
+@item Canon PIXMA MP360
+@item Canon PIXUS MP360
+@item Canon SmartBase MP360
+@item Canon SmartBase MP360S
+@item Canon MultiPASS MP360
+@item Canon MP370 series
+@item Canon PIXMA MP370
+@item Canon PIXUS MP370
+@item Canon SmartBase MP370
+@item Canon MultiPASS MP370
+@item Canon PIXMA MP375R
+@item Canon PIXUS MP375R
+@item Canon MP390 series
+@item Canon PIXMA MP390
+@item Canon PIXUS MP390
+@item Canon SmartBase MP390
+@item Canon MultiPASS MP390
+@item Canon MP450 series
+@item Canon PIXMA MP450
+@item Canon PIXUS MP450
+@item Canon MP460 series
+@item Canon PIXMA MP460
+@item Canon PIXUS MP460
+@item Canon MP470 series
+@item Canon PIXMA MP470
+@item Canon PIXUS MP470
+@item Canon PIXMA MP476
+@item Canon MP480 series
+@item Canon PIXMA MP480
+@item Canon PIXUS MP480
+@item Canon PIXMA MP486
+@item Canon MP490 series
+@item Canon PIXMA MP490
+@item Canon PIXUS MP490
+@item Canon PIXMA MP492
+@item Canon PIXMA MP493
+@item Canon PIXUS MP493
+@item Canon PIXMA MP495
+@item Canon PIXMA MP496
+@item Canon PIXMA MP497
+@item Canon PIXMA MP498
+@item Canon PIXMA MP499
+@item Canon MP500 series
+@item Canon PIXMA MP500
+@item Canon PIXUS MP500
+@item Canon MP510 series
+@item Canon PIXMA MP510
+@item Canon PIXUS MP510
+@item Canon MP520 series
+@item Canon PIXMA MP520
+@item Canon PIXUS MP520
+@item Canon MP530 series
+@item Canon PIXMA MP530
+@item Canon MP540 series
+@item Canon PIXMA MP540
+@item Canon PIXUS MP540
+@item Canon PIXMA MP545
+@item Canon MP550 series
+@item Canon PIXMA MP550
+@item Canon PIXUS MP550
+@item Canon PIXMA MP558
+@item Canon MP560 series
+@item Canon PIXMA MP560
+@item Canon PIXUS MP560
+@item Canon PIXMA MP568
+@item Canon MP600 series
+@item Canon PIXMA MP600
+@item Canon PIXUS MP600
+@item Canon PIXMA MP600R
+@item Canon MP610 series
+@item Canon PIXMA MP610
+@item Canon PIXUS MP610
+@item Canon MP620 series
+@item Canon PIXMA MP620
+@item Canon PIXMA MP620B
+@item Canon PIXUS MP620
+@item Canon PIXMA MP628
+@item Canon MP630 series
+@item Canon PIXMA MP630
+@item Canon PIXUS MP630
+@item Canon PIXMA MP638
+@item Canon MP640 series
+@item Canon PIXMA MP640
+@item Canon PIXMA MP640R
+@item Canon PIXUS MP640
+@item Canon PIXMA MP648
+@item Canon MP700 series
+@item Canon PIXMA MP700
+@item Canon PIXUS MP700
+@item Canon SmartBase MP700
+@item Canon MultiPASS MP700
+@item Canon MP710 series
+@item Canon PIXMA MP710
+@item Canon PIXUS MP710
+@item Canon MP730 series
+@item Canon PIXMA MP730
+@item Canon PIXUS MP730
+@item Canon SmartBase MP730
+@item Canon MultiPASS MP730
+@item Canon MP740 series
+@item Canon PIXMA MP740
+@item Canon PIXUS MP740
+@item Canon MP750 series
+@item Canon PIXMA MP750
+@item Canon MP760 series
+@item Canon PIXMA MP760
+@item Canon MP770 series
+@item Canon PIXMA MP770
+@item Canon PIXUS MP770
+@item Canon MP780 series
+@item Canon PIXMA MP780
+@item Canon MP790 series
+@item Canon PIXMA MP790
+@item Canon PIXUS MP790
+@item Canon MP800 series
+@item Canon PIXMA MP800
+@item Canon PIXUS MP800
+@item Canon PIXMA MP800R
+@item Canon MP810 series
+@item Canon PIXMA MP810
+@item Canon PIXUS MP810
+@item Canon MP830 series
+@item Canon PIXMA MP830
+@item Canon PIXUS MP830
+@item Canon MP900 series
+@item Canon PIXMA MP900
+@item Canon PIXUS MP900
+@item Canon MP950 series
+@item Canon PIXMA MP950
+@item Canon PIXUS MP950
+@item Canon MP960 series
+@item Canon PIXMA MP960
+@item Canon PIXUS MP960
+@item Canon MP970 series
+@item Canon PIXMA MP970
+@item Canon PIXUS MP970
+@item Canon MP980 series
+@item Canon PIXMA MP980
+@item Canon PIXUS MP980
+@item Canon PIXMA MP988
+@item Canon MP990 series
+@item Canon PIXMA MP990
+@item Canon PIXUS MP990
+@item Canon PIXMA MP996
+@item Canon MG2100 series
+@item Canon PIXMA MG2100
+@item Canon PIXMA MG2110
+@item Canon PIXMA MG2120
+@item Canon PIXUS MG2130
+@item Canon PIXMA MG2140
+@item Canon PIXMA MG2150
+@item Canon PIXMA MG2160
+@item Canon PIXMA MG2170
+@item Canon PIXMA MG2180
+@item Canon MG2200 series
+@item Canon PIXMA MG2210
+@item Canon PIXMA MG2220
+@item Canon PIXMA MG2240
+@item Canon PIXMA MG2250
+@item Canon PIXMA MG2260
+@item Canon PIXMA MG2270
+@item Canon PIXMA MG2280
+@item Canon MG2400 series
+@item Canon PIXMA MG2400
+@item Canon PIXMA MG2410
+@item Canon PIXMA MG2420
+@item Canon PIXMA MG2440
+@item Canon PIXMA MG2450
+@item Canon PIXMA MG2460
+@item Canon PIXMA MG2470
+@item Canon PIXMA MG2490
+@item Canon MG2500 series
+@item Canon PIXMA MG2510
+@item Canon PIXMA MG2520
+@item Canon PIXMA MG2522
+@item Canon PIXMA MG2525
+@item Canon PIXMA MG2540
+@item Canon PIXMA MG2540S
+@item Canon PIXMA MG2545S
+@item Canon PIXMA MG2550
+@item Canon PIXMA MG2550S
+@item Canon PIXMA MG2555S
+@item Canon PIXMA MG2560
+@item Canon PIXMA MG2570
+@item Canon PIXMA MG2570S
+@item Canon PIXMA MG2580
+@item Canon PIXMA MG2580S
+@item Canon PIXMA MG2590
+@item Canon MG2900 series
+@item Canon PIXMA MG2910
+@item Canon PIXMA MG2920
+@item Canon PIXMA MG2922
+@item Canon PIXMA MG2924
+@item Canon PIXMA MG2940
+@item Canon PIXMA MG2950
+@item Canon PIXMA MG2960
+@item Canon PIXMA MG2970
+@item Canon PIXMA MG2980
+@item Canon PIXMA MG2990
+@item Canon MG3000 series
+@item Canon PIXMA MG3010
+@item Canon PIXMA MG3020
+@item Canon PIXMA MG3022
+@item Canon PIXMA MG3030
+@item Canon PIXMA MG3040
+@item Canon PIXMA MG3050
+@item Canon PIXMA MG3051
+@item Canon PIXMA MG3052
+@item Canon PIXMA MG3053
+@item Canon PIXMA MG3060
+@item Canon PIXMA MG3070
+@item Canon PIXMA MG3077
+@item Canon PIXMA MG3080
+@item Canon PIXMA MG3090
+@item Canon MG3100 series
+@item Canon PIXMA MG3100
+@item Canon PIXMA MG3110
+@item Canon PIXMA MG3120
+@item Canon PIXMA MG3122
+@item Canon PIXUS MG3130
+@item Canon PIXMA MG3140
+@item Canon PIXMA MG3150
+@item Canon PIXMA MG3160
+@item Canon PIXMA MG3170
+@item Canon PIXMA MG3180
+@item Canon MG3200 series
+@item Canon PIXMA MG3210
+@item Canon PIXMA MG3220
+@item Canon PIXMA MG3222
+@item Canon PIXUS MG3230
+@item Canon PIXMA MG3240
+@item Canon PIXMA MG3250
+@item Canon PIXMA MG3260
+@item Canon PIXMA MG3270
+@item Canon MG3500 series
+@item Canon PIXMA MG3510
+@item Canon PIXMA MG3520
+@item Canon PIXMA MG3522
+@item Canon PIXUS MG3530
+@item Canon PIXMA MG3540
+@item Canon PIXMA MG3550
+@item Canon PIXMA MG3560
+@item Canon PIXMA MG3570
+@item Canon PIXMA MG3580
+@item Canon MG3600 series
+@item Canon PIXMA MG3610
+@item Canon PIXMA MG3620
+@item Canon PIXUS MG3630
+@item Canon PIXMA MG3640
+@item Canon PIXMA MG3650
+@item Canon PIXMA MG3670
+@item Canon PIXMA MG3680
+@item Canon MG4100 series
+@item Canon PIXMA MG4100
+@item Canon PIXMA MG4110
+@item Canon PIXMA MG4120
+@item Canon PIXUS MG4130
+@item Canon PIXMA MG4140
+@item Canon PIXMA MG4150
+@item Canon PIXMA MG4160
+@item Canon PIXMA MG4170
+@item Canon PIXMA MG4180
+@item Canon MG4200 series
+@item Canon PIXMA MG4210
+@item Canon PIXMA MG4220
+@item Canon PIXUS MG4230
+@item Canon PIXMA MG4240
+@item Canon PIXMA MG4250
+@item Canon PIXMA MG4260
+@item Canon PIXMA MG4270
+@item Canon PIXMA MG4280
+@item Canon MG5100 series
+@item Canon PIXMA MG5100
+@item Canon PIXMA MG5120
+@item Canon PIXUS MG5130
+@item Canon PIXMA MG5140
+@item Canon PIXMA MG5150
+@item Canon PIXMA MG5170
+@item Canon PIXMA MG5180
+@item Canon MG5200 series
+@item Canon PIXMA MG5200
+@item Canon PIXMA MG5210
+@item Canon PIXMA MG5220
+@item Canon PIXUS MG5230
+@item Canon PIXMA MG5240
+@item Canon PIXMA MG5250
+@item Canon PIXMA MG5270
+@item Canon PIXMA MG5280
+@item Canon MG5300 series
+@item Canon PIXMA MG5300
+@item Canon PIXMA MG5310
+@item Canon PIXMA MG5320
+@item Canon PIXUS MG5330
+@item Canon PIXMA MG5340
+@item Canon PIXMA MG5350
+@item Canon PIXMA MG5370
+@item Canon PIXMA MG5380
+@item Canon MG5400 series
+@item Canon PIXMA MG5410
+@item Canon PIXMA MG5420
+@item Canon PIXMA MG5422
+@item Canon PIXUS MG5430
+@item Canon PIXMA MG5440
+@item Canon PIXMA MG5450
+@item Canon PIXMA MG5460
+@item Canon PIXMA MG5470
+@item Canon PIXMA MG5480
+@item Canon MG5500 series
+@item Canon PIXMA MG5510
+@item Canon PIXMA MG5520
+@item Canon PIXMA MG5522
+@item Canon PIXUS MG5530
+@item Canon PIXMA MG5540
+@item Canon PIXMA MG5550
+@item Canon PIXMA MG5560
+@item Canon PIXMA MG5570
+@item Canon PIXMA MG5580
+@item Canon MG5600 series
+@item Canon PIXMA MG5610
+@item Canon PIXMA MG5620
+@item Canon PIXMA MG5622
+@item Canon PIXUS MG5630
+@item Canon PIXMA MG5640
+@item Canon PIXMA MG5650
+@item Canon PIXMA MG5660
+@item Canon PIXMA MG5670
+@item Canon Mommy Photo MG5670
+@item Canon PIXMA MG5680
+@item Canon MG5700 series
+@item Canon PIXMA MG5710
+@item Canon PIXMA MG5720
+@item Canon PIXMA MG5721
+@item Canon PIXMA MG5722
+@item Canon PIXUS MG5730
+@item Canon PIXMA MG5740
+@item Canon PIXMA MG5750
+@item Canon PIXMA MG5751
+@item Canon PIXMA MG5752
+@item Canon PIXMA MG5753
+@item Canon PIXMA MG5770
+@item Canon PIXMA MG5780
+@item Canon PIXMA MG5790
+@item Canon Mommy Photo MG5790
+@item Canon PIXMA MG5795
+@item Canon MG6100 series
+@item Canon PIXMA MG6100
+@item Canon PIXMA MG6110
+@item Canon PIXMA MG6120
+@item Canon PIXUS MG6130
+@item Canon PIXMA MG6140
+@item Canon PIXMA MG6150
+@item Canon PIXMA MG6170
+@item Canon PIXMA MG6180
+@item Canon MG6200 series
+@item Canon PIXMA MG6200
+@item Canon PIXMA MG6210
+@item Canon PIXMA MG6220
+@item Canon PIXUS MG6230
+@item Canon PIXMA MG6240
+@item Canon PIXMA MG6250
+@item Canon PIXMA MG6270
+@item Can
This message was truncated. Download the full message here.
L
L
Ludovic Courtès wrote on 19 Jan 2021 15:56
Re: bug#45725: [PATCH] gnu: Add gutenprint.
(name . John Doe)(address . dftxbs3e@free.fr)(address . 45725@debbugs.gnu.org)
87eeihht5c.fsf_-_@gnu.org
Hi,

John Doe <dftxbs3e@free.fr> skribis:

Toggle quote (2 lines)
> * gnu/packages/cups.scm (gutenprint): New variable.

[...]

Toggle quote (2 lines)
> + (synopsis "Printer drivers for CUPS on GNU/Linux")

You can remove “on GNU/Linux”, it’s implicit (I don’t see how it could
be non-portable actually!).

Toggle quote (6 lines)
> + ;; Supported printers list from:
> + ;; http://gimp-print.sourceforge.net/p_Supported_Printers.php
> + ;; Remember to update on version bumps with this command:
> + ;; $ curl http://gimp-print.sourceforge.net/p_Supported_Printers.php | \
> + ;; grep -Po '(?<=^<tr><td>).+?(?=</td>)' | sed 's/^/@item /g'
> + (description "Printer drivers for
Toggle quote (8 lines)
> +CUPS on GNU/Linux, Macintosh OS X, and other POSIX-compliant operating systems.
> +This project also maintains an enhanced Print plug-in for GIMP 2.x from
> +the same code base. This driver claims to support these printers:
> +
> +@enumerate
> +@item Canon BJ-30
> +@item Canon BJC-50

I think we shouldn’t have such lists, even with the comment above on how
to update it. It’s not the right place for that and it would scare away
translators (who are already shy enough when it comes to translating
package descriptions :-)).

What you could do is write a sentence like:

“This driver supports widespread inkjet printers by major vendors,
including Canon, Epson, Fujitsu, and SONY.” (arbitrary choice)

That way people will at least see the vendor names, but the description
remains human-readable.

Otherwise LGTM. Could you send an updated patch?

Thanks,
Ludo’.
D
D
dftxbs3e wrote on 20 Jan 2021 05:04
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 45725@debbugs.gnu.org)
11b109d12f70f56ef6d924650d480f4327f5cd24.camel@free.fr
On Tue, 2021-01-19 at 15:56 +0100, Ludovic Courtès wrote:
Toggle quote (14 lines)
> Hi,
>
> John Doe <dftxbs3e@free.fr> skribis:
>
> > * gnu/packages/cups.scm (gutenprint): New variable.
>
> [...]
>
> > +    (synopsis "Printer drivers for CUPS on GNU/Linux")
>
> You can remove “on GNU/Linux”, it’s implicit (I don’t see how it
> could
> be non-portable actually!).

The package itself used "Linux" which I modified to GNU/Linux but I'll
remove it altogether and reword it.

Toggle quote (14 lines)
>
> > +    ;; Supported printers list from:
> > +    ;; http://gimp-print.sourceforge.net/p_Supported_Printers.php
> > +    ;; Remember to update on version bumps with this command:
> > +    ;; $ curl
> > http://gimp-print.sourceforge.net/p_Supported_Printers.php | \
> > +    ;; grep -Po '(?<=^<tr><td>).+?(?=</td>)' | sed 's/^/@item /g'
> > +    (description "Printer drivers for
>                      ^
> Please make it a full sentence, as per:
>
>  
> https://guix.gnu.org/manual/en/html_node/Synopses-and-Descriptions.html

Will do.

Toggle quote (27 lines)
>
> > +CUPS on GNU/Linux, Macintosh OS X, and other POSIX-compliant
> > operating systems.
> > +This project also maintains an enhanced Print plug-in for GIMP 2.x
> > from
> > +the same code base.  This driver claims to support these printers:
> > +
> > +@enumerate
> > +@item Canon BJ-30
> > +@item Canon BJC-50
>
> I think we shouldn’t have such lists, even with the comment above on
> how
> to update it.  It’s not the right place for that and it would scare
> away
> translators (who are already shy enough when it comes to translating
> package descriptions :-)).
>
> What you could do is write a sentence like:
>
>   “This driver supports widespread inkjet printers by major vendors,
>   including Canon, Epson, Fujitsu, and SONY.”  (arbitrary choice)
>
> That way people will at least see the vendor names, but the
> description
> remains human-readable.

OK, there is so many different vendors supported so I figured I'd
include the full list, I'll try including a full list of vendors
instead.

Toggle quote (3 lines)
>
> Otherwise LGTM.  Could you send an updated patch?

I still have not fixed the issue where CUPS tried to find the
gutenprint-5.3 filter binary within it's own package folder instead of
gutenprint's. I'd appreciate some help for that. Otherwise will come to
investigate soon, busy with other things now but wont last too long.

Toggle quote (4 lines)
>
> Thanks,
> Ludo’.

Thanks for the review!
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQQozTys6hLca3Ekt8u3HhLxn6GoewUCYAer6gAKCRC3HhLxn6Go
e8DRAP9tTQw/MzZqbSQy8pS/Zspt/PD+0rDAj5/EkRuXPCTpeAEArwRBtax1vV+4
OvPMTXH0opM9pryRlHjKWjo3qQSTOw4=
=CTEm
-----END PGP SIGNATURE-----


F
Getting Gutenprint in Guix
(address . 45725@debbugs.gnu.org)
CAN7nBXfojBGbC0rYAhQ2EEtXW51g_wPNPfvsejy+cNjGaTJLjA@mail.gmail.com
Hi. I'm new to Guix and would like to see if Gutenprint will allow me
to print on a Brother MFC-9970CDW without a proprietary driver.

What's left to do to complete the current patch? Can I help? Is there
a git repository and branch somewhere with the latest version of this
patch? Is it just package documentation at this point, or are there
remaining issues with e.g. paths?
F
(address . 45725@debbugs.gnu.org)
CAN7nBXdbUw2A3+K0TFDg+p4nd-iVp56RSjJYreqB+PGzU5O2gQ@mail.gmail.com
For the path issue, I'm not sure how you get CUPS to see the PPDs you
want, but once it does, the remaining issue should be to rewrite some
entries in the PPD to have a full path, most importantly the
cupsFilter entries, but in the PPD from macOS there were also other
entries with paths, that may or may not apply (except maybe the last
one?):
*APDialogExtension:
*APPrinterIconPath:
*APPrinterUtilityPath:
*APPrinterLowInkTool:
*APHelpBook:
*cupsICCProfile:

Note that the NixOS recipe creates a cups-progs derivation output that
has all the ppds and all the filter binaries (themselves symlinks to
the respective derivation outputs); then it symlinks that cups-progs
output to /var/lib/cups/path and configures to look for data and
binaries there, so it doesn't have to modify any PPD.
F
(address . 45725@debbugs.gnu.org)
CAN7nBXeuByNq6BYt_OWRdDkVpQ0X-=gFp8roi5=P3pj4pQ8Jxw@mail.gmail.com
As for how Guix does it, it looks like the cups-server-bin output is
created in gnu/services/cups.scm based on the union of the extensions
listed in the configuration for lib/cups, share/ppd and share/cups,
and that you would put the filter programs in the lib/cups of your
package and the ppd in the share/ppd/ (though I see some ppd.gz under
share/cups/model/), and some .drv in share/cups/drv/.
B
B
Brice Waegeneire wrote on 12 Feb 2022 10:34
[PATCH v4] gnu: Add gutenprint.
(address . 45725@debbugs.gnu.org)(name . Brice Waegeneire)(address . brice@waegenei.re)
20220212093410.9161-1-brice@waegenei.re
From: John Doe <dftxbs3e@free.fr>

* gnu/packages/cups.scm (gutenprint): New variable.

Co-authored-by: Brice Waegeneire <brice@waegenei.re>
---
I reworked this patch from John Doe by:
- updating it to 5.3.4
- adding the copyright header
- using the new input style
- fixing the synopsis and description as suggested by Ludo’

It works fine in cups-service-type, as I'm using a driver from gutenprint to
print to my local printer.

gnu/packages/cups.scm | 55 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)

Toggle diff (84 lines)
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index da113ac168..0831fad764 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -8,6 +8,8 @@
;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 John Doe <dftxbs3e@free.fr>
+;;; Copyright © 2022 Brice Waegeneire <brice@waegenei.re>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -47,6 +49,7 @@ (define-module (gnu packages cups)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
#:use-module (gnu packages scanner)
+ #:use-module (gnu packages time)
#:use-module (gnu packages tls)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
@@ -984,6 +987,58 @@ (define-public splix
(home-page "http://splix.ap2c.org/")
(license license:gpl2))))
+(define-public gutenprint
+ (package
+ (name "gutenprint")
+ (version "5.3.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/gimp-print/" name "-"
+ (version-major+minor version) "/" version "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32 "0fq2y9sx37d342fihp1ys9kf4sr2j5nc1kl33j9sirmqs80sfi6v"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:test-target "check-parallel"
+ #:configure-flags (list "--enable-cups-level3-ppds"
+ "--enable-globalized-cups-ppds"
+ "--enable-cups-ppds"
+ "--enable-cups-1_2-enhancements")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-paths
+ (lambda* (#:key outputs native-inputs #:allow-other-keys)
+ (substitute* "Makefile.in"
+ (("/usr/bin/time") "time"))
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* (find-files "." "^(Makefile|Makefile\\.in|configure)$")
+ (("^(\\s*)cups_conf_serverbin(\\s*)=(.+)$")
+ (string-append "cups_conf_serverbin=" out "/lib/cups\n"))
+ (("^(\\s*)cups_conf_serverroot(\\s*)=(.+)$")
+ (string-append "cups_conf_serverroot=" out "/etc/cups\n"))
+ (("^(\\s*)cups_conf_datadir(\\s*)=(.+)$")
+ (string-append "cups_conf_datadir=" out "/share/cups\n")))
+ (substitute* "src/cups/Makefile.in"
+ (("^(\\s*)bindir(\\s*)=(.+)$")
+ (string-append "bindir = " out "/bin\n"))
+ (("^(\\s*)sbindir(\\s*)=(.+)$")
+ (string-append "sbindir = " out "/sbin\n")))
+ #t))))))
+ (native-inputs
+ (list perl
+ time))
+ (inputs
+ (list cups-minimal))
+ (synopsis "Printer drivers for CUPS")
+ (description "This package provides printer drivers for CUPS.
+This project also maintains an enhanced Print plug-in for GIMP 2.x from
+the same code base. This driver supports widespread inkjet printers by major vendors,
+ including Canon, Epson, Fujitsu, SONY, @dots{}")
+ (home-page "http://gimp-print.sourceforge.net/")
+ (license license:gpl2+)))
+
(define-public python-pycups
(package
(name "python-pycups")

base-commit: 068d99978a0c9c6fb66f95455060c8d08ba55ac5
--
2.34.0
M
M
Milan Svoboda wrote on 30 Apr 2022 13:21
[PATCH] gnu: Add gutenprint.
(address . 45725@debbugs.gnu.org)
dedfe20c-1b44-507f-7784-909b4e8b74f3@centrum.cz
Hello Brice,


I tried your recipe and I confirm it works. Cups can see it and use it.


I have two problems:


1) It doesn't work with my (supported) printer. I can see this error in
dmesg when I try to print with it:

[12788.877547] traps: gutenprint.5.3[12432] general protection fault
ip:7f6f7411b2b6 sp:7fffc79555e0 error:0 in libc-2.33.so[7f6f740c7000+141000]


2) Adding the printer it shows me two possible drivers:


Canon MP240 series - CUPS+Gutenprint v5.3.4 (en)

Canon MP240 series - CUPS+Gutenprint v5.3.4 (en, ca, cs, da, de, el, ...)


When I select the first, CUPS complains that it is 'Unable to copy PPD
file'.

When I select the second, CUPS uses it and it seems working (except the
issue #1).


I'll try older version, maybe that make difference in problem #1.


Milan
M
M
Milan Svoboda wrote on 30 Apr 2022 17:09
(address . 45725@debbugs.gnu.org)
00a24260-1a4f-badd-4e63-b10271d3ee43@centrum.cz
Older nor newer version doesn't help.
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 45725@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 45725
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch