Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib 2, stdenv 3, fetchurl 4, unzip 5, autoconf 6, automake 7, libtool_1_5 8, makeWrapper 9, cups 10, jbigkit 11, glib 12, gtk3 13, gdk-pixbuf 14, pango 15, cairo 16, coreutils 17, atk 18, pkg-config 19, libxml2 20, runtimeShell 21, libredirect 22, ghostscript 23, pkgs 24, zlib 25}: 26 27let 28 system = 29 if stdenv.targetPlatform.system == "x86_64-linux" then "intel" 30 else if stdenv.targetPlatform.system == "aarch64-linux" then "arm" 31 else throw "Unsupported platform for Canon UFR2 Drivers: ${stdenv.targetPlatform.system}"; 32 ld64 = "${stdenv.cc}/nix-support/dynamic-linker"; 33 libs = pkgs: lib.makeLibraryPath buildInputs; 34 35 version = "5.70"; 36 dl = "8/0100007658/33"; 37 38 versionNoDots = builtins.replaceStrings [ "." ] [ "" ] version; 39 src_canon = fetchurl { 40 url = "http://gdlp01.c-wss.com/gds/${dl}/linux-UFRII-drv-v${versionNoDots}-m17n-11.tar.gz"; 41 hash = "sha256-d5VHlPpUPAr3RWVdQRdn42YLuVekOw1IaMFLVt1Iu7o="; 42 }; 43 44 buildInputs = [ cups zlib jbigkit glib gtk3 libxml2 gdk-pixbuf pango cairo atk ]; 45in 46stdenv.mkDerivation rec { 47 pname = "canon-cups-ufr2"; 48 inherit version; 49 src = src_canon; 50 51 postUnpack = '' 52 ( 53 cd $sourceRoot 54 tar -xf Sources/cnrdrvcups-lb-${version}-1.11.tar.xz 55 sed -ie "s@_prefix=/usr@_prefix=$out@" cnrdrvcups-common-${version}/allgen.sh 56 sed -ie "s@_libdir=/usr/lib@_libdir=$out/lib@" cnrdrvcups-common-${version}/allgen.sh 57 sed -ie "s@_bindir=/usr/bin@_bindir=$out/bin@" cnrdrvcups-common-${version}/allgen.sh 58 sed -ie "s@/usr@$out@" cnrdrvcups-common-${version}/{{backend,rasterfilter}/Makefile.am,rasterfilter/cnrasterproc.h} 59 sed -ie "s@etc/cngplp@$out/etc/cngplp@" cnrdrvcups-common-${version}/cngplp/Makefile.am 60 sed -ie "s@usr/share/cngplp@$out/usr/share/cngplp@" cnrdrvcups-common-${version}/cngplp/src/Makefile.am 61 patchShebangs cnrdrvcups-common-${version} 62 63 sed -ie "s@_prefix=/usr@_prefix=$out@" cnrdrvcups-lb-${version}/allgen.sh 64 sed -ie "s@_libdir=/usr/lib@_libdir=$out/lib@" cnrdrvcups-lb-${version}/allgen.sh 65 sed -ie "s@_bindir=/usr/bin@_bindir=$out/bin@" cnrdrvcups-lb-${version}/allgen.sh 66 sed -ie '/^cd \.\.\/cngplp/,/^cd files/{/^cd files/!{d}}' cnrdrvcups-lb-${version}/allgen.sh 67 sed -ie "s@cd \.\./pdftocpca@cd pdftocpca@" cnrdrvcups-lb-${version}/allgen.sh 68 sed -ie "s@/usr@$out@" cnrdrvcups-lb-${version}/pdftocpca/Makefile.am 69 sed -i "/CNGPLPDIR/d" cnrdrvcups-lb-${version}/Makefile 70 patchShebangs cnrdrvcups-lb-${version} 71 ) 72 ''; 73 74 nativeBuildInputs = [ makeWrapper unzip autoconf automake libtool_1_5 pkg-config ]; 75 76 inherit buildInputs; 77 78 installPhase = '' 79 runHook preInstall 80 81 ( 82 cd cnrdrvcups-common-${version} 83 ./allgen.sh 84 make install 85 ) 86 ( 87 cd cnrdrvcups-common-${version}/Rule 88 mkdir -p $out/share/cups/usb 89 install -m 644 *.usb-quirks $out/share/cups/usb 90 ) 91 ( 92 cd cnrdrvcups-lb-${version} 93 ./allgen.sh 94 make install 95 96 mkdir -p $out/share/cups/model 97 install -m 644 ppd/*.ppd $out/share/cups/model/ 98 ) 99 100 ( 101 cd lib 102 mkdir -p $out/lib 103 install -m 755 libs64/${system}/libColorGearCufr2.so.2.0.0 $out/lib 104 install -m 755 libs64/${system}/libcaepcmufr2.so.1.0 $out/lib 105 install -m 755 libs64/${system}/libcaiocnpkbidir.so.1.0.0 $out/lib 106 install -m 755 libs64/${system}/libcaiousb.so.1.0.0 $out/lib 107 install -m 755 libs64/${system}/libcaiowrapufr2.so.1.0.0 $out/lib 108 install -m 755 libs64/${system}/libcanon_slimufr2.so.1.0.0 $out/lib 109 install -m 755 libs64/${system}/libcanonufr2r.so.1.0.0 $out/lib 110 install -m 755 libs64/${system}/libcnaccm.so.1.0 $out/lib 111 install -m 755 libs64/${system}/libcnlbcmr.so.1.0 $out/lib 112 install -m 755 libs64/${system}/libcnncapcmr.so.1.0 $out/lib 113 install -m 755 libs64/${system}/libufr2filterr.so.1.0.0 $out/lib 114 115 install -m 755 libs64/${system}/cnpdfdrv $out/bin 116 install -m 755 libs64/${system}/cnpkbidir $out/bin 117 install -m 755 libs64/${system}/cnpkmoduleufr2r $out/bin 118 install -m 755 libs64/${system}/cnrsdrvufr2 $out/bin 119 install -m 755 libs64/${system}/cnsetuputil2 $out/bin/cnsetuputil2 120 121 mkdir -p $out/share/cnpkbidir 122 install -m 644 libs64/${system}/cnpkbidir_info* $out/share/cnpkbidir 123 124 mkdir -p $out/share/ufr2filter 125 install -m 644 libs64/${system}/ThLB* $out/share/ufr2filter 126 ) 127 128 ( 129 cd $out/lib 130 131 ln -sf libColorGearCufr2.so.2.0.0 libColorGearCufr2.so 132 ln -sf libColorGearCufr2.so.2.0.0 libColorGearCufr2.so.2 133 ln -sf libcaepcmufr2.so.1.0 libcaepcmufr2.so 134 ln -sf libcaepcmufr2.so.1.0 libcaepcmufr2.so.1 135 ln -sf libcaiocnpkbidir.so.1.0.0 libcaiocnpkbidir.so 136 ln -sf libcaiocnpkbidir.so.1.0.0 libcaiocnpkbidir.so.1 137 ln -sf libcaiowrapufr2.so.1.0.0 libcaiowrapufr2.so 138 ln -sf libcaiowrapufr2.so.1.0.0 libcaiowrapufr2.so.1 139 ln -sf libcanon_slimufr2.so.1.0.0 libcanon_slimufr2.so 140 ln -sf libcanon_slimufr2.so.1.0.0 libcanon_slimufr2.so.1 141 ln -sf libcanonufr2r.so.1.0.0 libcanonufr2r.so 142 ln -sf libcanonufr2r.so.1.0.0 libcanonufr2r.so.1 143 ln -sf libcnlbcmr.so.1.0 libcnlbcmr.so 144 ln -sf libcnlbcmr.so.1.0 libcnlbcmr.so.1 145 ln -sf libufr2filterr.so.1.0.0 libufr2filterr.so 146 ln -sf libufr2filterr.so.1.0.0 libufr2filterr.so.1 147 ln -sf libuictlufr2r.so.1.0.0 libuictlufr2r.so 148 ln -sf libuictlufr2r.so.1.0.0 libuictlufr2r.so.1 149 150 patchelf --set-rpath "$(cat $NIX_CC/nix-support/orig-cc)/lib:${libs pkgs}:${stdenv.cc.cc.lib}/lib64:${stdenv.cc.libc}/lib64:$out/lib" libcanonufr2r.so.1.0.0 151 patchelf --set-rpath "$(cat $NIX_CC/nix-support/orig-cc)/lib:${libs pkgs}:${stdenv.cc.cc.lib}/lib64:${stdenv.cc.libc}/lib64" libcaepcmufr2.so.1.0 152 patchelf --set-rpath "$(cat $NIX_CC/nix-support/orig-cc)/lib:${libs pkgs}:${stdenv.cc.cc.lib}/lib64:${stdenv.cc.libc}/lib64" libColorGearCufr2.so.2.0.0 153 ) 154 155 ( 156 cd $out/bin 157 patchelf --set-interpreter "$(cat ${ld64})" --set-rpath "${lib.makeLibraryPath buildInputs}:${stdenv.cc.cc.lib}/lib64:${stdenv.cc.libc}/lib64" cnsetuputil2 cnpdfdrv 158 patchelf --set-interpreter "$(cat ${ld64})" --set-rpath "${lib.makeLibraryPath buildInputs}:${stdenv.cc.cc.lib}/lib64:${stdenv.cc.libc}/lib64:$out/lib" cnpkbidir cnrsdrvufr2 cnpkmoduleufr2r cnjbigufr2 159 160 wrapProgram $out/bin/cnrsdrvufr2 \ 161 --prefix LD_LIBRARY_PATH ":" "$out/lib" \ 162 --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ 163 --set NIX_REDIRECTS /usr/bin/cnpkmoduleufr2r=$out/bin/cnpkmoduleufr2r:/usr/bin/cnjbigufr2=$out/bin/cnjbigufr2 164 165 wrapProgram $out/bin/cnsetuputil2 \ 166 --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ 167 --set NIX_REDIRECTS /usr/share/cnsetuputil2=$out/usr/share/cnsetuputil2 168 ) 169 170 ( 171 cd lib/data/ufr2 172 mkdir -p $out/share/caepcm 173 install -m 644 *.ICC $out/share/caepcm 174 install -m 644 *.icc $out/share/caepcm 175 install -m 644 *.PRF $out/share/caepcm 176 install -m 644 CnLB* $out/share/caepcm 177 ) 178 179 ( 180 cd cnrdrvcups-utility-${version}/data 181 mkdir -p $out/usr/share/cnsetuputil2 182 install -m 644 cnsetuputil* $out/usr/share/cnsetuputil2 183 ) 184 185 makeWrapper "${ghostscript}/bin/gs" "$out/bin/gs" \ 186 --prefix LD_LIBRARY_PATH ":" "$out/lib" \ 187 --prefix PATH ":" "$out/bin" 188 189 runHook postInstall 190 ''; 191 192 meta = with lib; { 193 description = "CUPS Linux drivers for Canon printers"; 194 homepage = "http://www.canon.com/"; 195 sourceProvenance = with sourceTypes; [ binaryNativeCode ]; 196 license = licenses.unfree; 197 maintainers = with maintainers; [ lluchs ]; 198 }; 199}