You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
5.2 KiB
132 lines
5.2 KiB
4 months ago
|
;;; SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
|
||
|
|
||
|
(define-module (cnijfilter)
|
||
|
#:use-module (gnu packages)
|
||
|
#:use-module (gnu packages autotools)
|
||
|
#:use-module (gnu packages base)
|
||
|
#:use-module (gnu packages bash)
|
||
|
#:use-module (gnu packages cups)
|
||
|
#:use-module (gnu packages elf)
|
||
|
#:use-module (gnu packages ghostscript)
|
||
|
#:use-module (gnu packages glib)
|
||
|
#:use-module (gnu packages gtk)
|
||
|
#:use-module (gnu packages pkg-config)
|
||
|
#:use-module (gnu packages popt)
|
||
|
#:use-module (guix build-system glib-or-gtk)
|
||
|
#:use-module (guix download)
|
||
|
#:use-module (guix gexp)
|
||
|
#:use-module ((guix licenses) #:prefix license:)
|
||
|
#:use-module (guix packages)
|
||
|
#:use-module (guix utils)
|
||
|
#:use-module (srfi srfi-1)
|
||
|
#:use-module (ice-9 match))
|
||
|
|
||
|
;; There seems to exist at least version 3.80 of this package.
|
||
|
;; But it doesn't seem to include equivalent drivers for old printers.
|
||
|
;; MAYBE TODO Put drivers in different per-driver outputs.
|
||
|
(define-public cnijfilter-3.40
|
||
|
(package
|
||
|
(name "cnijfilter")
|
||
|
(version "3.40")
|
||
|
(source
|
||
|
(origin
|
||
|
(method url-fetch)
|
||
|
(uri "https://files.canon-europe.com/files/soft40245/Software/\
|
||
|
cnijfilter-source-3.40-1.tar.gz")
|
||
|
(sha256
|
||
|
(base32 "0ylapgzwrc51vlilmw4zv210ws049745rqsf7v68m7hs975d8pd9"))))
|
||
|
(build-system glib-or-gtk-build-system)
|
||
|
(home-page "https://canon.com")
|
||
|
(arguments
|
||
|
(list
|
||
|
#:tests? #f ; No tests.
|
||
|
#:configure-flags
|
||
|
#~(let ((bash (search-input-file %build-inputs "/bin/bash")))
|
||
|
(list (string-append "CONFIG_SHELL=" bash)
|
||
|
(string-append "SHELL=" bash)))
|
||
|
#:make-flags
|
||
|
#~(list (string-append "prefix=" #$output)
|
||
|
(string-append "exec_prefix=" #$output)
|
||
|
(string-append "backend_bindir=" #$output "/lib/cups/backend")
|
||
|
(string-append "backendnet_bindir=" #$output "/lib/cups/backend")
|
||
|
(string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
|
||
|
#:phases
|
||
|
#~(modify-phases %standard-phases
|
||
|
(add-after 'unpack 'fix-compilation
|
||
|
(lambda _
|
||
|
(substitute* "cngpij/cngpij/bjcups.c"
|
||
|
(("#include <cups/cups\\.h>" all)
|
||
|
(string-append all "\n#include <cups/ipp.h>"))
|
||
|
(("pRequest->request\\.op\\.operation_id = CUPS_GET_PRINTERS;")
|
||
|
"ippSetOperation(pRequest, CUPS_GET_PRINTERS);")
|
||
|
(("pRequest->request\\.op\\.request_id = 1;")
|
||
|
"ippSetRequestId(pRequest, 1);")
|
||
|
(("pResponse->request\\.status\\.status_code")
|
||
|
"ippGetStatusCode(pResponse)")
|
||
|
(("pResponse->attrs")
|
||
|
"ippFirstAttribute(pResponse)")
|
||
|
(("pAttribute->group_tag")
|
||
|
"ippGetGroupTag(pAttribute)")
|
||
|
(("pAttribute->value_tag")
|
||
|
"ippGetValueTag(pAttribute)")
|
||
|
(("pAttribute->next")
|
||
|
"ippNextAttribute(pResponse)")
|
||
|
(("pAttribute->name")
|
||
|
"ippGetName(pAttribute)")
|
||
|
(("pAttribute->values\\[0\\]\\.string\\.text")
|
||
|
"ippGetString(pAttribute, 0, NULL)"))
|
||
|
(substitute* "backend/src/cnij_backend_common.c"
|
||
|
(("#include <cups/cups\\.h>" all)
|
||
|
(string-append all "\n#include <cups/ppd.h>")))
|
||
|
(substitute* "cngpijmon/cnijnpr/cnijnpr/cnijnpr.c"
|
||
|
(("#include <sys/sysctl\\.h>")
|
||
|
""))
|
||
|
(substitute* "Makefile"
|
||
|
(("cngpijmon/cnijnpr" all)
|
||
|
(string-append "lgmon " all)))))
|
||
|
(replace 'configure
|
||
|
(lambda* (#:key configure-flags #:allow-other-keys)
|
||
|
(let ((bash (search-input-file %build-inputs "/bin/bash")))
|
||
|
|
||
|
(define (configure-dir dir)
|
||
|
(with-directory-excursion dir
|
||
|
(setenv "NOCONFIGURE" "1")
|
||
|
(invoke "./autogen.sh")
|
||
|
(apply invoke bash "configure" configure-flags)))
|
||
|
|
||
|
(for-each
|
||
|
configure-dir
|
||
|
'("cnijfilter" "libs" "printui" "cngpijmon/cnijnpr" "cngpijmon"
|
||
|
"backend" "pstocanonij" "ppd" "cngpij" "lgmon"
|
||
|
"backendnet")))))
|
||
|
(add-after 'install 'install-libraries
|
||
|
(lambda _
|
||
|
(for-each
|
||
|
(lambda (lib)
|
||
|
(invoke "patchelf"
|
||
|
"--set-rpath" (string-append #$output "/lib") lib)
|
||
|
(install-file lib (string-append #$output "/lib")))
|
||
|
(filter (lambda (s) (not (string-contains s "libs_bin32")))
|
||
|
(find-files "." "\\.so"))))))))
|
||
|
(native-inputs (list autoconf automake libtool
|
||
|
bash-minimal pkg-config popt
|
||
|
patchelf))
|
||
|
(inputs (list gtk+-2 cups-minimal))
|
||
|
(synopsis "Canon Printer Drivers")
|
||
|
(description "This package provides the drivers for the following Canon
|
||
|
Printer Series:
|
||
|
|
||
|
@enumerate
|
||
|
@item mp250
|
||
|
@item mp280
|
||
|
@item mp495
|
||
|
@item mg5100
|
||
|
@item ip4800
|
||
|
@item mg5200
|
||
|
@item mg6100
|
||
|
@item mg8100
|
||
|
@end enumerate")
|
||
|
;; This is the license for the source available code, not the binary blobs.
|
||
|
(license license:gpl2+)))
|