Your message dated Sat, 07 Jun 2025 08:50:18 +0000
with message-id <e1unpfq-009hlf...@respighi.debian.org>
and subject line unblock lomiri-system-settings
has caused the Debian Bug report #1107393,
regarding unblock: lomiri-system-settings/1.3.1-3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1107393: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1107393
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
X-Debbugs-Cc: lomiri-system-setti...@packages.debian.org
Control: affects -1 + src:lomiri-system-settings
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package lomiri-system-settings

Provide system information and license information via Lomiri's system
settings applet.


[ Reason ]
This version of l-s-s has the about plugin activated and adds the system
settings section "System Information". This section is also referenced /
linked from the systray's session indicator in Lomiri via one of its menu
items (which does not do anything without this new version of l-s-s when
being clicked on).

Unfortunately, Lomiri upstream (aka Ubuntu Touch) has various Ubuntu
Touch or libhybris (API layer for Android based devices) specifities
included in the about plugin which forced us to disable the about plugin
at first. Thanks to Adam Havelka (who worked on this versions included
patch), we can not last-minute offer the about plugin and its
functionality (show hardware details of the used device, provide UI
access to /usr/share/doc/*/copyright, show free storage in $HOME,etc.) to
Debian Lomiri users.

[ Impact ]
Non-functional menu item in Lomiri's session indicator, no access to
system information via the Lomiri UI, no UI interface for showing license
information of the Debian system.

[ Tests ]
Manual tests on a Debian 13 machine with Lomiri installed.

[ Risks ]
lomiri-system-settings might need a regression fix, if problems occur
caused by the added patch.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

[ Other info ]
Relevant to Lomiri on Debian.

unblock lomiri-system-settings/1.3.1-3
diff -Nru lomiri-system-settings-1.3.1/debian/changelog 
lomiri-system-settings-1.3.1/debian/changelog
--- lomiri-system-settings-1.3.1/debian/changelog       2025-05-04 
08:40:32.000000000 +0200
+++ lomiri-system-settings-1.3.1/debian/changelog       2025-06-06 
23:13:52.000000000 +0200
@@ -1,3 +1,14 @@
+lomiri-system-settings (1.3.1-3) unstable; urgency=medium
+
+  [ Adam Havelka ]
+  * debian/patches:
+    + Add 2014_removing-unnecessary-mobile-only-functionality.patch. Make
+      About plugin available on mainline Linux (i.e. Debian) by removing
+      mobile-only / Ubuntu Touch / libhybris / deviceinfo functionality and
+      information.
+
+ -- Mike Gabriel <sunwea...@debian.org>  Fri, 06 Jun 2025 23:13:52 +0200
+
 lomiri-system-settings (1.3.1-2) unstable; urgency=medium
 
   * debian/patches:
diff -Nru 
lomiri-system-settings-1.3.1/debian/patches/2014_removing-unnecessary-mobile-only-functionality.patch
 
lomiri-system-settings-1.3.1/debian/patches/2014_removing-unnecessary-mobile-only-functionality.patch
--- 
lomiri-system-settings-1.3.1/debian/patches/2014_removing-unnecessary-mobile-only-functionality.patch
       1970-01-01 01:00:00.000000000 +0100
+++ 
lomiri-system-settings-1.3.1/debian/patches/2014_removing-unnecessary-mobile-only-functionality.patch
       2025-06-06 23:08:14.000000000 +0200
@@ -0,0 +1,353 @@
+From 73b736bf6a24173fd6f6673f5116f285d3410330 Mon Sep 17 00:00:00 2001
+From: Adam Havelka <a...@uxes.cz>
+Date: Fri, 9 May 2025 09:48:35 +0200
+Subject: [PATCH] removing unnecessary mobile-only functionality
+
+---
+ plugins/CMakeLists.txt          |  2 +-
+ plugins/about/CMakeLists.txt    |  8 +--
+ plugins/about/PageComponent.qml | 95 ++-------------------------------
+ plugins/about/plugin.cpp        | 11 ----
+ plugins/about/storageabout.cpp  | 31 -----------
+ plugins/about/systeminfo.cpp    | 21 +++-----
+ plugins/about/systeminfo.h      |  2 +
+ 7 files changed, 15 insertions(+), 155 deletions(-)
+
+diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt
+index 43a1ecaf..7452be92 100644
+--- a/plugins/CMakeLists.txt
++++ b/plugins/CMakeLists.txt
+@@ -1,8 +1,8 @@
+ if(ANDR_PROP_FOUND)
+-    add_subdirectory(about)
+     add_subdirectory(brightness)
+     add_subdirectory(nfc)
+ endif()
++add_subdirectory(about)
+ add_subdirectory(background)
+ add_subdirectory(battery)
+ add_subdirectory(bluetooth)
+diff --git a/plugins/about/CMakeLists.txt b/plugins/about/CMakeLists.txt
+index f93190db..c3ad0304 100644
+--- a/plugins/about/CMakeLists.txt
++++ b/plugins/about/CMakeLists.txt
+@@ -1,15 +1,9 @@
+-include_directories(${ANDR_PROP_INCLUDE_DIRS})
+-include_directories(${DEVICEINFO_INCLUDE_DIRS})
+ include_directories(${GLIB_INCLUDE_DIRS})
+ include_directories(${GIO_INCLUDE_DIRS})
+ include_directories(${CLICK_INCLUDE_DIRS})
+ include_directories(${CLICK_INCLUDE_DIRS})
+ add_definitions(-DQT_NO_KEYWORDS)
+
+-if(DEVICEINFO_FOUND)
+-    add_definitions(-DENABLE_DEVICEINFO)
+-endif()
+-
+ set(QML_SOURCES
+     EntryComponent.qml
+     License.qml
+@@ -36,7 +30,7 @@ add_library(LomiriStorageAboutPanel MODULE
+ )
+
+ target_link_libraries(LomiriStorageAboutPanel Qt5::Qml Qt5::Quick Qt5::DBus
+-${ANDR_PROP_LDFLAGS} ${DEVICEINFO_LDFLAGS} ${GLIB_LDFLAGS} ${GIO_LDFLAGS} 
${CLICK_LDFLAGS} LomiriSystemSettingsPrivate)
++${GLIB_LDFLAGS} ${GIO_LDFLAGS} ${CLICK_LDFLAGS} LomiriSystemSettingsPrivate)
+
+ set(PLUG_DIR ${PLUGIN_PRIVATE_MODULE_DIR}/Lomiri/SystemSettings/StorageAbout)
+ install(TARGETS LomiriStorageAboutPanel DESTINATION ${PLUG_DIR})
+diff --git a/plugins/about/PageComponent.qml b/plugins/about/PageComponent.qml
+index 13673f79..db6eddd6 100644
+--- a/plugins/about/PageComponent.qml
++++ b/plugins/about/PageComponent.qml
+@@ -43,10 +43,6 @@ ItemPage {
+         id: bluetooth
+     }
+
+-    DeviceInfo {
+-        id: deviceInfos
+-    }
+-
+     OfonoManager {
+         id: manager
+         onModemsChanged: root.modemsSorted = modems.slice(0).sort()
+@@ -100,37 +96,6 @@ ItemPage {
+                 visible: backendInfos.serialNumber
+             }
+
+-            SettingsListItems.SingleValue {
+-                objectName: "imeiItem"
+-                text: "IMEI"
+-                value: i18n.tr("Press to show")
+-                visible: !showImei
+-                onClicked: showImei = true
+-            }
+-            SettingsListItems.SingleValue {
+-                objectName: "imeiItem"
+-                property string imeiNumber
+-                imeiNumber: deviceInfos.imei(0)
+-                text: "IMEI"
+-                value: modemsSorted.length ? (imeiNumber || i18n.tr("None")) :
+-                    i18n.tr("None")
+-                visible: modemsSorted.length == 1 && showImei
+-            }
+-
+-            SettingsListItems.Standard {
+-                text: "IMEI"
+-                objectName: "imeiItems"
+-                layout.subtitle.text: {
+-                    var imeis = [];
+-                    modemsSorted.forEach(function (path, i) {
+-                        var imei = deviceInfos.imei(i);
+-                        imei ? imeis.push(imei) : imeis.push(i18n.tr("None"));
+-                    });
+-                    return imeis.join(", ");
+-                }
+-                visible: modemsSorted.length > 1 && showImei
+-            }
+-
+             SettingsListItems.SingleValue {
+                 property string address: 
wlinfo.macAddress(NetworkInfo.WlanMode, 0)
+                 text: i18n.tr("Wi-Fi address")
+@@ -149,13 +114,12 @@ ItemPage {
+
+             SettingsListItems.Divider {}
+
+-            SettingsListItems.SingleValueProgression {
++            SettingsListItems.SingleValue {
+                 id: storageItem
+                 objectName: "storageItem"
+                 text: i18n.tr("Storage")
+                 /* TRANSLATORS: that's the free disk space, indicated in the 
most appropriate storage unit */
+                 value: i18n.tr("%1 
free").arg(Utilities.formatSize(backendInfos.getFreeSpace("/home")))
+-                onClicked: pageStack.addPageToNextColumn(root, 
Qt.resolvedUrl("Storage.qml"))
+             }
+
+             SettingsItemTitle {
+@@ -164,64 +128,11 @@ ItemPage {
+                 text: i18n.tr("Software:")
+             }
+
+-            SettingsListItems.SingleValueProgression {
++            SettingsListItems.SingleValue {
+                 visible: softwareItem.visible
+-                property string versionIdentifier: {
+-                    var num = SystemImage.currentBuildNumber;
+-                    var ota = SystemImage.versionTag;
+-                    num = num ? "r%1".arg(num.toString()) : "";
+-                    return ota ? ota : num;
+-                }
+                 objectName: "osItem"
+                 text: i18n.tr("OS")
+-                value: "Ubuntu Touch %1%2"
+-                    .arg(deviceInfos.version(DeviceInfo.Os))
+-                    .arg(versionIdentifier ? " (%1)".arg(versionIdentifier) : 
"")
+-                onClicked: pageStack.addPageToNextColumn(root, 
Qt.resolvedUrl("Version.qml"), {
+-                    version: versionIdentifier
+-                })
+-            }
+-
+-            SettingsListItems.SingleValue {
+-                objectName: "lastUpdatedItem"
+-                visible: softwareItem.visible
+-                text: i18n.tr("Last updated")
+-                value: SystemImage.lastUpdateDate && 
!isNaN(SystemImage.lastUpdateDate) ?
+-                    Qt.formatDate(SystemImage.lastUpdateDate) : 
i18n.tr("Never")
+-            }
+-
+-            SettingsListItems.SingleControl {
+-                visible: softwareItem.visible
+-
+-                Button {
+-                    objectName: "updateButton"
+-                    text: i18n.tr("Check for updates")
+-                    width: parent.width - units.gu(4)
+-                    onClicked: {
+-                        var upPlugin = 
pluginManager.getByName("system-update")
+-                        if (upPlugin) {
+-                            var updatePage = upPlugin.pageComponent
+-                            var updatePageIncubator;
+-                            if (updatePage) {
+-                                updatePageIncubator = 
pageStack.addPageToNextColumn(root, updatePage, {
+-                                    plugin: upPlugin, pluginManager: 
pluginManager
+-                                });
+-                                if (updatePageIncubator && 
updatePageIncubator.status == Component.Loading) {
+-                                    updatePageIncubator.onStatusChanged = 
function(status) {
+-                                        if (status == Component.Ready) {
+-                                            
updatePageIncubator.object.check(true);
+-                                        }
+-                                    }
+-                                }
+-                            } else {
+-                                console.warn("Failed to get system-update 
pageComponent")
+-                            }
+-                        } else {
+-                            console.warn("Failed to get system-update plugin 
instance")
+-                        }
+-                    }
+-                }
+-                showDivider: false
++                value: SystemInfo.distribution
+             }
+
+             SettingsItemTitle {
+diff --git a/plugins/about/plugin.cpp b/plugins/about/plugin.cpp
+index d6f70443..333b89d9 100644
+--- a/plugins/about/plugin.cpp
++++ b/plugins/about/plugin.cpp
+@@ -24,14 +24,6 @@
+ #include "click.h"
+ #include "storageabout.h"
+ #include "systeminfo.h"
+-#include "systemimage.h"
+-
+-static QObject *siSingletonProvider(QQmlEngine *engine, QJSEngine 
*scriptEngine)
+-{
+-    Q_UNUSED(engine)
+-    Q_UNUSED(scriptEngine)
+-    return new LomiriSystemSettings::QSystemImage;
+-}
+
+ static QObject *sinfoSingletonProvider(QQmlEngine *engine, QJSEngine 
*scriptEngine)
+ {
+@@ -47,9 +39,6 @@ void BackendPlugin::registerTypes(const char *uri)
+     qRegisterMetaType<ClickModel::Roles>();
+     qmlRegisterType<ClickModel>(uri, 1, 0, "ClickRoles");
+     qmlRegisterType<StorageAbout>(uri, 1, 0, "LomiriStorageAboutPanel");
+-    qmlRegisterSingletonType<LomiriSystemSettings::QSystemImage>(
+-        uri, 1, 0, "SystemImage", siSingletonProvider
+-    );
+     qmlRegisterSingletonType<SystemInfo>(
+         uri, 1, 0, "SystemInfo", sinfoSingletonProvider
+     );
+diff --git a/plugins/about/storageabout.cpp b/plugins/about/storageabout.cpp
+index 49778dc7..49ce21a0 100644
+--- a/plugins/about/storageabout.cpp
++++ b/plugins/about/storageabout.cpp
+@@ -43,7 +43,6 @@
+ #include <QtGlobal>
+ #include <QProcess>
+ #include <QVariant>
+-#include <hybris/properties/properties.h>
+ #include <QDBusReply>
+
+ namespace {
+@@ -164,47 +163,17 @@ StorageAbout::StorageAbout(QObject *parent) :
+ QString StorageAbout::serialNumber()
+ {
+
+-    if (m_serialNumber.isEmpty() || m_serialNumber.isNull())
+-    {
+-        char serialBuffer[PROP_VALUE_MAX];
+-        property_get("ro.serialno", serialBuffer, "");
+-        m_serialNumber = QString(serialBuffer);
+-    }
+-
+     return m_serialNumber;
+ }
+
+ QString StorageAbout::vendorString()
+ {
+-    if (m_vendorString.isEmpty() || m_vendorString.isNull())
+-    {
+-        char manufacturerBuffer[PROP_VALUE_MAX];
+-        char modelBuffer[PROP_VALUE_MAX];
+-        property_get("ro.product.manufacturer", manufacturerBuffer, "");
+-        property_get("ro.product.model", modelBuffer, "");
+-
+-        // Special case for devices using generic Halium system.img
+-        if (QString(manufacturerBuffer).startsWith("halium", 
Qt::CaseInsensitive))
+-        {
+-            property_get("ro.product.vendor.manufacturer", 
manufacturerBuffer, "");
+-            property_get("ro.product.vendor.model", modelBuffer, "");
+-        }
+-
+-        m_vendorString = QString("%1 
%2").arg(manufacturerBuffer).arg(modelBuffer);
+-    }
+-
+     return m_vendorString;
+ }
+
+ QString StorageAbout::deviceBuildDisplayID()
+ {
+
+-    if (m_deviceBuildDisplayID.isEmpty() || m_deviceBuildDisplayID.isNull())
+-    {
+-        char serialBuffer[PROP_VALUE_MAX];
+-        property_get("ro.build.display.id", serialBuffer, "");
+-        m_deviceBuildDisplayID = QString(serialBuffer);
+-    }
+
+     return m_deviceBuildDisplayID;
+ }
+diff --git a/plugins/about/systeminfo.cpp b/plugins/about/systeminfo.cpp
+index 1579516e..b08c2236 100644
+--- a/plugins/about/systeminfo.cpp
++++ b/plugins/about/systeminfo.cpp
+@@ -20,12 +20,9 @@
+ #include <sstream>
+ #include <unistd.h>
+
+-#ifdef ENABLE_DEVICEINFO
+-#include <deviceinfo.h>
+-#endif
+-
++#include <QCoreApplication>
++#include <QSysInfo>
+ #include "systeminfo.h"
+-#include "storageabout.h"
+
+ SystemInfo::SystemInfo(QObject *parent) : QObject(parent)
+ {
+@@ -74,19 +71,12 @@ static std::string devicetree_devicename()
+ QString SystemInfo::prettyName()
+ {
+     QString str = "unknown";
+-    auto storageAbout = new StorageAbout();
+-#ifdef ENABLE_DEVICEINFO
+-    DeviceInfo info;
+-    str = QString::fromStdString(info.prettyName());
+-#endif
+     if (str.toStdString() == "unknown"
+         || str.toStdString() == "Generic device"
+         || str.toStdString() == "Generic Halium device"
+         || str.toStdString() == "Generic linux device") {
+     // Fallback if we happen to stumble onto default values.
+-        if (!storageAbout->vendorString().isEmpty()) {
+-            return storageAbout->vendorString();
+-        } else if (access("/sys/devices/virtual/dmi", F_OK) != -1) {
++        if (access("/sys/devices/virtual/dmi", F_OK) != -1) {
+             return QString::fromStdString(dmi_devicename());
+         } else {
+             return QString::fromStdString(devicetree_devicename());
+@@ -94,3 +84,8 @@ QString SystemInfo::prettyName()
+     }
+     return str;
+ }
++
++QString SystemInfo::distribution()
++{
++    return QSysInfo::prettyProductName();
++}
+\ No newline at end of file
+diff --git a/plugins/about/systeminfo.h b/plugins/about/systeminfo.h
+index 9e75f23e..2a37398e 100644
+--- a/plugins/about/systeminfo.h
++++ b/plugins/about/systeminfo.h
+@@ -27,6 +27,7 @@ class SystemInfo : public QObject
+     Q_PROPERTY(QString cpuArch READ cpuArch CONSTANT)
+     Q_PROPERTY(QString kernelVersion READ kernelVersion CONSTANT)
+     Q_PROPERTY(QString prettyName READ prettyName CONSTANT)
++    Q_PROPERTY(QString distribution READ distribution CONSTANT)
+
+ public:
+     SystemInfo(QObject *parent = 0);
+@@ -35,4 +36,5 @@ public:
+     QString cpuArch();
+     QString kernelVersion();
+     QString prettyName();
++    QString distribution();
+ };
+--
+2.49.0
+
diff -Nru lomiri-system-settings-1.3.1/debian/patches/series 
lomiri-system-settings-1.3.1/debian/patches/series
--- lomiri-system-settings-1.3.1/debian/patches/series  2025-05-02 
10:51:57.000000000 +0200
+++ lomiri-system-settings-1.3.1/debian/patches/series  2025-06-06 
23:08:14.000000000 +0200
@@ -1,3 +1,4 @@
 2002_use-Noto-font-instead-of-Ubuntu-font.patch
 2011_build-without-trust-store.patch
 2013_show-hotspot-on-desktop.patch
+2014_removing-unnecessary-mobile-only-functionality.patch

--- End Message ---
--- Begin Message ---
Unblocked lomiri-system-settings.

--- End Message ---

Reply via email to