summaryrefslogtreecommitdiff
path: root/media-gfx/scangearmp/scangearmp-2.10.ebuild
blob: 60eea270f693a51d72e36d3ead5dbb2fc0461707 (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
# 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-compat"

# 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

        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

	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 ""
}