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