# 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"
# 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 arm arm64 x86"
IUSE="escprlib velvet-paper"

RESTRICT="fetch"
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"
)

pkg_nofetch() {
    local UA_STRING="Mozilla/5.0 (KHTML, like Gecko)"
    einfo
    einfo "Epson restricted download by blocking User Agent strings like the one wget uses."
    einfo "This means you have to fetch the source file manually."
    einfo
    einfo "Please either visit the Epson Download Center to get the source file using your Internet browser:"
    einfo "  1. Visit https://download-center.epson.com/search/?language=en"
    einfo "  2. Search for your or any other supported printer, e.g. \"XP-970\"."
    einfo "  3. Select \"Linux Deb(ARM 32Bit)\" and any country."
    einfo "  4. Click \"Search\", a new page with the results will be loaded."
    einfo "  5. Under \"Source Code\" there should be \"Epson Inkjet Printer Driver 2 (ESC/P-R) for Linux\"."
    einfo "     Simply click \"Proceed to download\" on the right."
    einfo
    einfo "Alternatively you may specify a browser User Agent string for the download:"
    einfo "    wget --user-agent=\"${UA_STRING}\" \\"
    einfo "    ${SRC_URI}"
    einfo
    einfo "Place the source file into your DISTDIR directory."
    einfo
}

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