I have a Epson ET-3850. The printer driver installed without any issues but I’m unable to get the Epson epsonscan2 package to install via yay.
I also installed Flatpak & installed it via flatpak. It installs but it will not find the scanner.
This is the code. What am I doing wrong?
Thanks,
[mike@mike-dsktp ~]$ yay epsonscan2
2 aur/epsonscan2-non-free-plugin 1.0.0.6-2 (+4 0.00) (Out-of-date: 2025-01-02)
Plugins for Epson Scan 2
1 aur/epsonscan2 6.7.70.0-1 (+12 0.82)
Epson scanner management utility
==> Packages to install (eg: 1 2 3, 1-3 or ^4)
==> 1 2
AUR Explicit (2): epsonscan2-non-free-plugin-1.0.0.6-2, epsonscan2-6.7.70.0-1
AUR Make Dependency (1): qt5-singlecoreapplication-2.6_20170914-1
Sync Make Dependency (3): rapidjson-1.1.0-6, boost-1.87.0-3, cmake-3.31.5-1
Sync Dependency (1): sane-1.3.1-2
:: PKGBUILD up to date, skipping download: epsonscan2-non-free-plugin
:: PKGBUILD up to date, skipping download: epsonscan2
:: PKGBUILD up to date, skipping download: qt5-singleapplication
3 epsonscan2-non-free-plugin (Build Files Exist)
2 epsonscan2 (Build Files Exist)
1 qt5-singleapplication (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> 1-3
:: Deleting (1/3): /home/mike/.cache/yay/epsonscan2-non-free-plugin
HEAD is now at 1c07cd0 Add support to armv7h architecture
:: Deleting (2/3): /home/mike/.cache/yay/epsonscan2
HEAD is now at 6e422c4 Update to version 6.7.70.0
:: Deleting (3/3): /home/mike/.cache/yay/qt5-singleapplication
HEAD is now at 3fb958f Create documentation packages
3 qt5-singleapplication (Build Files Exist)
2 epsonscan2-non-free-plugin (Build Files Exist)
1 epsonscan2 (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> 1-3
diff --git /home/mike/.cache/yay/qt5-singleapplication/PKGBUILD /home/mike/.cache/yay/qt5-singleapplication/PKGBUILD
new file mode 100644
index 0000000..fcedaab
--- /dev/null
+++ /home/mike/.cache/yay/qt5-singleapplication/PKGBUILD
@@ -0,0 +1,110 @@
+# Maintainer: Tércio Martins <echo dGVyY2lvd2VuZGVsQGdtYWlsLmNvbQo= | base64 -d>
+
+pkgname=('qt5-singleapplication' 'qt5-singlecoreapplication' 'qt5-singleapplication-doc' 'qt5-singlecoreapplication-doc')
+pkgver=2.6_20170914
+_commit=a8dda66d7738cde9042b87db27993f710ae3eeeb
+pkgrel=1
+arch=('i686' 'pentium4' 'x86_64')
+pkgdesc="Qt library to start applications only once per user"
+url="https://doc.qt.io/archives/qtextended4.4/qtopiadesktop/qtsingleapplication.html"
+license=('BSD')
+depends=('qt5-base')
+source=("https://github.com/qtproject/qt-solutions/archive/${_commit}.tar.gz"
+ 'qtsingleapplication-build-qtsinglecoreapplication.patch'
+ 'qtsingleapplication-qupzilla.patch'
+ 'qtsingleapplication.prf'
+ 'qtsinglecoreapplication.prf')
+sha512sums=('SKIP'
+ 'a459cc42e98cd6b1e58d464fb28861ed4453b9d2f96a11cd8ac68e06c74083ef05452aabe08c4625229aa19de865522cec3cb994504e9eff796ee1033bc38ad2'
+ 'd8b2b27380a407b84a461fa93ca68751f503a495200e2204b576e6f27b9768ab6e77a1a47c63c90fa5803a9a055b7c0546f8ae4aa9f0fa5cc5969af3e889d4f2'
+ '9495604598221ed94a0d5be486468bc0fc936bbe8a22d3c7c23738d48e67a5516bd496e24b7678c1a05ed7b8e3cd0578d6272629e23cd74c4a360f20cf3b663b'
+ '580fbaf9c7e0c9813e0aeb2c62522aa1c2baccbf384b3ca780441313612b9be0e0df220cd8b186ec7a0b5d30aaed8249f7c9ebb93ef8e0ec46793d4eaf2a9bf7')
+
+prepare() {
+ cd "qt-solutions-${_commit}"
+ patch --forward --strip=1 --input="${srcdir}/qtsingleapplication-build-qtsinglecoreapplication.patch"
+ patch --forward --strip=1 --input="${srcdir}/qtsingleapplication-qupzilla.patch"
+
+ # Header needed for Qt5.5+
+ cd qtsingleapplication/src
+ sed -i -r 's,.include,\0 <QtCore/QDataStream>\n\0,' qtlocalpeer.h
+}
+
+build() {
+ cd qt-solutions-${_commit}/qtsingleapplication
+ ./configure -library
+ qmake
+ make
+
+ sed -n '/Copyright/,/END_LICENSE/p' src/qtsingleapplication.cpp > LICENSE
+ sed -i 's/\*\*//g' LICENSE
+ sed -i 's/^\ //g' LICENSE
+}
+
+package_qt5-singleapplication() {
+ cd qt-solutions-${_commit}/qtsingleapplication
+
+ mkdir -p "${pkgdir}/usr/lib"
+ cp -d ./lib/libQt5Solutions_SingleApplication-head.so* \
+ "${pkgdir}/usr/lib"
+
+ mkdir -p "${pkgdir}/usr/include/qt/QtSolutions"
+ cp -p ./src/qtsingleapplication.h \
+ "${pkgdir}/usr/include"
+
+ echo "#include \"qtsingleapplication.h\"" > \
+ "${pkgdir}/usr/include/qt/QtSolutions/QtSingleApplication"
+
+ mkdir -p "${pkgdir}/usr/lib/qt5/mkspecs/features"
+ cp "${srcdir}/qtsingleapplication.prf" "${pkgdir}/usr/lib/qt5/mkspecs/features"
+
+ mkdir -p "${pkgdir}/usr/share/licenses/${pkgname}"
+ cp -p LICENSE "${pkgdir}/usr/share/licenses/${pkgname}"
+}
+
+package_qt5-singlecoreapplication() {
+ pkgdesc="Qt library to start applications only once per user, for non-GUI apps"
+
+ cd qt-solutions-${_commit}/qtsingleapplication
+
+ mkdir -p "${pkgdir}/usr/lib"
+ cp -d ./lib/libQt5Solutions_SingleCoreApplication-head.so* \
+ "${pkgdir}/usr/lib"
+
+ mkdir -p "${pkgdir}/usr/include/qt/QtSolutions"
+ cp -p ./src/qtsinglecoreapplication.h \
+ "${pkgdir}/usr/include/qt/QtSolutions"
+
+ echo "#include \"qtsinglecoreapplication.h\"" > \
+ "${pkgdir}/usr/include/qt/QtSolutions/QtSingleCoreApplication"
+
+ mkdir -p "${pkgdir}/usr/lib/qt5/mkspecs/features"
+ cp "${srcdir}/qtsinglecoreapplication.prf" "${pkgdir}/usr/lib/qt5/mkspecs/features"
+
+ mkdir -p "${pkgdir}/usr/share/licenses/${pkgname}"
+ cp -p LICENSE "${pkgdir}/usr/share/licenses/${pkgname}"
+}
+
+package_qt5-singleapplication-doc() {
+ pkgdesc="Qt library to start applications only once per user (Documentation)"
+
+ cd qt-solutions-${_commit}/qtsingleapplication
+
+ mkdir -p "${pkgdir}/usr/share/doc/${pkgname}"
+ cp -rp ./doc/html ./examples "${pkgdir}/usr/share/doc/${pkgname}"
+
+ mkdir -p "${pkgdir}/usr/share/licenses/${pkgname}"
+ cp -p LICENSE "${pkgdir}/usr/share/licenses/${pkgname}"
+}
+
+package_qt5-singlecoreapplication-doc() {
+ pkgdesc="Qt library to start applications only once per user, for non-GUI apps (Documentation)"
+
+ cd qt-solutions-${_commit}/qtsingleapplication
+
+ mkdir -p "${pkgdir}/usr/share/doc/${pkgname}"
+ cp -rp ./doc/html ./examples "${pkgdir}/usr/share/doc/${pkgname}"
+
+ mkdir -p "${pkgdir}/usr/share/licenses/${pkgname}"
+ cp -p LICENSE "${pkgdir}/usr/share/licenses/${pkgname}"
+}
diff --git /home/mike/.cache/yay/qt5-singleapplication/qtsingleapplication-build-qtsinglecoreapplication.patch /home/mike/.cache/yay/qt5-singleapplication/qtsingleapplication-build-qtsinglecoreapplication.patch
new file mode 100644
index 0000000..1a00677
--- /dev/null
+++ /home/mike/.cache/yay/qt5-singleapplication/qtsingleapplication-build-qtsinglecoreapplication.patch
@@ -0,0 +1,79 @@
+# Proposed upstream in https://codereview.qt-project.org/#/c/92416/
+
+diff -rupN qt-solutions.orig/qtsingleapplication/buildlib/buildcorelib.pro qt-solutions.new/qtsingleapplication/buildlib/buildcorelib.pro
+--- qt-solutions.orig/qtsingleapplication/buildlib/buildcorelib.pro 1969-12-31 21:00:00.000000000 -0300
++++ qt-solutions.new/qtsingleapplication/buildlib/buildcorelib.pro 2020-11-19 11:21:45.644066793 -0300
+@@ -0,0 +1,13 @@
++TEMPLATE=lib
++CONFIG += qt dll qtsinglecoreapplication-buildlib
++mac:CONFIG += absolute_library_soname
++win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release build_all
++include(../src/qtsinglecoreapplication.pri)
++TARGET = $$QTSINGLECOREAPPLICATION_LIBNAME
++DESTDIR = $$QTSINGLEAPPLICATION_LIBDIR
++win32 {
++ DLLDESTDIR = $$[QT_INSTALL_BINS]
++ QMAKE_DISTCLEAN += $$[QT_INSTALL_BINS]\\$${QTSINGLECOREAPPLICATION_LIBNAME}.dll
++}
++target.path = $$DESTDIR
++INSTALLS += target
+diff -rupN qt-solutions.orig/qtsingleapplication/common.pri qt-solutions.new/qtsingleapplication/common.pri
+--- qt-solutions.orig/qtsingleapplication/common.pri 2017-09-14 11:21:57.000000000 -0300
++++ qt-solutions.new/qtsingleapplication/common.pri 2020-11-19 11:21:45.644066793 -0300
+@@ -5,10 +5,12 @@ greaterThan(QT_MAJOR_VERSION, 5)|\
+ if(equals(QT_MAJOR_VERSION, 5):greaterThan(QT_MINOR_VERSION, 4))|\
+ if(equals(QT_MAJOR_VERSION, 5):equals(QT_MINOR_VERSION, 4):greaterThan(QT_PATCH_VERSION, 1)) {
+ QTSINGLEAPPLICATION_LIBNAME = $$qt5LibraryTarget(QtSolutions_SingleApplication-head)
++ QTSINGLECOREAPPLICATION_LIBNAME = $$qt5LibraryTarget(QtSolutions_SingleCoreApplication-head)
+ } else {
+ QTSINGLEAPPLICATION_LIBNAME = $$qtLibraryTarget(QtSolutions_SingleApplication-head)
++ QTSINGLECOREAPPLICATION_LIBNAME = $$qtLibraryTarget(QtSolutions_SingleCoreApplication-head)
+ }
+ TEMPLATE -= fakelib
+
+ QTSINGLEAPPLICATION_LIBDIR = $$PWD/lib
+-unix:qtsingleapplication-uselib:!qtsingleapplication-buildlib:QMAKE_RPATHDIR += $$QTSINGLEAPPLICATION_LIBDIR
++QTSINGLECOREAPPLICATION_LIBDIR = $$PWD/lib
+diff -rupN qt-solutions.orig/qtsingleapplication/qtsingleapplication.pro qt-solutions.new/qtsingleapplication/qtsingleapplication.pro
+--- qt-solutions.orig/qtsingleapplication/qtsingleapplication.pro 2017-09-14 11:21:57.000000000 -0300
++++ qt-solutions.new/qtsingleapplication/qtsingleapplication.pro 2020-11-19 11:21:45.644066793 -0300
+@@ -1,5 +1,4 @@
+ TEMPLATE=subdirs
+ CONFIG += ordered
+ include(common.pri)
+-qtsingleapplication-uselib:SUBDIRS=buildlib
+-SUBDIRS+=examples
++qtsingleapplication-uselib:SUBDIRS=buildlib/buildlib.pro buildlib/buildcorelib.pro
+diff -rupN qt-solutions.orig/qtsingleapplication/QtSingleCoreApplication qt-solutions.new/qtsingleapplication/QtSingleCoreApplication
+--- qt-solutions.orig/qtsingleapplication/QtSingleCoreApplication 1969-12-31 21:00:00.000000000 -0300
++++ qt-solutions.new/qtsingleapplication/QtSingleCoreApplication 2020-11-19 11:21:45.644066793 -0300
+@@ -0,0 +1 @@
++#include "qtsinglecoreapplication.h"
+diff -rupN qt-solutions.orig/qtsingleapplication/src/qtsinglecoreapplication.pri qt-solutions.new/qtsingleapplication/src/qtsinglecoreapplication.pri
+--- qt-solutions.orig/qtsingleapplication/src/qtsinglecoreapplication.pri 2017-09-14 11:21:57.000000000 -0300
++++ qt-solutions.new/qtsingleapplication/src/qtsinglecoreapplication.pri 2020-11-19 12:06:03.841115300 -0300
+@@ -1,10 +1,18 @@
+-INCLUDEPATH += $$PWD
+-DEPENDPATH += $$PWD
+-HEADERS += $$PWD/qtsinglecoreapplication.h $$PWD/qtlocalpeer.h
+-SOURCES += $$PWD/qtsinglecoreapplication.cpp $$PWD/qtlocalpeer.cpp
++include(../common.pri)
++INCLUDEPATH += $$PWD
++DEPENDPATH += $$PWD
+
+ QT *= network
++QT -= gui
+
+-win32:contains(TEMPLATE, lib):contains(CONFIG, shared) {
+- DEFINES += QT_QTSINGLECOREAPPLICATION_EXPORT=__declspec(dllexport)
++qtsinglecoreapplication-uselib:!qtsinglecoreapplication-buildlib {
++ LIBS += -L$$QTSINGLECOREAPPLICATION_LIBDIR -l$$QTSINGLECOREAPPLICATION_LIBNAME
++} else {
++ SOURCES += $$PWD/qtsinglecoreapplication.cpp $$PWD/qtlocalpeer.cpp
++ HEADERS += $$PWD/qtsinglecoreapplication.h $$PWD/qtlocalpeer.h
++}
++
++win32 {
++ contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTSINGLECOREAPPLICATION_EXPORT
++ else:qtsinglecoreapplication-uselib:DEFINES += QT_QTSINGLECOREAPPLICATION_IMPORT
+ }
diff --git /home/mike/.cache/yay/qt5-singleapplication/qtsingleapplication-qupzilla.patch /home/mike/.cache/yay/qt5-singleapplication/qtsingleapplication-qupzilla.patch
new file mode 100644
index 0000000..974b69f
--- /dev/null
+++ /home/mike/.cache/yay/qt5-singleapplication/qtsingleapplication-qupzilla.patch
@@ -0,0 +1,132 @@
+# Features for unbundling in Qupzilla, https://github.com/QupZilla/qupzilla/issues/1503
+
+diff -rup qt-solutions.orig/qtsingleapplication/src/qtlocalpeer.cpp qt-solutions.new/qtsingleapplication/src/qtlocalpeer.cpp
+--- qt-solutions.orig/qtsingleapplication/src/qtlocalpeer.cpp 2017-09-14 11:21:57.000000000 -0300
++++ qt-solutions.new/qtsingleapplication/src/qtlocalpeer.cpp 2020-11-19 13:32:40.561575205 -0300
+@@ -169,6 +169,10 @@ bool QtLocalPeer::sendMessage(const QStr
+ return res;
+ }
+
++void QtLocalPeer::removeLockedFile()
++{
++ lockFile.remove();
++}
+
+ void QtLocalPeer::receiveConnection()
+ {
+diff -rup qt-solutions.orig/qtsingleapplication/src/qtlocalpeer.h qt-solutions.new/qtsingleapplication/src/qtlocalpeer.h
+--- qt-solutions.orig/qtsingleapplication/src/qtlocalpeer.h 2017-09-14 11:21:57.000000000 -0300
++++ qt-solutions.new/qtsingleapplication/src/qtlocalpeer.h 2020-11-19 13:33:15.771796746 -0300
+@@ -57,6 +57,7 @@ public:
+ bool sendMessage(const QString &message, int timeout);
+ QString applicationId() const
+ { return id; }
++ void removeLockedFile();
+
+ Q_SIGNALS:
+ void messageReceived(const QString &message);
+diff -rup qt-solutions.orig/qtsingleapplication/src/qtsingleapplication.cpp qt-solutions.new/qtsingleapplication/src/qtsingleapplication.cpp
+--- qt-solutions.orig/qtsingleapplication/src/qtsingleapplication.cpp 2017-09-14 11:21:57.000000000 -0300
++++ qt-solutions.new/qtsingleapplication/src/qtsingleapplication.cpp 2020-11-19 13:36:09.492889864 -0300
+@@ -153,6 +153,8 @@ void QtSingleApplication::sysInit(const
+
+ QtSingleApplication::QtSingleApplication(int &argc, char **argv, bool GUIenabled)
+ : QApplication(argc, argv, GUIenabled)
++ , peer(0)
++ , actWin(0)
+ {
+ sysInit();
+ }
+@@ -166,6 +168,8 @@ QtSingleApplication::QtSingleApplication
+
+ QtSingleApplication::QtSingleApplication(const QString &appId, int &argc, char **argv)
+ : QApplication(argc, argv)
++ , peer(0)
++ , actWin(0)
+ {
+ sysInit(appId);
+ }
+@@ -239,9 +243,13 @@ QtSingleApplication::QtSingleApplication
+
+ bool QtSingleApplication::isRunning()
+ {
+- return peer->isClient();
++ return (peer && peer->isClient());
+ }
+
++void QtSingleApplication::setAppId(const QString &id)
++{
++ sysInit(id);
++}
+
+ /*!
+ Tries to send the text \a message to the currently running
+@@ -258,7 +266,7 @@ bool QtSingleApplication::isRunning()
+ */
+ bool QtSingleApplication::sendMessage(const QString &message, int timeout)
+ {
+- return peer->sendMessage(message, timeout);
++ return (peer && peer->sendMessage(message, timeout));
+ }
+
+
+@@ -268,7 +276,7 @@ bool QtSingleApplication::sendMessage(co
+ */
+ QString QtSingleApplication::id() const
+ {
+- return peer->applicationId();
++ return (peer ? peer->applicationId() : QString());
+ }
+
+
+@@ -287,6 +295,10 @@ QString QtSingleApplication::id() const
+ void QtSingleApplication::setActivationWindow(QWidget* aw, bool activateOnMessage)
+ {
+ actWin = aw;
++ if (!peer) {
++ return;
++ }
++
+ if (activateOnMessage)
+ connect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow()));
+ else
+@@ -305,6 +317,11 @@ QWidget* QtSingleApplication::activation
+ return actWin;
+ }
+
++void QtSingleApplication::removeLockFile()
++{
++ peer->removeLockedFile();
++}
++
+
+ /*!
+ De-minimizes, raises, and activates this application's activation window.
+@@ -326,6 +343,7 @@ void QtSingleApplication::activateWindow
+ actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized);
+ actWin->raise();
+ actWin->activateWindow();
++ actWin->setFocus();
+ }
+ }
+
+diff -rup qt-solutions.orig/qtsingleapplication/src/qtsingleapplication.h qt-solutions.new/qtsingleapplication/src/qtsingleapplication.h
+--- qt-solutions.orig/qtsingleapplication/src/qtsingleapplication.h 2017-09-14 11:21:57.000000000 -0300
++++ qt-solutions.new/qtsingleapplication/src/qtsingleapplication.h 2020-11-19 13:23:40.558177282 -0300
+@@ -78,6 +78,7 @@ public:
+ #endif // QT_VERSION < 0x050000
+
+ bool isRunning();
++ void setAppId(const QString &id);
+ QString id() const;
+
+ void setActivationWindow(QWidget* aw, bool activateOnMessage = true);
+@@ -87,6 +88,8 @@ public:
+ void initialize(bool dummy = true)
+ { isRunning(); Q_UNUSED(dummy) }
+
++ void removeLockFile();
++
+ public Q_SLOTS:
+ bool sendMessage(const QString &message, int timeout = 5000);
+ void activateWindow();
diff --git /home/mike/.cache/yay/qt5-singleapplication/qtsingleapplication.prf /home/mike/.cache/yay/qt5-singleapplication/qtsingleapplication.prf
new file mode 100644
index 0000000..b1166a0
--- /dev/null
+++ /home/mike/.cache/yay/qt5-singleapplication/qtsingleapplication.prf
@@ -0,0 +1,5 @@
+INCLUDEPATH *= $$[QT_INSTALL_HEADERS]/QtSolutions
+LIBS *= -lQt5olutions_SingleApplication-2.6
+QT *= widgets
+QT *= network
+CONFIG *= qtlockedfile
diff --git /home/mike/.cache/yay/qt5-singleapplication/qtsinglecoreapplication.prf /home/mike/.cache/yay/qt5-singleapplication/qtsinglecoreapplication.prf
new file mode 100644
index 0000000..c2f5e7f
--- /dev/null
+++ /home/mike/.cache/yay/qt5-singleapplication/qtsinglecoreapplication.prf
@@ -0,0 +1,3 @@
+INCLUDEPATH *= $$[QT_INSTALL_HEADERS]/QtSolutions
+LIBS *= -lQt5olutions_SingleCoreApplication-2.6
+QT *= network
(END)