summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 482f206c6b06a36446a1985ed4847e4e2843093b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# Maintainer: swyter <swyterzone+aur@gmail.com>

# Based on      canon-pixma-mp237-complete by cidtux <cidtux@gmail.com>, which was
# modified from canon-pixma-mx520-complete by Jeremy Sands <cto@jeremysands.com>

# Only tested with x86_64 architecture


# the combination of sane and simple-scan is better than the built-in scan utility, disabled by default (scangearmp)
# switch to 1 to include it in the package
enable_scangear=0

pkgname=canon-pixma-mp240-complete
pkgver=3.0
pkgrel=3
pkgdesc="Complete standalone driver set (printing and scanning) for Canon Pixma MP240 series"
url='https://www.canon-europe.com/Support/Consumer_Products/products/Fax__Multifunctionals/InkJet/PIXMA_MP_series/PIXMA_MP240.aspx'
arch=('i686' 'x86_64')
license=('custom')
if [ "${CARCH}" = 'x86_64' ]; then
  depends=('lib32-libcups' 'lib32-popt' 'lib32-libpng12' 'lib32-libusb-compat' 'lib32-libtiff4' 'lib32-gtk2')
elif [ "${CARCH}" = 'i686' ]; then
  depends=('libcups' 'popt' 'libpng12' 'libusb-compat' 'libtiff4' 'gtk2')
fi

if [ ${enable_scangear} = 1 ]; then

makedepends=('sed' 'libarchive')

  if [ "${CARCH}" = 'x86_64' ]; then
    depends+=('lib32-gimp')
  elif [ "${CARCH}" = 'i686' ]; then
    depends+=('gimp')
  fi
fi



source=('https://web.archive.org/web/20191204161011if_/https://files.canon-europe.com/files/soft31325/Software/MP240_debian_drivers.tar'
        'canon-pixma-mp240-complete.license'
        'canon-pixma-mp240-complete-scangear.desktop'
        'canon-pixma-mp240-complete-scangear-icon.svg')

md5sums=('22ab0e74e6917009d2eecf8c229091d7'
         'da88f987611a24e5a7cc55f9aa551a7a'
         'dceb78d5f33dd207bdce53ae8c90e38d'
         'dff9e4454eaa608292732582cb25842f')


extract_deb()
{
  bsdtar -xf $1 --include data.tar.gz
  bsdtar -xf data.tar.gz
  rm data.tar.gz
}

build()
{
  cd ${srcdir}

  # 1- unpack driver source files

  mkdir printer scangear

  tar -xf MP240_debian_printer.tar  -C printer  --wildcards '*.deb'
  if [ ${enable_scangear} = 1 ]; then
    tar -xf MP240_debian_scangear.tar -C scangear --wildcards '*.deb'
  fi

  # 2- extract the printer-related stuff from the debian package

  cd printer

  extract_deb cnijfilter-common_3.00-1_i386.deb
  extract_deb cnijfilter-mp240series_3.00-1_i386.deb 

  rm *.deb

  cd ..

  # 3- extract the scanner-related stuff from the debian package
  
  if [ ${enable_scangear} = 1 ]; then
    cd scangear

    extract_deb scangearmp-common_1.20-1_i386.deb
    extract_deb scangearmp-mp240series_1.20-1_i386.deb

    rm *.deb

    cd ..
  fi


  # 4- remove the intermediate packages
  rm -v *.tar
}

package()
{
   cd ${pkgdir}

   # 1- copy recursively both package roots into the pkg dir, merging them nicely

   cp -r ${srcdir}/printer/* .

   if [ ${enable_scangear} = 1 ]; then
     cp -r ${srcdir}/scangear/* .
   fi

   rm -rf ${srcdir}/printer
   rm -rf ${srcdir}/scangear

   # 2- move ppd file to where cups expects it to be

   install -vDm 644 "${pkgdir}/usr/share/ppd/canonmp240.ppd" "${pkgdir}/usr/share/cups/model/canonmp240.ppd"

   rm -vrf ${pkgdir}/usr/share/ppd

   # 3- symbolic links for all the versioned libs, `printuimp240` needs `libcnbpcnclui341.so` and `libcnbpcmcm341.so` to work

   #mv ${pkgdir}/usr/lib ${pkgdir}/usr/lib32
   ln -s /usr/lib/libcnbpcmcm341.so.7.03.1      ${pkgdir}/usr/lib/libcnbpcmcm341.so
   ln -s /usr/lib/libcnbpcnclapi341.so.3.3.2    ${pkgdir}/usr/lib/libcnbpcnclapi341.so
   ln -s /usr/lib/libcnbpcnclbjcmd341.so.3.3.0  ${pkgdir}/usr/lib/libcnbpcnclbjcmd341.so
   ln -s /usr/lib/libcnbpcnclui341.so.3.4.0     ${pkgdir}/usr/lib/libcnbpcnclui341.so
   ln -s /usr/lib/libcnbpess341.so.3.1.1        ${pkgdir}/usr/lib/libcnbpess341.so
   ln -s /usr/lib/libcnbpo341.so.1.0.3          ${pkgdir}/usr/lib/libcnbpo341.so

   # 4- fix udev rules for the scanner, they're optional, just needed for scangear

   if [ ${enable_scangear} = 1 ]; then
     sed -i -e "s/SYSFS/ATTR/g" "${pkgdir}/etc/udev/rules.d/80-canon_mfp.rules"
   fi

   # 5- install custom license file

   install -vDm 644 "${srcdir}/${pkgname}.license" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"

   # 6- install entry in application menu, including icon
   if [ ${enable_scangear} = 1 ]; then
     install -vDm 644 "${srcdir}/${pkgname}-scangear.desktop"  "${pkgdir}/usr/share/applications/${pkgname}-scangear.desktop"
     install -vDm 644 "${srcdir}/${pkgname}-scangear-icon.svg" "${pkgdir}/usr/share/pixmaps/${pkgname}-scangear-icon.svg"
   fi

   # 7- append this to the ppd to add a grayscale-only option to the printer settings

  cat <<'EOF' >> "${pkgdir}/usr/share/cups/model/canonmp240.ppd"

*OpenUI *CNGrayscale/Grayscale: Boolean
*DefaultCNGrayscale: True
*CNGrayscale True/Yes: True
*CNGrayscale False/No: False
*CloseUI: *CNGrayscale
EOF
}