diff --git a/x11-packages/arqiver/build.sh b/x11-packages/arqiver/build.sh new file mode 100644 index 000000000..f6a3373b1 --- /dev/null +++ b/x11-packages/arqiver/build.sh @@ -0,0 +1,10 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/tsujan/Arqiver +TERMUX_PKG_DESCRIPTION="A simple Qt archiver manager based on libarchive" +TERMUX_PKG_LICENSE="GPL-3.0" +TERMUX_PKG_MAINTAINER="Yisus7u7" +TERMUX_PKG_VERSION=0.8.0 +TERMUX_PKG_REVISION=1 +TERMUX_PKG_SRCURL=https://github.com/tsujan/Arqiver/releases/download/V${TERMUX_PKG_VERSION}/Arqiver-${TERMUX_PKG_VERSION}.tar.xz +TERMUX_PKG_SHA256=96e1f02236fdf38bad0221aa94b732313d93f2c9be2f062085a56cfc23d61897 +TERMUX_PKG_DEPENDS="hicolor-icon-theme, qt5-qtbase, qt5-qtsvg, qt5-qtx11extras, libarchive, bsdtar, zip" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools, qt5-qttools-cross-tools" diff --git a/x11-packages/audacious-plugins/build.sh b/x11-packages/audacious-plugins/build.sh new file mode 100644 index 000000000..aba4818db --- /dev/null +++ b/x11-packages/audacious-plugins/build.sh @@ -0,0 +1,12 @@ +TERMUX_PKG_HOMEPAGE=https://audacious-media-player.org +TERMUX_PKG_DESCRIPTION="Plugins for Audacious" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=4.1 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL=https://distfiles.audacious-media-player.org/audacious-plugins-${TERMUX_PKG_VERSION}.tar.bz2 +TERMUX_PKG_SHA256=dad6fc625055349d589e36e8e5c8ae7dfafcddfe96894806509696d82bb61d4c +TERMUX_PKG_DEPENDS="audacious, qt5-qtbase, qt5-qtmultimedia, qt5-qtx11extras, zlib, libflac, libcue, libcurl, mpg123, libogg, libsndfile, libsoxr, libvorbis, libxrender, libxcomposite, ffmpeg" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--disable-gtk --disable-wavpack --disable-qtglspectrum --disable-neon" diff --git a/x11-packages/audacious/build.sh b/x11-packages/audacious/build.sh new file mode 100644 index 000000000..d2d7cb387 --- /dev/null +++ b/x11-packages/audacious/build.sh @@ -0,0 +1,16 @@ +TERMUX_PKG_HOMEPAGE=https://audacious-media-player.org +TERMUX_PKG_DESCRIPTION="An advanced audio player" +TERMUX_PKG_LICENSE="BSD" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=4.1 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL=https://distfiles.audacious-media-player.org/audacious-${TERMUX_PKG_VERSION}.tar.bz2 +TERMUX_PKG_SHA256=1f58858f9789e867c513b5272987f13bdfb09332b03c2814ad4c6e29f525e35c +TERMUX_PKG_DEPENDS="qt5-qtbase, dbus-glib" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_RECOMMENDS="audacious-plugins" +# Audacious out-of-source build doesn't seem to work +TERMUX_PKG_BUILD_IN_SRC=true +# Audacious has switched to Qt toolkit and it's the default GUI option now +# Disable GTK to reduce the size and dependencies +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--enable-qt --disable-gtk" diff --git a/x11-packages/debpac/build.sh b/x11-packages/debpac/build.sh new file mode 100644 index 000000000..c7effa54f --- /dev/null +++ b/x11-packages/debpac/build.sh @@ -0,0 +1,22 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/ThiBsc/debpac +TERMUX_PKG_DESCRIPTION="A Debian package creator assistant" +TERMUX_PKG_LICENSE="GPL-3.0" +TERMUX_PKG_MAINTAINER="Yisus7u7 " +TERMUX_PKG_VERSION=1.7 +TERMUX_PKG_REVISION=1 +TERMUX_PKG_SRCURL="https://github.com/ThiBsc/debpac/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz" +TERMUX_PKG_SHA256=402f9dfcc739fb64666832f1a0d5b47295c900a22232150af4cc069b420515c9 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtsvg" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools, qt5-qttools-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" \ + PREFIX="${TERMUX_PREFIX}" +} + +termux_step_make_install () { + cd ${TERMUX_PKG_SRCDIR} + install -Dm700 -t ${TERMUX_PREFIX}/bin ./debpac +} diff --git a/x11-packages/debpac/debpac.pro.patch b/x11-packages/debpac/debpac.pro.patch new file mode 100644 index 000000000..1d2039e8a --- /dev/null +++ b/x11-packages/debpac/debpac.pro.patch @@ -0,0 +1,13 @@ +diff --git a/debpac.pro b/debpac.pro +index 96c2353..dac466c 100644 +--- a/debpac.pro ++++ b/debpac.pro +@@ -5,7 +5,7 @@ + #------------------------------------------------- + + QT += core gui +- ++DEFINES += USE_TERMUX_PATH + greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + + QMAKE_CXXFLAGS += -std=c++11 diff --git a/x11-packages/feathernotes/build.sh b/x11-packages/feathernotes/build.sh new file mode 100644 index 000000000..9cd08e0f4 --- /dev/null +++ b/x11-packages/feathernotes/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/tsujan/FeatherNotes +TERMUX_PKG_DESCRIPTION="Lightweight Qt Notes-Manager for Linux" +TERMUX_PKG_LICENSE="GPL-3.0" +TERMUX_PKG_MAINTAINER="Yisus7u7" +TERMUX_PKG_VERSION=0.9.0 +TERMUX_PKG_REVISION=1 +_COMMIT=087f522d62deed421b40d8fe96d66ecef0f38bf3 +TERMUX_PKG_SRCURL=https://github.com/tsujan/FeatherNotes/archive/${_COMMIT}.zip +TERMUX_PKG_SHA256=cca635e42322b66e539908be36e12b760d6739c9ee5bef4136c10518068ae7b0 +TERMUX_PKG_DEPENDS="hicolor-icon-theme, qt5-qtbase, qt5-qtsvg, qt5-qtx11extras, hunspell, libx11" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools, qt5-qttools-cross-tools" diff --git a/x11-packages/featherpad/build.sh b/x11-packages/featherpad/build.sh new file mode 100644 index 000000000..4802b843a --- /dev/null +++ b/x11-packages/featherpad/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/tsujan/FeatherPad +TERMUX_PKG_DESCRIPTION="Lightweight Qt Plain-Text Editor" +TERMUX_PKG_LICENSE="GPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.18.0 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL=https://github.com/tsujan/FeatherPad/releases/download/V${TERMUX_PKG_VERSION}/FeatherPad-${TERMUX_PKG_VERSION}.tar.xz +TERMUX_PKG_SHA256=f95c5494451890eefa7177022b065648b0633d5096715ae7f47c2cc7d784aec8 +TERMUX_PKG_DEPENDS="hicolor-icon-theme, qt5-qtbase, qt5-qtsvg, qt5-qtx11extras, hunspell" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + diff --git a/x11-packages/karchive/build.sh b/x11-packages/karchive/build.sh new file mode 100644 index 000000000..c4508d1ce --- /dev/null +++ b/x11-packages/karchive/build.sh @@ -0,0 +1,10 @@ +TERMUX_PKG_HOMEPAGE=https://www.kde.org/ +TERMUX_PKG_DESCRIPTION="Qt 5 addon providing access to numerous types of archives (KDE)" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.71.0 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="http://download.kde.org/stable/frameworks/${TERMUX_PKG_VERSION%.*}/karchive-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=cc81e856365dec2bcf3ec78aa01d42347ca390a2311ea12050f309dfbdb09624 +TERMUX_PKG_DEPENDS="qt5-qtbase, zlib, liblzma, libbz2" +TERMUX_PKG_BUILD_DEPENDS="extra-cmake-modules, qt5-qtbase-cross-tools" diff --git a/x11-packages/keepassxc/build.sh b/x11-packages/keepassxc/build.sh new file mode 100644 index 000000000..7e991551a --- /dev/null +++ b/x11-packages/keepassxc/build.sh @@ -0,0 +1,15 @@ +TERMUX_PKG_HOMEPAGE=https://keepassxc.org/ +TERMUX_PKG_DESCRIPTION="Cross-platform community-driven port of Keepass password manager" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=2.6.6 +TERMUX_PKG_REVISION=1 +TERMUX_PKG_SRCURL="https://github.com/keepassxreboot/keepassxc/releases/download/${TERMUX_PKG_VERSION}/keepassxc-${TERMUX_PKG_VERSION}-src.tar.xz" +TERMUX_PKG_SHA256=3603b11ac39b289c47fac77fa150e05fd64b393d8cfdf5732dc3ef106650a4e2 +TERMUX_PKG_DEPENDS="argon2, libcurl, libgcrypt, libqrencode, libsodium, libxtst, qt5-qtbase, qt5-qtsvg, qt5-qtx11extras" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools, qt5-qttools-cross-tools" +TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" +-DWITH_XC_NETWORKING=ON +-DWITH_XC_SSHAGENT=ON +-DWITH_XC_UPDATECHECK=OFF +" diff --git a/x11-packages/keepassxc/src-core-FileWatcher.cpp.patch b/x11-packages/keepassxc/src-core-FileWatcher.cpp.patch new file mode 100644 index 000000000..f086a5064 --- /dev/null +++ b/x11-packages/keepassxc/src-core-FileWatcher.cpp.patch @@ -0,0 +1,14 @@ +diff -uNr keepassxc-2.6.6/src/core/FileWatcher.cpp keepassxc-2.6.6.mod/src/core/FileWatcher.cpp +--- keepassxc-2.6.6/src/core/FileWatcher.cpp 2021-06-12 05:13:52.000000000 +0300 ++++ keepassxc-2.6.6.mod/src/core/FileWatcher.cpp 2021-07-25 20:21:11.853398555 +0300 +@@ -47,8 +47,9 @@ + #if defined(Q_OS_LINUX) + struct statfs statfsBuf; + bool forcePolling = false; ++#ifndef NFS_SUPER_MAGIC + const auto NFS_SUPER_MAGIC = 0x6969; +- ++#endif + if (!statfs(filePath.toLocal8Bit().constData(), &statfsBuf)) { + forcePolling = (statfsBuf.f_type == NFS_SUPER_MAGIC); + } else { diff --git a/x11-packages/keepassxc/src-gui-entry-EntryView.cpp.patch b/x11-packages/keepassxc/src-gui-entry-EntryView.cpp.patch new file mode 100644 index 000000000..9d21aa0d6 --- /dev/null +++ b/x11-packages/keepassxc/src-gui-entry-EntryView.cpp.patch @@ -0,0 +1,31 @@ +diff -uNr keepassxc-2.6.6/src/gui/entry/EntryView.cpp keepassxc-2.6.6.mod/src/gui/entry/EntryView.cpp +--- keepassxc-2.6.6/src/gui/entry/EntryView.cpp 2021-06-12 05:13:52.000000000 +0300 ++++ keepassxc-2.6.6.mod/src/gui/entry/EntryView.cpp 2021-07-25 20:39:53.910034225 +0300 +@@ -18,7 +18,7 @@ + + #include "EntryView.h" + +-#include ++#include + #include + #include + #include +@@ -150,18 +150,15 @@ + + int last = m_model->rowCount() - 1; + if (last > 0) { +- QAccessibleEvent accessibleEvent(this, QAccessible::PageChanged); + if (event->key() == Qt::Key_Up && currentIndex().row() == 0) { + QModelIndex index = m_sortModel->mapToSource(m_sortModel->index(last, 0)); + setCurrentEntry(m_model->entryFromIndex(index)); +- QAccessible::updateAccessibility(&accessibleEvent); + return; + } + + if (event->key() == Qt::Key_Down && currentIndex().row() == last) { + QModelIndex index = m_sortModel->mapToSource(m_sortModel->index(0, 0)); + setCurrentEntry(m_model->entryFromIndex(index)); +- QAccessible::updateAccessibility(&accessibleEvent); + return; + } + } diff --git a/x11-packages/ki18n/build.sh b/x11-packages/ki18n/build.sh new file mode 100644 index 000000000..c9b2440f7 --- /dev/null +++ b/x11-packages/ki18n/build.sh @@ -0,0 +1,10 @@ +TERMUX_PKG_HOMEPAGE=https://www.kde.org/ +TERMUX_PKG_DESCRIPTION="KDE Gettext-based UI text internationalization" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.71.0 +TERMUX_PKG_REVISION=6 +TERMUX_PKG_SRCURL="http://download.kde.org/stable/frameworks/${TERMUX_PKG_VERSION%.*}/ki18n-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=f2fc8c40c10576da8b74070b7dc8e752fdd04204cb2bfe522f37a0458fbaf881 +TERMUX_PKG_DEPENDS="qt5-qtbase, gettext" +TERMUX_PKG_BUILD_DEPENDS="extra-cmake-modules, python, qt5-qtbase-cross-tools, qt5-qtdeclarative" diff --git a/x11-packages/ki18n/src-CMakeLists.txt.patch b/x11-packages/ki18n/src-CMakeLists.txt.patch new file mode 100644 index 000000000..95c90aadb --- /dev/null +++ b/x11-packages/ki18n/src-CMakeLists.txt.patch @@ -0,0 +1,11 @@ +--- ../src-CMakeLists.txt.orig 2021-10-15 17:34:25.460656823 +0000 ++++ ./src/CMakeLists.txt 2021-10-15 17:34:39.275431640 +0000 +@@ -60,8 +60,6 @@ + REQUIRED_HEADERS KI18n_HEADERS + ) + +-find_package(PythonModuleGeneration) +- + if (PythonModuleGeneration_FOUND) + ecm_generate_python_binding( + TARGET KF5::I18n diff --git a/x11-packages/kirigami2/0001-Revert-Watch-for-language-change-events-and-forward-.patch b/x11-packages/kirigami2/0001-Revert-Watch-for-language-change-events-and-forward-.patch new file mode 100644 index 000000000..0aefa5528 --- /dev/null +++ b/x11-packages/kirigami2/0001-Revert-Watch-for-language-change-events-and-forward-.patch @@ -0,0 +1,92 @@ +From 9ea169167bb792b5128e707dbb76e4f659dc22e2 Mon Sep 17 00:00:00 2001 +From: Wolfgang Bauer +Date: Tue, 9 Jun 2020 08:27:30 +0200 +Subject: [PATCH] Revert "Watch for language change events, and forward those + to the QML engine" + +This reverts commit 9b7cae898ed7d9b58e65035b8216ec6ff78bfa17. +It causes several KCMs to crash, with Qt 5.12 at least. + +References: boo#1167690, kde#419008 +--- + src/kirigamiplugin.cpp | 33 --------------------------------- + src/kirigamiplugin.h | 5 ----- + 2 files changed, 38 deletions(-) + +diff --git a/src/kirigamiplugin.cpp b/src/kirigamiplugin.cpp +index acdefbc4..4670eb86 100644 +--- a/src/kirigamiplugin.cpp ++++ b/src/kirigamiplugin.cpp +@@ -50,33 +50,6 @@ class CopyHelperPrivate : public QObject + } + }; + +-// we can't do this in the plugin object directly, as that can live in a different thread +-// and event filters are only allowed in the same thread as the filtered object +-class LanguageChangeEventFilter : public QObject +-{ +- Q_OBJECT +-public: +- bool eventFilter(QObject *receiver, QEvent *event) override +- { +- if (event->type() == QEvent::LanguageChange && receiver == QCoreApplication::instance()) { +- emit languageChangeEvent(); +- } +- return QObject::eventFilter(receiver, event); +- } +- +-Q_SIGNALS: +- void languageChangeEvent(); +-}; +- +-KirigamiPlugin::KirigamiPlugin(QObject *parent) +- : QQmlExtensionPlugin(parent) +-{ +- auto filter = new LanguageChangeEventFilter; +- filter->moveToThread(QCoreApplication::instance()->thread()); +- QCoreApplication::instance()->installEventFilter(filter); +- connect(filter, &LanguageChangeEventFilter::languageChangeEvent, this, &KirigamiPlugin::languageChangeEvent); +-} +- + QUrl KirigamiPlugin::componentUrl(const QString &fileName) const + { + for (const QString &style : qAsConst(m_stylesFallbackChain)) { +@@ -266,10 +239,4 @@ void KirigamiPlugin::registerTypes(const char *uri) + qmlProtectModule(uri, 2); + } + +-void KirigamiPlugin::initializeEngine(QQmlEngine *engine, const char *uri) +-{ +- Q_UNUSED(uri); +- connect(this, &KirigamiPlugin::languageChangeEvent, engine, &QQmlEngine::retranslate); +-} +- + #include "kirigamiplugin.moc" +diff --git a/src/kirigamiplugin.h b/src/kirigamiplugin.h +index 22279421..caa95f1e 100644 +--- a/src/kirigamiplugin.h ++++ b/src/kirigamiplugin.h +@@ -20,9 +20,7 @@ class KirigamiPlugin : public QQmlExtensionPlugin + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") + + public: +- KirigamiPlugin(QObject *parent = nullptr); + void registerTypes(const char *uri) override; +- void initializeEngine(QQmlEngine *engine, const char *uri) override; + + #ifdef KIRIGAMI_BUILD_TYPE_STATIC + static KirigamiPlugin& getInstance() +@@ -39,9 +37,6 @@ public: + } + #endif + +-Q_SIGNALS: +- void languageChangeEvent(); +- + private: + QUrl componentUrl(const QString &fileName) const; + QString resolveFilePath(const QString &path) const +-- +2.26.2 + + diff --git a/x11-packages/kirigami2/build.sh b/x11-packages/kirigami2/build.sh new file mode 100644 index 000000000..5db2b2797 --- /dev/null +++ b/x11-packages/kirigami2/build.sh @@ -0,0 +1,10 @@ +TERMUX_PKG_HOMEPAGE=https://www.kde.org/ +TERMUX_PKG_DESCRIPTION="KDE Kirigami2 QtQuick components based on Qt Quick Controls 2" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.71.0 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="http://download.kde.org/stable/frameworks/${TERMUX_PKG_VERSION%.*}/kirigami2-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=f323efb96a809dc9e572a0e68e04c4f485fc27f9ae65ffa3988830e348151356 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtdeclarative, qt5-qtquickcontrols2, qt5-qtsvg" +TERMUX_PKG_BUILD_DEPENDS="extra-cmake-modules, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" diff --git a/x11-packages/kirigami2/fix_incomplete_types.patch b/x11-packages/kirigami2/fix_incomplete_types.patch new file mode 100644 index 000000000..4332bf45f --- /dev/null +++ b/x11-packages/kirigami2/fix_incomplete_types.patch @@ -0,0 +1,20 @@ +--- src/src/colorutils.cpp 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/colorutils.cpp 2021-05-19 13:29:45.054114359 +0100 +@@ -8,6 +8,7 @@ + + #include + #include ++#include + #include + #include + +--- src/src/shadowedrectangle.h 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/shadowedrectangle.h 2021-05-19 13:29:03.678325202 +0100 +@@ -8,6 +8,7 @@ + + #include + #include ++#include + + class PaintedRectangleItem; + diff --git a/x11-packages/kirigami2/no_opengl.patch b/x11-packages/kirigami2/no_opengl.patch new file mode 100644 index 000000000..bfbda7c2f --- /dev/null +++ b/x11-packages/kirigami2/no_opengl.patch @@ -0,0 +1,190 @@ +Qt on Termux doesn't have OpenGL. This dirty patch comments out all OpenGL related code so +it can be compiled. However, this means the Kirigami 2 might not function completely or +correctly. +--- src/src/scenegraph/shadowedrectanglematerial.cpp 2021-05-19 13:40:06.865745704 +0100 ++++ src.mod/src/scenegraph/shadowedrectanglematerial.cpp 2021-05-19 13:41:00.549263960 +0100 +@@ -6,7 +6,9 @@ + + #include "shadowedrectanglematerial.h" + ++#ifndef __ANDROID__ + #include ++#endif + + QSGMaterialType ShadowedRectangleMaterial::staticType; + +@@ -43,6 +45,7 @@ + + ShadowedRectangleShader::ShadowedRectangleShader() + { ++#ifndef __ANDROID__ + auto header = QOpenGLContext::currentContext()->isOpenGLES() ? QStringLiteral("header_es.glsl") : QStringLiteral("header_desktop.glsl"); + + auto shaderRoot = QStringLiteral(":/org/kde/kirigami/shaders/"); +@@ -57,6 +60,7 @@ + shaderRoot + QStringLiteral("sdf.glsl"), + shaderRoot + QStringLiteral("shadowedrectangle.frag") + }); ++#endif + } + + const char *const * ShadowedRectangleShader::attributeNames() const +@@ -68,6 +72,7 @@ + void ShadowedRectangleShader::initialize() + { + QSGMaterialShader::initialize(); ++#ifndef __ANDROID__ + m_matrixLocation = program()->uniformLocation("matrix"); + m_aspectLocation = program()->uniformLocation("aspect"); + m_opacityLocation = program()->uniformLocation("opacity"); +@@ -76,10 +81,12 @@ + m_colorLocation = program()->uniformLocation("color"); + m_shadowColorLocation = program()->uniformLocation("shadowColor"); + m_offsetLocation = program()->uniformLocation("offset"); ++#endif + } + + void ShadowedRectangleShader::updateState(const QSGMaterialShader::RenderState& state, QSGMaterial* newMaterial, QSGMaterial* oldMaterial) + { ++#ifndef __ANDROID__ + auto p = program(); + + if (state.isMatrixDirty()) { +@@ -99,4 +106,5 @@ + p->setUniformValue(m_shadowColorLocation, material->shadowColor); + p->setUniformValue(m_offsetLocation, material->offset); + } ++#endif + } +--- src/src/scenegraph/shadowedrectanglematerial.h 2021-05-19 13:40:06.865745704 +0100 ++++ src.mod/src/scenegraph/shadowedrectanglematerial.h 2021-05-19 13:33:30.284974868 +0100 +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + + /** + * A material rendering a rectangle with a shadow. +--- src/src/scenegraph/shadowedborderrectanglematerial.cpp 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/scenegraph/shadowedborderrectanglematerial.cpp 2021-05-19 13:47:43.418072767 +0100 +@@ -6,7 +6,9 @@ + + #include "shadowedborderrectanglematerial.h" + ++#ifndef __ANDROID__ + #include ++#endif + + QSGMaterialType ShadowedBorderRectangleMaterial::staticType; + +@@ -42,6 +44,7 @@ + + ShadowedBorderRectangleShader::ShadowedBorderRectangleShader() + { ++#ifndef __ANDROID__ + auto header = QOpenGLContext::currentContext()->isOpenGLES() ? QStringLiteral("header_es.glsl") : QStringLiteral("header_desktop.glsl"); + + auto shaderRoot = QStringLiteral(":/org/kde/kirigami/shaders/"); +@@ -51,19 +54,23 @@ + shaderRoot + QStringLiteral("sdf.glsl"), + shaderRoot + QStringLiteral("shadowedborderrectangle.frag") + }); ++#endif + } + + void ShadowedBorderRectangleShader::initialize() + { + ShadowedRectangleShader::initialize(); ++#ifndef __ANDROID__ + m_borderWidthLocation = program()->uniformLocation("borderWidth"); + m_borderColorLocation = program()->uniformLocation("borderColor"); ++#endif + } + + void ShadowedBorderRectangleShader::updateState(const QSGMaterialShader::RenderState& state, QSGMaterial* newMaterial, QSGMaterial* oldMaterial) + { + ShadowedRectangleShader::updateState(state, newMaterial, oldMaterial); + ++#ifndef __ANDROID__ + auto p = program(); + + if (!oldMaterial || newMaterial->compare(oldMaterial) != 0 || state.isCachedMaterialDataDirty()) { +@@ -71,4 +78,5 @@ + p->setUniformValue(m_borderWidthLocation, material->borderWidth); + p->setUniformValue(m_borderColorLocation, material->borderColor); + } ++#endif + } +--- src/src/scenegraph/shadowedtexturematerial.cpp 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/scenegraph/shadowedtexturematerial.cpp 2021-05-19 13:50:42.636813685 +0100 +@@ -6,7 +6,9 @@ + + #include "shadowedtexturematerial.h" + ++#ifndef __ANDROID__ + #include ++#endif + + QSGMaterialType ShadowedTextureMaterial::staticType; + +@@ -44,6 +46,7 @@ + + ShadowedTextureShader::ShadowedTextureShader() + { ++#ifndef __ANDROID__ + auto header = QOpenGLContext::currentContext()->isOpenGLES() ? QStringLiteral("header_es.glsl") : QStringLiteral("header_desktop.glsl"); + + auto shaderRoot = QStringLiteral(":/org/kde/kirigami/shaders/"); +@@ -58,12 +61,15 @@ + shaderRoot + QStringLiteral("sdf.glsl"), + shaderRoot + QStringLiteral("shadowedtexture.frag") + }); ++#endif + } + + void ShadowedTextureShader::initialize() + { + ShadowedRectangleShader::initialize(); ++#ifndef __ANDROID__ + program()->setUniformValue("textureSource", 0); ++#endif + } + + void ShadowedTextureShader::updateState(const QSGMaterialShader::RenderState& state, QSGMaterial* newMaterial, QSGMaterial* oldMaterial) +--- src/src/scenegraph/shadowedbordertexturematerial.cpp 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/scenegraph/shadowedbordertexturematerial.cpp 2021-05-19 13:52:35.692051057 +0100 +@@ -6,7 +6,9 @@ + + #include "shadowedbordertexturematerial.h" + ++#ifndef __ANDROID__ + #include ++#endif + + QSGMaterialType ShadowedBorderTextureMaterial::staticType; + +@@ -44,6 +46,7 @@ + + ShadowedBorderTextureShader::ShadowedBorderTextureShader() + { ++#ifndef __ANDROID__ + auto header = QOpenGLContext::currentContext()->isOpenGLES() ? QStringLiteral("header_es.glsl") : QStringLiteral("header_desktop.glsl"); + + auto shaderRoot = QStringLiteral(":/org/kde/kirigami/shaders/"); +@@ -58,12 +61,15 @@ + shaderRoot + QStringLiteral("sdf.glsl"), + shaderRoot + QStringLiteral("shadowedbordertexture.frag") + }); ++#endif + } + + void ShadowedBorderTextureShader::initialize() + { + ShadowedBorderRectangleShader::initialize(); ++#ifndef __ANDROID__ + program()->setUniformValue("textureSource", 0); ++#endif + } + + void ShadowedBorderTextureShader::updateState(const QSGMaterialShader::RenderState& state, QSGMaterial* newMaterial, QSGMaterial* oldMaterial) diff --git a/x11-packages/kirigami2/treat_android_as_linux.patch b/x11-packages/kirigami2/treat_android_as_linux.patch new file mode 100644 index 000000000..4a7766a00 --- /dev/null +++ b/x11-packages/kirigami2/treat_android_as_linux.patch @@ -0,0 +1,39 @@ +--- src/CMakeLists.txt 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/CMakeLists.txt 2021-05-19 13:56:28.854533182 +0100 +@@ -98,23 +98,16 @@ + ) + + #use dbus on linux, bsd etc, but not andoid and apple stuff +-if (UNIX AND NOT ANDROID AND NOT(APPLE) AND NOT(DISABLE_DBUS)) ++if (UNIX AND NOT(APPLE) AND NOT(DISABLE_DBUS)) + find_package(Qt5DBus) + add_definitions(-DKIRIGAMI_ENABLE_DBUS) + endif() + +-if(BUILD_EXAMPLES AND ANDROID) +- find_package(Qt5AndroidExtras ${REQUIRED_QT_VERSION} REQUIRED) +-endif() +- +- + ecm_find_qmlmodule(QtGraphicalEffects 1.0) + + add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050d00) + add_subdirectory(src) +-if (NOT ANDROID) +- add_subdirectory(templates) +-endif() ++add_subdirectory(templates) + + if (BUILD_EXAMPLES AND BUILD_SHARED_LIBS) + add_subdirectory(examples) +--- src/src/libkirigami/CMakeLists.txt 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/libkirigami/CMakeLists.txt 2021-05-19 13:59:42.909309847 +0100 +@@ -8,7 +8,7 @@ + ) + + #use dbus on linux, bsd etc, but not andoid and apple stuff +-if (UNIX AND NOT ANDROID AND NOT(APPLE) AND NOT(DISABLE_DBUS)) ++if (UNIX AND NOT(APPLE) AND NOT(DISABLE_DBUS)) + qt5_add_dbus_interface(libkirigami_SRCS org.kde.KWin.TabletModeManager.xml tabletmodemanager_interface) + set(LIBKIRIGAMKI_EXTRA_LIBS Qt5::DBus) + endif() diff --git a/x11-packages/kirigami2/without_accessibility.patch b/x11-packages/kirigami2/without_accessibility.patch new file mode 100644 index 000000000..ae4ff6e89 --- /dev/null +++ b/x11-packages/kirigami2/without_accessibility.patch @@ -0,0 +1,145 @@ +Qt build on Termux doesn't have accessibility feature. It needs to be removed. +diff --color -uNr src/src/controls/LinkButton.qml src.mod/src/controls/LinkButton.qml +--- src/src/controls/LinkButton.qml 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/controls/LinkButton.qml 2021-05-26 15:04:01.628823854 +0100 +@@ -25,9 +25,6 @@ + property Action action: null + property alias acceptedButtons: area.acceptedButtons + property alias mouseArea: area +- Accessible.role: Accessible.Button +- Accessible.name: text +- Accessible.onPressAction: control.clicked(null) + + text: action ? action.text : "" + enabled: !action || action.enabled +diff --color -uNr src/src/controls/swipenavigator/PrivateSwipeHighlight.qml src.mod/src/controls/swipenavigator/PrivateSwipeHighlight.qml +--- src/src/controls/swipenavigator/PrivateSwipeHighlight.qml 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/controls/swipenavigator/PrivateSwipeHighlight.qml 2021-05-26 15:04:22.268673726 +0100 +@@ -10,8 +10,6 @@ + import org.kde.kirigami 2.12 as Kirigami + + Rectangle { +- Accessible.ignored: true +- + anchors { + bottom: Kirigami.Settings.isMobile ? undefined : parent.bottom + top: Kirigami.Settings.isMobile ? parent.top : undefined +@@ -30,4 +28,4 @@ + + // Unlike most things, we don't want to scale with the em grid, so we don't use a Unit. + height: 2 +-} +\ No newline at end of file ++} +diff --color -uNr src/src/controls/swipenavigator/PrivateSwipeProgress.qml src.mod/src/controls/swipenavigator/PrivateSwipeProgress.qml +--- src/src/controls/swipenavigator/PrivateSwipeProgress.qml 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/controls/swipenavigator/PrivateSwipeProgress.qml 2021-05-26 15:04:32.540599175 +0100 +@@ -14,8 +14,6 @@ + property var progress + + Rectangle { +- Accessible.ignored: true +- + anchors { + top: parent.top + bottom: parent.bottom +@@ -41,8 +39,6 @@ + + + Rectangle { +- Accessible.ignored: true +- + anchors { + top: parent.top + bottom: parent.bottom +@@ -65,4 +61,4 @@ + height: 2 + } + } +-} +\ No newline at end of file ++} +diff --color -uNr src/src/controls/swipenavigator/PrivateSwipeTab.qml src.mod/src/controls/swipenavigator/PrivateSwipeTab.qml +--- src/src/controls/swipenavigator/PrivateSwipeTab.qml 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/controls/swipenavigator/PrivateSwipeTab.qml 2021-05-26 15:04:52.672453373 +0100 +@@ -38,28 +38,6 @@ + } + } + +- Accessible.name: modelData.title +- Accessible.description: { +- if (!!modelData.progress) { +- if (index == columnView.currentIndex) { +- return i18nc("Accessibility text for a page tab. Keep the text as concise as possible and don't use a percent sign.", "Current page. Progress: %1 percent.", Math.round(modelData.progress*100)) +- } else { +- return i18nc("Accessibility text for a page tab. Keep the text as concise as possible.", "Navigate to %1. Progress: %1 percent.", modelData.title, Math.round(modelData.progress*100)) +- } +- } else { +- if (index == columnView.currentIndex) { +- return i18nc("Accessibility text for a page tab. Keep the text as concise as possible.", "Current page.") +- } else if (modelData.needsAttention) { +- return i18nc("Accessibility text for a page tab that's requesting the user's attention. Keep the text as concise as possible.", "Navigate to %1. Demanding attention.", modelData.title) +- } else { +- return i18nc("Accessibility text for a page tab that's requesting the user's attention. Keep the text as concise as possible.", "Navigate to %1.", modelData.title) +- } +- } +- } +- Accessible.role: Accessible.PageTab +- Accessible.focusable: true +- Accessible.onPressAction: columnView.currentIndex = index +- + implicitWidth: small ? smallTitleRow.implicitWidth : largeTitleRow.implicitWidth + border { + width: activeFocus ? 2 : 0 +@@ -91,7 +69,6 @@ + RowLayout { + id: smallTitleRow + anchors.fill: parent +- Accessible.ignored: true + visible: small + + ColumnLayout { +@@ -120,7 +97,6 @@ + RowLayout { + id: largeTitleRow + anchors.fill: parent +- Accessible.ignored: true + visible: !small + + RowLayout { +@@ -149,7 +125,6 @@ + MouseArea { + id: mouse + anchors.fill: parent +- Accessible.ignored: true + onClicked: { + columnView.currentIndex = index + } +@@ -157,4 +132,4 @@ + + Layout.fillHeight: true + Layout.alignment: Qt.AlignHCenter +-} +\ No newline at end of file ++} +diff --color -uNr src/src/controls/swipenavigator/SwipeNavigator.qml src.mod/src/controls/swipenavigator/SwipeNavigator.qml +--- src/src/controls/swipenavigator/SwipeNavigator.qml 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/controls/swipenavigator/SwipeNavigator.qml 2021-05-26 15:04:13.336738638 +0100 +@@ -159,7 +159,6 @@ + + Layout.fillWidth: true + +- Accessible.role: Accessible.PageTabList + } + + StackView { +diff --color -uNr src/src/controls/templates/AbstractListItem.qml src.mod/src/controls/templates/AbstractListItem.qml +--- src/src/controls/templates/AbstractListItem.qml 2020-06-07 19:29:04.000000000 +0100 ++++ src.mod/src/controls/templates/AbstractListItem.qml 2021-05-26 15:03:49.128915000 +0100 +@@ -153,6 +153,5 @@ + property bool indicateActiveFocus: listItem.pressed || Settings.tabletMode || listItem.activeFocus || (view ? view.activeFocus : false) + } + +- Accessible.role: Accessible.ListItem + highlighted: focus && ListView.isCurrentItem && ListView.view && ListView.view.keyNavigationEnabled + } diff --git a/x11-packages/kirigami2/without_qt_graphical_effects.patch b/x11-packages/kirigami2/without_qt_graphical_effects.patch new file mode 100644 index 000000000..47ba7d7f9 --- /dev/null +++ b/x11-packages/kirigami2/without_qt_graphical_effects.patch @@ -0,0 +1,371 @@ +QtGraphicalEffects module is not available because it depends on OpenGL. +This patch removes all usage of QtGraphicalEffects (shadows and gradients). +diff --color -uNr src/CMakeLists.txt src.mod/CMakeLists.txt +--- src/CMakeLists.txt 2021-05-26 15:17:14.799260147 +0100 ++++ src.mod/CMakeLists.txt 2021-05-26 14:20:31.085469568 +0100 +@@ -103,8 +103,6 @@ + add_definitions(-DKIRIGAMI_ENABLE_DBUS) + endif() + +-ecm_find_qmlmodule(QtGraphicalEffects 1.0) +- + add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050d00) + add_subdirectory(src) + add_subdirectory(templates) +diff --color -uNr src/src/controls/AbstractApplicationItem.qml src.mod/src/controls/AbstractApplicationItem.qml +--- src/src/controls/AbstractApplicationItem.qml 2021-05-26 15:17:14.799260147 +0100 ++++ src.mod/src/controls/AbstractApplicationItem.qml 2021-05-26 14:33:20.951241121 +0100 +@@ -9,7 +9,6 @@ + import QtQuick.Window 2.2 + import "templates/private" + import org.kde.kirigami 2.4 +-import QtGraphicalEffects 1.0 + + /** + * A window that provides some basic features needed for all apps +diff --color -uNr src/src/controls/AbstractApplicationWindow.qml src.mod/src/controls/AbstractApplicationWindow.qml +--- src/src/controls/AbstractApplicationWindow.qml 2021-05-26 15:17:14.799260147 +0100 ++++ src.mod/src/controls/AbstractApplicationWindow.qml 2021-05-26 14:32:33.647649364 +0100 +@@ -8,7 +8,6 @@ + import QtQuick.Controls 2.0 as QQC2 + import "templates/private" + import org.kde.kirigami 2.4 +-import QtGraphicalEffects 1.0 + + /** + * A window that provides some basic features needed for all apps +diff --color -uNr src/src/controls/ApplicationItem.qml src.mod/src/controls/ApplicationItem.qml +--- src/src/controls/ApplicationItem.qml 2021-05-26 15:17:14.799260147 +0100 ++++ src.mod/src/controls/ApplicationItem.qml 2021-05-26 14:32:12.723837137 +0100 +@@ -7,7 +7,6 @@ + import QtQuick 2.5 + import "templates/private" + import org.kde.kirigami 2.4 as Kirigami +-import QtGraphicalEffects 1.0 + + /** + * A window that provides some basic features needed for all apps +diff --color -uNr src/src/controls/ApplicationWindow.qml src.mod/src/controls/ApplicationWindow.qml +--- src/src/controls/ApplicationWindow.qml 2021-05-26 15:17:14.799260147 +0100 ++++ src.mod/src/controls/ApplicationWindow.qml 2021-05-26 14:26:30.126563514 +0100 +@@ -7,7 +7,6 @@ + import QtQuick 2.5 + import "templates/private" + import org.kde.kirigami 2.4 as Kirigami +-import QtGraphicalEffects 1.0 + + /** + * A window that provides some basic features needed for all apps +diff --color -uNr src/src/controls/GlobalDrawer.qml src.mod/src/controls/GlobalDrawer.qml +--- src/src/controls/GlobalDrawer.qml 2021-05-26 15:17:14.799260147 +0100 ++++ src.mod/src/controls/GlobalDrawer.qml 2021-05-26 14:25:00.691132069 +0100 +@@ -8,7 +8,6 @@ + import QtQuick.Templates 2.0 as T2 + import QtQuick.Controls 2.2 as QQC2 + import QtQuick.Layouts 1.2 +-import QtGraphicalEffects 1.0 + import org.kde.kirigami 2.4 + + import "private" +diff --color -uNr src/src/controls/ItemViewHeader.qml src.mod/src/controls/ItemViewHeader.qml +--- src/src/controls/ItemViewHeader.qml 2021-05-26 15:17:14.799260147 +0100 ++++ src.mod/src/controls/ItemViewHeader.qml 2021-05-26 14:25:29.138945315 +0100 +@@ -6,7 +6,6 @@ + + import QtQuick 2.5 + import QtQuick.Templates 2.0 as T2 +-import QtGraphicalEffects 1.0 + import org.kde.kirigami 2.4 as Kirigami + import "private" + +@@ -89,13 +88,6 @@ + elide: Text.ElideRight + + layer.enabled: root.backgroundImage.hasImage +- layer.effect: DropShadow { +- horizontalOffset: 0 +- verticalOffset: 2 +- radius: Kirigami.Units.smallSpacing*2 +- samples: 32 +- color: Qt.rgba(0, 0, 0, 0.7) +- } + } + } + } +diff --color -uNr src/src/controls/OverlayDrawer.qml src.mod/src/controls/OverlayDrawer.qml +--- src/src/controls/OverlayDrawer.qml 2021-05-26 15:17:14.799260147 +0100 ++++ src.mod/src/controls/OverlayDrawer.qml 2021-05-26 14:25:58.214760590 +0100 +@@ -5,7 +5,6 @@ + */ + + import QtQuick 2.1 +-import QtGraphicalEffects 1.0 + import QtQuick.Templates 2.0 as T2 + import org.kde.kirigami 2.5 + +@@ -42,16 +41,6 @@ + parent: root.handle + anchors.fill: parent + +- DropShadow { +- anchors.fill: handleGraphics +- visible: !parent.parent.handleAnchor || !parent.parent.handleAnchor.visible || root.handle.pressed || (root.modal && root.position > 0) +- horizontalOffset: 0 +- verticalOffset: Units.devicePixelRatio +- radius: Units.gridUnit /2 +- samples: 16 +- color: Qt.rgba(0, 0, 0, root.handle.pressed ? 0.6 : 0.4) +- source: handleGraphics +- } + Rectangle { + id: handleGraphics + anchors.centerIn: parent +diff --color -uNr src/src/controls/plugins.qmltypes src.mod/src/controls/plugins.qmltypes +--- src/src/controls/plugins.qmltypes 2021-05-26 15:17:14.799260147 +0100 ++++ src.mod/src/controls/plugins.qmltypes 2021-05-26 14:29:00.917680399 +0100 +@@ -8,7 +8,6 @@ + + Module { + dependencies: [ +- "QtGraphicalEffects 1.0", + "QtQml 2.1", + "QtQml.Models 2.2", + "QtQuick 2.9", +diff --color -uNr src/src/controls/private/ActionButton.qml src.mod/src/controls/private/ActionButton.qml +--- src/src/controls/private/ActionButton.qml 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/controls/private/ActionButton.qml 2021-05-26 14:31:39.908141743 +0100 +@@ -7,7 +7,6 @@ + import QtQuick 2.1 + import QtQuick.Layouts 1.2 + import QtQuick.Controls 2.0 as Controls +-import QtGraphicalEffects 1.0 + import org.kde.kirigami 2.7 + + import "../templates/private" +@@ -357,16 +356,6 @@ + } + } + } +- +- DropShadow { +- anchors.fill: background +- horizontalOffset: 0 +- verticalOffset: Units.devicePixelRatio +- radius: Units.gridUnit /2 +- samples: 16 +- color: Qt.rgba(0, 0, 0, mouseArea.pressed ? 0.6 : 0.4) +- source: background +- } + } + } + +@@ -390,16 +379,6 @@ + width: Units.iconSizes.smallMedium + Units.smallSpacing*2 + height: width + +- +- DropShadow { +- anchors.fill: handleGraphics +- horizontalOffset: 0 +- verticalOffset: Units.devicePixelRatio +- radius: Units.gridUnit /2 +- samples: 16 +- color: Qt.rgba(0, 0, 0, fakeContextMenuButton.pressed ? 0.6 : 0.4) +- source: handleGraphics +- } + Rectangle { + id: handleGraphics + anchors.fill: parent +diff --color -uNr src/src/controls/private/BannerImage.qml src.mod/src/controls/private/BannerImage.qml +--- src/src/controls/private/BannerImage.qml 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/controls/private/BannerImage.qml 2021-05-26 14:29:26.989532396 +0100 +@@ -6,7 +6,6 @@ + + import QtQuick 2.6 + import QtQuick.Layouts 1.2 +-import QtGraphicalEffects 1.0 + import org.kde.kirigami 2.12 as Kirigami + + /** +diff --color -uNr src/src/controls/private/CornerShadow.qml src.mod/src/controls/private/CornerShadow.qml +--- src/src/controls/private/CornerShadow.qml 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/controls/private/CornerShadow.qml 2021-05-26 14:30:32.924808566 +0100 +@@ -5,7 +5,6 @@ + */ + + import QtQuick 2.1 +-import QtGraphicalEffects 1.0 + import org.kde.kirigami 2.4 + + RadialGradient { +diff --color -uNr src/src/controls/private/EdgeShadow.qml src.mod/src/controls/private/EdgeShadow.qml +--- src/src/controls/private/EdgeShadow.qml 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/controls/private/EdgeShadow.qml 2021-05-26 15:17:44.551056384 +0100 +@@ -5,10 +5,9 @@ + */ + + import QtQuick 2.1 +-import QtGraphicalEffects 1.0 + import org.kde.kirigami 2.4 + +-LinearGradient { ++Item { + id: shadow + /** + * edge: enumeration +@@ -25,26 +24,5 @@ + property int radius: Units.gridUnit + implicitWidth: radius + implicitHeight: radius +- +- start: Qt.point((edge !== Qt.RightEdge ? 0 : width), (edge !== Qt.BottomEdge ? 0 : height)) +- end: Qt.point((edge !== Qt.LeftEdge ? 0 : width), (edge !== Qt.TopEdge ? 0 : height)) +- gradient: Gradient { +- GradientStop { +- position: 0.0 +- color: Qt.rgba(0, 0, 0, 0.25) +- } +- GradientStop { +- position: 0.20 +- color: Qt.rgba(0, 0, 0, 0.1) +- } +- GradientStop { +- position: 0.35 +- color: Qt.rgba(0, 0, 0, 0.02) +- } +- GradientStop { +- position: 1.0 +- color: "transparent" +- } +- } + } + +diff --color -uNr src/src/controls/private/RefreshableScrollView.qml src.mod/src/controls/private/RefreshableScrollView.qml +--- src/src/controls/private/RefreshableScrollView.qml 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/controls/private/RefreshableScrollView.qml 2021-05-26 15:01:26.477968469 +0100 +@@ -7,7 +7,6 @@ + import QtQuick 2.7 + import QtQuick.Window 2.2 + import QtQuick.Controls 2.0 as QQC2 +-import QtGraphicalEffects 1.0 + import QtQuick.Layouts 1.2 + import org.kde.kirigami 2.4 + import "../templates/private" as P +@@ -96,17 +95,6 @@ + //also take into account the listview header height if present + property real progress: supportsRefreshing && !refreshing ? ((parent.y - busyIndicatorFrame.headerItemHeight)/busyIndicatorFrame.height) : 0 + } +- ConicalGradient { +- source: spinnerProgress +- visible: spinnerProgress.visible +- anchors.fill: spinnerProgress +- gradient: Gradient { +- GradientStop { position: 0.00; color: Theme.highlightColor } +- GradientStop { position: spinnerProgress.progress; color: Theme.highlightColor } +- GradientStop { position: spinnerProgress.progress + 0.01; color: "transparent" } +- GradientStop { position: 1.00; color: "transparent" } +- } +- } + + onYChanged: { + //it's overshooting enough and not reachable: start countdown for reachability +diff --color -uNr src/src/controls/qmldir src.mod/src/controls/qmldir +--- src/src/controls/qmldir 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/controls/qmldir 2021-05-26 14:32:42.943567427 +0100 +@@ -2,6 +2,5 @@ + plugin kirigamiplugin + classname KirigamiPlugin + depends QtQuick.Controls 2.0 +-depends QtGraphicalEffects 1.0 + designersupported + +diff --color -uNr src/src/controls/templates/OverlaySheet.qml src.mod/src/controls/templates/OverlaySheet.qml +--- src/src/controls/templates/OverlaySheet.qml 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/controls/templates/OverlaySheet.qml 2021-05-26 14:27:26.994223196 +0100 +@@ -9,7 +9,6 @@ + import QtQuick.Layouts 1.2 + import QtQuick.Window 2.2 + import org.kde.kirigami 2.11 +-import QtGraphicalEffects 1.0 + import QtQuick.Templates 2.0 as T2 + import "private" + import "../private" +diff --color -uNr src/src/controls/templates/private/ContextIcon.qml src.mod/src/controls/templates/private/ContextIcon.qml +--- src/src/controls/templates/private/ContextIcon.qml 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/controls/templates/private/ContextIcon.qml 2021-05-26 14:28:17.245930577 +0100 +@@ -6,7 +6,6 @@ + + import QtQuick 2.1 + import QtQuick.Layouts 1.2 +-import QtGraphicalEffects 1.0 + import org.kde.kirigami 2.4 + + Item { +diff --color -uNr src/src/controls/templates/private/GenericDrawerIcon.qml src.mod/src/controls/templates/private/GenericDrawerIcon.qml +--- src/src/controls/templates/private/GenericDrawerIcon.qml 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/controls/templates/private/GenericDrawerIcon.qml 2021-05-26 14:27:53.350068967 +0100 +@@ -6,7 +6,6 @@ + + import QtQuick 2.1 + import QtQuick.Layouts 1.2 +-import QtGraphicalEffects 1.0 + import org.kde.kirigami 2.4 as Kirigami + + Item { +diff --color -uNr src/src/controls/templates/private/MenuIcon.qml src.mod/src/controls/templates/private/MenuIcon.qml +--- src/src/controls/templates/private/MenuIcon.qml 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/controls/templates/private/MenuIcon.qml 2021-05-26 14:28:05.761996928 +0100 +@@ -6,7 +6,6 @@ + + import QtQuick 2.1 + import QtQuick.Layouts 1.2 +-import QtGraphicalEffects 1.0 + import org.kde.kirigami 2.4 + + Item { +diff --color -uNr src/src/controls/templates/private/PassiveNotification.qml src.mod/src/controls/templates/private/PassiveNotification.qml +--- src/src/controls/templates/private/PassiveNotification.qml 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/controls/templates/private/PassiveNotification.qml 2021-05-26 14:28:41.845789264 +0100 +@@ -8,7 +8,6 @@ + import QtQuick.Controls 2.3 as Controls + import QtQuick.Layouts 1.2 + import QtQuick.Window 2.2 +-import QtGraphicalEffects 1.0 + import org.kde.kirigami 2.12 as Kirigami + + /** +diff --color -uNr src/src/qmldir src.mod/src/qmldir +--- src/src/qmldir 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/qmldir 2021-05-26 14:23:47.035655017 +0100 +@@ -2,7 +2,6 @@ + + classname KirigamiPlugin + depends QtQuick.Controls 2.0 +-depends QtGraphicalEffects 1.0 + designersupported + + typeinfo plugins.qmltypes +diff --color -uNr src/src/styles/Material/InlineMessage.qml src.mod/src/styles/Material/InlineMessage.qml +--- src/src/styles/Material/InlineMessage.qml 2021-05-26 15:17:14.803260119 +0100 ++++ src.mod/src/styles/Material/InlineMessage.qml 2021-05-26 14:23:23.219840986 +0100 +@@ -7,7 +7,6 @@ + */ + + import QtQuick 2.7 +-import QtGraphicalEffects 1.0 + import org.kde.kirigami 2.5 as Kirigami + + import "../../private" +@@ -104,12 +103,5 @@ + } + + layer.enabled: true +- layer.effect: DropShadow { +- horizontalOffset: 0 +- verticalOffset: 1 +- radius: 12 +- samples: 32 +- color: Qt.rgba(0, 0, 0, 0.5) +- } + } + } diff --git a/x11-packages/kvantum/build.sh b/x11-packages/kvantum/build.sh new file mode 100644 index 000000000..29c69b673 --- /dev/null +++ b/x11-packages/kvantum/build.sh @@ -0,0 +1,14 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/tsujan/Kvantum +TERMUX_PKG_DESCRIPTION="SVG-based theme engine for Qt5" +TERMUX_PKG_LICENSE="GPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.20.1 +TERMUX_PKG_REVISION=1 +TERMUX_PKG_SRCURL="https://github.com/tsujan/Kvantum/releases/download/V${TERMUX_PKG_VERSION}/Kvantum-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=c823c70eabd7b02ac4661b989d858ac411da29d7a0de96afd464da8855132925 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtx11extras, qt5-qtsvg, kwindowsystem" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + +termux_step_post_get_source() { + TERMUX_PKG_SRCDIR+="/Kvantum" +} diff --git a/x11-packages/libdbusmenu-qt/build.sh b/x11-packages/libdbusmenu-qt/build.sh new file mode 100644 index 000000000..4f30838c4 --- /dev/null +++ b/x11-packages/libdbusmenu-qt/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://launchpad.net/libdbusmenu-qt +TERMUX_PKG_DESCRIPTION="dbusmenu library for Qt" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION="0.9.3+16.04.20160218-0ubuntu1" +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="https://github.com/unity8-team/libdbusmenu-qt/archive/refs/tags/${TERMUX_PKG_VERSION}.tar.gz" +TERMUX_PKG_SHA256=bc2c3960c0c6b520e42e652b6a71b769cff6cb651adece92d2a0bc6bdff37c29 +TERMUX_PKG_DEPENDS="qt5-qtbase" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="-DUSE_QT4=OFF -DUSE_QT5=ON -DWITH_DOC=OFF" diff --git a/x11-packages/libfm-qt/build.sh b/x11-packages/libfm-qt/build.sh new file mode 100644 index 000000000..3d44b4167 --- /dev/null +++ b/x11-packages/libfm-qt/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="Library providing components to build desktop file managers" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.1 +TERMUX_PKG_REVISION=5 +TERMUX_PKG_SRCURL="https://github.com/lxqt/libfm-qt/releases/download/${TERMUX_PKG_VERSION}/libfm-qt-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=aa3f8f4d8035d106ed80e0b0ae5fced5ad61d4dac3f960392f3a71fb42a521a5 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtx11extras, glib, libxcb, libexif, menu-cache" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + diff --git a/x11-packages/libfm-qt/fhs_termux_prefix.patch b/x11-packages/libfm-qt/fhs_termux_prefix.patch new file mode 100644 index 000000000..f755676f6 --- /dev/null +++ b/x11-packages/libfm-qt/fhs_termux_prefix.patch @@ -0,0 +1,24 @@ +diff --color -uNr src/src/core/fileinfo.cpp src.mod/src/core/fileinfo.cpp +--- src/src/core/fileinfo.cpp 2021-04-16 12:08:23.000000000 +0100 ++++ src.mod/src/core/fileinfo.cpp 2021-05-22 16:52:50.186775465 +0100 +@@ -360,7 +360,7 @@ + which may be considered as a safe desktop entry path + then check if that is a shortcut to a native file + otherwise it is a link to a file under menu:// */ +- if (!g_str_has_prefix(target_.c_str(), "/usr/share/")) { ++ if (!g_str_has_prefix(target_.c_str(), "@TERMUX_PREFIX@/share/")) { + auto target = FilePath::fromPathStr(target_.c_str()); + bool is_native = target.isNative(); + if (is_native) { +diff --color -uNr src/src/core/vfs/vfs-menu.c src.mod/src/core/vfs/vfs-menu.c +--- src/src/core/vfs/vfs-menu.c 2021-04-16 12:08:23.000000000 +0100 ++++ src.mod/src/core/vfs/vfs-menu.c 2021-05-22 16:54:14.278451100 +0100 +@@ -165,7 +165,7 @@ + child = fm_xml_file_item_new(menuTag_MergeFile); + fm_xml_file_item_set_attribute(child, "type", "parent"); + /* FIXME: what is correct way to handle this? is it required at all? */ +- path = g_strdup_printf("/etc/xdg/menus/%s", basename); ++ path = g_strdup_printf("@TERMUX_PREFIX@/etc/xdg/menus/%s", basename); + fm_xml_file_item_append_text(child, path, -1, FALSE); + g_free(path); + fm_xml_file_item_append_child(item, child); diff --git a/x11-packages/liblxqt/add_missing_wordexp.patch b/x11-packages/liblxqt/add_missing_wordexp.patch new file mode 100644 index 000000000..3ea6ae709 --- /dev/null +++ b/x11-packages/liblxqt/add_missing_wordexp.patch @@ -0,0 +1,262 @@ +diff -uNr src/CMakeLists.txt src.mod/CMakeLists.txt +--- src/CMakeLists.txt 2021-05-21 08:58:40.268102000 +0000 ++++ src.mod/CMakeLists.txt 2021-05-21 08:46:53.277571000 +0000 +@@ -142,6 +142,8 @@ + lxqtrotatedwidget.cpp + lxqtbacklight.cpp + lxqtbacklight/virtual_backend.cpp ++ ++ wordexp.c + ) + + if (NOT APPLE) +diff -uNr src/wordexp.c src.mod/wordexp.c +--- src/wordexp.c 1970-01-01 00:00:00.000000000 +0000 ++++ src.mod/wordexp.c 2021-05-21 08:58:23.662102000 +0000 +@@ -0,0 +1,184 @@ ++// Copied from http://git.musl-libc.org/cgit/musl/plain/src/misc/wordexp.c ++// pthread-related lines are removed because they're missing on Android ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static void reap(pid_t pid) ++{ ++ int status; ++ while (waitpid(pid, &status, 0) < 0 && errno == EINTR); ++} ++ ++static char *getword(FILE *f) ++{ ++ char *s = 0; ++ return getdelim(&s, (size_t [1]){0}, 0, f) < 0 ? 0 : s; ++} ++ ++static int do_wordexp(const char *s, wordexp_t *we, int flags) ++{ ++ size_t i, l; ++ int sq=0, dq=0; ++ size_t np=0; ++ char *w, **tmp; ++ char *redir = (flags & WRDE_SHOWERR) ? "" : "2>/dev/null"; ++ int err = 0; ++ FILE *f; ++ size_t wc = 0; ++ char **wv = 0; ++ int p[2]; ++ pid_t pid; ++ sigset_t set; ++ ++ if (flags & WRDE_REUSE) wordfree(we); ++ ++ if (flags & WRDE_NOCMD) for (i=0; s[i]; i++) switch (s[i]) { ++ case '\\': ++ if (!sq && !s[++i]) return WRDE_SYNTAX; ++ break; ++ case '\'': ++ if (!dq) sq^=1; ++ break; ++ case '"': ++ if (!sq) dq^=1; ++ break; ++ case '(': ++ if (np) { ++ np++; ++ break; ++ } ++ case ')': ++ if (np) { ++ np--; ++ break; ++ } ++ case '\n': ++ case '|': ++ case '&': ++ case ';': ++ case '<': ++ case '>': ++ case '{': ++ case '}': ++ if (!(sq|dq|np)) return WRDE_BADCHAR; ++ break; ++ case '$': ++ if (sq) break; ++ if (s[i+1]=='(' && s[i+2]=='(') { ++ i += 2; ++ np += 2; ++ break; ++ } else if (s[i+1] != '(') break; ++ case '`': ++ if (sq) break; ++ return WRDE_CMDSUB; ++ } ++ ++ if (flags & WRDE_APPEND) { ++ wc = we->we_wordc; ++ wv = we->we_wordv; ++ } ++ ++ i = wc; ++ if (flags & WRDE_DOOFFS) { ++ if (we->we_offs > SIZE_MAX/sizeof(void *)/4) ++ goto nospace; ++ i += we->we_offs; ++ } else { ++ we->we_offs = 0; ++ } ++ ++ if (pipe2(p, O_CLOEXEC) < 0) goto nospace; ++ pid = fork(); ++ if (pid < 0) { ++ close(p[0]); ++ close(p[1]); ++ goto nospace; ++ } ++ if (!pid) { ++ if (p[1] == 1) fcntl(1, F_SETFD, 0); ++ else dup2(p[1], 1); ++ execl("/bin/sh", "sh", "-c", ++ "eval \"printf %s\\\\\\\\0 x $1 $2\"", ++ "sh", s, redir, (char *)0); ++ _exit(1); ++ } ++ close(p[1]); ++ ++ f = fdopen(p[0], "r"); ++ if (!f) { ++ close(p[0]); ++ kill(pid, SIGKILL); ++ reap(pid); ++ goto nospace; ++ } ++ ++ l = wv ? i+1 : 0; ++ ++ free(getword(f)); ++ if (feof(f)) { ++ fclose(f); ++ reap(pid); ++ return WRDE_SYNTAX; ++ } ++ ++ while ((w = getword(f))) { ++ if (i+1 >= l) { ++ l += l/2+10; ++ tmp = realloc(wv, l*sizeof(char *)); ++ if (!tmp) break; ++ wv = tmp; ++ } ++ wv[i++] = w; ++ wv[i] = 0; ++ } ++ if (!feof(f)) err = WRDE_NOSPACE; ++ ++ fclose(f); ++ reap(pid); ++ ++ if (!wv) wv = calloc(i+1, sizeof *wv); ++ ++ we->we_wordv = wv; ++ we->we_wordc = i; ++ ++ if (flags & WRDE_DOOFFS) { ++ if (wv) for (i=we->we_offs; i; i--) ++ we->we_wordv[i-1] = 0; ++ we->we_wordc -= we->we_offs; ++ } ++ return err; ++ ++nospace: ++ if (!(flags & WRDE_APPEND)) { ++ we->we_wordc = 0; ++ we->we_wordv = 0; ++ } ++ return WRDE_NOSPACE; ++} ++ ++int wordexp(const char *restrict s, wordexp_t *restrict we, int flags) ++{ ++ int r, cs; ++ r = do_wordexp(s, we, flags); ++ return r; ++} ++ ++void wordfree(wordexp_t *we) ++{ ++ size_t i; ++ if (!we->we_wordv) return; ++ for (i=0; iwe_wordc; i++) free(we->we_wordv[we->we_offs+i]); ++ free(we->we_wordv); ++ we->we_wordv = 0; ++ we->we_wordc = 0; ++} +diff -uNr src/wordexp.h src.mod/wordexp.h +--- src/wordexp.h 1970-01-01 00:00:00.000000000 +0000 ++++ src.mod/wordexp.h 2021-05-21 08:58:53.085923000 +0000 +@@ -0,0 +1,58 @@ ++/* Copyright (C) 1991, 92, 1996-1999, 2001, 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++#ifndef _WORDEXP_H ++#define _WORDEXP_H 1 ++#include ++#define __need_size_t ++#include ++__BEGIN_DECLS ++/* Bits set in the FLAGS argument to `wordexp'. */ ++enum ++ { ++ WRDE_DOOFFS = (1 << 0), /* Insert PWORDEXP->we_offs NULLs. */ ++ WRDE_APPEND = (1 << 1), /* Append to results of a previous call. */ ++ WRDE_NOCMD = (1 << 2), /* Don't do command substitution. */ ++ WRDE_REUSE = (1 << 3), /* Reuse storage in PWORDEXP. */ ++ WRDE_SHOWERR = (1 << 4), /* Don't redirect stderr to /dev/null. */ ++ WRDE_UNDEF = (1 << 5), /* Error for expanding undefined variables. */ ++ __WRDE_FLAGS = (WRDE_DOOFFS | WRDE_APPEND | WRDE_NOCMD | ++ WRDE_REUSE | WRDE_SHOWERR | WRDE_UNDEF) ++ }; ++/* Structure describing a word-expansion run. */ ++typedef struct ++ { ++ size_t we_wordc; /* Count of words matched. */ ++ char **we_wordv; /* List of expanded words. */ ++ size_t we_offs; /* Slots to reserve in `we_wordv'. */ ++ } wordexp_t; ++/* Possible nonzero return values from `wordexp'. */ ++enum ++ { ++#ifdef __USE_XOPEN ++ WRDE_NOSYS = -1, /* Never used since we support `wordexp'. */ ++#endif ++ WRDE_NOSPACE = 1, /* Ran out of memory. */ ++ WRDE_BADCHAR, /* A metachar appears in the wrong place. */ ++ WRDE_BADVAL, /* Undefined var reference with WRDE_UNDEF. */ ++ WRDE_CMDSUB, /* Command substitution with WRDE_NOCMD. */ ++ WRDE_SYNTAX /* Shell syntax error. */ ++ }; ++/* Do word expansion of WORDS into PWORDEXP. */ ++extern int wordexp (__const char *__restrict __words, ++ wordexp_t *__restrict __pwordexp, int __flags); ++/* Free the storage allocated by a `wordexp' call. */ ++extern void wordfree (wordexp_t *__wordexp); ++__END_DECLS ++#endif /* wordexp.h */ diff --git a/x11-packages/liblxqt/build.sh b/x11-packages/liblxqt/build.sh new file mode 100644 index 000000000..028912e22 --- /dev/null +++ b/x11-packages/liblxqt/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="The core library of LXQt" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="https://github.com/lxqt/liblxqt/releases/download/${TERMUX_PKG_VERSION}/liblxqt-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=d44e3b4c0963537d5032328ac29bb0d61d454dc28d0fac7e1ddcb9d7be91c32b +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtx11extras, kwindowsystem, libqtxdg, libxss" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools" +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="-DBUILD_BACKLIGHT_LINUX_BACKEND=OFF" diff --git a/x11-packages/libqtxdg/build.sh b/x11-packages/libqtxdg/build.sh new file mode 100644 index 000000000..772102988 --- /dev/null +++ b/x11-packages/libqtxdg/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="Qt 5 implementation of freedesktop.org XDG specifications" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=3.7.1 +TERMUX_PKG_REVISION=7 +TERMUX_PKG_SRCURL="https://github.com/lxqt/libqtxdg/releases/download/${TERMUX_PKG_VERSION}/libqtxdg-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=477cbe76b3305071ff5f5bfa31dbcddcc51f3434b9ed75d91988219296d88a9b +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtsvg, glib" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qttools-cross-tools" + diff --git a/x11-packages/libqtxdg/xdgdirs_termux_prefix.patch b/x11-packages/libqtxdg/xdgdirs_termux_prefix.patch new file mode 100644 index 000000000..65e73fdb8 --- /dev/null +++ b/x11-packages/libqtxdg/xdgdirs_termux_prefix.patch @@ -0,0 +1,40 @@ +--- src/src/qtxdg/xdgdirs.cpp 2021-04-16 09:29:21.000000000 +0000 ++++ src.mod/src/qtxdg/xdgdirs.cpp 2021-05-12 16:50:56.461844000 +0000 +@@ -46,6 +46,8 @@ + QLatin1String("Videos") + }; + ++static const char* TERMUX_PREFIX = "@TERMUX_PREFIX@"; ++ + // Helper functions prototypes + void fixBashShortcuts(QString &s); + void removeEndingSlash(QString &s); +@@ -108,7 +110,7 @@ + const QString home = QFile::decodeName(qgetenv("HOME")); + + if (home.isEmpty()) +- return QString::fromLatin1("/tmp"); ++ return QString::fromLatin1(TERMUX_PREFIX) + QString::fromLatin1("/tmp"); + else if (dir == XdgDirs::Desktop) + fallback = QString::fromLatin1("%1/%2").arg(home, QLatin1String("Desktop")); + else +@@ -270,8 +272,8 @@ + #endif + + if (dirs.isEmpty()) { +- dirs.append(QString::fromLatin1("/usr/local/share")); +- dirs.append(QString::fromLatin1("/usr/share")); ++ dirs.append(QString::fromLatin1(TERMUX_PREFIX) + QString::fromLatin1("/local/share")); ++ dirs.append(QString::fromLatin1(TERMUX_PREFIX) + QString::fromLatin1("/share")); + } else { + QMutableListIterator it(dirs); + while (it.hasNext()) { +@@ -293,7 +295,7 @@ + QStringList dirs; + const QString env = QFile::decodeName(qgetenv("XDG_CONFIG_DIRS")); + if (env.isEmpty()) +- dirs.append(QString::fromLatin1("/etc/xdg")); ++ dirs.append(QString::fromLatin1(TERMUX_PREFIX) + QString::fromLatin1("/etc/xdg")); + else + #if (QT_VERSION >= QT_VERSION_CHECK(5,15,0)) + dirs = env.split(QLatin1Char(':'), Qt::SkipEmptyParts); diff --git a/x11-packages/libsysstat/build.sh b/x11-packages/libsysstat/build.sh new file mode 100644 index 000000000..8aef0999b --- /dev/null +++ b/x11-packages/libsysstat/build.sh @@ -0,0 +1,10 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="A library to query system information" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.4.5 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://github.com/lxqt/libsysstat/releases/download/${TERMUX_PKG_VERSION}/libsysstat-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=f19b6550d78939cc1ad11c5788e2a7293f7f886d037837cd1cf56ebcdf2b5ed2 +TERMUX_PKG_DEPENDS="qt5-qtbase" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools" diff --git a/x11-packages/lximage-qt/build.sh b/x11-packages/lximage-qt/build.sh new file mode 100644 index 000000000..983e6bb13 --- /dev/null +++ b/x11-packages/lximage-qt/build.sh @@ -0,0 +1,10 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="LXQt Image Viewer" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lximage-qt/releases/download/${TERMUX_PKG_VERSION}/lximage-qt-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=2e284f3f42506d5b6df6091982d24e1dc41c99c838037939844f70d703d1d03c +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtx11extras, qt5-qtsvg, libfm-qt, libexif, libxfixes" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" diff --git a/x11-packages/lxqt-about/build.sh b/x11-packages/lxqt-about/build.sh new file mode 100644 index 000000000..45868119f --- /dev/null +++ b/x11-packages/lxqt-about/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="LXQt dialog showing information about LXQt and the system" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=5 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-about/releases/download/${TERMUX_PKG_VERSION}/lxqt-about-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=f5033a4eb339f64de5b0eea32ee9178ab06aad6b60fd428fc196add785c33113 +TERMUX_PKG_DEPENDS="qt5-qtbase, liblxqt" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools" + diff --git a/x11-packages/lxqt-archiver/build.sh b/x11-packages/lxqt-archiver/build.sh new file mode 100644 index 000000000..a669511df --- /dev/null +++ b/x11-packages/lxqt-archiver/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="A simple & lightweight Qt file archiver" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.4.0 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-archiver/releases/download/${TERMUX_PKG_VERSION}/lxqt-archiver-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=9f8c00b517771d99ceaf05ff7d72609580def47aae13842b461d9eecd9c1ef3b +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtx11extras, libfm-qt, glib, json-glib" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + diff --git a/x11-packages/lxqt-build-tools/build.sh b/x11-packages/lxqt-build-tools/build.sh new file mode 100644 index 000000000..d2452ce37 --- /dev/null +++ b/x11-packages/lxqt-build-tools/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="Building tools required by LXQt project" +TERMUX_PKG_LICENSE="BSD 3-Clause" +TERMUX_PKG_LICENSE_FILE="BSD-3-Clause" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.9.0 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-build-tools/releases/download/${TERMUX_PKG_VERSION}/lxqt-build-tools-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=9782878d6c0cc896d4a54fce5cc322561cdf1df270b8f941b2088a434b535e4d +TERMUX_PKG_DEPENDS="cmake, qt5-qtbase" +TERMUX_PKG_PLATFORM_INDEPENDENT=true diff --git a/x11-packages/lxqt-config/build.sh b/x11-packages/lxqt-config/build.sh new file mode 100644 index 000000000..ba41a0c20 --- /dev/null +++ b/x11-packages/lxqt-config/build.sh @@ -0,0 +1,20 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="Tools to configure LXQt and the underlying operating system" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.1 +TERMUX_PKG_REVISION=5 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-config/releases/download/${TERMUX_PKG_VERSION}/lxqt-config-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=23c1c9a3aa3bf3537b3433439501463ea3e29950ecf2381679bf30ef4c1b245b +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtx11extras, liblxqt, libxcb, zlib, shared-mime-info" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" +# libinput is required to switch on input configuration +# libkscreen is required to switch on monitor configuration, which in turn requires wayland +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="-DWITH_INPUT=OFF -DWITH_MONITOR=OFF" + +termux_step_pre_configure() { + # This is required because of the private lib used by lxqt-config-appearance + LDFLAGS+=" -Wl,-rpath=${TERMUX_PREFIX}/lib/lxqt-config" + export LDFLAGS +} + diff --git a/x11-packages/lxqt-globalkeys/build.sh b/x11-packages/lxqt-globalkeys/build.sh new file mode 100644 index 000000000..e03c3e8c4 --- /dev/null +++ b/x11-packages/lxqt-globalkeys/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="Tools to set global keyboard shortcuts in LXQt sessions" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-globalkeys/releases/download/${TERMUX_PKG_VERSION}/lxqt-globalkeys-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=90c409e95efefb2ee87e99504b955a2a84d4404157d2c1b7b7992b0571c4de5e +TERMUX_PKG_DEPENDS="qt5-qtbase, kwindowsystem, liblxqt" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + diff --git a/x11-packages/lxqt-notificationd/build.sh b/x11-packages/lxqt-notificationd/build.sh new file mode 100644 index 000000000..66b484c52 --- /dev/null +++ b/x11-packages/lxqt-notificationd/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="The LXQt notification daemon" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-notificationd/releases/download/${TERMUX_PKG_VERSION}/lxqt-notificationd-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=d392cac3d7300a6b8be3431fdde37f453ac439b6fd52b39e6bdeba9ad7a1cab7 +TERMUX_PKG_DEPENDS="qt5-qtbase, liblxqt" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + diff --git a/x11-packages/lxqt-openssh-askpass/build.sh b/x11-packages/lxqt-openssh-askpass/build.sh new file mode 100644 index 000000000..f3c8802a4 --- /dev/null +++ b/x11-packages/lxqt-openssh-askpass/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="GUI to query passwords on behalf of SSH agents" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-openssh-askpass/releases/download/${TERMUX_PKG_VERSION}/lxqt-openssh-askpass-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=19322332443151ceadc24f4eea12188eb7dd08c77fb0f41dcd6ee92018f2ac3d +TERMUX_PKG_DEPENDS="qt5-qtbase, liblxqt" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + diff --git a/x11-packages/lxqt-panel/build.sh b/x11-packages/lxqt-panel/build.sh new file mode 100644 index 000000000..711521eec --- /dev/null +++ b/x11-packages/lxqt-panel/build.sh @@ -0,0 +1,27 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="The LXQt desktop panel" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.1 +TERMUX_PKG_REVISION=5 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-panel/releases/download/${TERMUX_PKG_VERSION}/lxqt-panel-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=1830fb5a595495176eed61cb0fc9d5535e3954ed6b8f04a741a4295883764ccc +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtx11extras, kwindowsystem, liblxqt, libsysstat, lxqt-globalkeys, libdbusmenu-qt, libxcb, pulseaudio, lxmenu-data" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" +# TODO +# CPULOAD and NETWORKMONITOR require libstatgrab +# MOUNT plugin requires KF5Solid +# SENSORS plugin requires lm_sensors +TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" +-DCPULOAD_PLUGIN=OFF +-DNETWORKMONITOR_PLUGIN=OFF +-DMOUNT_PLUGIN=OFF +-DSENSORS_PLUGIN=OFF +-DVOLUME_USE_ALSA=OFF +" + +termux_step_pre_configure() { + # Add RUNPATH to the private libraries used by lxqt-panel's plugins + LDFLAGS+=" -Wl,-rpath=${TERMUX_PREFIX}/lib/lxqt-panel" + export LDFLAGS +} diff --git a/x11-packages/lxqt-qtplugin/build.sh b/x11-packages/lxqt-qtplugin/build.sh new file mode 100644 index 000000000..136b45f10 --- /dev/null +++ b/x11-packages/lxqt-qtplugin/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="LXQt platform integration plugin for Qt 5" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-qtplugin/releases/download/${TERMUX_PKG_VERSION}/lxqt-qtplugin-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=65ef1156eb3257bd875e944963968585b042262d6b673ec6506d8fe7fa528691 +TERMUX_PKG_DEPENDS="qt5-qtbase, kwindowsystem, libqtxdg, libfm-qt, libexif, libdbusmenu-qt" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + diff --git a/x11-packages/lxqt-runner/add_missing_wordexp.patch b/x11-packages/lxqt-runner/add_missing_wordexp.patch new file mode 100644 index 000000000..58ea4ef6c --- /dev/null +++ b/x11-packages/lxqt-runner/add_missing_wordexp.patch @@ -0,0 +1,269 @@ +diff -uNr src/CMakeLists.txt src.mod/CMakeLists.txt +--- src/CMakeLists.txt 2021-04-11 09:01:40.000000000 +0000 ++++ src.mod/CMakeLists.txt 2021-05-21 09:09:57.339178000 +0000 +@@ -71,6 +71,7 @@ + providers.h + yamlparser.h + configuredialog/configuredialog.h ++ wordexp.h + ) + + set(lxqt-runner_CPP_FILES +@@ -81,6 +82,7 @@ + providers.cpp + yamlparser.cpp + configuredialog/configuredialog.cpp ++ wordexp.c + ) + + set(lxqt-runner_UI_FILES +diff -uNr src/wordexp.c src.mod/wordexp.c +--- src/wordexp.c 1970-01-01 00:00:00.000000000 +0000 ++++ src.mod/wordexp.c 2021-05-21 09:10:10.115178000 +0000 +@@ -0,0 +1,184 @@ ++// Copied from http://git.musl-libc.org/cgit/musl/plain/src/misc/wordexp.c ++// pthread-related lines are removed because they're missing on Android ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static void reap(pid_t pid) ++{ ++ int status; ++ while (waitpid(pid, &status, 0) < 0 && errno == EINTR); ++} ++ ++static char *getword(FILE *f) ++{ ++ char *s = 0; ++ return getdelim(&s, (size_t [1]){0}, 0, f) < 0 ? 0 : s; ++} ++ ++static int do_wordexp(const char *s, wordexp_t *we, int flags) ++{ ++ size_t i, l; ++ int sq=0, dq=0; ++ size_t np=0; ++ char *w, **tmp; ++ char *redir = (flags & WRDE_SHOWERR) ? "" : "2>/dev/null"; ++ int err = 0; ++ FILE *f; ++ size_t wc = 0; ++ char **wv = 0; ++ int p[2]; ++ pid_t pid; ++ sigset_t set; ++ ++ if (flags & WRDE_REUSE) wordfree(we); ++ ++ if (flags & WRDE_NOCMD) for (i=0; s[i]; i++) switch (s[i]) { ++ case '\\': ++ if (!sq && !s[++i]) return WRDE_SYNTAX; ++ break; ++ case '\'': ++ if (!dq) sq^=1; ++ break; ++ case '"': ++ if (!sq) dq^=1; ++ break; ++ case '(': ++ if (np) { ++ np++; ++ break; ++ } ++ case ')': ++ if (np) { ++ np--; ++ break; ++ } ++ case '\n': ++ case '|': ++ case '&': ++ case ';': ++ case '<': ++ case '>': ++ case '{': ++ case '}': ++ if (!(sq|dq|np)) return WRDE_BADCHAR; ++ break; ++ case '$': ++ if (sq) break; ++ if (s[i+1]=='(' && s[i+2]=='(') { ++ i += 2; ++ np += 2; ++ break; ++ } else if (s[i+1] != '(') break; ++ case '`': ++ if (sq) break; ++ return WRDE_CMDSUB; ++ } ++ ++ if (flags & WRDE_APPEND) { ++ wc = we->we_wordc; ++ wv = we->we_wordv; ++ } ++ ++ i = wc; ++ if (flags & WRDE_DOOFFS) { ++ if (we->we_offs > SIZE_MAX/sizeof(void *)/4) ++ goto nospace; ++ i += we->we_offs; ++ } else { ++ we->we_offs = 0; ++ } ++ ++ if (pipe2(p, O_CLOEXEC) < 0) goto nospace; ++ pid = fork(); ++ if (pid < 0) { ++ close(p[0]); ++ close(p[1]); ++ goto nospace; ++ } ++ if (!pid) { ++ if (p[1] == 1) fcntl(1, F_SETFD, 0); ++ else dup2(p[1], 1); ++ execl("/bin/sh", "sh", "-c", ++ "eval \"printf %s\\\\\\\\0 x $1 $2\"", ++ "sh", s, redir, (char *)0); ++ _exit(1); ++ } ++ close(p[1]); ++ ++ f = fdopen(p[0], "r"); ++ if (!f) { ++ close(p[0]); ++ kill(pid, SIGKILL); ++ reap(pid); ++ goto nospace; ++ } ++ ++ l = wv ? i+1 : 0; ++ ++ free(getword(f)); ++ if (feof(f)) { ++ fclose(f); ++ reap(pid); ++ return WRDE_SYNTAX; ++ } ++ ++ while ((w = getword(f))) { ++ if (i+1 >= l) { ++ l += l/2+10; ++ tmp = realloc(wv, l*sizeof(char *)); ++ if (!tmp) break; ++ wv = tmp; ++ } ++ wv[i++] = w; ++ wv[i] = 0; ++ } ++ if (!feof(f)) err = WRDE_NOSPACE; ++ ++ fclose(f); ++ reap(pid); ++ ++ if (!wv) wv = calloc(i+1, sizeof *wv); ++ ++ we->we_wordv = wv; ++ we->we_wordc = i; ++ ++ if (flags & WRDE_DOOFFS) { ++ if (wv) for (i=we->we_offs; i; i--) ++ we->we_wordv[i-1] = 0; ++ we->we_wordc -= we->we_offs; ++ } ++ return err; ++ ++nospace: ++ if (!(flags & WRDE_APPEND)) { ++ we->we_wordc = 0; ++ we->we_wordv = 0; ++ } ++ return WRDE_NOSPACE; ++} ++ ++int wordexp(const char *restrict s, wordexp_t *restrict we, int flags) ++{ ++ int r, cs; ++ r = do_wordexp(s, we, flags); ++ return r; ++} ++ ++void wordfree(wordexp_t *we) ++{ ++ size_t i; ++ if (!we->we_wordv) return; ++ for (i=0; iwe_wordc; i++) free(we->we_wordv[we->we_offs+i]); ++ free(we->we_wordv); ++ we->we_wordv = 0; ++ we->we_wordc = 0; ++} +diff -uNr src/wordexp.h src.mod/wordexp.h +--- src/wordexp.h 1970-01-01 00:00:00.000000000 +0000 ++++ src.mod/wordexp.h 2021-05-21 09:10:06.255178000 +0000 +@@ -0,0 +1,58 @@ ++/* Copyright (C) 1991, 92, 1996-1999, 2001, 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++#ifndef _WORDEXP_H ++#define _WORDEXP_H 1 ++#include ++#define __need_size_t ++#include ++__BEGIN_DECLS ++/* Bits set in the FLAGS argument to `wordexp'. */ ++enum ++ { ++ WRDE_DOOFFS = (1 << 0), /* Insert PWORDEXP->we_offs NULLs. */ ++ WRDE_APPEND = (1 << 1), /* Append to results of a previous call. */ ++ WRDE_NOCMD = (1 << 2), /* Don't do command substitution. */ ++ WRDE_REUSE = (1 << 3), /* Reuse storage in PWORDEXP. */ ++ WRDE_SHOWERR = (1 << 4), /* Don't redirect stderr to /dev/null. */ ++ WRDE_UNDEF = (1 << 5), /* Error for expanding undefined variables. */ ++ __WRDE_FLAGS = (WRDE_DOOFFS | WRDE_APPEND | WRDE_NOCMD | ++ WRDE_REUSE | WRDE_SHOWERR | WRDE_UNDEF) ++ }; ++/* Structure describing a word-expansion run. */ ++typedef struct ++ { ++ size_t we_wordc; /* Count of words matched. */ ++ char **we_wordv; /* List of expanded words. */ ++ size_t we_offs; /* Slots to reserve in `we_wordv'. */ ++ } wordexp_t; ++/* Possible nonzero return values from `wordexp'. */ ++enum ++ { ++#ifdef __USE_XOPEN ++ WRDE_NOSYS = -1, /* Never used since we support `wordexp'. */ ++#endif ++ WRDE_NOSPACE = 1, /* Ran out of memory. */ ++ WRDE_BADCHAR, /* A metachar appears in the wrong place. */ ++ WRDE_BADVAL, /* Undefined var reference with WRDE_UNDEF. */ ++ WRDE_CMDSUB, /* Command substitution with WRDE_NOCMD. */ ++ WRDE_SYNTAX /* Shell syntax error. */ ++ }; ++/* Do word expansion of WORDS into PWORDEXP. */ ++extern int wordexp (__const char *__restrict __words, ++ wordexp_t *__restrict __pwordexp, int __flags); ++/* Free the storage allocated by a `wordexp' call. */ ++extern void wordfree (wordexp_t *__wordexp); ++__END_DECLS ++#endif /* wordexp.h */ diff --git a/x11-packages/lxqt-runner/build.sh b/x11-packages/lxqt-runner/build.sh new file mode 100644 index 000000000..e760ef3f6 --- /dev/null +++ b/x11-packages/lxqt-runner/build.sh @@ -0,0 +1,13 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="LXQt application launcher" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=5 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-runner/releases/download/${TERMUX_PKG_VERSION}/lxqt-runner-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=24a68c50961e1157aabdb9a3899727f50012b77e401c15447c9bdc3af792a358 +TERMUX_PKG_DEPENDS="qt5-qtbase, libqtxdg, kwindowsystem, liblxqt, lxqt-globalkeys" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + +# TODO runner math depends on muparser +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="-DRUNNER_MATH=OFF" diff --git a/x11-packages/lxqt-runner/no_mathitem.patch b/x11-packages/lxqt-runner/no_mathitem.patch new file mode 100644 index 000000000..f162604fc --- /dev/null +++ b/x11-packages/lxqt-runner/no_mathitem.patch @@ -0,0 +1,14 @@ +We've disabled math plugin at the moment. +This patch is probably not needed when -DRUNNER_MATH=ON +--- src/dialog.cpp 2021-04-11 09:01:40.000000000 +0000 ++++ src.mod/dialog.cpp 2021-05-20 16:11:59.594667000 +0000 +@@ -498,8 +498,7 @@ + if (res) + { + hide(); +- if (!qobject_cast(command)) // don't clear math results +- ui->commandEd->clear(); ++ ui->commandEd->clear(); + } + + } diff --git a/x11-packages/lxqt-session/add_missing_wordexp.patch b/x11-packages/lxqt-session/add_missing_wordexp.patch new file mode 100644 index 000000000..9ff8a5972 --- /dev/null +++ b/x11-packages/lxqt-session/add_missing_wordexp.patch @@ -0,0 +1,274 @@ +diff -uNr src/lxqt-session/CMakeLists.txt src.mod/lxqt-session/CMakeLists.txt +--- src/lxqt-session/CMakeLists.txt 2021-05-21 09:21:12.474337000 +0000 ++++ src.mod/lxqt-session/CMakeLists.txt 2021-05-21 09:19:27.994338000 +0000 +@@ -28,6 +28,8 @@ + src/numlock.h + src/log.cpp + src/procreaper.cpp ++ src/wordexp.h ++ src/wordexp.c + ) + if (WITH_LIBUDEV) + list(APPEND lxqt-session_SRCS src/UdevNotifier.cpp) +diff -uNr src/lxqt-session/src/lxqtmodman.cpp src.mod/lxqt-session/src/lxqtmodman.cpp +--- src/lxqt-session/src/lxqtmodman.cpp 2021-04-16 16:36:14.000000000 +0000 ++++ src.mod/lxqt-session/src/lxqtmodman.cpp 2021-05-21 09:21:32.128509000 +0000 +@@ -43,7 +43,7 @@ + #include + #include "wmselectdialog.h" + #include "windowmanager.h" +-#include ++#include "wordexp.h" + #include "log.h" + + #include +diff -uNr src/lxqt-session/src/wordexp.c src.mod/lxqt-session/src/wordexp.c +--- src/lxqt-session/src/wordexp.c 1970-01-01 00:00:00.000000000 +0000 ++++ src.mod/lxqt-session/src/wordexp.c 2021-05-21 09:17:56.854283000 +0000 +@@ -0,0 +1,184 @@ ++// Copied from http://git.musl-libc.org/cgit/musl/plain/src/misc/wordexp.c ++// pthread-related lines are removed because they're missing on Android ++#include "wordexp.h" ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static void reap(pid_t pid) ++{ ++ int status; ++ while (waitpid(pid, &status, 0) < 0 && errno == EINTR); ++} ++ ++static char *getword(FILE *f) ++{ ++ char *s = 0; ++ return getdelim(&s, (size_t [1]){0}, 0, f) < 0 ? 0 : s; ++} ++ ++static int do_wordexp(const char *s, wordexp_t *we, int flags) ++{ ++ size_t i, l; ++ int sq=0, dq=0; ++ size_t np=0; ++ char *w, **tmp; ++ char *redir = (flags & WRDE_SHOWERR) ? "" : "2>/dev/null"; ++ int err = 0; ++ FILE *f; ++ size_t wc = 0; ++ char **wv = 0; ++ int p[2]; ++ pid_t pid; ++ sigset_t set; ++ ++ if (flags & WRDE_REUSE) wordfree(we); ++ ++ if (flags & WRDE_NOCMD) for (i=0; s[i]; i++) switch (s[i]) { ++ case '\\': ++ if (!sq && !s[++i]) return WRDE_SYNTAX; ++ break; ++ case '\'': ++ if (!dq) sq^=1; ++ break; ++ case '"': ++ if (!sq) dq^=1; ++ break; ++ case '(': ++ if (np) { ++ np++; ++ break; ++ } ++ case ')': ++ if (np) { ++ np--; ++ break; ++ } ++ case '\n': ++ case '|': ++ case '&': ++ case ';': ++ case '<': ++ case '>': ++ case '{': ++ case '}': ++ if (!(sq|dq|np)) return WRDE_BADCHAR; ++ break; ++ case '$': ++ if (sq) break; ++ if (s[i+1]=='(' && s[i+2]=='(') { ++ i += 2; ++ np += 2; ++ break; ++ } else if (s[i+1] != '(') break; ++ case '`': ++ if (sq) break; ++ return WRDE_CMDSUB; ++ } ++ ++ if (flags & WRDE_APPEND) { ++ wc = we->we_wordc; ++ wv = we->we_wordv; ++ } ++ ++ i = wc; ++ if (flags & WRDE_DOOFFS) { ++ if (we->we_offs > SIZE_MAX/sizeof(void *)/4) ++ goto nospace; ++ i += we->we_offs; ++ } else { ++ we->we_offs = 0; ++ } ++ ++ if (pipe2(p, O_CLOEXEC) < 0) goto nospace; ++ pid = fork(); ++ if (pid < 0) { ++ close(p[0]); ++ close(p[1]); ++ goto nospace; ++ } ++ if (!pid) { ++ if (p[1] == 1) fcntl(1, F_SETFD, 0); ++ else dup2(p[1], 1); ++ execl("/bin/sh", "sh", "-c", ++ "eval \"printf %s\\\\\\\\0 x $1 $2\"", ++ "sh", s, redir, (char *)0); ++ _exit(1); ++ } ++ close(p[1]); ++ ++ f = fdopen(p[0], "r"); ++ if (!f) { ++ close(p[0]); ++ kill(pid, SIGKILL); ++ reap(pid); ++ goto nospace; ++ } ++ ++ l = wv ? i+1 : 0; ++ ++ free(getword(f)); ++ if (feof(f)) { ++ fclose(f); ++ reap(pid); ++ return WRDE_SYNTAX; ++ } ++ ++ while ((w = getword(f))) { ++ if (i+1 >= l) { ++ l += l/2+10; ++ tmp = realloc(wv, l*sizeof(char *)); ++ if (!tmp) break; ++ wv = tmp; ++ } ++ wv[i++] = w; ++ wv[i] = 0; ++ } ++ if (!feof(f)) err = WRDE_NOSPACE; ++ ++ fclose(f); ++ reap(pid); ++ ++ if (!wv) wv = calloc(i+1, sizeof *wv); ++ ++ we->we_wordv = wv; ++ we->we_wordc = i; ++ ++ if (flags & WRDE_DOOFFS) { ++ if (wv) for (i=we->we_offs; i; i--) ++ we->we_wordv[i-1] = 0; ++ we->we_wordc -= we->we_offs; ++ } ++ return err; ++ ++nospace: ++ if (!(flags & WRDE_APPEND)) { ++ we->we_wordc = 0; ++ we->we_wordv = 0; ++ } ++ return WRDE_NOSPACE; ++} ++ ++int wordexp(const char *restrict s, wordexp_t *restrict we, int flags) ++{ ++ int r, cs; ++ r = do_wordexp(s, we, flags); ++ return r; ++} ++ ++void wordfree(wordexp_t *we) ++{ ++ size_t i; ++ if (!we->we_wordv) return; ++ for (i=0; iwe_wordc; i++) free(we->we_wordv[we->we_offs+i]); ++ free(we->we_wordv); ++ we->we_wordv = 0; ++ we->we_wordc = 0; ++} +diff -uNr src/lxqt-session/src/wordexp.h src.mod/lxqt-session/src/wordexp.h +--- src/lxqt-session/src/wordexp.h 1970-01-01 00:00:00.000000000 +0000 ++++ src.mod/lxqt-session/src/wordexp.h 2021-05-21 09:17:53.811283000 +0000 +@@ -0,0 +1,58 @@ ++/* Copyright (C) 1991, 92, 1996-1999, 2001, 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++#ifndef _WORDEXP_H ++#define _WORDEXP_H 1 ++#include ++#define __need_size_t ++#include ++__BEGIN_DECLS ++/* Bits set in the FLAGS argument to `wordexp'. */ ++enum ++ { ++ WRDE_DOOFFS = (1 << 0), /* Insert PWORDEXP->we_offs NULLs. */ ++ WRDE_APPEND = (1 << 1), /* Append to results of a previous call. */ ++ WRDE_NOCMD = (1 << 2), /* Don't do command substitution. */ ++ WRDE_REUSE = (1 << 3), /* Reuse storage in PWORDEXP. */ ++ WRDE_SHOWERR = (1 << 4), /* Don't redirect stderr to /dev/null. */ ++ WRDE_UNDEF = (1 << 5), /* Error for expanding undefined variables. */ ++ __WRDE_FLAGS = (WRDE_DOOFFS | WRDE_APPEND | WRDE_NOCMD | ++ WRDE_REUSE | WRDE_SHOWERR | WRDE_UNDEF) ++ }; ++/* Structure describing a word-expansion run. */ ++typedef struct ++ { ++ size_t we_wordc; /* Count of words matched. */ ++ char **we_wordv; /* List of expanded words. */ ++ size_t we_offs; /* Slots to reserve in `we_wordv'. */ ++ } wordexp_t; ++/* Possible nonzero return values from `wordexp'. */ ++enum ++ { ++#ifdef __USE_XOPEN ++ WRDE_NOSYS = -1, /* Never used since we support `wordexp'. */ ++#endif ++ WRDE_NOSPACE = 1, /* Ran out of memory. */ ++ WRDE_BADCHAR, /* A metachar appears in the wrong place. */ ++ WRDE_BADVAL, /* Undefined var reference with WRDE_UNDEF. */ ++ WRDE_CMDSUB, /* Command substitution with WRDE_NOCMD. */ ++ WRDE_SYNTAX /* Shell syntax error. */ ++ }; ++/* Do word expansion of WORDS into PWORDEXP. */ ++extern int wordexp (__const char *__restrict __words, ++ wordexp_t *__restrict __pwordexp, int __flags); ++/* Free the storage allocated by a `wordexp' call. */ ++extern void wordfree (wordexp_t *__wordexp); ++__END_DECLS ++#endif /* wordexp.h */ diff --git a/x11-packages/lxqt-session/build.sh b/x11-packages/lxqt-session/build.sh new file mode 100644 index 000000000..ac54de035 --- /dev/null +++ b/x11-packages/lxqt-session/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="The LXQt session manager" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.1 +TERMUX_PKG_REVISION=5 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-session/releases/download/${TERMUX_PKG_VERSION}/lxqt-session-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=d9058ceedb355a43ea2ef070292fc30b0fb740640cf0b579131aaefbac779c47 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtx11extras, kwindowsystem, liblxqt, procps" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="-DWITH_LIBUDEV=OFF" diff --git a/x11-packages/lxqt-session/fhs_termux_prefix.patch b/x11-packages/lxqt-session/fhs_termux_prefix.patch new file mode 100644 index 000000000..0202bd312 --- /dev/null +++ b/x11-packages/lxqt-session/fhs_termux_prefix.patch @@ -0,0 +1,53 @@ +diff -uNr src/CMakeLists.txt src.mod/CMakeLists.txt +--- src/CMakeLists.txt 2021-05-21 09:22:54.192072000 +0000 ++++ src.mod/CMakeLists.txt 2021-05-21 09:29:32.473671000 +0000 +@@ -57,11 +57,11 @@ + + # startlxqt script + set(PREDEF_XDG_DATA_DIRS "$XDG_DATA_HOME") +-if(NOT("${LXQT_DATA_DIR}" MATCHES "^/usr(/local)?/share$")) ++if(NOT("${LXQT_DATA_DIR}" MATCHES "^@TERMUX_PREFIX@(/local)?/share$")) + set(PREDEF_XDG_DATA_DIRS "${PREDEF_XDG_DATA_DIRS}:${LXQT_DATA_DIR}") + endif() +-set(PREDEF_XDG_DATA_DIRS "${PREDEF_XDG_DATA_DIRS}:/usr/local/share:/usr/share") +-set(PREDEF_XDG_CONFIG_DIRS "/etc:${LXQT_ETC_XDG_DIR}:/usr/share") ++set(PREDEF_XDG_DATA_DIRS "${PREDEF_XDG_DATA_DIRS}:@TERMUX_PREFIX@/local/share:@TERMUX_PREFIX@/share") ++set(PREDEF_XDG_CONFIG_DIRS "@TERMUX_PREFIX@/etc:${LXQT_ETC_XDG_DIR}:@TERMUX_PREFIX@/share") + configure_file(startlxqt.in startlxqt @ONLY) + install(PROGRAMS + "${CMAKE_CURRENT_BINARY_DIR}/startlxqt" +diff -uNr src/lxqt-config-session/autostartedit.cpp src.mod/lxqt-config-session/autostartedit.cpp +--- src/lxqt-config-session/autostartedit.cpp 2021-04-16 16:36:14.000000000 +0000 ++++ src.mod/lxqt-config-session/autostartedit.cpp 2021-05-21 09:27:08.762448000 +0000 +@@ -58,7 +58,7 @@ + + void AutoStartEdit::browse() + { +- QString filePath = QFileDialog::getOpenFileName(this, tr("Select Application"), QSL("/usr/bin/")); ++ QString filePath = QFileDialog::getOpenFileName(this, tr("Select Application"), QSL("@TERMUX_PREFIX@/bin/")); + if (!filePath.isEmpty()) + ui->commandEdit->setText(filePath); + } +diff -uNr src/lxqt-config-session/sessionconfigwindow.cpp src.mod/lxqt-config-session/sessionconfigwindow.cpp +--- src/lxqt-config-session/sessionconfigwindow.cpp 2021-04-16 16:36:14.000000000 +0000 ++++ src.mod/lxqt-config-session/sessionconfigwindow.cpp 2021-05-21 09:26:22.519701000 +0000 +@@ -115,7 +115,7 @@ + const QString &prompt + ) + { +- QString fname = QFileDialog::getOpenFileName(cb, prompt, QSL("/usr/bin/")); ++ QString fname = QFileDialog::getOpenFileName(cb, prompt, QSL("@TERMUX_PREFIX@/bin/")); + if (fname.isEmpty()) + return; + +diff -uNr src/lxqt-session/src/wmselectdialog.cpp src.mod/lxqt-session/src/wmselectdialog.cpp +--- src/lxqt-session/src/wmselectdialog.cpp 2021-04-16 16:36:14.000000000 +0000 ++++ src.mod/lxqt-session/src/wmselectdialog.cpp 2021-05-21 09:25:20.941811000 +0000 +@@ -117,7 +117,7 @@ + if (item->data(1, TYPE_ROLE) != SELECT_DLG_TYPE) + return; + +- QString fname = QFileDialog::getOpenFileName(this, QString(), QSL("/usr/bin/")); ++ QString fname = QFileDialog::getOpenFileName(this, QString(), QSL("@TERMUX_PREFIX@/bin/")); + if (fname.isEmpty()) + return; diff --git a/x11-packages/lxqt-session/treat_android_as_linux.patch b/x11-packages/lxqt-session/treat_android_as_linux.patch new file mode 100644 index 000000000..8b854aef1 --- /dev/null +++ b/x11-packages/lxqt-session/treat_android_as_linux.patch @@ -0,0 +1,48 @@ +--- src/CMakeLists.txt 2021-04-16 16:36:14.000000000 +0000 ++++ src.mod/CMakeLists.txt 2021-05-20 14:57:23.675649000 +0000 +@@ -32,12 +32,7 @@ + find_package(X11 REQUIRED) + message(STATUS "Building with Qt${Qt5Core_VERSION}") + find_package(PkgConfig REQUIRED) +-if (CMAKE_SYSTEM_NAME STREQUAL "Linux") +- pkg_search_module(PROCPS REQUIRED libprocps) +-endif() +- +-# Please don't move, must be after lxqt +-find_package(XdgUserDirs REQUIRED) ++pkg_search_module(PROCPS REQUIRED libprocps) + + # Patch Version + set(LXQT_SESSION_PATCH_VERSION 1) +--- src/lxqt-session/CMakeLists.txt 2021-04-16 16:36:14.000000000 +0000 ++++ src.mod/lxqt-session/CMakeLists.txt 2021-05-20 15:00:28.556372000 +0000 +@@ -9,11 +9,9 @@ + include_directories( + ${X11_INCLUDE_DIR} + ) +-if (CMAKE_SYSTEM_NAME STREQUAL "Linux") +- include_directories( +- ${PROCPS_INCLUDE_DIRS} +- ) +-endif() ++include_directories( ++ ${PROCPS_INCLUDE_DIRS} ++) + + set(lxqt-session_HDRS "") + +@@ -67,11 +65,9 @@ + ${X11_LIBRARIES} + KF5::WindowSystem + ) +-if (CMAKE_SYSTEM_NAME STREQUAL "Linux") +- target_link_libraries(lxqt-session +- ${PROCPS_LIBRARIES} +- ) +-endif() ++target_link_libraries(lxqt-session ++ ${PROCPS_LIBRARIES} ++) + + if (WITH_LIBUDEV) + target_link_libraries(lxqt-session ${UDEV_LIBS}) diff --git a/x11-packages/lxqt-themes/build.sh b/x11-packages/lxqt-themes/build.sh new file mode 100644 index 000000000..bd29140ab --- /dev/null +++ b/x11-packages/lxqt-themes/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="Themes, graphics and icons for LXQt" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=2 +TERMUX_PKG_SRCURL="https://github.com/lxqt/lxqt-themes/releases/download/${TERMUX_PKG_VERSION}/lxqt-themes-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=3ff1960f593ffb591ebf8ce48a54953f30e6f7fac4880ad6eb1dbe9ecd67bb4e +TERMUX_PKG_DEPENDS="hicolor-icon-theme" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools" +TERMUX_PKG_PLATFORM_INDEPENDENT=true diff --git a/x11-packages/lxqt/build.sh b/x11-packages/lxqt/build.sh new file mode 100644 index 000000000..32b974963 --- /dev/null +++ b/x11-packages/lxqt/build.sh @@ -0,0 +1,12 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/termux/x11-packages +TERMUX_PKG_DESCRIPTION="A metapackage that installs all parts of the LXQt desktop environment" +TERMUX_PKG_LICENSE="Public Domain" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SKIP_SRC_EXTRACT=true +TERMUX_PKG_DEPENDS="pcmanfm-qt, qterminal, lxqt-session, lxqt-panel, lxqt-runner, lxqt-openssh-askpass, lxqt-notificationd, lxqt-globalkeys, lxqt-config, lxqt-archiver, lxqt-about, lximage-qt, obconf-qt, lxqt-qtplugin, lxqt-themes, pavucontrol-qt" +TERMUX_PKG_RECOMMENDS="kvantum" +TERMUX_PKG_SUGGESTS="papirus-icon-theme" +TERMUX_PKG_METAPACKAGE=true +TERMUX_PKG_PLATFORM_INDEPENDENT=true diff --git a/x11-packages/lyx/build.sh b/x11-packages/lyx/build.sh new file mode 100644 index 000000000..75821bcd7 --- /dev/null +++ b/x11-packages/lyx/build.sh @@ -0,0 +1,24 @@ +TERMUX_PKG_HOMEPAGE=http://www.lyx.org +TERMUX_PKG_DESCRIPTION="WYSIWYM (What You See Is What You Mean) Document Processor" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=2.3.6.1 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://ftp.lip6.fr/pub/lyx/stable/2.3.x/lyx-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=c6bed2633419898e01a7cc350310d7d934bf591cab7259fc2581aa4c00eafa78 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtsvg, zlib, imagemagick, ghostscript, texlive-bin, hunspell" +TERMUX_PKG_BUILD_DEPENDS="boost, qt5-qtbase-cross-tools" +TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" +--enable-build-type=rel +--enable-qt5 +--without-included-boost +--without-aspell +--with-hunspell +" +TERMUX_PKG_RM_AFTER_INSTALL="share/lyx/examples" + + +termux_step_pre_configure() { + # This is to allow the build script find the `moc` on cross-build host + export PATH+=":${TERMUX_PREFIX}/opt/qt/cross/bin" +} diff --git a/x11-packages/obconf-qt/build.sh b/x11-packages/obconf-qt/build.sh new file mode 100644 index 000000000..e6b75f1e1 --- /dev/null +++ b/x11-packages/obconf-qt/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="OpenBox window manager configuration tool" +TERMUX_PKG_LICENSE="LGPL-2.1" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.16.1 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="https://github.com/lxqt/obconf-qt/releases/download/${TERMUX_PKG_VERSION}/obconf-qt-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=458d96b63dca8a09a4f477d42030d829e8090aae0ea39b3994fcf0b8da8e8b42 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtx11extras, glib, openbox, liblxqt, hicolor-icon-theme" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + diff --git a/x11-packages/pavucontrol-qt/build.sh b/x11-packages/pavucontrol-qt/build.sh new file mode 100644 index 000000000..402dba913 --- /dev/null +++ b/x11-packages/pavucontrol-qt/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="Qt port of volume control of sound server PulseAudio" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="https://github.com/lxqt/pavucontrol-qt/releases/download/${TERMUX_PKG_VERSION}/pavucontrol-qt-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=6c274cd3a80a699c4b3f4dbf4eccaef3fafdc677c6240e2b45672bafe46da170 +TERMUX_PKG_DEPENDS="qt5-qtbase, kwindowsystem, liblxqt, pulseaudio-glib" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + diff --git a/x11-packages/pcmanfm-qt/build.sh b/x11-packages/pcmanfm-qt/build.sh new file mode 100644 index 000000000..bcf2b45ba --- /dev/null +++ b/x11-packages/pcmanfm-qt/build.sh @@ -0,0 +1,11 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="PCManFM-Qt is the file manager of LXQt" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=5 +TERMUX_PKG_SRCURL="https://github.com/lxqt/pcmanfm-qt/releases/download/${TERMUX_PKG_VERSION}/pcmanfm-qt-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=74acbf55cdb22bd4d0068ef22ba298254ce6de72374624fcf3087c016d3bbaab +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtx11extras, libfm-qt, liblxqt, lxmenu-data" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qtbase-cross-tools, qt5-qttools-cross-tools" + diff --git a/x11-packages/qgit/build.sh b/x11-packages/qgit/build.sh new file mode 100644 index 000000000..2022ffe28 --- /dev/null +++ b/x11-packages/qgit/build.sh @@ -0,0 +1,16 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/tibirna/qgit +TERMUX_PKG_DESCRIPTION="A git GUI viewer" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=2.9 +TERMUX_PKG_REVISION=22 +TERMUX_PKG_SRCURL=https://github.com/tibirna/qgit/archive/qgit-${TERMUX_PKG_VERSION}.tar.gz +TERMUX_PKG_SHA256=69788efda7d434d1bc094bb414bd92c269dc7894326320634500b05d63c008e8 +TERMUX_PKG_DEPENDS="git, hicolor-icon-theme, qt5-qtbase" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true + +termux_step_configure() { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} diff --git a/x11-packages/qscintilla/build.sh b/x11-packages/qscintilla/build.sh new file mode 100644 index 000000000..0d54e3dbf --- /dev/null +++ b/x11-packages/qscintilla/build.sh @@ -0,0 +1,32 @@ +TERMUX_PKG_HOMEPAGE=https://riverbankcomputing.com/software/qscintilla +TERMUX_PKG_DESCRIPTION="QScintilla is a port to Qt of the Scintilla editing component" +TERMUX_PKG_LICENSE="GPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=2.12.1 +TERMUX_PKG_REVISION=5 +TERMUX_PKG_SRCURL="https://www.riverbankcomputing.com/static/Downloads/QScintilla/${TERMUX_PKG_VERSION}/QScintilla_src-${TERMUX_PKG_VERSION}.tar.gz" +TERMUX_PKG_SHA256=a7331c44b5d7320cbf58cb2382c38857e9e9f4fa52c405bd7776c8b6649836c2 +TERMUX_PKG_DEPENDS="qt5-qtbase" +# qttools is only needed to build Qt Designer's plugins +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools, qt5-qttools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true +TERMUX_PKG_EXTRA_MAKE_ARGS="-C src" + +termux_step_configure () { + for i in src designer; do + cd "${TERMUX_PKG_SRCDIR}/${i}" && { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" + } + done + unset i +} + +termux_step_post_make_install() { + cd "${TERMUX_PKG_SRCDIR}/designer" && { + make -j "${TERMUX_MAKE_PROCESSES}" + make install + } +} + diff --git a/x11-packages/qscintilla/no_accessibility.patch b/x11-packages/qscintilla/no_accessibility.patch new file mode 100644 index 000000000..07f7b71d0 --- /dev/null +++ b/x11-packages/qscintilla/no_accessibility.patch @@ -0,0 +1,12 @@ +qt5-qtbase in Termux doesn't build accessibility +--- src/src/qscintilla.pro 2021-05-09 12:23:05.233865021 +0000 ++++ src.mod/src/qscintilla.pro 2021-05-09 12:22:58.033891538 +0000 +@@ -23,6 +23,8 @@ + TEMPLATE = lib + CONFIG += qt warn_off thread exceptions hide_symbols + ++DEFINES += QT_NO_ACCESSIBILITY ++ + CONFIG(debug, debug|release) { + mac: { + TARGET = qscintilla2_qt$${QT_MAJOR_VERSION}_debug diff --git a/x11-packages/qt5-qtdeclarative/build.sh b/x11-packages/qt5-qtdeclarative/build.sh new file mode 100644 index 000000000..a803c3628 --- /dev/null +++ b/x11-packages/qt5-qtdeclarative/build.sh @@ -0,0 +1,133 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="The Qt Declarative module provides classes for using GUIs created using QML" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/5.12/${TERMUX_PKG_VERSION}/submodules/qtdeclarative-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=1267e029abc8424424c419bc1681db069ec76e51270cc220994e0f442c9f78d3 +TERMUX_PKG_DEPENDS="qt5-qtbase" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +# Ignore bootstrap changes because of the hijacking +TERMUX_PKG_RM_AFTER_INSTALL=" +opt/qt/cross/lib/libQt5Bootstrap.* +" + +# Replacing the old qt5-base packages +TERMUX_PKG_REPLACES="qt5-declarative" + +termux_step_pre_configure () { + ####################################################### + ## + ## Hijack the bootstrap library for cross building + ## + ####################################################### + for i in a prl; do + cp -p "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}" \ + "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}.bak" + ln -s -f "${TERMUX_PREFIX}/lib/libQt5Bootstrap.${i}" \ + "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}" + done + unset i +} + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} + +termux_step_post_make_install () { + ####################################################### + ## + ## Compiling necessary binaries for target. + ## + ####################################################### + + ## Qt Declarative utilities. + for i in qmlcachegen qmlimportscanner qmllint qmlmin; do + cd "${TERMUX_PKG_SRCDIR}/tools/${i}" && { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" + + make -j "${TERMUX_MAKE_PROCESSES}" + install -Dm700 "../../bin/${i}" "${TERMUX_PREFIX}/bin/${i}" + } + done + + # Install the QmlDevTools for target (needed by some packages such as qttools) + install -Dm644 ${TERMUX_PKG_SRCDIR}/lib/libQt5QmlDevTools.a "${TERMUX_PREFIX}/lib/libQt5QmlDevTools.a" + install -Dm644 ${TERMUX_PKG_SRCDIR}/lib/libQt5QmlDevTools.prl "${TERMUX_PREFIX}/lib/libQt5QmlDevTools.prl" + sed -i 's|/opt/qt/cross/|/|g' "${TERMUX_PREFIX}/lib/libQt5QmlDevTools.prl" + + ####################################################### + ## + ## Restore the bootstrap library + ## + ####################################################### + for i in a prl; do + rm -f "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}" + cp -p "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}.bak" \ + "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}" + rm -f "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}.bak" + done + unset i + + ####################################################### + ## + ## Compiling necessary binaries for the host + ## + ####################################################### + + ## libQt5QmlDevTools.a (qt5-declarative) + cd "${TERMUX_PKG_SRCDIR}/src/qmldevtools" && { + make clean + + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-host" + + make -j "${TERMUX_MAKE_PROCESSES}" + install -Dm644 ../../lib/libQt5QmlDevTools.a "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5QmlDevTools.a" + install -Dm644 ../../lib/libQt5QmlDevTools.prl "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5QmlDevTools.prl" + } + + ## Qt Declarative utilities. + for i in qmlcachegen qmlimportscanner qmllint qmlmin; do + cd "${TERMUX_PKG_SRCDIR}/tools/${i}" && { + make clean + + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-host" + + make -j "${TERMUX_MAKE_PROCESSES}" + install -Dm700 "../../bin/${i}" "${TERMUX_PREFIX}/opt/qt/cross/bin/${i}" + } + done + + ####################################################### + ## + ## Fixes & cleanup. + ## + ####################################################### + + # Limit the scope, otherwise it'll touch qtbase files + for pref in Qml Quick Packet; do + ## Drop QMAKE_PRL_BUILD_DIR because reference the build dir. + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5${pref}*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + done + unset pref + sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5QmlDevTools.prl" + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete + find "${TERMUX_PREFIX}/opt/qt/cross/lib" -iname \*.la -delete +} + +termux_step_create_debscripts() { + # Some clean-up is happening via `postinst` + # Because we're using this package in both host (Ubuntu glibc) and device (Termux) + cp -f "${TERMUX_PKG_BUILDER_DIR}/postinst" ./ +} diff --git a/x11-packages/qt5-qtdeclarative/postinst b/x11-packages/qt5-qtdeclarative/postinst new file mode 100755 index 000000000..7687e9067 --- /dev/null +++ b/x11-packages/qt5-qtdeclarative/postinst @@ -0,0 +1,12 @@ +#!/data/data/com.termux/files/usr/bin/sh + +PREFIX="/data/data/com.termux/files/usr" + +if [ `uname -o` = 'Android' ]; then + echo "Patching Qt installation configuration files ..." + + ## Make sure the cmake configurations point to the on-device programs instead of the host tools + sed -i \ + 's|install_prefix}/opt/qt/cross/|install_prefix}/|g' \ + "${PREFIX}/lib/cmake/Qt5QuickCompiler/Qt5QuickCompilerConfig.cmake" +fi diff --git a/x11-packages/qt5-qtdeclarative/qt5-qtdeclarative-cross-tools.subpackage.sh b/x11-packages/qt5-qtdeclarative/qt5-qtdeclarative-cross-tools.subpackage.sh new file mode 100644 index 000000000..5dfa67b4d --- /dev/null +++ b/x11-packages/qt5-qtdeclarative/qt5-qtdeclarative-cross-tools.subpackage.sh @@ -0,0 +1,5 @@ +TERMUX_SUBPKG_DESCRIPTION="Qt declarative module for cross build (NOT for Termux)" +TERMUX_SUBPKG_DEPENDS="qt5-qtdeclarative" +TERMUX_SUBPKG_INCLUDE=" +opt/qt/cross/* +" diff --git a/x11-packages/qt5-qtlocation/build.sh b/x11-packages/qt5-qtlocation/build.sh new file mode 100644 index 000000000..06970e428 --- /dev/null +++ b/x11-packages/qt5-qtlocation/build.sh @@ -0,0 +1,35 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="Qt 5 Location Library" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/5.12/${TERMUX_PKG_VERSION}/submodules/qtlocation-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=a3384357703f76fa2e352e4dfaa30d197098b77a3672ea85bd8925dbe357f00b +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtdeclarative" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} + +termux_step_post_make_install() { + ####################################################### + ## + ## Fixes & cleanup. + ## + ####################################################### + + ## Drop QMAKE_PRL_BUILD_DIR because reference the build dir. + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5Location*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5Position*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete +} + diff --git a/x11-packages/qt5-qtmultimedia/build.sh b/x11-packages/qt5-qtmultimedia/build.sh new file mode 100644 index 000000000..ecd366da9 --- /dev/null +++ b/x11-packages/qt5-qtmultimedia/build.sh @@ -0,0 +1,40 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="Qt 5 Multimedia Library" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/5.12/${TERMUX_PKG_VERSION}/submodules/qtmultimedia-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=918d253e9b5bca4f030e4207b2329d6a96c9901a5f52c5ed84725709aa54ee27 +# qt5-qtdeclarative is not needed because quick widget requires OpenGL +TERMUX_PKG_DEPENDS="qt5-qtbase, pulseaudio, openal-soft, gstreamer, gst-plugins-base, gst-plugins-bad" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" \ + GST_VERSION=1.0 \ + INCLUDEPATH+="${TERMUX_PREFIX}/include/gstreamer-1.0/" \ + INCLUDEPATH+="${TERMUX_PREFIX}/include/glib-2.0/" \ + INCLUDEPATH+="${TERMUX_PREFIX}/lib/glib-2.0/include" +} + +termux_step_make_install() { + make install + + ####################################################### + ## + ## Fixes & cleanup. + ## + ####################################################### + + ## Drop QMAKE_PRL_BUILD_DIR because reference the build dir. + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5Multimedia*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete +} + diff --git a/x11-packages/qt5-qtmultimedia/detect_libs_without_pkg_config.patch b/x11-packages/qt5-qtmultimedia/detect_libs_without_pkg_config.patch new file mode 100644 index 000000000..4fffc447d --- /dev/null +++ b/x11-packages/qt5-qtmultimedia/detect_libs_without_pkg_config.patch @@ -0,0 +1,34 @@ +--- src/src/multimedia/configure.json 2021-05-08 17:50:32.795445138 +0000 ++++ src.mod/src/multimedia/configure.json 2021-05-08 17:49:30.639754395 +0000 +@@ -71,7 +71,8 @@ + "test": "gstreamer_appsrc", + "use": "gstreamer_1_0", + "sources": [ +- { "type": "pkgConfig", "args": "gstreamer-app-1.0" } ++ { "type": "pkgConfig", "args": "gstreamer-app-1.0" }, ++ { "libs": "-lgstapp-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0" } + ] + }, + "gstreamer_photography_0_10": { +@@ -120,7 +121,8 @@ + "label": "PulseAudio >= 0.9.10", + "test": "pulseaudio", + "sources": [ +- { "type": "pkgConfig", "args": "libpulse >= 0.9.10 libpulse-mainloop-glib" } ++ { "type": "pkgConfig", "args": "libpulse >= 0.9.10 libpulse-mainloop-glib" }, ++ { "libs": "-lpulse", "condition": "config.unix" } + ] + }, + "wmf": { +--- src/src/multimedia/configure.json 2021-05-16 13:53:50.128205372 +0000 ++++ src.mod/src/multimedia/configure.json 2021-05-16 13:41:51.186432131 +0000 +@@ -53,7 +53,8 @@ + "test": "gstreamer", + "sources": [ + { "type": "pkgConfig", +- "args": "gstreamer-1.0 gstreamer-base-1.0 gstreamer-audio-1.0 gstreamer-video-1.0 gstreamer-pbutils-1.0" } ++ "args": "gstreamer-1.0 gstreamer-base-1.0 gstreamer-audio-1.0 gstreamer-video-1.0 gstreamer-pbutils-1.0" }, ++ { "libs": "-lgstpbutils-1.0 -lgstaudio-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgsttag-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0" } + ] + }, + "gstreamer_app_0_10": { diff --git a/x11-packages/qt5-qtmultimedia/gst_include_path.patch b/x11-packages/qt5-qtmultimedia/gst_include_path.patch new file mode 100644 index 000000000..a4d9c3b72 --- /dev/null +++ b/x11-packages/qt5-qtmultimedia/gst_include_path.patch @@ -0,0 +1,29 @@ +--- src/config.tests/gstreamer/gstreamer.pro 2020-10-15 06:53:20.000000000 +0000 ++++ src.mod/config.tests/gstreamer/gstreamer.pro 2021-05-16 13:59:14.419703082 +0000 +@@ -1,2 +1,5 @@ + SOURCES += main.cpp + ++INCLUDEPATH += "/data/data/com.termux/files/usr/include/gstreamer-1.0/" ++INCLUDEPATH += "/data/data/com.termux/files/usr/include/glib-2.0/" ++INCLUDEPATH += "/data/data/com.termux/files/usr/lib/glib-2.0/include" +--- src/config.tests/gstreamer_photography/gstreamer_photography.pro 2020-10-15 06:53:20.000000000 +0000 ++++ src.mod/config.tests/gstreamer_photography/gstreamer_photography.pro 2021-05-16 13:59:57.407079643 +0000 +@@ -1 +1,4 @@ + SOURCES += main.cpp ++INCLUDEPATH += "/data/data/com.termux/files/usr/include/gstreamer-1.0/" ++INCLUDEPATH += "/data/data/com.termux/files/usr/include/glib-2.0/" ++INCLUDEPATH += "/data/data/com.termux/files/usr/lib/glib-2.0/include" +--- src/config.tests/gstreamer_appsrc/gstreamer_appsrc.pro 2020-10-15 06:53:20.000000000 +0000 ++++ src.mod/config.tests/gstreamer_appsrc/gstreamer_appsrc.pro 2021-05-16 14:03:35.948676966 +0000 +@@ -1 +1,4 @@ + SOURCES += main.cpp ++INCLUDEPATH += "/data/data/com.termux/files/usr/include/gstreamer-1.0/" ++INCLUDEPATH += "/data/data/com.termux/files/usr/include/glib-2.0/" ++INCLUDEPATH += "/data/data/com.termux/files/usr/lib/glib-2.0/include" +--- src/config.tests/gstreamer_encodingprofiles/gstreamer_encodingprofiles.pro 2020-10-15 06:53:20.000000000 +0000 ++++ src.mod/config.tests/gstreamer_encodingprofiles/gstreamer_encodingprofiles.pro 2021-05-16 14:02:47.817110561 +0000 +@@ -1 +1,4 @@ + SOURCES += main.cpp ++INCLUDEPATH += "/data/data/com.termux/files/usr/include/gstreamer-1.0/" ++INCLUDEPATH += "/data/data/com.termux/files/usr/include/glib-2.0/" ++INCLUDEPATH += "/data/data/com.termux/files/usr/lib/glib-2.0/include" diff --git a/x11-packages/qt5-qtmultimedia/pulse_audio_without_glib.patch b/x11-packages/qt5-qtmultimedia/pulse_audio_without_glib.patch new file mode 100644 index 000000000..66d5adbfa --- /dev/null +++ b/x11-packages/qt5-qtmultimedia/pulse_audio_without_glib.patch @@ -0,0 +1,20 @@ +diff -uNr src/config.tests/pulseaudio/pulseaudio.cpp src.mod/config.tests/pulseaudio/pulseaudio.cpp +--- src/config.tests/pulseaudio/pulseaudio.cpp 2020-10-15 06:53:20.000000000 +0000 ++++ src.mod/config.tests/pulseaudio/pulseaudio.cpp 2021-05-08 17:18:24.844729781 +0000 +@@ -27,7 +27,7 @@ + ****************************************************************************/ + + #include +-#include ++#include + + #if !defined(PA_API_VERSION) || PA_API_VERSION-0 != 12 + # error "Incompatible PulseAudio API version" +@@ -37,6 +37,6 @@ + { + const char *headers = pa_get_headers_version(); + const char *library = pa_get_library_version(); +- pa_glib_mainloop_new(0); ++ pa_mainloop_new(); + return (headers - library) * 0; + } diff --git a/x11-packages/qt5-qtquickcontrols/build.sh b/x11-packages/qt5-qtquickcontrols/build.sh new file mode 100644 index 000000000..f5aeaeeda --- /dev/null +++ b/x11-packages/qt5-qtquickcontrols/build.sh @@ -0,0 +1,29 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="Qt Quick Controls module" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/${TERMUX_PKG_VERSION%.*}/${TERMUX_PKG_VERSION}/submodules/${TERMUX_PKG_NAME#qt5-}-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=cd6b81fda691ab15d25ac60b6a3437667a892e401438e07a64c88cadd3481389 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtdeclarative" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} + +termux_step_post_make_install() { + ####################################################### + ## + ## Fixes & cleanup. + ## + ####################################################### + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete +} + diff --git a/x11-packages/qt5-qtquickcontrols2/build.sh b/x11-packages/qt5-qtquickcontrols2/build.sh new file mode 100644 index 000000000..6b7342c43 --- /dev/null +++ b/x11-packages/qt5-qtquickcontrols2/build.sh @@ -0,0 +1,35 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="Qt Quick Controls2 module" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=4 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/5.12/${TERMUX_PKG_VERSION}/submodules/qtquickcontrols2-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=c05585f42db7c17fb7f344f8a9cabd38a4e9dff17b3d04ec35e8edab7ead355c +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtdeclarative" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} + +termux_step_post_make_install() { + ####################################################### + ## + ## Fixes & cleanup. + ## + ####################################################### + + ## Drop QMAKE_PRL_BUILD_DIR because reference the build dir. + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5QuickControls2*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5QuickTemplates2*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete +} + diff --git a/x11-packages/qt5-qtsensors/build.sh b/x11-packages/qt5-qtsensors/build.sh new file mode 100644 index 000000000..386447631 --- /dev/null +++ b/x11-packages/qt5-qtsensors/build.sh @@ -0,0 +1,33 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="Qt 5 Sensors Library" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/${TERMUX_PKG_VERSION%.*}/${TERMUX_PKG_VERSION}/submodules/${TERMUX_PKG_NAME#qt5-}-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=47b957c3334bbb5eda5e12a68f91505dd80dfc2337dadd63d4826aa72c430506 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtdeclarative" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} + +termux_step_post_make_install() { + ####################################################### + ## + ## Fixes & cleanup. + ## + ####################################################### + + ## Drop QMAKE_PRL_BUILD_DIR because reference the build dir. + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5Sensors*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete +} + diff --git a/x11-packages/qt5-qtsensors/no_librt.patch b/x11-packages/qt5-qtsensors/no_librt.patch new file mode 100644 index 000000000..519758326 --- /dev/null +++ b/x11-packages/qt5-qtsensors/no_librt.patch @@ -0,0 +1,31 @@ +--- src/src/plugins/sensors/dummy/dummy.pro 2020-10-15 06:53:19.000000000 +0000 ++++ src.mod/src/plugins/sensors/dummy/dummy.pro 2021-05-14 14:22:51.194482639 +0000 +@@ -12,8 +12,6 @@ + + OTHER_FILES = plugin.json + +-unix:!darwin:!qnx:!android:!openbsd: LIBS += -lrt +- + PLUGIN_TYPE = sensors + PLUGIN_CLASS_NAME = dummySensorPlugin + load(qt_plugin) +--- src/src/plugins/sensors/linux/linux.pro 2020-10-15 06:53:19.000000000 +0000 ++++ src.mod/src/plugins/sensors/linux/linux.pro 2021-05-14 14:22:09.604788205 +0000 +@@ -3,7 +3,6 @@ + + OTHER_FILES = plugin.json + +-!android:LIBS += -lrt + HEADERS += linuxsysaccelerometer.h + SOURCES += linuxsysaccelerometer.cpp \ + main.cpp +--- src/src/plugins/sensors/iio-sensor-proxy/iio-sensor-proxy.pro 2020-10-15 06:53:19.000000000 +0000 ++++ src.mod/src/plugins/sensors/iio-sensor-proxy/iio-sensor-proxy.pro 2021-05-14 14:28:09.397847029 +0000 +@@ -5,7 +5,6 @@ + PLUGIN_CLASS_NAME = IIOSensorProxySensorPlugin + load(qt_plugin) + +-!android:LIBS += -lrt + HEADERS += iiosensorproxysensorbase.h \ + iiosensorproxylightsensor.h \ + iiosensorproxyorientationsensor.h \ diff --git a/x11-packages/qt5-qtsvg/build.sh b/x11-packages/qt5-qtsvg/build.sh new file mode 100644 index 000000000..97adba739 --- /dev/null +++ b/x11-packages/qt5-qtsvg/build.sh @@ -0,0 +1,35 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="Qt SVG Library" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/5.12/${TERMUX_PKG_VERSION}/submodules/qtsvg-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=7a6857a2f68cfbebb9f791396b401a98e951c9bff9bfeb1b5b01914c3ea1a0ed +TERMUX_PKG_DEPENDS="qt5-qtbase" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} + +termux_step_make_install() { + make install + + ####################################################### + ## + ## Fixes & cleanup. + ## + ####################################################### + + ## Drop QMAKE_PRL_BUILD_DIR because reference the build dir. + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5Svg*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete +} + diff --git a/x11-packages/qt5-qttools/assistant.desktop b/x11-packages/qt5-qttools/assistant.desktop new file mode 100644 index 000000000..5b45739f0 --- /dev/null +++ b/x11-packages/qt5-qttools/assistant.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Categories=Qt;Development;Documentation; +Encoding=UTF-8 +Exec=assistant +Name=Qt Assistant +GenericName=Document Browser +X-KDE-StartupNotify=true +MimeType=application/x-assistant; +Terminal=false +Type=Application +Icon=assistant diff --git a/x11-packages/qt5-qttools/build.sh b/x11-packages/qt5-qttools/build.sh new file mode 100644 index 000000000..038d3eaae --- /dev/null +++ b/x11-packages/qt5-qttools/build.sh @@ -0,0 +1,232 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="Qt Development Tools (Linguist, Assistant, Designer, etc.)" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/5.12/${TERMUX_PKG_VERSION}/submodules/qttools-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=98b2aaca230458f65996f3534fd471d2ffd038dd58ac997c0589c06dc2385b4f +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtdeclarative" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools, qt5-qtdeclarative-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +# Ignore the bootstrap library that is touched by the hijack +TERMUX_PKG_RM_AFTER_INSTALL=" +opt/qt/cross/lib/libQt5Bootstrap.* +opt/qt/cross/lib/libQt5QmlDevTools.* +" + +# Replacing the old qt5-base packages +TERMUX_PKG_REPLACES="qt5-tools" + +termux_step_pre_configure () { + ####################################################### + ## + ## Hijack the bootstrap library + ## + ####################################################### + for i in Bootstrap QmlDevTools; do + cp -p "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5${i}.a" \ + "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5${i}.a.bak" + ln -s -f "${TERMUX_PREFIX}/lib/libQt5${i}.a" \ + "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5${i}.a" + cp -p "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5${i}.prl" \ + "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5${i}.prl.bak" + ln -s -f "${TERMUX_PREFIX}/lib/libQt5${i}.prl" \ + "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5${i}.prl" + done + unset i +} + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} + +termux_step_post_make_install() { + ####################################################### + ## + ## Compiling necessary programs for target. + ## + ####################################################### + + ## Some top-level tools + # FIXME: qdoc cannot be built at the moment because qmake couldn't find libclang when built with -I + for i in makeqpf pixeltool qev qtattributionsscanner; do + cd "${TERMUX_PKG_SRCDIR}/src/${i}" && { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" + + make -j "${TERMUX_MAKE_PROCESSES}" + install -Dm700 "../../bin/${i}" "${TERMUX_PREFIX}/bin/${i}" + } + done + unset i + + # QDbusViewer desktop file (the binary would be installed already) + install -D -m644 \ + "${TERMUX_PKG_SRCDIR}/src/qdbus/qdbusviewer/images/qdbusviewer.png" \ + "${TERMUX_PREFIX}/share/icons/hicolor/32x32/apps/qdbusviewer.png" + install -D -m644 \ + "${TERMUX_PKG_SRCDIR}/src/qdbus/qdbusviewer/images/qdbusviewer-128.png" \ + "${TERMUX_PREFIX}/share/icons/hicolor/128x128/apps/qdbusviewer.png" + install -D -m644 \ + "${TERMUX_PKG_BUILDER_DIR}/qdbusviewer.desktop" \ + "${TERMUX_PREFIX}/share/applications/qdbusviewer.desktop" + + # qdistancefieldgenerator (it has a different directory name but supports make install) + cd "${TERMUX_PKG_SRCDIR}/src/distancefieldgenerator" && { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" + + make -j "${TERMUX_MAKE_PROCESSES}" + make install + } + + ####################################################### + ## + ## Qt Linguist + ## + ####################################################### + + # Install the linguist utilities to the correct path + for i in lconvert lrelease lupdate; do + install -Dm700 "${TERMUX_PKG_SRCDIR}/bin/${i}" "${TERMUX_PREFIX}/bin/${i}" + done + + # Build and install linguist program + cd "${TERMUX_PKG_SRCDIR}/src/linguist/linguist" && { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" + make -j "${TERMUX_MAKE_PROCESSES}" + make install + } + + # Install the linguist desktop file + install -Dm644 \ + "${TERMUX_PKG_SRCDIR}/src/linguist/linguist/images/icons/linguist-32-32.png" \ + "${TERMUX_PREFIX}/share/icons/hicolor/32x32/apps/linguist.png" + install -Dm644 \ + "${TERMUX_PKG_SRCDIR}/src/linguist/linguist/images/icons/linguist-128-32.png" \ + "${TERMUX_PREFIX}/share/icons/hicolor/128x128/apps/linguist.png" + install -Dm644 \ + "${TERMUX_PKG_BUILDER_DIR}/linguist.desktop" \ + "${TERMUX_PREFIX}/share/applications/linguist.desktop" + + ####################################################### + ## + ## Qt Assistant + ## + ####################################################### + + for i in qcollectiongenerator qhelpgenerator assistant; do + cd "${TERMUX_PKG_SRCDIR}/src/assistant/${i}" && { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" + + make -j "${TERMUX_MAKE_PROCESSES}" + install -Dm700 "../../../bin/${i}" "${TERMUX_PREFIX}/bin/${i}" + } + done + + install -Dm644 \ + "${TERMUX_PKG_SRCDIR}/src/assistant/assistant/images/assistant.png" \ + "${TERMUX_PREFIX}/share/icons/hicolor/32x32/apps/assistant.png" + install -Dm644 \ + "${TERMUX_PKG_SRCDIR}/src/assistant/assistant/images/assistant-128.png" \ + "${TERMUX_PREFIX}/share/icons/hicolor/128x128/apps/assistant.png" + install -Dm644 \ + "${TERMUX_PKG_BUILDER_DIR}/assistant.desktop" \ + "${TERMUX_PREFIX}/share/applications/assistant.desktop" + + + ####################################################### + ## + ## Qt Designer + ## + ####################################################### + + for i in lib components designer plugins; do + cd "${TERMUX_PKG_SRCDIR}/src/designer/src/${i}" && { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" + + make -j "${TERMUX_MAKE_PROCESSES}" + make install + } + done + + install -Dm644 \ + "${TERMUX_PKG_SRCDIR}/src/designer/src/designer/images/designer.png" \ + "${TERMUX_PREFIX}/share/icons/hicolor/128x128/apps/designer.png" + install -Dm644 \ + "${TERMUX_PKG_BUILDER_DIR}/designer.desktop" \ + "${TERMUX_PREFIX}/share/applications/designer.desktop" + + + ####################################################### + ## + ## Restore the bootstrap library + ## + ####################################################### + for i in Bootstrap QmlDevTools; do + mv "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5${i}.a.bak" \ + "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5${i}.a" + mv "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5${i}.prl.bak" \ + "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5${i}.prl" + done + + + ####################################################### + ## + ## Compiling necessary programs for host + ## + ####################################################### + + # These programs were built and linked for the target + # We need to build them again but for the host + cd "${TERMUX_PKG_SRCDIR}/src/qtattributionsscanner" && { + make clean + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-host" + make -j "${TERMUX_MAKE_PROCESSES}" + install -Dm700 \ + "../../bin/qtattributionsscanner" \ + "${TERMUX_PREFIX}/opt/qt/cross/bin/qtattributionsscanner" + } + + for i in lconvert lrelease lupdate; do + cd "${TERMUX_PKG_SRCDIR}/src/linguist/${i}" && { + make clean + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-host" + make -j "${TERMUX_MAKE_PROCESSES}" + install -Dm700 "../../../bin/${i}" "${TERMUX_PREFIX}/opt/qt/cross/bin/${i}" + } + done + + ####################################################### + ## + ## Fixes & cleanup. + ## + ####################################################### + + # Limit the scope, otherwise it'll touch qtbase files + for pref in Designer Help UiTools UiPlugin; do + ## Drop QMAKE_PRL_BUILD_DIR because reference the build dir. + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5${pref}*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + done + unset pref + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete + find "${TERMUX_PREFIX}/opt/qt/cross/lib" -iname \*.la -delete +} + +termux_step_create_debscripts() { + # Some clean-up is happening via `postinst` + # Because we're using this package in both host (Ubuntu glibc) and device (Termux) + cp -f "${TERMUX_PKG_BUILDER_DIR}/postinst" ./ +} diff --git a/x11-packages/qt5-qttools/designer.desktop b/x11-packages/qt5-qttools/designer.desktop new file mode 100644 index 000000000..accf09501 --- /dev/null +++ b/x11-packages/qt5-qttools/designer.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Categories=Qt;Development;GUIDesigner; +Encoding=UTF-8 +Exec=designer +Name=Qt Designer +GenericName=Interface Designer +X-KDE-StartupNotify=true +MimeType=application/x-designer; +Icon=designer +Terminal=false +Type=Application diff --git a/x11-packages/qt5-qttools/linguist.desktop b/x11-packages/qt5-qttools/linguist.desktop new file mode 100644 index 000000000..6e27a855b --- /dev/null +++ b/x11-packages/qt5-qttools/linguist.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Categories=Qt;Development;Translation; +Encoding=UTF-8 +Exec=linguist +Name=Qt Linguist +GenericName=Translation Tool +X-KDE-StartupNotify=true +MimeType=application/x-linguist; +Terminal=false +Type=Application +Icon=linguist diff --git a/x11-packages/qt5-qttools/postinst b/x11-packages/qt5-qttools/postinst new file mode 100755 index 000000000..0537ba0b9 --- /dev/null +++ b/x11-packages/qt5-qttools/postinst @@ -0,0 +1,15 @@ +#!/data/data/com.termux/files/usr/bin/sh + +PREFIX="/data/data/com.termux/files/usr" + +if [ `uname -o` = 'Android' ]; then + echo "Patching Qt installation configuration files ..." + + ## Make sure the cmake configurations point to the on-device programs instead of the host tools + sed -i \ + 's|install_prefix}/opt/qt/cross/|install_prefix}/|g' \ + "${PREFIX}/lib/cmake/Qt5Help/Qt5HelpConfigExtras.cmake" + sed -i \ + 's|install_prefix}/opt/qt/cross/|install_prefix}/|g' \ + "${PREFIX}/lib/cmake/Qt5LinguistTools/Qt5LinguistToolsConfig.cmake" +fi diff --git a/x11-packages/qt5-qttools/qdbusviewer.desktop b/x11-packages/qt5-qttools/qdbusviewer.desktop new file mode 100644 index 000000000..71e1e379e --- /dev/null +++ b/x11-packages/qt5-qttools/qdbusviewer.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Categories=Qt;Development;Debugger; +Encoding=UTF-8 +Exec=qdbusviewer +Name=Qt D-Bus Viewer +GenericName=D-Bus Debugger +Comment=Introspect D-Bus objects and messages +X-KDE-StartupNotify=true +Terminal=false +Type=Application +Icon=qdbusviewer diff --git a/x11-packages/qt5-qttools/qt5-qttools-cross-tools.subpackage.sh b/x11-packages/qt5-qttools/qt5-qttools-cross-tools.subpackage.sh new file mode 100644 index 000000000..d5b048b65 --- /dev/null +++ b/x11-packages/qt5-qttools/qt5-qttools-cross-tools.subpackage.sh @@ -0,0 +1,6 @@ +TERMUX_SUBPKG_DESCRIPTION="Tools from qttools module for cross build on the host machine" +TERMUX_SUBPKG_DEPENDS="qt5-qttools" +TERMUX_SUBPKG_INCLUDE=" +opt/qt/cross/bin/* +opt/qt/cross/lib/* +" diff --git a/x11-packages/qt5-qtwebchannel/build.sh b/x11-packages/qt5-qtwebchannel/build.sh new file mode 100644 index 000000000..676050cf1 --- /dev/null +++ b/x11-packages/qt5-qtwebchannel/build.sh @@ -0,0 +1,33 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="Qt 5 WebChannel Library" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/${TERMUX_PKG_VERSION%.*}/${TERMUX_PKG_VERSION}/submodules/qtwebchannel-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=84fdf1eec5ae4be857d934f8035a1ee991088f94f3359b49a988310cdddd88e7 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtdeclarative, qt5-qtwebsockets" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} + +termux_step_post_make_install() { + ####################################################### + ## + ## Fixes & cleanup. + ## + ####################################################### + + ## Drop QMAKE_PRL_BUILD_DIR because reference the build dir. + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5WebChannel*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete +} + diff --git a/x11-packages/qt5-qtwebsockets/build.sh b/x11-packages/qt5-qtwebsockets/build.sh new file mode 100644 index 000000000..3571730b8 --- /dev/null +++ b/x11-packages/qt5-qtwebsockets/build.sh @@ -0,0 +1,32 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="Qt 5 WebSockets Library" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/${TERMUX_PKG_VERSION%.*}/${TERMUX_PKG_VERSION}/submodules/qtwebsockets-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=ce3c8be18e96928f336fd43bb6c9f99d3ee97eddd44fc6788fadd1dd54c437c4 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtdeclarative" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} + +termux_step_post_make_install() { + ####################################################### + ## + ## Fixes & cleanup. + ## + ####################################################### + + ## Drop QMAKE_PRL_BUILD_DIR because reference the build dir. + sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "${TERMUX_PREFIX}/lib/libQt5WebSockets.prl" + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete +} + diff --git a/x11-packages/qt5-qtx11extras/build.sh b/x11-packages/qt5-qtx11extras/build.sh new file mode 100644 index 000000000..419003e30 --- /dev/null +++ b/x11-packages/qt5-qtx11extras/build.sh @@ -0,0 +1,38 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="Qt X11 Extras enables the Qt programmer to write applications for the Linux/X11 platform" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/5.12/${TERMUX_PKG_VERSION}/submodules/qtx11extras-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=32c51c32edf265394610e9e1ca019fba6007c9a9f2e38e127a24e0b80d0c76e3 +TERMUX_PKG_DEPENDS="qt5-qtbase" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +# Replacing the old qt5-base packages +TERMUX_PKG_REPLACES="qt5-x11extras" + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} + +termux_step_make_install() { + make install + + ####################################################### + ## + ## Fixes & cleanup. + ## + ####################################################### + + ## Drop QMAKE_PRL_BUILD_DIR because reference the build dir. + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5X11*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete +} + diff --git a/x11-packages/qt5-qtxmlpatterns/build.sh b/x11-packages/qt5-qtxmlpatterns/build.sh new file mode 100644 index 000000000..70e481a0f --- /dev/null +++ b/x11-packages/qt5-qtxmlpatterns/build.sh @@ -0,0 +1,27 @@ +TERMUX_PKG_HOMEPAGE=https://www.qt.io/ +TERMUX_PKG_DESCRIPTION="Qt XmlPatterns Library" +TERMUX_PKG_LICENSE="LGPL-3.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=5.12.11 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/5.12/${TERMUX_PKG_VERSION}/submodules/qtxmlpatterns-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=1df0583ff804ef3334da298218ac5641d46c99b1dc692ca5097d9fead4afd0bc +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtdeclarative" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" +} + +termux_step_post_make_install() { + ## Drop QMAKE_PRL_BUILD_DIR because reference the build dir. + find "${TERMUX_PREFIX}/lib" -type f -name "libQt5XmlPatterns*.prl" \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' "{}" \; + + ## Remove *.la files. + find "${TERMUX_PREFIX}/lib" -iname \*.la -delete +} + diff --git a/x11-packages/qt5ct/build.sh b/x11-packages/qt5ct/build.sh new file mode 100644 index 000000000..a79641a75 --- /dev/null +++ b/x11-packages/qt5ct/build.sh @@ -0,0 +1,19 @@ +TERMUX_PKG_HOMEPAGE=https://sourceforge.net/projects/qt5ct +TERMUX_PKG_DESCRIPTION="Qt5 Configuration Tool" +TERMUX_PKG_LICENSE="BSD 2-Clause" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=1.3 +TERMUX_PKG_REVISION=1 +TERMUX_PKG_SRCURL="https://downloads.sf.net/qt5ct/qt5ct-${TERMUX_PKG_VERSION}.tar.bz2" +TERMUX_PKG_SHA256=dd443b14e590aff76a16e1316d56e688882e3248c470df4f71bc952569f3c3bc +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtsvg" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools, qt5-qttools-cross-tools" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_NO_STATICSPLIT=true + +termux_step_configure () { + "${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \ + -spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross" \ + PREFIX="${TERMUX_PREFIX}" +} + diff --git a/x11-packages/qt5ct/host_lrelease.patch b/x11-packages/qt5ct/host_lrelease.patch new file mode 100644 index 000000000..cdab3103f --- /dev/null +++ b/x11-packages/qt5ct/host_lrelease.patch @@ -0,0 +1,22 @@ +--- src/qt5ct.pro 2021-08-01 09:08:33.000000000 +0000 ++++ src.mod/qt5ct.pro 2021-09-01 16:08:41.981527832 +0000 +@@ -3,18 +3,7 @@ + SUBDIRS += src/qt5ct-qtplugin src/qt5ct-style src/qt5ct + + +-unix:exists($$[QT_INSTALL_BINS]/lrelease){ +-LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease +-} +- +-unix:exists($$[QT_INSTALL_BINS]/lrelease-qt5){ +-LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease-qt5 +-} +- +- +-win32:exists($$[QT_INSTALL_BINS]/lrelease.exe){ +-LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease.exe +-} ++LRELEASE_EXECUTABLE = @TERMUX_PREFIX@/opt/qt/cross/bin/lrelease + + + isEmpty(LRELEASE_EXECUTABLE){ diff --git a/x11-packages/qterminal/build.sh b/x11-packages/qterminal/build.sh new file mode 100644 index 000000000..2c8531914 --- /dev/null +++ b/x11-packages/qterminal/build.sh @@ -0,0 +1,10 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="A lightweight Qt terminal emulator" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=5 +TERMUX_PKG_SRCURL="https://github.com/lxqt/qterminal/releases/download/${TERMUX_PKG_VERSION}/qterminal-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=a9859876205940566519e763f6fb33c3109e044dd0461615d20e55668d3adb65 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtx11extras, qtermwidget" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qttools-cross-tools" diff --git a/x11-packages/qtermwidget/build.sh b/x11-packages/qtermwidget/build.sh new file mode 100644 index 000000000..f4c171df1 --- /dev/null +++ b/x11-packages/qtermwidget/build.sh @@ -0,0 +1,10 @@ +TERMUX_PKG_HOMEPAGE=https://lxqt.github.io +TERMUX_PKG_DESCRIPTION="A terminal emulator widget for Qt 5" +TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_MAINTAINER="Simeon Huang " +TERMUX_PKG_VERSION=0.17.0 +TERMUX_PKG_REVISION=5 +TERMUX_PKG_SRCURL="https://github.com/lxqt/qtermwidget/releases/download/${TERMUX_PKG_VERSION}/qtermwidget-${TERMUX_PKG_VERSION}.tar.xz" +TERMUX_PKG_SHA256=4e04b2fb71d7382266a1ea168bf02d1283e04df6127a42f760a30389cb219b82 +TERMUX_PKG_DEPENDS="qt5-qtbase" +TERMUX_PKG_BUILD_DEPENDS="lxqt-build-tools, qt5-qttools-cross-tools" diff --git a/x11-packages/qtermwidget/utmp_android.patch b/x11-packages/qtermwidget/utmp_android.patch new file mode 100644 index 000000000..4a32c4ff6 --- /dev/null +++ b/x11-packages/qtermwidget/utmp_android.patch @@ -0,0 +1,49 @@ +--- src/lib/kpty.cpp 2021-05-12 15:09:15.461686000 +0000 ++++ src.mod/lib/kpty.cpp 2021-05-12 15:24:03.750599000 +0000 +@@ -32,6 +32,10 @@ + #define HAVE_LIBUTIL_H + #endif + ++#if defined(__ANDROID__) ++#define HAVE_PTY_H ++#endif ++ + #if defined(__OpenBSD__) + #define HAVE_LOGIN + #define HAVE_UTIL_H +@@ -588,10 +592,12 @@ + # endif + # else + utmpname(_PATH_UTMP); ++#ifndef __ANDROID__ + setutent(); + pututline(&l_struct); + endutent(); + updwtmp(_PATH_WTMP, &l_struct); ++#endif + # endif + # endif + #endif +@@ -641,7 +647,12 @@ + # else + utmpname(_PATH_UTMP); + setutent(); ++ ++#ifndef __ANDROID__ + if ((ut = getutline(&l_struct))) { ++#else ++ if ((ut = getutent())) { ++#endif + # endif + # ifdef HAVE_UTMPX + memset(ut->ut_user, 0, sizeof(*ut->ut_user)); +@@ -662,7 +673,9 @@ + endutxent(); + # else + ut->ut_time = time(nullptr); ++#ifndef __ANDROID__ + pututline(ut); ++#endif + } + endutent(); + # endif diff --git a/x11-packages/quazip/build.sh b/x11-packages/quazip/build.sh new file mode 100644 index 000000000..a02aa22b2 --- /dev/null +++ b/x11-packages/quazip/build.sh @@ -0,0 +1,10 @@ +TERMUX_PKG_HOMEPAGE=https://stachenov.github.io/quazip/ +TERMUX_PKG_DESCRIPTION="Qt/C++ wrapper over minizip library" +TERMUX_PKG_LICENSE="GPL-3.0" +TERMUX_PKG_MAINTAINER="Yisus7u7" +TERMUX_PKG_VERSION=1.1 +TERMUX_PKG_REVISION=1 +TERMUX_PKG_SRCURL=https://github.com/stachenov/quazip/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz +TERMUX_PKG_SHA256=54edce9c11371762bd4f0003c2937b5d8806a2752dd9c0fd9085e90792612ad0 +TERMUX_PKG_DEPENDS="qt5-qtbase, zlib" +TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools, qt5-qttools-cross-tools" \ No newline at end of file diff --git a/x11-packages/xpdf/build.sh b/x11-packages/xpdf/build.sh new file mode 100644 index 000000000..effed43bd --- /dev/null +++ b/x11-packages/xpdf/build.sh @@ -0,0 +1,9 @@ +TERMUX_PKG_HOMEPAGE=https://www.xpdfreader.com/ +TERMUX_PKG_DESCRIPTION="Xpdf is an open source viewer for Portable Document Format (PDF) files." +TERMUX_PKG_LICENSE="GPL-3.0" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=4.03 +TERMUX_PKG_REVISION=3 +TERMUX_PKG_SRCURL=https://dl.xpdfreader.com/xpdf-$TERMUX_PKG_VERSION.tar.gz +TERMUX_PKG_SHA256=0fe4274374c330feaadcebb7bd7700cb91203e153b26aa95952f02bf130be846 +TERMUX_PKG_DEPENDS="qt5-qtbase, qt5-qtsvg"