diff options
-rw-r--r-- | eclass/ecnij.eclass | 341 | ||||
-rw-r--r-- | net-print/cnijfilter/cnijfilter-4.10.ebuild | 47 |
2 files changed, 388 insertions, 0 deletions
diff --git a/eclass/ecnij.eclass b/eclass/ecnij.eclass new file mode 100644 index 00000000..57d599b3 --- /dev/null +++ b/eclass/ecnij.eclass @@ -0,0 +1,341 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: eclass/ecnij.eclass,v 3.4 2016/05/14 19:33:34 Exp $ + +# @ECLASS: ecnij.eclass +# @MAINTAINER: +# bar-overlay <bar@overlay.org> +# @AUTHOR: +# Original author: tokiclover <tokiclover@gmail.com> +# @BLURB: Provide a set of functions to get Canon(R) printers/scanners utilities +# @DESCRIPTION: +# Exports base functions used by ebuilds written +# for net-print/cnijfilter package for canon(r) hardware + +if [[ -z "${_ECNIJ_ECLASS}" ]]; then +_ECNIJ_ECLASS=1 + +inherit autotools eutils flag-o-matic multilib-build + +# @ECLASS-VARIABLE: CANON_PRINTERS +# @DESCRIPTION: +# Global use-expand variable +# +# CANON_PRINTERS="ip90 ip 100" +: ${CANON_PRINTERS:=} + +# @ECLASS-VARIABLE: PRINTER_MODEL +# @DESCRIPTION: +# Array of printer models supported by the ebuild +# PRINTER_MODEL=(ip90 ip100) +: ${PRINTER_MODEL:=} + +# @ECLASS-VARIABLE: PRINTER_ID +# @DESCRIPTION: +# Array of printer ID supported by the ebuild (complement of PRINTER_MODEL) +# PRINTER_ID=(303 253) +: ${PRINTER_ID:=} + +# @ECLASS-VARIABLE: PRINTER_USE +# @DESCRIPTION: +# Array containing the expanded use flags from PRINTER_MODEL +# PRINTER_USE=(canon_printers_ip{90,100}) +: ${PRINTER_USE:=} + +for card in ${PRINTER_MODEL[@]}; do + has ${card} ${CANON_PRINTERS} && + PRINTER_USE=(${PRINTER_USE[@]} +canon_printers_${card}) || + PRINTER_USE=(${PRINTER_USE[@]} canon_printers_${card}) +done + +IUSE="${IUSE} backends debug +drivers gtk servicetools +usb ${PRINTER_USE[@]}" +KEYWORDS="~x86 ~amd64" + +REQUIRED_USE="${REQUIRED_USE} servicetools? ( gtk ) + || ( drivers backends ) drivers? ( || ( ${PRINTER_USE[@]} ) )" +( (( ${PV:0:1} > 3 )) || ( (( ${PV:0:1} == 3 )) && (( ${PV:2:2} >= 10 )) ) ) && +REQUIRED_USE+=" servicetools? ( net ) backends? ( || ( net usb ) )" || +REQUIRED_USE+=" backends? ( usb )" + +LICENSE="GPL-2" +has net ${IUSE} && LICENSE+=" net? ( CNIJFILTER )" + +RDEPEND="${RDEPEND} + app-text/ghostscript-gpl + dev-libs/glib[${MULTILIB_USEDEP}] + dev-libs/popt[${MULTILIB_USEDEP}] + servicetools? ( + gnome-base/libglade[${MULTILIB_USEDEP}] + dev-libs/libxml2[${MULTILIB_USEDEP}] ) + media-libs/tiff[${MULTILIB_USEDEP}] + media-libs/libpng[${MULTILIB_USEDEP}] + !backends? ( >=${CATEGORY}/${P}[${MULTILIB_USEDEP},backends] )" + +( (( ${PV:0:1} >= 3 )) || (( ${PV:2:2} >= 80 )) ) && +RDEPEND="${RDEPEND} + gtk? ( x11-libs/gtk+:2[${MULTILIB_USEDEP}] )" || +RDEPEND="${RDEPEND} + gtk? ( x11-libs/gtk+:1[${MULTILIB_USEDEP}] )" +DEPEND="${DEPEND} + virtual/libintl" + +: ${EAPI:=5} +[[ ${EAPI} -lt 4 ]] && die "EAPI=\"${EAPI}\" is not supported" + +EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install pkg_postinst + +# @FUNCTION: dir_src_prepare +# @DESCRIPTION: +# Internal wrapper to handle subdir phase {prepare,config,compilation...} +dir_src_command() +{ + local dirs="${1}" cmd="${2}" args="${3}" + (( $# < 2 )) && eeror "Invalid number of argument" && return 1 + + for dir in ${dirs}; do + pushd ${dir} || die + case "${cmd}" in + (eautoreconf) + [[ -d po ]] && echo "no" | glib-gettextize --force --copy + ${cmd} ${args} + ;; + (econf) + case ${dir} in + (backendnet|cnijnpr|lgmon2) + myeconfargs=( + "--enable-progpath=/usr/bin" + "--enable-libpath=/var/lib/cnijlib" + "${myeconfargs[@]}" + ) + ;; + (backend|cngpiji*|cnijbe|lgmon|pstocanonij) + myeconfargs=( + "--enable-progpath=/usr/bin" + "${myeconfargs[@]}" + ) + ;; + esac + ${cmd} ${args} ${myeconfargs[@]} + ;; + (*) + ${cmd} ${args} + ;; + esac + popd || die + done +} + +# @FUNCTION: ecnij_pkg_setup +# @DESCRIPTION: +# Default exported pkg_setup() function +ecnij_pkg_setup() +{ + debug-print-function ${FUNCNAME} "${@}" + + [[ "${LINGUAS}" ]] || export LINGUAS="en" + + use abi_x86_32 && use amd64 && multilib_toolchain_setup "x86" + + CNIJFILTER_SRC="libs pstocanonij" + PRINTER_SRC="cnijfilter" + use usb && CNIJFILTER_SRC+=" backend" + use_if_iuse net && CNIJFILTER_SRC+=" backendnet" + if use gtk; then + CNIJFILTER_SRC+=" cngpij" + if (( ${PV:0:1} == 4 )); then + PRINTER_SRC+=" lgmon2" + use net && PRINTER_SRC+=" cnijnpr" + else + PRINTER_SRC+=" lgmon cngpijmon" + use_if_iuse net && PRINTER_SRC+=" cngpijmon/cnijnpr" + fi + fi + use servicetools && + if (( ${PV:0:1} == 4 )); then + CNIJFILTER_SRC+=" cngpijmnt" + elif (( ${PV:0:1} == 3 )) && (( ${PV:2:2} >= 80 )); then + CNIJFILTER_SRC+=" cngpijmnt maintenance" + else + PRINTER_SRC+=" printui" + fi + + if (( ${PV:0:1} == 4 )); then + PRINTER_SRC="bscc2sts ${PRINTER_SRC}" + CNIJFILTER_SRC="cmdtocanonij ${CNIJFILTER_SRC} cnijbe" + fi +} + +# @FUNCTION: ecnij_src_unpack +# @DESCRIPTION: +# Default exported src_unpack() function +ecnij_src_unpack() +{ + debug-print-function ${FUNCNAME} "${@}" + + default + cd "${S}" +} + +# @FUNCTION: ecnij_src_prepare +# @DESCRIPTION: +# Setup environment and run elibtoolize; +# Default exported src_prepare() function supporting PATCHES +ecnij_src_prepare() +{ + debug-print-function ${FUNCNAME} "${@}" + + [[ "${PATCHES}" ]] && epatch "${PATCHES[@]}" + + epatch_user + + use backends && + dir_src_command "${CNIJFILTER_SRC}" "eautoreconf" + + local p pr prid + for (( p=0; p<${#PRINTER_ID[@]}; p++ )); do + pr=${PRINTER_MODEL[$p]} prid=${PRINTER_ID[$p]} + if use canon_printers_${pr}; then + mkdir ${pr} || die + for dir in ${prid} ${PRINTER_SRC}; do + cp -a ${dir} ${pr} || die + done + pushd ${pr} || die + [[ -d ../com ]] && ln -s {../,}com + dir_src_command "${PRINTER_SRC}" "eautoreconf" + popd + fi + done +} + +# @FUNCTION: ecnij_src_configure +# @DESCRIPTION: +# Deafult exported src_configure() function +ecnij_src_configure() +{ + debug-print-function ${FUNCNAME} "${@}" + + use backends && + dir_src_command "${CNIJFILTER_SRC}" "econf" + + local p pr prid + for (( p=0; p<${#PRINTER_ID[@]}; p++ )); do + pr=${PRINTER_MODEL[$p]} prid=${PRINTER_ID[$p]} + if use canon_printers_${pr}; then + pushd ${pr} || die + dir_src_command "${PRINTER_SRC}" \ + "econf" "--program-suffix=${pr}" + popd + fi + done +} + +# @FUNCTION: ecnij_src_compile +# @DESCRIPTION: +# The base exported src_compile() function +ecnij_src_compile() { + debug-print-function ${FUNCNAME} "${@}" + + local p pr prid + for (( p=0; p<${#PRINTER_ID[@]}; p++ )); do + pr=${PRINTER_MODEL[$p]} prid=${PRINTER_ID[$p]} + if use canon_printers_${pr}; then + pushd ${pr} || die + dir_src_command "${PRINTER_SRC}" "emake" + popd + fi + done + + use backends && + dir_src_command "${CNIJFILTER_SRC}" "emake" +} + +# @FUNCTION: ecnij_src_install +# @DESCRIPTION: +# Default exported src_install() function +ecnij_src_install() +{ + debug-print-function ${FUNCNAME} "${@}" + + local abi_libdir=/usr/$(get_libdir) p pr prid + local abi_lib=${abi_libdir#*lib} + local lib license lingua lng + local -a DOCS + + (( ${#MULTILIB_COMPAT[@]} == 1 )) && abi_lib= + + use backends && + dir_src_command "${CNIJFILTER_SRC}" "emake" "DESTDIR=\"${D}\" install" + + for (( p=0; p<${#PRINTER_ID[@]}; p++ )); do + pr=${PRINTER_MODEL[$p]} prid=${PRINTER_ID[$p]} + if use canon_printers_${pr}; then + pushd ${pr} || die + dir_src_command "${PRINTER_SRC}" "emake" "DESTDIR=\"${D}\" install" + popd + + dolib.so ${prid}/libs_bin${abi_lib}/*.so* + exeinto /var/lib/cnijlib + doexe ${prid}/database/* + insinto /usr/share/cups/model + doins ppd/canon${pr}.ppd + + use_if_iuse doc && + for lingua in ${LINGUAS}; do + lng=${lingua^^[a-z]} + [[ -f lproptions/lproptions-${pr}-${PV}${lng}.txt ]] && + DOCS+=(lproptions/lproptions-${pr}-${PV}${lng}.txt) + done + fi + done + + use backends && + if use_if_iuse net; then + pushd com/libs_bin${abi_lib} || die + for lib in lib*.so; do + [[ -L ${lib} ]] && continue || + rm ${lib} && ln -s ${lib}.[0-9]* ${lib} + done + popd + + dolib.so com/libs_bin${abi_lib}/*.so* + EXEOPTIONS="-m555 -glp -olp" + exeinto /var/lib/cnijlib + doexe com/ini/cnnet.ini + fi + + use backends && + if (( ${PV:0:1} == 4 )); then + mkdir -p "${ED}"/usr/share/${PN} || die + mv "${ED}"/usr/share/{cmdtocanonij,${PN}} || die + fi + + if use drivers || use_if_iuse net; then + for lingua in ${LINGUAS}; do + lng=${lingua^^[a-z]} + license=LICENSE-${PN}-${PV}${lng}.txt + [[ -e ${license%${lng:0:1}.txt}.txt ]] && + mv -f ${license%{lng:0:1}.txt} ${license} + [[ -e ${license} ]] && DOCS+=(${license}) + done + fi + + [[ "${DOCS[*]}" ]] && dodoc "${DOCS[@]}" +} + +# @FUNCTION: ecnij_pkg_postinst +# @DESCRIPTION: +# Default exported src_postinst() function +ecnij_pkg_postinst() +{ + debug-print-function ${FUNCNAME} "${@}" + + elog "To install a printer:" + elog " * First, restart CUPS: /etc/init.d/cupsd restart" + elog " * Go to http://127.0.0.1:631/ with your favorite browser" + elog " and then go to Printers/Add Printer" + elog "You can consult the following for any issue/bug:" + elog "https://forums.gentoo.org/viewtopic-p-3217721.html" + elog "https://bugs.gentoo.org/show_bug.cgi?id=258244" +} + +fi diff --git a/net-print/cnijfilter/cnijfilter-4.10.ebuild b/net-print/cnijfilter/cnijfilter-4.10.ebuild new file mode 100644 index 00000000..a2e5cbf2 --- /dev/null +++ b/net-print/cnijfilter/cnijfilter-4.10.ebuild @@ -0,0 +1,47 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: net-print/cnijfilter-drivers/cnijfilter-drivers-4.00.ebuild,v 2.0 2015/08/08 03:10:53 Exp $ + +EAPI=5 + +MULTILIB_COMPAT=( abi_x86_{32,64} ) + +PRINTER_MODEL=( "ix6700" "ix6800" "ip2800" "mx470" "mx530" "ip8700" "e560" "e400" ) +PRINTER_ID=( "431" "432" "433" "434" "435" "436" "437" "438" ) + +inherit ecnij + +DESCRIPTION="Canon InkJet Printer Driver for Linux (Pixus/Pixma-Series)" +HOMEPAGE="http://www.canon-europe.com/Support/" +SRC_URI="http://gdlp01.c-wss.com/gds/8/0100005858/01/${PN}-source-${PV}-1.tar.gz" + +IUSE="+doc +net" +SLOT="${PV:0:1}" + +DEPEND=">=net-print/cups-1.1.14[${MULTILIB_USEDEP}] + gtk? ( virtual/libusb:1 )" +RDEPEND="${RDEPEND}" + +RESTRICT="mirror" + +S="${WORKDIR}"/${PN}-source-${PV}-1 + +PATCHES=( + "${FILESDIR}"/${PN}-4.00-4-ppd.patch + "${FILESDIR}"/${PN}-3.70-1-libexec-cups.patch + "${FILESDIR}"/${PN}-3.70-1-libexec-backend.patch + "${FILESDIR}"/${PN}-4.00-1-libexec-backend.patch + "${FILESDIR}"/${PN}-4.00-1-libexec-cups.patch + "${FILESDIR}"/${PN}-4.00-5-abi_x86_32.patch + "${FILESDIR}"/${PN}-3.80-1-cups-1.6.patch +) + +src_prepare() { + local arc=64 + [[ x${ABI} == xx86 ]] && arc=32 + sed -e "s,cnijlgmon2_LDADD =,cnijlgmon2_LDADD = -L../../com/libs_bin${arc}," \ + -i lgmon2/src/Makefile.am || die + + ecnij_src_prepare +} + |