Skip to content

Commit f9d0ea5

Browse files
authored
Sfos4 fix (#48)
* [ci] Add Github CI * [refactor] Fixes for SFOS4 * [gitignore] Update * [sfos4] Spec fix * [qtc] Icons fix * [systemd] Use _userunitdir
1 parent 8e89173 commit f9d0ea5

File tree

9 files changed

+133
-74
lines changed

9 files changed

+133
-74
lines changed

.github/workflows/build.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Github CI build
2+
3+
on:
4+
push:
5+
tags:
6+
- '*'
7+
pull_request:
8+
branches:
9+
- master
10+
- patchmanager3
11+
12+
env:
13+
RELEASE: 4.0.1.45
14+
15+
jobs:
16+
build:
17+
runs-on: ubuntu-latest
18+
19+
steps:
20+
- uses: actions/checkout@v2
21+
22+
- name: Prepare
23+
run: mkdir output
24+
25+
- name: Build armv7hl
26+
run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c "
27+
mkdir -p build ;
28+
cd build ;
29+
cp -r /share/* . ;
30+
mb2 -t SailfishOS-$RELEASE-armv7hl build ;
31+
sudo cp -r RPMS/*.rpm /share/output"
32+
33+
- name: Build i486
34+
run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c "
35+
mkdir -p build ;
36+
cd build ;
37+
cp -r /share/* . ;
38+
mb2 -t SailfishOS-$RELEASE-i486 build ;
39+
sudo cp -r RPMS/*.rpm /share/output"
40+
41+
- name: Upload build result
42+
uses: actions/upload-artifact@v2
43+
with:
44+
name: output-rpms
45+
path: output
46+
47+
- name: Create release
48+
if: contains(github.ref, 'release')
49+
run: |
50+
set -x
51+
assets=()
52+
for asset in output/*.rpm; do
53+
assets+=("-a" "$asset")
54+
done
55+
tag_name="${GITHUB_REF##*/}"
56+
hub release create "${assets[@]}" -m "$tag_name" "$tag_name"
57+
env:
58+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
59+

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,13 @@ build/
33
src/bin/patchmanager-daemon/adaptor.*
44

55
*.rpm
6+
*.so*
7+
Makefile
8+
*.o
9+
moc_*
10+
*.moc
11+
patchmanager_interface.*
12+
patchmanager_adaptor.*
13+
patchmanager-dialog
614

715
.build*

rpm/patchmanager.spec

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
%define theme sailfish-default
22

3-
%{!?qtc_qmake:%define qtc_qmake %qmake}
43
%{!?qtc_qmake5:%define qtc_qmake5 %qmake5}
54
%{!?qtc_make:%define qtc_make make}
6-
%{?qtc_builddir:%define _builddir %qtc_builddir}
75

86
Name: patchmanager
97

@@ -16,12 +14,6 @@ URL: https://github.com/sailfishos-patches/patchmanager
1614
Source0: %{name}-%{version}.tar.bz2
1715
Requires: unzip
1816
Requires: patch
19-
Conflicts: jolla-settings-%{name}
20-
Obsoletes: jolla-settings-%{name}
21-
Conflicts: %{name}-ui
22-
Obsoletes: %{name}-ui
23-
Conflicts: prepatch
24-
Obsoletes: prepatch
2517
BuildRequires: pkgconfig(Qt5Core)
2618
BuildRequires: pkgconfig(Qt5DBus)
2719
BuildRequires: pkgconfig(Qt5Qml)
@@ -31,7 +23,8 @@ BuildRequires: pkgconfig(sailfishapp) >= 0.0.10
3123
BuildRequires: sailfish-svg2png >= 0.1.5
3224
BuildRequires: pkgconfig(nemonotifications-qt5)
3325
BuildRequires: qt5-qtdeclarative-devel-tools
34-
BuildRequires: pkgconfig(libsystemd-journal)
26+
BuildRequires: pkgconfig(systemd)
27+
BuildRequires: pkgconfig(libshadowutils)
3528
BuildRequires: qt5-qttools-linguist
3629
BuildRequires: pkgconfig(rpm)
3730
BuildRequires: pkgconfig(popt)
@@ -56,11 +49,11 @@ rm -rf %{buildroot}
5649
/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 |:
5750
sed -i 's#%{buildroot}##g' %{buildroot}%{_libdir}/qt5/qml/org/SfietKonstantin/%{name}/plugin.qmltypes
5851

59-
mkdir -p %{buildroot}/lib/systemd/system/multi-user.target.wants/
60-
ln -s ../dbus-org.SfietKonstantin.patchmanager.service %{buildroot}/lib/systemd/system/multi-user.target.wants/
52+
mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants/
53+
ln -s ../dbus-org.SfietKonstantin.patchmanager.service %{buildroot}%{_unitdir}/multi-user.target.wants/
6154

62-
mkdir -p %{buildroot}/lib/systemd/system/timers.target.wants/
63-
ln -s ../checkForUpdates-org.SfietKonstantin.patchmanager.timer %{buildroot}/lib/systemd/system/timers.target.wants/
55+
mkdir -p %{buildroot}%{_unitdir}/timers.target.wants/
56+
ln -s ../checkForUpdates-org.SfietKonstantin.patchmanager.timer %{buildroot}%{_unitdir}/timers.target.wants/
6457

6558
mkdir -p %{buildroot}/usr/lib/systemd/user/lipstick.service.wants/
6659
ln -s ../lipstick-patchmanager.service %{buildroot}/usr/lib/systemd/user/lipstick.service.wants/
@@ -156,17 +149,15 @@ systemctl-user daemon-reload
156149
%{_datadir}/%{name}/tools
157150
%{_datadir}/dbus-1/
158151
%{_sysconfdir}/dbus-1/system.d/
159-
/lib/systemd/system/dbus-org.SfietKonstantin.patchmanager.service
160-
/lib/systemd/system/multi-user.target.wants/dbus-org.SfietKonstantin.patchmanager.service
161-
/lib/systemd/system/checkForUpdates-org.SfietKonstantin.patchmanager.service
162-
/lib/systemd/system/checkForUpdates-org.SfietKonstantin.patchmanager.timer
163-
/lib/systemd/system/timers.target.wants/checkForUpdates-org.SfietKonstantin.patchmanager.timer
152+
%{_unitdir}/dbus-org.SfietKonstantin.patchmanager.service
153+
%{_unitdir}/multi-user.target.wants/dbus-org.SfietKonstantin.patchmanager.service
154+
%{_unitdir}/checkForUpdates-org.SfietKonstantin.patchmanager.service
155+
%{_unitdir}/checkForUpdates-org.SfietKonstantin.patchmanager.timer
156+
%{_unitdir}/timers.target.wants/checkForUpdates-org.SfietKonstantin.patchmanager.timer
164157
%{_sharedstatedir}/environment/patchmanager/10-dbus.conf
165-
#%{_datadir}/patchmanager/patches/sailfishos-patchmanager-unapplyall/patch.json
166-
#%{_datadir}/patchmanager/patches/sailfishos-patchmanager-unapplyall/unified_diff.patch
167-
%{_libdir}/systemd/user/dbus-org.SfietKonstantin.patchmanager.service
168-
%{_libdir}/systemd/user/lipstick-patchmanager.service
169-
%{_libdir}/systemd/user/lipstick.service.wants/lipstick-patchmanager.service
158+
%{_userunitdir}/dbus-org.SfietKonstantin.patchmanager.service
159+
%{_userunitdir}/lipstick-patchmanager.service
160+
%{_userunitdir}/lipstick.service.wants/lipstick-patchmanager.service
170161
%{_libdir}/libpreload%{name}.so
171162

172163
%attr(0755,root,root-) %{_libexecdir}/pm_apply
@@ -178,7 +169,6 @@ systemctl-user daemon-reload
178169
%{_datadir}/jolla-settings/pages/%{name}
179170
%{_datadir}/jolla-settings/entries/%{name}.json
180171
%{_datadir}/%{name}/icons/icon-m-patchmanager.png
181-
%attr(644,nemo,nemo) %ghost /home/nemo/.config/patchmanager2.conf
182172

183173
%{_datadir}/themes/%{theme}/meegotouch/z1.0/icons/*.png
184174
%{_datadir}/themes/%{theme}/meegotouch/z1.25/icons/*.png

src/bin/dialog/main.cpp

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,6 @@
1111
#include <QDBusReply>
1212
#include <QTimer>
1313

14-
QString getLang()
15-
{
16-
QString lang = QStringLiteral("en_US.utf8");
17-
18-
QFile localeConfig(QStringLiteral("/var/lib/environment/nemo/locale.conf"));
19-
20-
if (!localeConfig.exists() || !localeConfig.open(QFile::ReadOnly)) {
21-
return lang;
22-
}
23-
24-
while (!localeConfig.atEnd()) {
25-
QString line = localeConfig.readLine().trimmed();
26-
if (line.startsWith(QStringLiteral("LANG="))) {
27-
lang = line.mid(5);
28-
break;
29-
}
30-
}
31-
32-
qDebug() << Q_FUNC_INFO << lang;
33-
34-
return lang;
35-
}
36-
3714
int main(int argc, char *argv[])
3815
{
3916
qputenv("NO_PM_PRELOAD", "1");
@@ -47,7 +24,7 @@ int main(int argc, char *argv[])
4724
QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
4825

4926
QTranslator translator;
50-
bool success = translator.load(QLocale(getLang()),
27+
bool success = translator.load(QLocale(),
5128
QStringLiteral("settings-patchmanager"),
5229
QStringLiteral("-"),
5330
QStringLiteral("/usr/share/translations/"),

src/bin/patchmanager-daemon/patchmanager-daemon.pro

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@ TARGET = patchmanager
44
QT = core dbus network
55
CONFIG += link_pkgconfig
66
PKGCONFIG += nemonotifications-qt5
7-
PKGCONFIG += libsystemd-journal
7+
PKGCONFIG += libsystemd
88
PKGCONFIG += rpm
99
PKGCONFIG += popt
1010

11-
INCLUDEPATH += /usr/include
1211
INCLUDEPATH += /usr/include/rpm
1312

1413
isEmpty(PROJECT_PACKAGE_VERSION) {
@@ -55,7 +54,7 @@ systemd.files = \
5554
systemd/dbus-org.SfietKonstantin.patchmanager.service \
5655
systemd/checkForUpdates-org.SfietKonstantin.patchmanager.service \
5756
systemd/checkForUpdates-org.SfietKonstantin.patchmanager.timer
58-
systemd.path = /lib/systemd/system/
57+
systemd.path = /usr/lib/systemd/system/
5958
INSTALLS += systemd
6059

6160
env.files = environment/10-dbus.conf

src/bin/patchmanager-daemon/patchmanagerobject.cpp

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,17 +132,23 @@ QString getLang()
132132
{
133133
QString lang = QStringLiteral("en_US.utf8");
134134

135-
QFile localeConfig(QStringLiteral("/var/lib/environment/nemo/locale.conf"));
136-
137-
if (!localeConfig.exists() || !localeConfig.open(QFile::ReadOnly)) {
138-
return lang;
139-
}
135+
QStringList locales = {
136+
QStringLiteral("/etc/locale.conf"),
137+
QStringLiteral("/var/lib/environment/nemo/locale.conf"),
138+
};
139+
for (const QString &localePath : locales) {
140+
QFile localeConfig(localePath);
141+
142+
if (!localeConfig.exists() || !localeConfig.open(QFile::ReadOnly)) {
143+
continue;
144+
}
140145

141-
while (!localeConfig.atEnd()) {
142-
QString line = localeConfig.readLine().trimmed();
143-
if (line.startsWith(QStringLiteral("LANG="))) {
144-
lang = line.mid(5);
145-
break;
146+
while (!localeConfig.atEnd()) {
147+
QString line = localeConfig.readLine().trimmed();
148+
if (line.startsWith(QStringLiteral("LANG="))) {
149+
lang = line.mid(5);
150+
break;
151+
}
146152
}
147153
}
148154

src/icons/icons.pro

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,29 @@
11
TEMPLATE = aux
22
# Configures svg to png
33
THEMENAME=sailfish-default
4-
CONFIG += sailfish-svg2png
4+
5+
load(sailfish-svg2png-sizes)
6+
7+
theme.path = /usr/share/themes/$${THEMENAME}/
8+
themeDirectory.path = /usr/share/themes/$${THEMENAME}/meegotouch
9+
themeDirectory.files += $${OUT_PWD}/icons
10+
11+
for(profile, SAILFISH_SVG2PNG.profiles) {
12+
# a work-around for installing directories that do not exist yet
13+
system(mkdir -p $${OUT_PWD}/z$${profile})
14+
15+
exists( $${OUT_PWD}/symlinks ): svg2png.commands += cp -r symlinks/icons z$${profile} &&
16+
17+
svg2png.commands += /usr/bin/sailfish_svg2png \
18+
-z $$eval(SAILFISH_SVG2PNG.scales.$${profile}) \
19+
$$eval(SAILFISH_SVG2PNG.extra.$${profile}) \
20+
$${_PRO_FILE_PWD_}/svgs \
21+
z$${profile}/icons &&
22+
23+
svg2png.files += $${OUT_PWD}/z$${profile}
24+
}
25+
26+
svg2png.commands += true
27+
svg2png.path = $${themeDirectory.path}
28+
29+
INSTALLS += svg2png theme themeDirectory

src/preload/preload.pro

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
TEMPLATE = lib
22
QT =
33
CONFIG += plugin
4+
CONFIG += link_pkgconfig
5+
PKGCONFIG += libshadowutils
6+
INCLUDEPATH += /usr/include/libshadowutils
47
QMAKE_CFLAGS += -std=c11
58

69
LIBS = -ldl

src/preload/src/preloadpatchmanager.c

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ static orig_open_f_type orig_open64 = NULL;
2626
#include <limits.h>
2727
#include <libgen.h>
2828

29+
#include <getdef.h>
2930
#include <pwd.h>
3031

3132
#define SERVER_PATH "/tmp/patchmanager-socket"
@@ -95,26 +96,17 @@ static void pm_name(char new_name[]) {
9596
close(sockfd);
9697
}
9798

98-
static uid_t nemo_uid()
99+
static uid_t user_uid()
99100
{
100-
static struct passwd *nemo_pwd;
101-
102-
if (!nemo_pwd) {
103-
nemo_pwd = getpwnam("nemo");
104-
if (!nemo_pwd) {
105-
return 100000;
106-
}
107-
}
108-
109-
return nemo_pwd->pw_uid;
101+
return getdef_num("UID_MIN", 100000);
110102
}
111103

112104
static int pm_validate_uid(uid_t uid)
113105
{
114106
#ifdef ALLOW_ALL_USERS
115107
return 1;
116108
#else // #ifdef ALLOW_ALL_USERS
117-
return uid == nemo_uid();
109+
return uid >= user_uid();
118110
#endif // #ifdef ALLOW_ALL_USERS
119111
}
120112

0 commit comments

Comments
 (0)