summaryrefslogtreecommitdiff
path: root/media-gfx/scangearmp/scangearmp-1.60.ebuild
blob: 9bed4a749e597772be6010d0dc2781deada53a0c (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
# 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. 
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/0100303302.html" 
RESTRICT="nomirror confcache" 

SRC_URI="http://gdlp01.c-wss.com/gds/3/0100003033/01/scangearmp-source-1.60-1.tar.gz" 
LICENSE="UNKNOWN" # GPL-2 source and proprietary binaries 

SLOT="2" 
KEYWORDS="~x86 ~amd64" 
IUSE="amd64 
    usb 
    mp250 
    mp280 
    mp495 
    mg5100 
    mg5200 
    mg6100 
    mg8100" 
DEPEND=">=dev-libs/libusb-0.1.12-r5 
    >=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" 

# Arrays of supported Printers, there IDs and compatible models 
_pruse=("mp250" "mp280" "mp495" "mg5100" "mg5200" "mg6100" "mg8100") 
_prname=(${_pruse[@]}) 
_prid=("356" "370" "369" "373" "374" "376" "377") 
_prcomp=("mp250series" "mp280series" "mp495series" "mg5100series" "mg5200series" "mg6100series" "mg8100series") 
_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/local" 
    _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 MP140 support without maintenance tools" 
        einfo "\t\t -> USE=\"mp140\"" 
        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(){
	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 "" 
}