151 lines
5 KiB
Nix
151 lines
5 KiB
Nix
{ stdenv, lib, fetchzip,
|
|
autoconf, automake, libtool,
|
|
cups, popt, libtiff, libpng,
|
|
ghostscript, glib, libusb, libxml2 }:
|
|
|
|
/* this derivation is basically just a transcription of the rpm .spec
|
|
file included in the tarball */
|
|
|
|
let arch =
|
|
if stdenv.hostPlatform.system == "x86_64-linux" then "64"
|
|
else if stdenv.hostPlatform.system == "i686-linux" then "32"
|
|
else throw "Unsupported system ${stdenv.hostPlatform.system}";
|
|
|
|
in stdenv.mkDerivation rec {
|
|
name = "cnijfilter-${version}";
|
|
|
|
/* important note about versions: cnijfilter packages seem to use
|
|
versions in a non-standard way. the version indicates which
|
|
printers are supported in the package. so this package should
|
|
not be "upgraded" in the usual way.
|
|
|
|
instead, if you want to include another version supporting your
|
|
printer, you should try to abstract out the common things (which
|
|
should be pretty much everything except the version and the 'pr'
|
|
and 'pr_id' values to loop over). */
|
|
version = "4.00";
|
|
|
|
src = fetchzip {
|
|
url = "http://gdlp01.c-wss.com/gds/5/0100005515/01/cnijfilter-source-4.00-1.tar.gz";
|
|
sha256 = "1f6vpx1z3qa88590i5m0s49j9n90vpk81xmw6pvj0nfd3qbvzkya";
|
|
};
|
|
|
|
buildInputs = [ autoconf libtool automake
|
|
cups popt libtiff libpng
|
|
ghostscript glib libusb libxml2 ];
|
|
|
|
# patches from https://github.com/tokiclover/bar-overlay/tree/master/net-print/cnijfilter
|
|
patches = [
|
|
./patches/cnijfilter-3.80-1-cups-1.6.patch
|
|
./patches/cnijfilter-3.80-6-cups-1.6.patch
|
|
./patches/cnijfilter-4.00-4-ppd.patch
|
|
./patches/cnijfilter-4.00-5-abi_x86_32.patch
|
|
./patches/cnijfilter-4.00-6-headers.patch
|
|
];
|
|
|
|
postPatch = ''
|
|
sed -i "s|/usr/lib/cups/backend|$out/lib/cups/backend|" backend/src/Makefile.am;
|
|
sed -i "s|/usr/lib/cups/backend|$out/lib/cups/backend|" backendnet/backend/Makefile.am;
|
|
sed -i "s|/usr/lib/cups/backend|$out/lib/cups/backend|" cnijbe/src/Makefile.am;
|
|
sed -i "s|/usr|$out|" backend/src/cnij_backend_common.c;
|
|
sed -i "s|/usr/bin|${ghostscript}/bin|" pstocanonij/filter/pstocanonij.c;
|
|
'';
|
|
|
|
configurePhase = ''
|
|
cd libs
|
|
./autogen.sh --prefix=$out
|
|
|
|
cd ../bscc2sts
|
|
./autogen.sh
|
|
|
|
cd ../cnijnpr
|
|
./autogen.sh --prefix=$out --enable-libpath=$out/lib/bjlib
|
|
|
|
cd ../cngpij
|
|
./autogen.sh --prefix=$out --enable-progpath=$out/bin
|
|
|
|
cd ../cngpijmnt
|
|
./autogen.sh --prefix=$out --enable-progpath=$out/bin
|
|
|
|
cd ../pstocanonij
|
|
./autogen.sh --prefix=$out --enable-progpath=$out/bin
|
|
|
|
cd ../backend
|
|
./autogen.sh --prefix=$out
|
|
|
|
cd ../backendnet
|
|
./autogen.sh --prefix=$out --enable-libpath=$out/lib/bjlib --enable-progpath=$out/bin
|
|
|
|
cd ../cmdtocanonij
|
|
./autogen.sh --prefix=$out --datadir=$out/share
|
|
|
|
cd ../cnijbe
|
|
./autogen.sh --prefix=$out --enable-progpath=$out/bin
|
|
|
|
cd ../lgmon2
|
|
substituteInPlace src/Makefile.am \
|
|
--replace /usr/include/libusb-1.0 \
|
|
${libusb.dev}/include/libusb-1.0
|
|
./autogen.sh --prefix=$out --enable-libpath=$out/lib/bjlib --enable-progpath=$out/bin
|
|
|
|
cd ..;
|
|
|
|
sed -e "s,cnijlgmon2_LDADD =,cnijlgmon2_LDADD = -L../../com/libs_bin${arch}," \
|
|
-i lgmon2/src/Makefile.am || die
|
|
'';
|
|
|
|
preInstall = ''
|
|
mkdir -p $out/bin $out/lib/cups/filter $out/share/cups/model;
|
|
'';
|
|
|
|
postInstall = ''
|
|
set -o xtrace
|
|
for pr in mg2400 mg2500 mg3500 mg5500 mg6400 mg6500 mg7100 p200; do
|
|
cd ppd;
|
|
./autogen.sh --prefix=$out --program-suffix=$pr
|
|
make clean;
|
|
make;
|
|
make install;
|
|
|
|
cd ../cnijfilter;
|
|
./autogen.sh --prefix=$out --program-suffix=$pr --enable-libpath=/var/lib/cups/path/lib/bjlib --enable-binpath=$out/bin;
|
|
make clean;
|
|
make;
|
|
make install;
|
|
|
|
cd ..;
|
|
done;
|
|
|
|
mkdir -p $out/lib/bjlib;
|
|
for pr_id in 423 424 425 426 427 428 429 430; do
|
|
install -c -m 755 $pr_id/database/* $out/lib/bjlib;
|
|
install -c -s -m 755 $pr_id/libs_bin${arch}/*.so.* $out/lib;
|
|
done;
|
|
|
|
pushd $out/lib;
|
|
for so_file in *.so.*; do
|
|
ln -s $so_file ''${so_file/.so.*/}.so;
|
|
patchelf --set-rpath $out/lib $so_file;
|
|
done;
|
|
popd;
|
|
'';
|
|
|
|
/* the tarball includes some pre-built shared libraries. we run
|
|
'patchelf --set-rpath' on them just a few lines above, so that
|
|
they can find each other. but that's not quite enough. some of
|
|
those libraries load each other in non-standard ways -- they
|
|
don't list each other in the DT_NEEDED section. so, if the
|
|
standard 'patchelf --shrink-rpath' (from
|
|
pkgs/development/tools/misc/patchelf/setup-hook.sh) is run on
|
|
them, it undoes the --set-rpath. this prevents that. */
|
|
dontPatchELF = true;
|
|
|
|
meta = with lib; {
|
|
description = "Canon InkJet printer drivers for the MG2400 MG2500 MG3500 MG5500 MG6400 MG6500 MG7100 and P200 series.";
|
|
homepage = https://www.canon-europe.com/support/consumer_products/products/fax__multifunctionals/inkjet/pixma_mg_series/pixma_mg5550.aspx?type=drivers&driverdetailid=tcm:13-1094072;
|
|
license = licenses.unfree;
|
|
platforms = platforms.linux;
|
|
maintainers = with maintainers; [ chpatrick ];
|
|
};
|
|
}
|