blob: fee0c87d7e7bbbe3050093b766e06e683a2bf37c (
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
|
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
# Changelog since last bugzilla upload
#
# initial version
# updated to use cnijfilter-common-2.80 2008-01-12 by Victor Mataré
#
# 2010-03-19 GuS Version 3.20-r1
# Replaced dependency of non-existing dev-libs/libxml with
# dependency of >=dev-libs/libxml2-2.7.3-r2.
#
# 2010-03-20 GuS Version 3.20-r2
# Replaced dependency of non-existing virtual/ghostscript with
# dependency of app-text/ghostscript-gpl.
#
# 2013-05-31 andmarios 1.0 version for scangearmp 2.10
# Changed support to scangearmp 2.10 (mx390, mx450, mx520, mx720, mx920, e610)
# Set dev-libs/libusb to (0) slot, to avoid dependency problems with libusbx
# Dropped the /usr/local path as it wasn't being correctly used in my system
# Dropped the fixcompile.patch as it is needed anymore (?)
# Removed trailing spaces
EAPI="4"
inherit eutils flag-o-matic autotools multilib
DESCRIPTION="Canon InkJet Scanner Driver and ScanGear MP for Linux (Pixus/Pixma-Series)."
HOMEPAGE="http://support-au.canon.com.au/contents/AU/EN/0100518402.html"
RESTRICT="nomirror confcache"
SRC_URI="http://gdlp01.c-wss.com/gds/4/0100005184/01/scangearmp-source-2.10-1.tar.gz"
LICENSE="UNKNOWN" # GPL-2 source and proprietary binaries
SLOT="2"
KEYWORDS="~x86 ~amd64"
IUSE="amd64
usb
mx720
mx920
mx390
mx450
mx520
e610"
DEPEND=">=media-libs/libpng-1.2.44
>=media-gfx/gimp-2.6.8
>=x11-libs/gtk+-2.20.1-r1
>=media-gfx/sane-backends-1.0.19-r2"
#>=dev-libs/libusb-0.1.12-r5
#<dev-libs/libusb-1.0.9
# Arrays of supported Printers, there IDs and compatible models
_pruse=("mx720" "mx920" "mx390" "mx450" "mx520" "e610")
_prname=(${_pruse[@]})
_prid=("416" "417" "418" "419" "420" "421")
_prcomp=("mx720series" "mx920series" "mx390series" "mx450series" "mx520series" "e610series")
_max=$((${#_pruse[@]}-1)) # used for iterating through these arrays
###
# Standard Ebuild-functions
###
src_unpack() {
unpack ${A}
mv ${PN}-source-${PV}-1 ${P} || die # Correcting directory-structure
}
pkg_setup() {
if [ -z "$LINGUAS" ]; then # -z tests to see if the argument is empty
ewarn "You didn't specify 'LINGUAS' in your make.conf. Assuming"
ewarn "English localisation, i.e. 'LINGUAS=\"en\"'."
LINGUAS="en"
fi
_prefix="/usr/"
_bindir="${_prefix}/bin"
_libdir="/usr/$(get_libdir)" # either lib or lib32
_gimpdir="${_libdir}/gimp/2.0/plug-ins"
_udevdir="/etc/udev/rules.d"
einfo ""
einfo " USE-flags\t(description / probably compatible printers)"
einfo ""
einfo " amd64\t(basic support for this architecture)"
einfo " usb\t(connected using usb)"
_autochoose="true"
for i in `seq 0 ${_max}`; do
einfo " ${_pruse[$i]}\t${_prcomp[$i]}"
if (use ${_pruse[$i]}); then
_autochoose="false"
fi
done
einfo ""
if (${_autochoose}); then
ewarn "You didn't specify any driver model (set it's USE-flag)."
einfo ""
einfo "As example:\tbasic MX525 support without maintenance tools"
einfo "\t\t -> USE=\"mx520\""
einfo ""
einfo "Press Ctrl+C to abort"
echo
ebeep
n=15
while [[ $n -gt 0 ]]; do
echo -en " Waiting $n seconds...\r"
sleep 1
(( n-- ))
done
fi
}
src_prepare(){
epatch ${FILESDIR}/link-against-mathlib.patch
cd scangearmp
sed -i 's/Z_BEST_SPEED/\ 1\ /g' src/scanfile.c
# ( cd src && epatch "${FILESDIR}/fixcompile.patch" )
libtoolize -cfi
eautoreconf
}
src_configure(){
cd scangearmp || die
if use x86; then
LDFLAGS="-L$(pwd)/../com/libs_bin32"
elif use amd64 ; then
LDFLAGS="-L$(pwd)/../com/libs_bin64"
else
die "not supported arch"
fi
econf LDFLAGS="${LDFLAGS}"
}
src_compile() {
cd scangearmp || die
make || die "Couldn't make scangearmp"
cd ..
}
src_install() {
mkdir -p ${D}${_bindir} || die
mkdir -p ${D}${_libdir}/bjlib || die
if use usb; then
mkdir -p ${D}${_udevdir} || die
fi
cd scangearmp || die
make DESTDIR=${D} install || die "Couldn't make install scangearmp"
cd ..
for i in $(seq 0 ${_max}); do
if use ${_pruse[$i]} || ${_autochoose}; then
_pr=${_prname[$i]} _prid=${_prid[$i]}
fi
done
# rm .1a and .a
rm -f {$D}${_libdir}/*.1a {$D}${_libdir}/*.a || die
# make symbolic link for gimp-plug-in
if [ -d "${_gimpdir}" ]; then
mkdir -p ${D}${_gimpdir} || die
dosym ${_bindir}/scangearmp ${_gimpdir}/scangearmp || die
fi
if use x86; then
cp -a ${_prid}/libs_bin32/* ${D}${_libdir} || die
cp -a com/libs_bin32/* ${D}${_libdir} || die
else # amd54
cp -a ${_prid}/libs_bin64/* ${D}${_libdir} || die
cp -a com/libs_bin64/* ${D}${_libdir} || die
fi
cp -a ${_prid}/*.DAT ${D}${_libdir}/bjlib || die
cp -a ${_prid}/*.tbl ${D}${_libdir}/bjlib || die
cp com/ini/canon_mfp_net.ini ${D}${_libdir}/bjlib || die
chmod 644 ${D}${_libdir}/bjlib/* || die
chmod 666 ${D}${_libdir}/bjlib/canon_mfp_net.ini || die
# usb
if use usb; then
cp -a scangearmp/etc/80-canon_mfp.rules ${D}${_udevdir} || die
chmod 644 ${D}${_udevdir}/80-canon_mfp.rules || die
fi
}
pkg_postinst() {
if use usb; then
if [ -x /sbin/udevadm ]; then
einfo ""
einfo "Reloading usb rules..."
/sbin/udevadm control --reload-rules 2> /dev/null
/sbin/udevadm trigger --action=add --subsystem-match=usb 2>/dev/null
else
einfo ""
einfo "Please, reload usb rules manually."
fi
fi
einfo ""
einfo "If you experience any problems, please visit:"
einfo " http://forums.gentoo.org/viewtopic-p-3217721.html"
einfo ""
}
|