# Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ # This ebuild comes from http://bugs.gentoo.org/show_bug.cgi?id=258244 # Written by rogge # # Changelog: 2011-04-13 Current Version: 3.00-r2 # * add eclass versionator to fix unpack-bug (non-hardcoding) # see comment 15 of bugreport # * fix dependency-bug for 2nd emul-linux-x86-bjdeps (noneffective downgrade) # see comment 17 of bugreport # * replaced dependency of non-existing virtual/ghostscript with app-text/ghostscript-gpl # see comment 14 of bugreport # * remove dependency of non-existing dev-libs/libxml-1.8; dependency >=dev-libs/libxml2-2.6.0 is to continue # ibidem # * change chmod of /usr/lib/cnijlib rspv. /usr/lib32/cnijlib to 755 # ibidem inherit eutils flag-o-matic multilib versionator DESCRIPTION="Canon InkJet Printer Driver for Linux (Pixus/Pixma-Series)." HOMEPAGE="http://support-sg.canon-asia.com/contents/SG/EN/0100160603.html" SRC_URI="http://gdlp01.c-wss.com/gds/6/0100001606/01/${PN}-common-${PV}-1.tar.gz" MY_PV=$(get_version_component_range '1-2') LICENSE="as-is" # GPL-2 source and proprietary binaries SLOT="0" KEYWORDS="~x86 ~amd64" IUSE="amd64 servicetools ip1900 ip3600 ip4600 mp190 mp240 mp540 mp630" # app-emulation/emul-linux-x86-bjdeps-0.1 is available over zugaina-overlay as 0.1-r2, # otherwise fetch this one -> http://rpm5.org/files/popt/popt-1.13.tar.gz DEPEND="app-text/ghostscript-gpl >=net-print/cups-1.1.14 !amd64? ( sys-libs/glibc >=dev-libs/popt-1.6 >=media-libs/tiff-3.4 >=media-libs/libpng-1.0.9 ) amd64? ( >=app-emulation/emul-linux-x86-bjdeps-0.1 app-emulation/emul-linux-x86-compat app-emulation/emul-linux-x86-baselibs ) servicetools? ( !amd64? ( >=gnome-base/libglade-0.6 >=dev-libs/libxml2-2.6.0 >=dev-libs/popt-1.4 >=x11-libs/gtk+-2.6.0 >=sys-devel/automake-1.9.5 >=sys-devel/autoconf-2.59 ) amd64? ( >=app-emulation/emul-linux-x86-bjdeps-0.1 app-emulation/emul-linux-x86-gtklibs ) )" RESTRICT="mirror" # Table of supported Printers and it's IDs # driver name printers ID probably compatible printers _pr1="ip1900" _prid1="346" _pr2="ip3600" _prid2="333" _pr3="ip4600" _prid3="334" _pr4="mp190" _prid4="342" _pr5="mp240" _prid5="341" _pr6="mp540" _prid6="338" _pr7="mp630" _prid7="336" ### # Standard Ebuild-functions ### pkg_setup() { use amd64 && multilib_toolchain_setup x86 _prefix="/usr/local/share" _prefix_2="/usr/local" _bindir="/usr/local/bin" _libdir="/usr/$(get_libdir)" _ppddir="/usr/share/cups/model" einfo "" einfo " USE-FLag servicetools\tcontains the following (useful!) programs:" einfo "" einfo "* 'cngpij' is the CUPS front-end GUI program" einfo "* 'cngpijmon' is the status monitoring program" einfo "* 'lgmon' is a Language monitoring program" einfo "* 'printui' is a GUI program for an easily selecting of several parameters for printing" einfo "" epause 5 if ! (use $_pr1 || use $_pr2 || use $_pr3 || use $_pr4 || use $_pr5 || use $_pr6 || use $_pr7); then ewarn "You didn't specify any driver model (set it's USE-flag)." einfo "" einfo "As example:\t MP540 support without maintenance tools" einfo "\t\t -> USE=\"mp540\"" einfo "" einfo "Sleeping 10 seconds (Press CTRL+C to abort)" einfo "" epause 10 _autochoose="true" else _autochoose="false" fi } src_unpack() { unpack ${A} || die mv "${PN}-common-${MY_PV}" "${P}" || die # Correcting directory-structure cd "${P}" epatch "${FILESDIR}/0001-replaced-direct-access-to-jmpbuf-with-png_jmpbuf.patch" || die } src_compile() { cd "libs" || die ./autogen.sh || die "Error: libs/autoconf.sh failed" make || die "Couldn't make libs" cd "../backend" || die ./autogen.sh --prefix=/usr --enable-progpath=${_bindir} || die "Error: backend/autoconf.sh failed" make || die "Couldn't make backend" cd "../pstocanonij" || die ./autogen.sh --prefix=/usr --enable-progpath=${_bindir} || die "Error: pstocanonij/autoconf.sh failed" make || die "Couldn't make pstocanonij" # cd ../ppd || die # ./autogen.sh --prefix=/usr --program-suffix=${_pr} || die "Error: ppd/autoconf.sh failed" if use servicetools; then cd "../cngpij" || die ./autogen.sh --prefix=${_prefix_2} --enable-progpath=${_bindir} || die "Error: cngpij/autoconf.sh failed" make || die "Couldn't make cngpij" cd "../cngpijmon" || die ./autogen.sh --datadir=${_prefix} --program-suffix=${_pr} || die "Error: cngpijmon/autoconf.sh failed" make || die "Couldn't make cngpijmon" fi cd ".." _pr=$_pr1 _prid=$_prid1 if use $_pr || ${_autochoose}; then src_compile_pr; fi _pr=$_pr2 _prid=$_prid2 if use $_pr || ${_autochoose}; then src_compile_pr; fi _pr=$_pr3 _prid=$_prid3 if use $_pr || ${_autochoose}; then src_compile_pr; fi _pr=$_pr4 _prid=$_prid4 if use $_pr || ${_autochoose}; then src_compile_pr; fi _pr=$_pr5 _prid=$_prid5 if use $_pr || ${_autochoose}; then src_compile_pr; fi _pr=$_pr6 _prid=$_prid6 if use $_pr || ${_autochoose}; then src_compile_pr; fi _pr=$_pr7 _prid=$_prid7 if use $_pr || ${_autochoose}; then src_compile_pr; fi } src_install() { mkdir -p ${D}${_bindir} || die mkdir -p ${D}${_libdir}/cups/filter || die mkdir -p ${D}${_ppddir} || die mkdir -p ${D}${_libdir}/cnijlib || die cd "libs" || die make DESTDIR=${D} install || die "Couldn't make install libs" cd "../backend" || die make DESTDIR=${D} install || die "Couldn't make install backend" cd "../pstocanonij" || die make DESTDIR=${D} install || die "Couldn't make install pstocanoncnij" # cd ../ppd || die # make DESTDIR=${D} install || die "Couldn't make install ppd" if use servicetools; then cd "../cngpij" || die make DESTDIR=${D} install || die "Couldn't make install cngpij" cd "../cngpijmon" || die make DESTDIR=${D} install || die "Couldn't make install cngpijmon" fi cd ".." _pr=$_pr1 _prid=$_prid1 if use $_pr || ${_autochoose}; then src_install_pr; fi _pr=$_pr2 _prid=$_prid2 if use $_pr || ${_autochoose}; then src_install_pr; fi _pr=$_pr3 _prid=$_prid3 if use $_pr || ${_autochoose}; then src_install_pr; fi _pr=$_pr4 _prid=$_prid4 if use $_pr || ${_autochoose}; then src_install_pr; fi _pr=$_pr5 _prid=$_prid5 if use $_pr || ${_autochoose}; then src_install_pr; fi _pr=$_pr6 _prid=$_prid6 if use $_pr || ${_autochoose}; then src_install_pr; fi _pr=$_pr7 _prid=$_prid7 if use $_pr || ${_autochoose}; then src_install_pr; fi } pkg_postinst() { einfo "" einfo "For installing a printer:" einfo " * Restart CUPS: /etc/init.d/cupsd restart" einfo " * Go to http://127.0.0.1:631/" einfo " -> Printers -> Add Printer" einfo "" einfo "You can find the printerspecific config-file here:" einfo " /usr/lib/cnijlib/cif${_pr}.conf" einfo "" einfo "If you experience any problems, please visit:" einfo " http://forums.gentoo.org/viewtopic-p-3217721.html" einfo " or" einfo " http://forums.gentoo.org/viewtopic-t-723203.html" einfo " or" einfo " http://bugs.gentoo.org/show_bug.cgi?id=258244" ln -s /usr/lib/cups/filter/pstocanonij /usr/libexec/cups/filter/pstocanonij ln -s /usr/lib/cups/backend/cnijusb /usr/libexec/cups/backend/cnijusb if use amd64; then ln -s /usr/lib32/cnijlib /usr/lib32/bjlib chown 755 /usr/lib32/bjlib/* else ln -s /usr/lib/cnijlib /usr/lib/bjlib chown 755 /usr/lib/bjlib/* fi } ### # Custom Helper Functions ### src_compile_pr() { mkdir ${_pr} cp -a ${_prid} ${_pr} || die cp -a cnijfilter ${_pr} || die cp -a printui ${_pr} || die cp -a lgmon ${_pr} || die cd "${_pr}/cnijfilter" || die # ${_libdir}/bjlib ??? ./autogen.sh --prefix=${_prefix_2} --program-suffix=${_pr} --enable-libpath=${_libdir}/bjlib || die make || die "Couldn't make ${_pr}/cnijfilter" if use servicetools; then cd "../printui" || die ./autogen.sh --datadir=${_prefix} --program-suffix=${_pr} || die make || die "Couldn't make ${_pr}/printui" cd "../lgmon" || die ./autogen.sh --program-suffix=${_pr} || die make || die "Couldn't make ${_pr}/lgmon" fi cd "../.." } src_install_pr() { cd ${_pr}/cnijfilter || die make DESTDIR=${D} install || die "Couldn't make install ${_pr}/cnijfilter" if use servicetools; then cd "../printui" || die make DESTDIR=${D} install || die "Couldn't make install ${_pr}/printui" cd "../lgmon" || die make DESTDIR=${D} install || die "Couldn't make install ${_pr}/lgmon" fi cd "../.." cp "${_prid}"/libs_bin/*.so.* "${D}${_libdir}" || die # install -c -s -m 755 cp "${_prid}"/database/* "${D}${_libdir}/cnijlib" || die # install -c -s -m 755 cp "ppd/canon${_pr}.ppd" "${D}${_ppddir}" || die } pkg_postrm() { rm -f /usr/libexec/cups/filter/pstocanonij rm -f /usr/libexec/cups/backend/cnijusb rm -f /usr/lib/bjlib }