From 32a1911e34c4898dc6cd21e42aaff954847c4369 Mon Sep 17 00:00:00 2001 From: coderus Date: Thu, 18 Feb 2021 16:05:30 +0300 Subject: [PATCH 1/6] [ci] Add Github CI --- .github/workflows/build.yml | 59 +++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..6c4e922b --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,59 @@ +name: Github CI build + +on: + push: + tags: + - '*' + pull_request: + branches: + - master + - patchmanager3 + +env: + RELEASE: 4.0.1.45 + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Prepare + run: mkdir output + + - name: Build armv7hl + run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c " + mkdir -p build ; + cd build ; + cp -r /share/* . ; + mb2 -t SailfishOS-$RELEASE-armv7hl build ; + sudo cp -r RPMS/*.rpm /share/output" + + - name: Build i486 + run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c " + mkdir -p build ; + cd build ; + cp -r /share/* . ; + mb2 -t SailfishOS-$RELEASE-i486 build ; + sudo cp -r RPMS/*.rpm /share/output" + + - name: Upload build result + uses: actions/upload-artifact@v2 + with: + name: output-rpms + path: output + + - name: Create release + if: contains(github.ref, 'release') + run: | + set -x + assets=() + for asset in output/*.rpm; do + assets+=("-a" "$asset") + done + tag_name="${GITHUB_REF##*/}" + hub release create "${assets[@]}" -m "$tag_name" "$tag_name" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + From 26dc6619f40f8019ce1ac0b164d49cbbcdc52b56 Mon Sep 17 00:00:00 2001 From: coderus Date: Thu, 18 Feb 2021 16:03:30 +0300 Subject: [PATCH 2/6] [refactor] Fixes for SFOS4 --- rpm/patchmanager.spec | 30 +++++++------------ src/bin/dialog/main.cpp | 25 +--------------- .../patchmanager-daemon.pro | 3 +- .../patchmanagerobject.cpp | 26 +++++++++------- src/preload/preload.pro | 3 ++ src/preload/src/preloadpatchmanager.c | 16 +++------- 6 files changed, 36 insertions(+), 67 deletions(-) diff --git a/rpm/patchmanager.spec b/rpm/patchmanager.spec index 5ce2a6b6..7622046b 100755 --- a/rpm/patchmanager.spec +++ b/rpm/patchmanager.spec @@ -1,9 +1,7 @@ %define theme sailfish-default -%{!?qtc_qmake:%define qtc_qmake %qmake} %{!?qtc_qmake5:%define qtc_qmake5 %qmake5} %{!?qtc_make:%define qtc_make make} -%{?qtc_builddir:%define _builddir %qtc_builddir} Name: patchmanager @@ -16,12 +14,6 @@ URL: https://github.com/sailfishos-patches/patchmanager Source0: %{name}-%{version}.tar.bz2 Requires: unzip Requires: patch -Conflicts: jolla-settings-%{name} -Obsoletes: jolla-settings-%{name} -Conflicts: %{name}-ui -Obsoletes: %{name}-ui -Conflicts: prepatch -Obsoletes: prepatch BuildRequires: pkgconfig(Qt5Core) BuildRequires: pkgconfig(Qt5DBus) BuildRequires: pkgconfig(Qt5Qml) @@ -31,7 +23,8 @@ BuildRequires: pkgconfig(sailfishapp) >= 0.0.10 BuildRequires: sailfish-svg2png >= 0.1.5 BuildRequires: pkgconfig(nemonotifications-qt5) BuildRequires: qt5-qtdeclarative-devel-tools -BuildRequires: pkgconfig(libsystemd-journal) +BuildRequires: pkgconfig(systemd) +BuildRequires: pkgconfig(libshadowutils) BuildRequires: qt5-qttools-linguist BuildRequires: pkgconfig(rpm) BuildRequires: pkgconfig(popt) @@ -56,11 +49,11 @@ rm -rf %{buildroot} /usr/lib/qt5/bin/qmlplugindump -v -noinstantiate -nonrelocatable org.SfietKonstantin.patchmanager 2.0 %{buildroot}%{_libdir}/qt5/qml > %{buildroot}%{_libdir}/qt5/qml/org/SfietKonstantin/%{name}/plugin.qmltypes |: sed -i 's#%{buildroot}##g' %{buildroot}%{_libdir}/qt5/qml/org/SfietKonstantin/%{name}/plugin.qmltypes -mkdir -p %{buildroot}/lib/systemd/system/multi-user.target.wants/ -ln -s ../dbus-org.SfietKonstantin.patchmanager.service %{buildroot}/lib/systemd/system/multi-user.target.wants/ +mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants/ +ln -s ../dbus-org.SfietKonstantin.patchmanager.service %{buildroot}%{_unitdir}/multi-user.target.wants/ -mkdir -p %{buildroot}/lib/systemd/system/timers.target.wants/ -ln -s ../checkForUpdates-org.SfietKonstantin.patchmanager.timer %{buildroot}/lib/systemd/system/timers.target.wants/ +mkdir -p %{buildroot}%{_unitdir}/timers.target.wants/ +ln -s ../checkForUpdates-org.SfietKonstantin.patchmanager.timer %{buildroot}%{_unitdir}/timers.target.wants/ mkdir -p %{buildroot}/usr/lib/systemd/user/lipstick.service.wants/ ln -s ../lipstick-patchmanager.service %{buildroot}/usr/lib/systemd/user/lipstick.service.wants/ @@ -156,11 +149,11 @@ systemctl-user daemon-reload %{_datadir}/%{name}/tools %{_datadir}/dbus-1/ %{_sysconfdir}/dbus-1/system.d/ -/lib/systemd/system/dbus-org.SfietKonstantin.patchmanager.service -/lib/systemd/system/multi-user.target.wants/dbus-org.SfietKonstantin.patchmanager.service -/lib/systemd/system/checkForUpdates-org.SfietKonstantin.patchmanager.service -/lib/systemd/system/checkForUpdates-org.SfietKonstantin.patchmanager.timer -/lib/systemd/system/timers.target.wants/checkForUpdates-org.SfietKonstantin.patchmanager.timer +%{_unitdir}/dbus-org.SfietKonstantin.patchmanager.service +%{_unitdir}/multi-user.target.wants/dbus-org.SfietKonstantin.patchmanager.service +%{_unitdir}/checkForUpdates-org.SfietKonstantin.patchmanager.service +%{_unitdir}/checkForUpdates-org.SfietKonstantin.patchmanager.timer +%{_unitdir}/timers.target.wants/checkForUpdates-org.SfietKonstantin.patchmanager.timer %{_sharedstatedir}/environment/patchmanager/10-dbus.conf #%{_datadir}/patchmanager/patches/sailfishos-patchmanager-unapplyall/patch.json #%{_datadir}/patchmanager/patches/sailfishos-patchmanager-unapplyall/unified_diff.patch @@ -178,7 +171,6 @@ systemctl-user daemon-reload %{_datadir}/jolla-settings/pages/%{name} %{_datadir}/jolla-settings/entries/%{name}.json %{_datadir}/%{name}/icons/icon-m-patchmanager.png -%attr(644,nemo,nemo) %ghost /home/nemo/.config/patchmanager2.conf %{_datadir}/themes/%{theme}/meegotouch/z1.0/icons/*.png %{_datadir}/themes/%{theme}/meegotouch/z1.25/icons/*.png diff --git a/src/bin/dialog/main.cpp b/src/bin/dialog/main.cpp index 439cc4e8..87828945 100644 --- a/src/bin/dialog/main.cpp +++ b/src/bin/dialog/main.cpp @@ -11,29 +11,6 @@ #include #include -QString getLang() -{ - QString lang = QStringLiteral("en_US.utf8"); - - QFile localeConfig(QStringLiteral("/var/lib/environment/nemo/locale.conf")); - - if (!localeConfig.exists() || !localeConfig.open(QFile::ReadOnly)) { - return lang; - } - - while (!localeConfig.atEnd()) { - QString line = localeConfig.readLine().trimmed(); - if (line.startsWith(QStringLiteral("LANG="))) { - lang = line.mid(5); - break; - } - } - - qDebug() << Q_FUNC_INFO << lang; - - return lang; -} - int main(int argc, char *argv[]) { qputenv("NO_PM_PRELOAD", "1"); @@ -47,7 +24,7 @@ int main(int argc, char *argv[]) QScopedPointer app(SailfishApp::application(argc, argv)); QTranslator translator; - bool success = translator.load(QLocale(getLang()), + bool success = translator.load(QLocale(), QStringLiteral("settings-patchmanager"), QStringLiteral("-"), QStringLiteral("/usr/share/translations/"), diff --git a/src/bin/patchmanager-daemon/patchmanager-daemon.pro b/src/bin/patchmanager-daemon/patchmanager-daemon.pro index 9ceaca52..ddba7752 100644 --- a/src/bin/patchmanager-daemon/patchmanager-daemon.pro +++ b/src/bin/patchmanager-daemon/patchmanager-daemon.pro @@ -4,11 +4,10 @@ TARGET = patchmanager QT = core dbus network CONFIG += link_pkgconfig PKGCONFIG += nemonotifications-qt5 -PKGCONFIG += libsystemd-journal +PKGCONFIG += libsystemd PKGCONFIG += rpm PKGCONFIG += popt -INCLUDEPATH += /usr/include INCLUDEPATH += /usr/include/rpm isEmpty(PROJECT_PACKAGE_VERSION) { diff --git a/src/bin/patchmanager-daemon/patchmanagerobject.cpp b/src/bin/patchmanager-daemon/patchmanagerobject.cpp index 2fea3430..9b0eb506 100755 --- a/src/bin/patchmanager-daemon/patchmanagerobject.cpp +++ b/src/bin/patchmanager-daemon/patchmanagerobject.cpp @@ -132,17 +132,23 @@ QString getLang() { QString lang = QStringLiteral("en_US.utf8"); - QFile localeConfig(QStringLiteral("/var/lib/environment/nemo/locale.conf")); - - if (!localeConfig.exists() || !localeConfig.open(QFile::ReadOnly)) { - return lang; - } + QStringList locales = { + QStringLiteral("/etc/locale.conf"), + QStringLiteral("/var/lib/environment/nemo/locale.conf"), + }; + for (const QString &localePath : locales) { + QFile localeConfig(localePath); + + if (!localeConfig.exists() || !localeConfig.open(QFile::ReadOnly)) { + continue; + } - while (!localeConfig.atEnd()) { - QString line = localeConfig.readLine().trimmed(); - if (line.startsWith(QStringLiteral("LANG="))) { - lang = line.mid(5); - break; + while (!localeConfig.atEnd()) { + QString line = localeConfig.readLine().trimmed(); + if (line.startsWith(QStringLiteral("LANG="))) { + lang = line.mid(5); + break; + } } } diff --git a/src/preload/preload.pro b/src/preload/preload.pro index 8b44c384..8ef1bc92 100644 --- a/src/preload/preload.pro +++ b/src/preload/preload.pro @@ -1,6 +1,9 @@ TEMPLATE = lib QT = CONFIG += plugin +CONFIG += link_pkgconfig +PKGCONFIG += libshadowutils +INCLUDEPATH += /usr/include/libshadowutils QMAKE_CFLAGS += -std=c11 LIBS = -ldl diff --git a/src/preload/src/preloadpatchmanager.c b/src/preload/src/preloadpatchmanager.c index 8a1996a3..99091855 100644 --- a/src/preload/src/preloadpatchmanager.c +++ b/src/preload/src/preloadpatchmanager.c @@ -26,6 +26,7 @@ static orig_open_f_type orig_open64 = NULL; #include #include +#include #include #define SERVER_PATH "/tmp/patchmanager-socket" @@ -95,18 +96,9 @@ static void pm_name(char new_name[]) { close(sockfd); } -static uid_t nemo_uid() +static uid_t user_uid() { - static struct passwd *nemo_pwd; - - if (!nemo_pwd) { - nemo_pwd = getpwnam("nemo"); - if (!nemo_pwd) { - return 100000; - } - } - - return nemo_pwd->pw_uid; + return getdef_num("UID_MIN", 100000); } static int pm_validate_uid(uid_t uid) @@ -114,7 +106,7 @@ static int pm_validate_uid(uid_t uid) #ifdef ALLOW_ALL_USERS return 1; #else // #ifdef ALLOW_ALL_USERS - return uid == nemo_uid(); + return uid >= user_uid(); #endif // #ifdef ALLOW_ALL_USERS } From fa3622ed40ab4345216ecea44b4a491f9fae469b Mon Sep 17 00:00:00 2001 From: coderus Date: Thu, 18 Feb 2021 16:03:37 +0300 Subject: [PATCH 3/6] [gitignore] Update --- .gitignore | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitignore b/.gitignore index eb56053c..b4ac9bbe 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,13 @@ build/ src/bin/patchmanager-daemon/adaptor.* *.rpm +*.so* +Makefile +*.o +moc_* +*.moc +patchmanager_interface.* +patchmanager_adaptor.* +patchmanager-dialog .build* From 8d974de4b63a6f75c5d9e984051606cb3beb57ca Mon Sep 17 00:00:00 2001 From: coderus Date: Thu, 18 Feb 2021 16:21:10 +0300 Subject: [PATCH 4/6] [sfos4] Spec fix --- rpm/patchmanager.spec | 2 -- src/bin/patchmanager-daemon/patchmanager-daemon.pro | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/rpm/patchmanager.spec b/rpm/patchmanager.spec index 7622046b..6e3c020b 100755 --- a/rpm/patchmanager.spec +++ b/rpm/patchmanager.spec @@ -155,8 +155,6 @@ systemctl-user daemon-reload %{_unitdir}/checkForUpdates-org.SfietKonstantin.patchmanager.timer %{_unitdir}/timers.target.wants/checkForUpdates-org.SfietKonstantin.patchmanager.timer %{_sharedstatedir}/environment/patchmanager/10-dbus.conf -#%{_datadir}/patchmanager/patches/sailfishos-patchmanager-unapplyall/patch.json -#%{_datadir}/patchmanager/patches/sailfishos-patchmanager-unapplyall/unified_diff.patch %{_libdir}/systemd/user/dbus-org.SfietKonstantin.patchmanager.service %{_libdir}/systemd/user/lipstick-patchmanager.service %{_libdir}/systemd/user/lipstick.service.wants/lipstick-patchmanager.service diff --git a/src/bin/patchmanager-daemon/patchmanager-daemon.pro b/src/bin/patchmanager-daemon/patchmanager-daemon.pro index ddba7752..676e4167 100644 --- a/src/bin/patchmanager-daemon/patchmanager-daemon.pro +++ b/src/bin/patchmanager-daemon/patchmanager-daemon.pro @@ -54,7 +54,7 @@ systemd.files = \ systemd/dbus-org.SfietKonstantin.patchmanager.service \ systemd/checkForUpdates-org.SfietKonstantin.patchmanager.service \ systemd/checkForUpdates-org.SfietKonstantin.patchmanager.timer -systemd.path = /lib/systemd/system/ +systemd.path = /usr/lib/systemd/system/ INSTALLS += systemd env.files = environment/10-dbus.conf From 6d45e452f2116e189949cbb7606dab7a643cf850 Mon Sep 17 00:00:00 2001 From: coderus Date: Thu, 18 Feb 2021 16:21:16 +0300 Subject: [PATCH 5/6] [qtc] Icons fix --- src/icons/icons.pro | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/icons/icons.pro b/src/icons/icons.pro index 18351856..7ff03bd8 100644 --- a/src/icons/icons.pro +++ b/src/icons/icons.pro @@ -1,4 +1,29 @@ TEMPLATE = aux # Configures svg to png THEMENAME=sailfish-default -CONFIG += sailfish-svg2png \ No newline at end of file + +load(sailfish-svg2png-sizes) + +theme.path = /usr/share/themes/$${THEMENAME}/ +themeDirectory.path = /usr/share/themes/$${THEMENAME}/meegotouch +themeDirectory.files += $${OUT_PWD}/icons + +for(profile, SAILFISH_SVG2PNG.profiles) { + # a work-around for installing directories that do not exist yet + system(mkdir -p $${OUT_PWD}/z$${profile}) + + exists( $${OUT_PWD}/symlinks ): svg2png.commands += cp -r symlinks/icons z$${profile} && + + svg2png.commands += /usr/bin/sailfish_svg2png \ + -z $$eval(SAILFISH_SVG2PNG.scales.$${profile}) \ + $$eval(SAILFISH_SVG2PNG.extra.$${profile}) \ + $${_PRO_FILE_PWD_}/svgs \ + z$${profile}/icons && + + svg2png.files += $${OUT_PWD}/z$${profile} +} + +svg2png.commands += true +svg2png.path = $${themeDirectory.path} + +INSTALLS += svg2png theme themeDirectory From c3684b3e0782dee314ed12ce5d2707c0411b1043 Mon Sep 17 00:00:00 2001 From: coderus Date: Mon, 14 Jun 2021 02:54:52 +0300 Subject: [PATCH 6/6] [systemd] Use _userunitdir --- rpm/patchmanager.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rpm/patchmanager.spec b/rpm/patchmanager.spec index 6e3c020b..3cbef488 100755 --- a/rpm/patchmanager.spec +++ b/rpm/patchmanager.spec @@ -155,9 +155,9 @@ systemctl-user daemon-reload %{_unitdir}/checkForUpdates-org.SfietKonstantin.patchmanager.timer %{_unitdir}/timers.target.wants/checkForUpdates-org.SfietKonstantin.patchmanager.timer %{_sharedstatedir}/environment/patchmanager/10-dbus.conf -%{_libdir}/systemd/user/dbus-org.SfietKonstantin.patchmanager.service -%{_libdir}/systemd/user/lipstick-patchmanager.service -%{_libdir}/systemd/user/lipstick.service.wants/lipstick-patchmanager.service +%{_userunitdir}/dbus-org.SfietKonstantin.patchmanager.service +%{_userunitdir}/lipstick-patchmanager.service +%{_userunitdir}/lipstick.service.wants/lipstick-patchmanager.service %{_libdir}/libpreload%{name}.so %attr(0755,root,root-) %{_libexecdir}/pm_apply