net-print/epson-inkjet-printer-escpr2 - 1.2.38 (escpr2)

Search

Package Information

Description:
Epson ESC/P-R 2 generic Inkjet Printer Driver
Homepage:
https://support.epson.net/linux/Printer/LSB_distribution_pages/en/escpr2.php
License:
EPSON-EULA LGPL-2.1

Ebuild Details

Version EAPI Keywords Slot
1.2.38 8 amd64 x86 arm arm64 0
View Raw Ebuild
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8
inherit autotools

DL_UUID="42a6470c-53bf-4993-abad-ba5b4a1d5d84"
MY_PV="${PV}-1"

DESCRIPTION="Epson ESC/P-R 2 generic Inkjet Printer Driver"
HOMEPAGE="https://support.epson.net/linux/Printer/LSB_distribution_pages/en/escpr2.php"

# NOTE:
# Epson has started restricting downloads by checking the User Agent string, which results in SRC_URI failing to download.
# Should Epson come to its senses, or if you manually download the source file to $DISTDIR,
#  1. PROPERTIES, SRC_SHA256 and function src_unpack() should be removed, and
#  2. SRC_URI should again be used i.e. uncommented.
# You are welcome to protest to Epson against the artificial download restriction, e-mail: linux-printer@epson.jp
PROPERTIES="live"
SRC_SHA256="655b9afc5ca7dcba939d67fac67edd0209fe94decd168b78c0503868fd94f7a1"

# To get the (link for the) .tar.gz sources, which are identical to the .rpm sources for x86, go to the Epson Download Center
# https://download-center.epson.com/search/?language=en. Search for any supported printer, e.g. "XP-970", select
# "Linux Deb(ARM32)", any country, and under "Source Code" click "Proceed to download".
#SRC_URI="https://download-center.epson.com/f/module/${DL_UUID}/${PN}-${MY_PV}.tar.gz"


LICENSE="EPSON-EULA LGPL-2.1"
SLOT="0"
KEYWORDS="amd64 x86 arm arm64"
IUSE="escprlib velvet-paper"

RESTRICT="mirror"
RDEPEND="net-print/cups
         !net-print/epson-inkjet-printer-escpr2-bin"
DEPEND="${RDEPEND}"

PATCHES=(
    # Shamelessly copied from:
    # https://aur.archlinux.org/packages/epson-inkjet-printer-escpr2/
    # Patch URL: https://aur.archlinux.org/cgit/aur.git/commit/?h=epson-inkjet-printer-escpr2&id=8fbca325d6d39fa3ffe001f90a432380bdeacc2f
    "${FILESDIR}/gcc-no-implicit-function-declaration-1.2.31.patch"
)

src_unpack() {
    # Epson has restricted downloads to certain User Agent strings, and sadly a download with wget fails with error 403 "forbidden".
    # This whole function was specifically designed to fake the User Agent string to ensure the download succeeds.
    #
    # NOTE #1: This will download the driver to the temporary directory $T, it will therefore NOT be in $DISTDIR (as specified in /etc/portage/make.conf)!
    # NOTE #2: The User Agent string "Mozilla/5.0 (KHTML, like Gecko)" is for example used by the Falkon browser.
    # NOTE #3: The hard-coded User Agent string in this ebuild must be adapted in case Epson blocks it once again.
    #

    local MY_A="${PN}-${MY_PV}.tar.gz"
    local MY_SRC_URI="https://download-center.epson.com/f/module/${DL_UUID}/${MY_A}"

    ewarn "Trying to download the sources from Epson by using a supported User Agent string."
    ewarn "You are welcome to protest to Epson against the artificial download restriction, e-mail: linux-printer@epson.jp"
    wget --user-agent="Mozilla/5.0 (KHTML, like Gecko)" -c "${MY_SRC_URI}" -P "${T}" || die "failed to fetch ${MY_SRC_URI}"

    # check sha256sum
    local sha256sum_current
    sha256sum_current="$(sha256sum "${T}/${MY_A}" | cut -d ' ' -f 1)"
    if [[ "${SRC_SHA256}" != "${sha256sum_current}" ]]; then
        eerror "sha256sum mismatch for ${MY_A}"
        eerror "  expected ${SRC_SHA256}"
        eerror "  found    ${sha256sum_current}"
        die "sha256sum mismatch"
    fi

    ewarn "Source file ${MY_A} was downloaded to the temporary build directory, not to the global \$DISTDIR."
    ewarn "In the default portage configuration it will be deleted as part of the cleanup upon success."
    unpack "${T}/${MY_A}"
}

src_prepare() {
    # the patch to re-enable Velvet Fine Art paper was provided by DerFetzer, see https://aur.archlinux.org/packages/epson-inkjet-printer-escpr2
    if use velvet-paper; then
        PATCHES+=( "${FILESDIR}/enable_velvet_fine_art_paper.patch" )
    fi
    default
    eautoreconf
}

src_configure() {
    econf --disable-shared

    # Makefile calls ls to generate a file list which is included in Makefile.am
    # Set the collation to C to avoid automake being called automatically
    unset LC_ALL
    export LC_COLLATE=C
}

src_install() {
    emake -C ppd DESTDIR="${D}" install
    if use escprlib ; then
        emake -C escprlib DESTDIR="${D}" install
    fi
    emake -C src DESTDIR="${D}" install
    einstalldocs
}

pkg_postinst() {
        elog "The online user manual is available at:"
        elog "    https://download.ebz.epson.net/man/linux/escpr2.html"
}

USE Flags

Dependencies

DEPEND

net-print/cups
         !net-print/epson-inkjet-printer-escpr2-bin

RDEPEND

net-print/cups
         !net-print/epson-inkjet-printer-escpr2-bin