[-]
[+]
|
Changed |
_service:tar_git:patchmanager.spec
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,7 +2,7 @@
<service name="tar_git">
<param name="url">https://github.com/sailfishos-patches/patchmanager.git</param>
<param name="branch">master</param>
- <param name="revision">3.1.1</param>
+ <param name="revision">3.2.0</param>
<param name="token"/>
<param name="debian">N</param>
<param name="dumb">N</param>
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/.gitignore
^
|
@@ -1,6 +1,7 @@
build/
*.pro.*
src/bin/patchmanager-daemon/adaptor.*
+src/bin/patchmanager-daemon/patchmanager
*.rpm
*.so*
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/README.md
^
|
@@ -1,6 +1,6 @@
# Patchmanager
-Patchmanager is a tool for transparently modifying installed files by the patch utility and for managing the patches for doing so.
+Patchmanager is a tool for transparently modifying installed files per patch utility and for managing patch files ("patches") for doing so.
Since version 3.0 it does not modify original files, but alters their content when they are loaded into RAM to be run.
## Information for users
@@ -20,9 +20,9 @@
If you package your patch as an RPM or archive file, you must also provide the JSON metadata: see below.
If you use the Web Catalog to distribute your patch, you must not provide a JSON file, but input the corresponding data when submitting the patch to the Web Catalog.
-### The patch file
+### Patch files
-The patch file must be a diff of all the files to be patched in the filesystem.
+A patch file must be a diff of all the files to be patched in the filesystem.
It will be applied on the root of the filesystem, with the `-p1` flag.
It must be named `unified_diff.patch`.
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/bin/patchmanager-daemon/dbus/org.SfietKonstantin.patchmanager.xml
^
|
@@ -59,6 +59,9 @@
<arg name="def" type="v" direction="in" />
<arg name="value" type="v" direction="out" />
</method>
+ <method name="getMangleCandidates">
+ <arg name="result" type="as" direction="out" />
+ </method>
<method name="checkEaster">
<arg name="easter" type="s" direction="out" />
</method>
@@ -91,6 +94,10 @@
<arg name="patch" type="s" direction="in" />
<arg name="activate" type="b" direction="in" />
</method>
+ <method name="getToggleServicesList">
+ <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QStringList"/>
+ <arg name="services" type="a{s}" direction="out" />
+ </method>
<method name="getToggleServices">
<arg name="toggle" type="b" direction="out" />
</method>
|
|
Added |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/bin/patchmanager-daemon/patchmanager
^
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/bin/patchmanager-daemon/patchmanagerobject.cpp
^
|
@@ -86,7 +86,7 @@
static const QString PATCHES_WORK_DIR = QStringLiteral("%1/%2").arg(PATCHES_WORK_DIR_PREFIX, "work");
static const QString PATCHES_ADDITIONAL_DIR = QStringLiteral("%1/%2").arg(PATCHES_WORK_DIR_PREFIX, "patches");
static const QString PATCH_FILE = QStringLiteral("patch.json");
-
+static const QString MANGLE_CONFIG_FILE = QStringLiteral("/etc/patchmanager/manglelist.conf");
static const QString NAME_KEY = QStringLiteral("name");
static const QString DESCRIPTION_KEY = QStringLiteral("description");
static const QString CATEGORY_KEY = QStringLiteral("category");
@@ -231,10 +231,20 @@
case NotifyActionSuccessApply:
summary = qApp->translate("", "Patch installed");
body = qApp->translate("", "Patch %1 installed").arg(patch);
+ if (getToggleServices()) {
+ body.append( ", " );
+ body.append( qApp->translate("", "Services need restart!") );
+ notification.setHintValue("icon", "icon-lock-warning");
+ };
break;
case NotifyActionSuccessUnapply:
summary = qApp->translate("", "Patch removed");
body = qApp->translate("", "Patch %1 removed").arg(patch);
+ if (getToggleServices()) {
+ body.append( ", " );
+ body.append( qApp->translate("", "Services need restart!") );
+ notification.setHintValue("icon", "icon-lock-warning");
+ };
break;
case NotifyActionFailedApply:
summary = qApp->translate("", "Failed to install patch");
@@ -288,6 +298,17 @@
putSettings(QStringLiteral("applied"), QStringList(patches.toList()));
}
+QStringList PatchManagerObject::getMangleCandidates()
+{
+ if (m_mangleCandidates.empty()) {
+ qDebug() << Q_FUNC_INFO;
+ auto mangleCandidates = QSettings(MANGLE_CONFIG_FILE, QSettings::IniFormat).value("MANGLE_CANDIDATES", "").toString();
+ m_mangleCandidates = mangleCandidates.split(' ', QString::SplitBehavior::SkipEmptyParts);
+ qDebug() << "Loaded mangle candidates:" << m_mangleCandidates;
+ }
+ return m_mangleCandidates;
+}
+
void PatchManagerObject::getVersion()
{
qDebug() << Q_FUNC_INFO;
@@ -1157,6 +1178,10 @@
QVariant old = m_settings->value(key);
if (old != value) {
m_settings->setValue(key ,value);
+ if (name == QStringLiteral("bitnessMangle")) {
+ qDebug() << Q_FUNC_INFO << "Changing bitness mangle refreshes patch list";
+ refreshPatchList();
+ }
return true;
}
return false;
@@ -1274,6 +1299,11 @@
}
}
+QStringList PatchManagerObject::getToggleServicesList() const
+{
+ return m_toggleServices.keys();
+}
+
bool PatchManagerObject::getToggleServices() const
{
return !m_toggleServices.isEmpty();
@@ -1569,6 +1599,18 @@
{
qDebug() << Q_FUNC_INFO;
+ // Create mangling replacement tokens.
+ QStringList toManglePaths{}, mangledPaths{};
+ if(getSettings(QStringLiteral("bitnessMangle"), false).toBool()) {
+ toManglePaths = getMangleCandidates();
+ mangledPaths = getMangleCandidates().replaceInStrings("/usr/lib/", "/usr/lib64/");
+ if (Q_PROCESSOR_WORDSIZE == 4) { // 32 bit
+ std::swap(toManglePaths, mangledPaths);
+ }
+ }
+ qDebug() << Q_FUNC_INFO << "toManglePaths" << toManglePaths;
+ qDebug() << Q_FUNC_INFO << "mangledPaths" << mangledPaths;
+
// load applied patches
m_appliedPatches = getAppliedPatches();
@@ -1590,6 +1632,14 @@
if (line.startsWith(QByteArrayLiteral("+++ "))) {
const QString toPatch = QString::fromLatin1(line.split(' ')[1].split('\t')[0].split('\n')[0]);
QString path = toPatch;
+
+ for (int i = 0; i < toManglePaths.size(); i++) {
+ if (path.startsWith(toManglePaths[i])) {
+ qDebug() << Q_FUNC_INFO << "Editing path: " << path;
+ path.replace(toManglePaths[i], mangledPaths[i]);
+ }
+ }
+
while (!QFileInfo::exists(path) && path.count('/') > 1) {
path = path.mid(path.indexOf('/', 1));
}
@@ -1768,6 +1818,13 @@
QStringList arguments;
arguments.append(patchName);
+ if (false == getSettings(QStringLiteral("bitnessMangle"), false).toBool()) {
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ qDebug() << Q_FUNC_INFO << "DISABLE_MANGLING=true";
+ env.insert("DISABLE_MANGLING", "true");
+ process.setProcessEnvironment(env);
+ }
+
process.setArguments(arguments);
qDebug() << Q_FUNC_INFO << "Starting:" << process.program() << process.arguments();
process.start();
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/bin/patchmanager-daemon/patchmanagerobject.h
^
|
@@ -40,6 +40,7 @@
#include <QtCore/QStringList>
#include <QtCore/QVariantMap>
#include <QtCore/QVariantList>
+#include <QtCore/QVector>
#include <QtCore/QDir>
#include <QDBusConnection>
@@ -124,6 +125,7 @@
void patchToggleService(const QString &patch);
bool getToggleServices() const;
+ QStringList getToggleServicesList() const;
bool getFailure() const;
bool getLoaded() const;
void resolveFailure();
@@ -180,6 +182,8 @@
void restartKeyboard();
void doRestartKeyboard();
+ QStringList getMangleCandidates();
+
private:
void restartService(const QString &serviceName);
@@ -237,6 +241,8 @@
QString m_osRelease;
+ QStringList m_mangleCandidates;
+
PatchManagerAdaptor *m_adaptor = nullptr;
QNetworkAccessManager *m_nam = nullptr;
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/etc/etc.pro
^
|
@@ -1,6 +1,8 @@
TEMPLATE = aux
+manglelist.files = manglelist.conf
+manglelist.path = /etc/patchmanager
firejail.files = whitelist-common-patchmanager.local
firejail.path = /etc/firejail
-INSTALLS += firejail
+INSTALLS += firejail manglelist
|
[-]
[+]
|
Added |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/etc/manglelist.conf
^
|
@@ -0,0 +1,9 @@
+# Settings file for 32/64 bit path mangling
+#
+# must conform to both shell format, and be parseable as QSettings(foo, QSettings::IniFormat)
+
+# list of candidate paths to attempt 32/64bit library path correction
+# used by patchmanager-daemon and pm_apply.sh
+# determined by a find /usr/lib -name "*.qml" and bug reports
+# the list is given in "32bit" format, i.e. no lib64
+MANGLE_CANDIDATES="/usr/lib/qt5/qml /usr/lib/jolla-mediaplayer /usr/lib/maliit/plugins"
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/qml/RestartServicesDialog.qml
^
|
@@ -1,6 +1,10 @@
/*
* Copyright (C) 2013 Lucien XU <sfietkonstantin@free.fr>
* Copyright (C) 2016 Andrey Kozhevnikov <coderusinbox@gmail.com>
+ * Copyright (c) 2021, Patchmanger for SailfishOS contributors:
+ * - olf "Olf0" <https://github.com/Olf0>
+ * - Peter G. "nephros" <sailfish@nephros.org>
+ * - Vlad G. "b100dian" <https://github.com/b100dian>
*
* You may use this file under the terms of the BSD license as follows:
*
@@ -39,21 +43,46 @@
id: container
onAccepted: PatchManager.restartServices()
- SilicaFlickable {
- anchors.fill: parent
- Column {
- spacing: Theme.paddingMedium
- anchors.left: parent.left; anchors.right: parent.right
- DialogHeader {
- acceptText: qsTranslate("", "Restart services")
- }
+ Component.onCompleted: console.info("Will restart " + PatchManager.appsToRestart);
- Label {
- anchors.left: parent.left; anchors.leftMargin: Theme.paddingMedium
- anchors.right: parent.right; anchors.rightMargin: Theme.paddingMedium
- wrapMode: Text.WordWrap
- color: Theme.highlightColor
- text: qsTranslate("", "Some services will be restarted now. Reloading the homescreen of the device might take a little time.")
+ Column {
+ spacing: Theme.paddingSmall
+ width: parent.width
+ DialogHeader {
+ acceptText: qsTranslate("", "Restart")
+ }
+ Label {
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width - Theme.horizontalPageMargin * 2
+ color: Theme.highlightColor
+ text: qsTranslate("", "Some services will be restarted now. Reloading the homescreen of the device might take a little time.")
+ wrapMode: Text.WordWrap
+ horizontalAlignment: Text.AlignJustify
+ }
+ SectionHeader { text: qsTranslate("", "List of services:" ); color: Theme.secondaryHighlightColor }
+ Column {
+ id: col
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width - Theme.horizontalPageMargin * 2
+ Repeater {
+ model: PatchManager.appsToRestart
+ delegate: Component { TextSwitch {
+ text: qsTranslate("Sections", modelData)
+ automaticCheck: false
+ checked: true
+ enabled: true
+ description: {
+ if ((modelData == "homescreen")
+ || (modelData == "silica"))
+ { return qsTranslate("","Note: this will close all apps."); }
+ else if (modelData == "settings") { return qsTranslate("","Note: this will close %1.").arg(qsTranslate("", "Patchmanager")); }
+ else if (modelData == "keyboard") { return "" }
+ else if (modelData == "other") { return "" }
+ else { return qsTranslate("","Note: this will close the %1 app.").arg(text); }
+ }
+ TouchBlocker { anchors.fill: parent}
+ }
+ }
}
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/qml/SettingsPage.qml
^
|
@@ -31,6 +31,28 @@
onClicked: PatchManager.developerMode = !PatchManager.developerMode
automaticCheck: false
}
+
+ TextSwitch {
+ id: fixBitSwitch
+ text: qsTranslate("", "Convert Patches between 32 bit and 64 bit")
+ description: qsTranslate("", "Automatically fix lib or lib64 for select paths shown below.")
+ checked: PatchManager.bitnessMangle
+ onClicked: PatchManager.bitnessMangle = !PatchManager.bitnessMangle
+ automaticCheck: false
+ }
+
+ TextArea {
+ // align to the right of TextSwitch indicator
+ anchors {
+ left: fixBitSwitch.left
+ leftMargin: fixBitSwitch.leftMargin + Theme.paddingLarge
+ }
+ color: Theme.secondaryColor
+ font.pixelSize: Theme.fontSizeSmall
+ readOnly: true
+ text: PatchManager.mangleCandidates.join("\n")
+ enabled: fixBitSwitch.checked
+ }
}
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/qml/UnifiedPatchPage.qml
^
|
@@ -162,7 +162,7 @@
font.pixelSize: Theme.fontSizeSmall
textFormat: Text.StyledText
property string link: SOURCE_REPO + "/blob/master/README.md#for-developers"
- text: qsTranslate("", "This patch uses the legacy format for its patch.json file. If you are its maintainer, please do consider updating to the new format; if you are using the Web Catalog you shall not include a patch.json file in your upload!<br />See the developer section in the <a href="%1">README</a> for details.").arg(link)
+ text: qsTranslate("", "This patch uses the legacy format for its patch.json file. If you are its maintainer, please do consider updating to the new format; if you are using the Web Catalog you shall not include a patch.json file in your upload!<br />See the developer section in the <a href=\"%1\">README</a> for details.").arg(link)
linkColor: Theme.highlightColor
onLinkActivated: Qt.openUrlExternally(link)
}
@@ -233,7 +233,8 @@
Icon {
anchors.verticalCenter: parent.verticalCenter
source: "image://theme/" + iconname
- sourceSize: Theme.iconSizeMedium
+ sourceSize.width: Theme.iconSizeMedium
+ sourceSize.height: sourceSize.width
}
Label {
anchors.verticalCenter: parent.verticalCenter
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/qml/patchmanager.cpp
^
|
@@ -61,6 +61,7 @@
QT_TRANSLATE_NOOP("Sections", "silica"),
QT_TRANSLATE_NOOP("Sections", "settings"),
QT_TRANSLATE_NOOP("Sections", "other"),
+ QT_TRANSLATE_NOOP("Sections", "keyboard"),
};
PatchManager::PatchManager(QObject *parent)
@@ -197,6 +198,17 @@
return getSettingsSync(QStringLiteral("applyOnBoot"), false).toBool();
}
+QStringList PatchManager::mangleCandidates() const
+{
+ QDBusPendingReply<QStringList> reply = m_interface->getMangleCandidates();
+ reply.waitForFinished();
+ if (reply.isFinished()) {
+ qDebug() << Q_FUNC_INFO << "mangleCandidates() dbus replied:" << reply.value();
+ return reply.value();
+ }
+ return QStringList();
+}
+
void PatchManager::setApplyOnBoot(bool applyOnBoot)
{
if (putSettingsSync(QStringLiteral("applyOnBoot"), applyOnBoot)) {
@@ -204,6 +216,17 @@
}
}
+bool PatchManager::bitnessMangle() const
+{
+ return getSettingsSync(QStringLiteral("bitnessMangle"), false).toBool();
+}
+
+void PatchManager::setBitnessMangle(bool bitnessMangle)
+{
+ if (putSettingsSync(QStringLiteral("bitnessMangle"), bitnessMangle)) {
+ emit bitnessMangleChanged(bitnessMangle);
+ }
+}
PatchManagerModel *PatchManager::installedModel()
{
return m_installedModel;
@@ -233,6 +256,20 @@
return m_patchmanagerVersion;
}
+QStringList PatchManager::toggleServicesList() const
+{
+ QStringList list;
+
+ QDBusPendingReply<QStringList> reply = m_interface->getToggleServicesList();
+ reply.waitForFinished();
+ if (reply.isFinished()) {
+ qDebug() << Q_FUNC_INFO << "dbus replied:" << reply.value();
+ list = reply.value();;
+ return list;
+ }
+ return list;
+}
+
bool PatchManager::toggleServices() const
{
return m_toggleServices;
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/qml/patchmanager.h
^
|
@@ -66,9 +66,12 @@
Q_PROPERTY(QString serverMediaUrl READ serverMediaUrl CONSTANT)
Q_PROPERTY(bool developerMode READ developerMode WRITE setDeveloperMode NOTIFY developerModeChanged)
Q_PROPERTY(bool applyOnBoot READ applyOnBoot WRITE setApplyOnBoot NOTIFY applyOnBootChanged)
+ Q_PROPERTY(bool bitnessMangle READ bitnessMangle WRITE setBitnessMangle NOTIFY bitnessMangleChanged)
+ Q_PROPERTY(QStringList mangleCandidates READ mangleCandidates)
Q_PROPERTY(PatchManagerModel *installedModel READ installedModel CONSTANT)
Q_PROPERTY(QVariantMap updates READ getUpdates NOTIFY updatesChanged)
Q_PROPERTY(QStringList updatesNames READ getUpdatesNames NOTIFY updatesChanged)
+ Q_PROPERTY(QStringList appsToRestart READ toggleServicesList NOTIFY toggleServicesListChanged)
Q_PROPERTY(bool appsNeedRestart READ toggleServices NOTIFY toggleServicesChanged)
Q_PROPERTY(bool failure READ failure NOTIFY failureChanged)
Q_PROPERTY(bool loaded READ loaded NOTIFY loadedChanged)
@@ -83,11 +86,15 @@
void setDeveloperMode(bool developerMode);
bool applyOnBoot() const;
void setApplyOnBoot(bool applyOnBoot);
+ bool bitnessMangle() const;
+ void setBitnessMangle(bool bitnessMangle);
+ QStringList mangleCandidates() const;
PatchManagerModel *installedModel();
QString trCategory(const QString &category) const;
QVariantMap getUpdates() const;
QStringList getUpdatesNames() const;
QString patchmanagerVersion() const;
+ QStringList toggleServicesList() const;
bool toggleServices() const;
bool failure() const;
@@ -156,11 +163,13 @@
void easterReceived(const QString & easterText);
void developerModeChanged(bool developerMode);
void applyOnBootChanged(bool applyOnBoot);
+ void bitnessMangleChanged(bool bitnessMangle);
void updatesChanged();
void toggleServicesChanged(bool toggleServices);
void failureChanged(bool failed);
void loadedChanged(bool loaded);
void patchmanagerVersionChanged(const QString &patchmanagerVersion);
+ void toggleServicesListChanged(const QStringList &servicesToBeToggled);
private:
void successCall(QJSValue callback, const QVariant &value);
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/tools/pm_apply
^
|
@@ -15,9 +15,18 @@
PM_PATCH_BACKUP_ROOT_DIR="$PM_VAR_DIR/patches"
PM_PATCH_BACKUP_DIR="$PM_PATCH_BACKUP_ROOT_DIR/$1"
+SYS_BITNESS=$(/usr/bin/getconf LONG_BIT)
+
# Constants
PATCH_NAME="unified_diff.patch"
PATCH_PATH="$PATCH_DIR/$PATCH_NAME"
+PATCH_EDITED_NAME="unified_diff_${SYS_BITNESS}bit.patch"
+
+# list of candidate paths to attempt 32/64bit library path correction
+MANGLE_CANDIDATES=""
+if [ -z "$DISABLE_MANGLING" ] && [ -r "etc/patchmanager/manglelist.conf" ] ; then
+ source /etc/patchmanager/manglelist.conf
+fi
ROOT_DIR="/tmp/patchmanager"
@@ -36,6 +45,11 @@
echo "$@" | tee -a "$PM_LOG_FILE"
}
+log "Mangle candidates"
+log $MANGLE_CANDIDATES
+log "Disable mangling"
+log $DISABLE_MANGLING
+
failure() {
log
log "*** FAILED ***"
@@ -68,6 +82,69 @@
fi
}
+# see issue #71: https://github.com/sailfishos-patches/patchmanager/issues/71
+mangle_libpath() {
+ if [ -f "$PATCH_PATH" ]; then
+ log
+ log "----------------------------------"
+ [ $SYS_BITNESS -eq 32 ] && log "Checking paths for 32->64bit conversion"
+ [ $SYS_BITNESS -eq 64 ] && log "Checking paths for 64->32bit conversion"
+ log "----------------------------------"
+ log
+
+ found=0
+ candidates="$MANGLE_CANDIDATES"
+ if [ $SYS_BITNESS -eq 32 ]; then
+ # first, convert the candidate list
+ # variable expansion ${foo/lib/lib64} would work on bash, but not POSIX/ash/busybox
+ candidates=$(printf '%s' "$MANGLE_CANDIDATES" | sed 's@/usr/lib/@/usr/lib64/@g' )
+ fi
+
+ for p in $candidates; do
+ totl_lines=$(grep -c "^+++" "$PATCH_PATH")
+ cand_lines=$(grep -c "^+++ $p" "$PATCH_PATH")
+ if [ $cand_lines -eq 0 ]; then
+ continue # nothing found, try next
+ else
+ found=$(( $found + $cand_lines ))
+ if [ $totl_lines -ne $cand_lines ]; then
+ # if there are several references in the patch file our mangling might do too much and cause the patch to fail.
+ log "WARNING: mixed patch, conversion might not work"
+ fi
+ fi
+
+ patch_edited_path="$PM_PATCH_BACKUP_DIR"/"$PATCH_EDITED_NAME"
+ log "found: ${p}, replacing libpath references"
+
+ mkdir -p "$PM_PATCH_BACKUP_DIR"
+ # prepare the pattern
+ pr=""
+ if [ $SYS_BITNESS -eq 32 ]; then
+ pr=$(printf '%s' "$p" | sed 's@/usr/lib64/@/usr/lib/@')
+ elif [ $SYS_BITNESS -eq 64 ]; then
+ pr=$(printf '%s' "$p" | sed 's@/usr/lib/@/usr/lib64/@')
+ fi
+ # doit
+ printf '#\n# patch converted to %sbit library paths from original by Patchmanager 3.1\n# Date: %s\n#\n' $SYS_BITNESS $(date -Iseconds) > "$patch_edited_path"
+ sed "s@^+++ $p@+++ $pr@;s@^--- $p@--- $pr@" "$PATCH_PATH" >> "$patch_edited_path"
+ if [ $? -ne 0 ]; then
+ failure
+ fi
+ log
+ log "OK, conversion produced: $patch_edited_path"
+ log
+ # set the patch to apply to the new one:
+ PATCH_PATH="$patch_edited_path"
+ return
+ done
+ if [ $found -eq 0 ]; then
+ log
+ log "OK, found nothing to convert"
+ log
+ fi
+ fi
+}
+
verify_text_patch() {
if [ -f "$PATCH_PATH" ]; then
log
@@ -157,6 +234,8 @@
# The main function that controls all the magic stuff
#
+mangle_libpath
+
test_if_applied
verify_text_patch
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/src/tools/pm_unapply
^
|
@@ -15,17 +15,23 @@
PM_PATCH_BACKUP_ROOT_DIR="$PM_VAR_DIR/patches"
PM_PATCH_BACKUP_DIR="$PM_PATCH_BACKUP_ROOT_DIR/$1"
+SYS_BITNESS=$(/usr/bin/getconf LONG_BIT)
+
# Constants
PATCH_NAME="unified_diff.patch"
PATCH_PATH="$PATCH_DIR/$PATCH_NAME"
PATCH_BACKUP="$PM_PATCH_BACKUP_DIR/$PATCH_NAME"
+PATCH_EDITED_NAME="unified_diff_${SYS_BITNESS}bit.patch"
+PATCH_EDITED_BACKUP="$PM_PATCH_BACKUP_DIR"/"$PATCH_EDITED_NAME"
ROOT_DIR="/tmp/patchmanager"
# Applications
PATCH_EXEC="/usr/bin/patch"
-if [ -f "$PATCH_BACKUP" ]; then
+if [ -f "$PATCH_EDITED_BACKUP" ]; then
+ PATCH_FILE="$PATCH_EDITED_BACKUP"
+elif [ -f "$PATCH_BACKUP" ]; then
PATCH_FILE="$PATCH_BACKUP"
else
PATCH_FILE="$PATCH_PATH"
@@ -111,6 +117,8 @@
log "$(basename "$PATCH_DIR")"
+log "Using PATCH_FILE=$PATCH_FILE"
+
if [ -f "$PATCH_FILE" ]; then
log " contains text patch"
fi
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/translations/settings-patchmanager-es.ts
^
|
@@ -5,7 +5,7 @@
<location filename="../src/qml/AboutPage.qml" line="49"/>
<location filename="../src/qml/PatchManagerPage.qml" line="142"/>
<source>About Patchmanager</source>
- <translation type="unfinished"/>
+ <translation>Acerca de Patchmanager</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="45"/>
@@ -15,17 +15,17 @@
<message>
<location filename="../src/bin/dialog/dialog.qml" line="53"/>
<source>Patchmanager will automatically apply all patches in 10 seconds.</source>
- <translation type="unfinished"/>
+ <translation>Patchmanager aplicará todos los parches automáticamente en 10 segundos.</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="136"/>
<source>Applied patches successfully.</source>
- <translation type="unfinished"/>
+ <translation>Parches aplicados con éxito.</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="137"/>
<source>Failed to apply patches!</source>
- <translation type="unfinished"/>
+ <translation>¡Error al aplicar los parches!</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="66"/>
@@ -51,13 +51,13 @@
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="82"/>
- <source>Patchmanager allows system modification via patches. It provides a system daemon that is in charge of performing those patches, as well as a GUI, to control those operations and installation/removal of patches.</source>
- <translation>El gestor de parches permite la modificación del sistema a través de parches. Proporciona un sistema que se encarga de ejecutar esos parches en segundo plano, así como una GUI para controlar estas operaciones e instalar/eliminar parches.</translation>
+ <source>Patchmanager allows to automatically modify system files via patches. It provides a daemon that performs the application of those patches and a GUI to control those operations and the installation or removal of patches.</source>
+ <translation>Patchmanager permite modificar los archivos del sistema automáticamente mediante parches. Proporciona un servicio que ejecuta esos parches en segundo plano y una GUI para controlar estas operaciones e instalar o eliminar parches.</translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="96"/>
- <source>Licensed under the terms of the<br /><a href="%1"> BSD 3-Clause License</a></source>
- <translation>Autorizado bajo los términos de la<br /><a href="%1"> Licencia BSD de 3 cláusulas</a></translation>
+ <source>Licensed under the terms of the<br /><a href="%1">BSD 3-Clause License</a></source>
+ <translation>Autorizado bajo los términos de la<br /><a href="%1">Licencia BSD de 3 cláusulas</a></translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="106"/>
@@ -66,24 +66,24 @@
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="123"/>
- <source>Credits and Thanks<br /><a href="%1">Developers</a></source>
+ <source>Credits and Acknowledgements<br /><a href="%1">Developers</a></source>
<translation>Créditos y agradecimientos<br /><a href="%1">Desarrolladores</a></translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="148"/>
<location filename="../src/qml/UnifiedPatchPage.qml" line="210"/>
<source>Donations</source>
- <translation type="unfinished"/>
+ <translation>Donación</translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="160"/>
<source>If you appreciate our work, please consider a donation to help covering the hosting costs for Openrepos. Openrepos is critical infrastructure specifically for Patchmanager, because its Web Catalog of patches is hosted there.</source>
- <translation type="unfinished"/>
+ <translation>Si aprecias nuestro trabajo, considera hacer una donación para ayudar a cubrir los costes de alojamiento de Openrepos. En concreto, Openrepos es una infraestructura vital para Patchmanager porque su catálogo web de parches está alojado allí.</translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="181"/>
- <source>If for some reason you can not donate to Openrepos, we also appreciate donating to the Free Software Foundation Europe (FSFE).</source>
- <translation type="unfinished"/>
+ <source>If for some reason you cannot donate to Openrepos, we also appreciate donating to the Free Software Foundation Europe (FSFE).</source>
+ <translation>Si por algún motivo no puedes donar a Openrepos, también agradecemos la donación a la Fundación Europea por el Software Libre (FSFE).</translation>
</message>
<message>
<location filename="../src/qml/WebPatchPage.qml" line="246"/>
@@ -103,7 +103,7 @@
<message>
<location filename="../src/qml/DevelopersPage.qml" line="201"/>
<source>%1's %2 account</source>
- <translation type="unfinished"/>
+ <translation>Cuenta de %1 en %2</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="65"/>
@@ -127,13 +127,14 @@
</message>
<message>
<location filename="../src/qml/WebPatchPage.qml" line="85"/>
- <source>Patch information</source>
- <translation>Información del parche</translation>
+ <location filename="../src/qml/PatchManagerPage.qml" line="490"/>
+ <source>Patch details</source>
+ <translation>Detalles del parche</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="107"/>
<source>This patch is not available anymore. You will not be able to reinstall it.</source>
- <translation type="unfinished"/>
+ <translation>Este parche ya no está disponible. No podrás reinstalarlo.</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="116"/>
@@ -142,8 +143,8 @@
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="165"/>
- <source>This patch uses the legacy format for its patch.json file. If you are the maintainer, do consider updating to the new format. If you are using Web Catalog you should not include a patch.json file at all in your upload.<br />See the developer section in the <a href="%1">README</a> for more information.</source>
- <translation type="unfinished"/>
+ <source>This patch uses the legacy format for its patch.json file. If you are its maintainer, please do consider updating to the new format; if you are using the Web Catalog you shall not include a patch.json file in your upload!<br />See the developer section in the <a href="%1">README</a> for details.</source>
+ <translation>Este parche usa el formato heredado para su archivo patch.json. Si eres el responsable de mantenerlo, considera la posibilidad de actualizar al nuevo formato; ¡si estás usando el catálogo web, no debes incluir un archivo patch.json en su carga!<br />Consulta la sección de desarrolladores en el <a href="%1">README</a> para obtener más detalles.</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="171"/>
@@ -153,22 +154,22 @@
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="196"/>
<source>Discussion</source>
- <translation type="unfinished"/>
+ <translation>Discusión</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="252"/>
<source>Patch log</source>
- <translation>Registro de parches</translation>
+ <translation>Registro del parche</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="261"/>
- <source>Press and hold to copy to Clipboard</source>
- <translation type="unfinished"/>
+ <source>Press and hold to copy log to the clipboard</source>
+ <translation>Mantén pulsado para copiar registro al portapapeles</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="274"/>
- <source>No log yet</source>
- <translation>Sin registros aún</translation>
+ <source>No log exists yet</source>
+ <translation>No hay registros aún</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="116"/>
@@ -177,18 +178,18 @@
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="48"/>
- <source>Log copied to Clipboard!</source>
- <translation type="unfinished"/>
+ <source>Copied log to clipboard.</source>
+ <translation>Registro copiado al portapapeles.</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="75"/>
<source>Uninstall patch</source>
- <translation type="unfinished"/>
+ <translation>Desinstalar parche</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="78"/>
<source>Patch %1 uninstalled.</source>
- <translation type="unfinished"/>
+ <translation>Parche %1 desinstalado.</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="120"/>
@@ -199,7 +200,7 @@
<location filename="../src/qml/UnifiedPatchPage.qml" line="121"/>
<location filename="../src/qml/UnifiedPatchPage.qml" line="126"/>
<source>not available</source>
- <translation type="unfinished"/>
+ <translation>no disponible</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="125"/>
@@ -209,7 +210,7 @@
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="137"/>
<source>May conflict with:</source>
- <translation type="unfinished"/>
+ <translation>Puede haber conflictos con:</translation>
</message>
<message>
<location filename="../src/qml/PatchManagerPage.qml" line="147"/>
@@ -249,8 +250,9 @@
</message>
<message>
<location filename="../src/qml/PatchManagerPage.qml" line="357"/>
- <source>This patch is not compatible with SailfishOS version!</source>
- <translation>¡Este parche no es compatible con la versión de SailfishOS!</translation>
+ <location filename="../src/qml/WebPatchPage.qml" line="333"/>
+ <source>This patch is incompatible with the installed Sailfish OS version.</source>
+ <translation>Este parche no es compatible con la versión de Sailfish OS instalada.</translation>
</message>
<message>
<location filename="../src/qml/PatchManagerPage.qml" line="365"/>
@@ -265,17 +267,12 @@
<message>
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/translations/settings-patchmanager-pl.ts
^
|
@@ -5,7 +5,7 @@
<location filename="../src/qml/AboutPage.qml" line="49"/>
<location filename="../src/qml/PatchManagerPage.qml" line="142"/>
<source>About Patchmanager</source>
- <translation type="unfinished"/>
+ <translation>O Patchmanager</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="45"/>
@@ -15,17 +15,17 @@
<message>
<location filename="../src/bin/dialog/dialog.qml" line="53"/>
<source>Patchmanager will automatically apply all patches in 10 seconds.</source>
- <translation type="unfinished"/>
+ <translation>Patchmanager automatycznie zastosuje wszystkie łatki w ciągu 10 sekund.</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="136"/>
<source>Applied patches successfully.</source>
- <translation type="unfinished"/>
+ <translation>Włącznie zakończone sukcesem.</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="137"/>
<source>Failed to apply patches!</source>
- <translation type="unfinished"/>
+ <translation>Nie udało się zastosować łatek!</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="66"/>
@@ -51,39 +51,39 @@
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="82"/>
- <source>Patchmanager allows system modification via patches. It provides a system daemon that is in charge of performing those patches, as well as a GUI, to control those operations and installation/removal of patches.</source>
- <translation>Patchmanager pozwala na modyfikacje systemu za pomocą łatek. Dostarcza on systemowego daemona, który wykonyje modyfikacje, jak i dostarcza GUI, aby móc zarządzać operacjami instalacji/usuwania łatek.</translation>
+ <source>Patchmanager allows to automatically modify system files via patches. It provides a daemon that performs the application of those patches and a GUI to control those operations and the installation or removal of patches.</source>
+ <translation>Patchmanager pozwala na automatyczną modyfikację plików systemowych za pomocą łatek. Udostępnia demona, który wykonuje aplikację tych łatek oraz GUI do kontrolowania tych operacji oraz instalowania lub usuwania łatek. </translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="96"/>
- <source>Licensed under the terms of the<br /><a href="%1"> BSD 3-Clause License</a></source>
- <translation type="unfinished"/>
+ <source>Licensed under the terms of the<br /><a href="%1">BSD 3-Clause License</a></source>
+ <translation>Licencjonowane na warunkach <br /><a href="%1">BSD 3-Clause License</a></translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="106"/>
<source>Sources and Issue Tracker<br /><a href="%1">on GitHub</a></source>
- <translation type="unfinished"/>
+ <translation>Źródła i spis błędów<br /><a href="%1">na GitHub</a></translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="123"/>
- <source>Credits and Thanks<br /><a href="%1">Developers</a></source>
- <translation type="unfinished"/>
+ <source>Credits and Acknowledgements<br /><a href="%1">Developers</a></source>
+ <translation>Podziękowania dla<br /><a href="%1"> programistów</a></translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="148"/>
<location filename="../src/qml/UnifiedPatchPage.qml" line="210"/>
<source>Donations</source>
- <translation type="unfinished"/>
+ <translation>Darowizny.</translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="160"/>
<source>If you appreciate our work, please consider a donation to help covering the hosting costs for Openrepos. Openrepos is critical infrastructure specifically for Patchmanager, because its Web Catalog of patches is hosted there.</source>
- <translation type="unfinished"/>
+ <translation>Jeśli doceniasz naszą pracę, rozważ darowiznę, która pomoże pokryć koszty hostingu Openrepos. Openrepos jest infrastrukturą krytyczną specjalnie dla Patchmanagera, ponieważ jest tam hostowany katalog łatek. </translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="181"/>
- <source>If for some reason you can not donate to Openrepos, we also appreciate donating to the Free Software Foundation Europe (FSFE).</source>
- <translation type="unfinished"/>
+ <source>If for some reason you cannot donate to Openrepos, we also appreciate donating to the Free Software Foundation Europe (FSFE).</source>
+ <translation>Jeśli z jakiegoś powodu nie możesz przekazać darowizny na rzecz Openrepos, doceniamy również darowiznę na rzecz Free Software Foundation Europe (FSFE).</translation>
</message>
<message>
<location filename="../src/qml/WebPatchPage.qml" line="246"/>
@@ -103,7 +103,7 @@
<message>
<location filename="../src/qml/DevelopersPage.qml" line="201"/>
<source>%1's %2 account</source>
- <translation type="unfinished"/>
+ <translation>Konto %1 na %2</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="65"/>
@@ -127,13 +127,14 @@
</message>
<message>
<location filename="../src/qml/WebPatchPage.qml" line="85"/>
- <source>Patch information</source>
- <translation>Informacje o łatce</translation>
+ <location filename="../src/qml/PatchManagerPage.qml" line="490"/>
+ <source>Patch details</source>
+ <translation>Szczegóły łatki</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="107"/>
<source>This patch is not available anymore. You will not be able to reinstall it.</source>
- <translation type="unfinished"/>
+ <translation>Ta łatka nie jest już dostępna. Nie będziesz mógł jej ponownie zainstalować. </translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="116"/>
@@ -142,8 +143,8 @@
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="165"/>
- <source>This patch uses the legacy format for its patch.json file. If you are the maintainer, do consider updating to the new format. If you are using Web Catalog you should not include a patch.json file at all in your upload.<br />See the developer section in the <a href="%1">README</a> for more information.</source>
- <translation type="unfinished"/>
+ <source>This patch uses the legacy format for its patch.json file. If you are its maintainer, please do consider updating to the new format; if you are using the Web Catalog you shall not include a patch.json file in your upload!<br />See the developer section in the <a href="%1">README</a> for details.</source>
+ <translation>Ta łatka używa starszego formatu pliku patch.json. Jeśli jesteś jej opiekunem, rozważ aktualizację do nowego formatu; jeśli korzystasz z katalogu internetowego, nie dołączaj pliku patch.json do przesyłanego pliku!<br /> Szczegółowe informacje można znaleźć w sekcji dla programistów w pliku <a href="%1">README</a>. </translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="171"/>
@@ -153,7 +154,7 @@
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="196"/>
<source>Discussion</source>
- <translation type="unfinished"/>
+ <translation>Dyskusja</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="252"/>
@@ -162,13 +163,13 @@
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="261"/>
- <source>Press and hold to copy to Clipboard</source>
- <translation type="unfinished"/>
+ <source>Press and hold to copy log to the clipboard</source>
+ <translation>Dotknij i przytrzymaj, aby skopiować logi do schowka</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="274"/>
- <source>No log yet</source>
- <translation>Brak logów</translation>
+ <source>No log exists yet</source>
+ <translation>Nie istnieją jeszcze żadne logi</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="116"/>
@@ -177,18 +178,18 @@
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="48"/>
- <source>Log copied to Clipboard!</source>
- <translation type="unfinished"/>
+ <source>Copied log to clipboard.</source>
+ <translation>Logi skopiowane do schowka.</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="75"/>
<source>Uninstall patch</source>
- <translation type="unfinished"/>
+ <translation>Odinstaluj łatkę</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="78"/>
<source>Patch %1 uninstalled.</source>
- <translation type="unfinished"/>
+ <translation>Łatka %1 odinstalowana.</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="120"/>
@@ -199,7 +200,7 @@
<location filename="../src/qml/UnifiedPatchPage.qml" line="121"/>
<location filename="../src/qml/UnifiedPatchPage.qml" line="126"/>
<source>not available</source>
- <translation type="unfinished"/>
+ <translation>niedostępny</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="125"/>
@@ -209,7 +210,7 @@
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="137"/>
<source>May conflict with:</source>
- <translation type="unfinished"/>
+ <translation>Może być w konflikcie z:</translation>
</message>
<message>
<location filename="../src/qml/PatchManagerPage.qml" line="147"/>
@@ -249,8 +250,9 @@
</message>
<message>
<location filename="../src/qml/PatchManagerPage.qml" line="357"/>
- <source>This patch is not compatible with SailfishOS version!</source>
- <translation>Łatka jest niekompatybilna z tą wersją SailfishOS! </translation>
+ <location filename="../src/qml/WebPatchPage.qml" line="333"/>
+ <source>This patch is incompatible with the installed Sailfish OS version.</source>
+ <translation>Ta łatka jest niezgodna z zainstalowaną wersją systemu operacyjnego Sailfish.</translation>
</message>
<message>
<location filename="../src/qml/PatchManagerPage.qml" line="365"/>
@@ -265,17 +267,12 @@
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/translations/settings-patchmanager-sv.ts
^
|
@@ -41,6 +41,7 @@
<location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="222"/>
<location filename="../src/bin/dialog/dialog.qml" line="165"/>
<location filename="../src/qml/AboutPage.qml" line="63"/>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="78"/>
<source>Patchmanager</source>
<translation>Patchmanager</translation>
</message>
@@ -126,8 +127,8 @@
<translation>Starta motorn före tillämpning av korrigeringar</translation>
</message>
<message>
- <location filename="../src/qml/WebPatchPage.qml" line="85"/>
<location filename="../src/qml/PatchManagerPage.qml" line="490"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="85"/>
<source>Patch details</source>
<translation>Detaljerad korrigeringsinformation</translation>
</message>
@@ -142,11 +143,6 @@
<translation>Ansvarig</translation>
</message>
<message>
- <location filename="../src/qml/UnifiedPatchPage.qml" line="165"/>
- <source>This patch uses the legacy format for its patch.json file. If you are its maintainer, please do consider updating to the new format; if you are using the Web Catalog you shall not include a patch.json file in your upload!<br />See the developer section in the <a href="%1">README</a> for details.</source>
- <translation>Den här korrigeringen använder det äldre formatet för filen patch.json. Om du är dess utvecklare bör du överväga att uppdatera till det nya formatet. Om du använder webbkatalogen skall du inte inkludera en patch.json alls i uppladdningen. <br />Se utvecklaravsnittet i <a href="%1">README</a> för mer information.</translation>
- </message>
- <message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="171"/>
<source>Description</source>
<translation>Beskrivning</translation>
@@ -213,6 +209,11 @@
<translation>Kan hamna i konflikt med:</translation>
</message>
<message>
+ <location filename="../src/qml/UnifiedPatchPage.qml" line="165"/>
+ <source>This patch uses the legacy format for its patch.json file. If you are its maintainer, please do consider updating to the new format; if you are using the Web Catalog you shall not include a patch.json file in your upload!&lt;br /&gt;See the developer section in the &lt;a href=&quot;%1&quot;&gt;README&lt;/a&gt; for details.</source>
+ <translation>Den här korrigeringen använder det äldre formatet för filen patch.json. Om du är dess utvecklare bör du överväga att uppdatera till det nya formatet. Om du använder webbkatalogen skall du inte inkludera en patch.json alls i uppladdningen.&lt;br /&gt;Se utvecklaravsnittet i &lt;a href=&quot;%1&quot;&gt;README&lt;/a&gt; för detaljerad information.</translation>
+ </message>
+ <message>
<location filename="../src/qml/PatchManagerPage.qml" line="147"/>
<source>Unapply all patches</source>
<translation>Koppla ifrån alla korrigeringar</translation>
@@ -296,16 +297,36 @@
<translation>Inga korrigeringsfiler tillgängliga</translation>
</message>
<message>
- <location filename="../src/qml/RestartServicesDialog.qml" line="48"/>
- <source>Restart services</source>
- <translation>Starta om tjänster</translation>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="52"/>
+ <source>Restart</source>
+ <translation>Starta om</translation>
</message>
<message>
- <location filename="../src/qml/RestartServicesDialog.qml" line="56"/>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="58"/>
<source>Some services will be restarted now. Reloading the homescreen of the device might take a little time.</source>
<translation>Vissa tjänster kommer att startas om nu. Uppdatering av hemskärmen kan ta lite tid.</translation>
</message>
<message>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="62"/>
+ <source>List of services:</source>
+ <translation>Tjänstlista:</translation>
+ </message>
+ <message>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="77"/>
+ <source>Note: this will close all apps.</source>
+ <translation>Notera att detta stänger alla appar.</translation>
+ </message>
+ <message>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="78"/>
+ <source>Note: this will close %1.</source>
+ <translation>Notera att detta stänger %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="81"/>
+ <source>Note: this will close the %1 app.</source>
+ <translation>Notera att detta stänger appen %1.</translation>
+ </message>
+ <message>
<location filename="../src/qml/ScreenshotsPage.qml" line="71"/>
<location filename="../src/qml/WebPatchPage.qml" line="272"/>
<source>Screenshots</source>
@@ -425,41 +446,47 @@
</message>
<message>
<location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="236"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="245"/>
+ <source>Services need restart!</source>
+ <translation>Tjänster behöver startas om!</translation>
+ </message>
+ <message>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="241"/>
<source>Patch removed</source>
<translation>Korrigering borttagen</translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="237"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="242"/>
<source>Patch %1 removed</source>
<translation>Korrigering %1 borttagen</translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="240"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="250"/>
<source>Failed to install patch</source>
<translation>Kunde inte installera korrigering</translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="241"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="251"/>
<source>Patch %1 installation failed</source>
<translation>Korrigeringsfil %1 kunde inte installeras</translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="244"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="254"/>
<source>Failed to remove patch</source>
<translation>Kunde inte ta bort korrigering</translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="245"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="255"/>
<source>Patch %1 removal failed</source>
<translation>Korrigering %1 kunde inte tas bort</translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="248"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="258"/>
<source>Update available</source>
<translation>Uppdatering tillgänglig</translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="249"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="259"/>
<source>Patch %1 have update candidate</source>
<translation>Korrigeringsfil %1 har en uppdateringskandidat</translation>
</message>
@@ -559,9 +586,14 @@
</message>
<message>
<location filename="../src/qml/patchmanager.cpp" line="63"/>
- <location filename="../src/qml/patchmanager.cpp" line="216"/>
+ <location filename="../src/qml/patchmanager.cpp" line="217"/>
<source>other</source>
<translation>Annat</translation>
</message>
+ <message>
+ <location filename="../src/qml/patchmanager.cpp" line="64"/>
+ <source>keyboard</source>
+ <translation>Tangentbord</translation>
+ </message>
</context>
</TS>
\ No newline at end of file
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.0.tar.bz2/translations/settings-patchmanager.ts
^
|
@@ -43,6 +43,7 @@
<location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="222"/>
<location filename="../src/bin/dialog/dialog.qml" line="165"/>
<location filename="../src/qml/AboutPage.qml" line="63"/>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="78"/>
<source>Patchmanager</source>
<translation type="unfinished"></translation>
</message>
@@ -128,8 +129,8 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/WebPatchPage.qml" line="85"/>
<location filename="../src/qml/PatchManagerPage.qml" line="490"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="85"/>
<source>Patch details</source>
<translation type="unfinished"></translation>
</message>
@@ -159,17 +160,17 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/UnifiedPatchPage.qml" line="252"/>
+ <location filename="../src/qml/UnifiedPatchPage.qml" line="253"/>
<source>Patch log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/UnifiedPatchPage.qml" line="261"/>
+ <location filename="../src/qml/UnifiedPatchPage.qml" line="262"/>
<source>Press and hold to copy log to the clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/UnifiedPatchPage.qml" line="274"/>
+ <location filename="../src/qml/UnifiedPatchPage.qml" line="275"/>
<source>No log exists yet</source>
<translation type="unfinished"></translation>
</message>
@@ -298,16 +299,36 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/RestartServicesDialog.qml" line="48"/>
- <source>Restart services</source>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="52"/>
+ <source>Restart</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/RestartServicesDialog.qml" line="56"/>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="58"/>
<source>Some services will be restarted now. Reloading the homescreen of the device might take a little time.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="62"/>
+ <source>List of services:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="77"/>
+ <source>Note: this will close all apps.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="78"/>
+ <source>Note: this will close %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/qml/RestartServicesDialog.qml" line="81"/>
+ <source>Note: this will close the %1 app.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../src/qml/ScreenshotsPage.qml" line="71"/>
<location filename="../src/qml/WebPatchPage.qml" line="272"/>
<source>Screenshots</source>
@@ -427,41 +448,47 @@
</message>
<message>
<location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="236"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="245"/>
+ <source>Services need restart!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="241"/>
<source>Patch removed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="237"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="242"/>
<source>Patch %1 removed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="240"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="250"/>
<source>Failed to install patch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="241"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="251"/>
<source>Patch %1 installation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="244"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="254"/>
<source>Failed to remove patch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="245"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="255"/>
<source>Patch %1 removal failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="248"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="258"/>
<source>Update available</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="249"/>
+ <location filename="../src/bin/patchmanager-daemon/patchmanagerobject.cpp" line="259"/>
<source>Patch %1 have update candidate</source>
<translation type="unfinished"></translation>
</message>
@@ -491,6 +518,16 @@
<source>Enable applying patches, which are not marked as compatible with the installed Sailfish OS version. Note that patches, which are actually incompatible, will not work.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../src/qml/SettingsPage.qml" line="37"/>
+ <source>Convert Patches between 32 bit and 64 bit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/qml/SettingsPage.qml" line="38"/>
+ <source>Automatically fix lib or lib64 for select paths shown below.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>Sections</name>
@@ -561,9 +598,14 @@
</message>
<message>
<location filename="../src/qml/patchmanager.cpp" line="63"/>
- <location filename="../src/qml/patchmanager.cpp" line="216"/>
+ <location filename="../src/qml/patchmanager.cpp" line="239"/>
<source>other</source>
<translation>Other</translation>
</message>
+ <message>
+ <location filename="../src/qml/patchmanager.cpp" line="64"/>
+ <source>keyboard</source>
+ <translation>Keyboard</translation>
+ </message>
</context>
</TS>
|