debian: add patches
authorBoyuan Yang <073plan@gmail.com>
Wed, 13 Dec 2017 11:58:20 +0000 (19:58 +0800)
committerBoyuan Yang <073plan@gmail.com>
Wed, 13 Dec 2017 11:58:20 +0000 (19:58 +0800)
debian/changelog
debian/patches/0001-fix-break-forever-loop-for-syncing-backend-data.patch [new file with mode: 0644]
debian/patches/0002-multiarch-fix-support-for-kfreebsd-and-hurd.patch [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]

index 06e44588cb1528eb0b9f49f160509965b1fb23a3..9f0f01c455f07ae1180530ae82d493d07622246b 100644 (file)
@@ -1,3 +1,10 @@
+dtkcore (2.0.5.2-2) unstable; urgency=medium
+
+  * Cherry-pick upstream patch to support non-linux arch.
+  * Add patch to workaround problems for Qt private headers.
+
+ -- Boyuan Yang <073plan@gmail.com>  Wed, 13 Dec 2017 19:43:02 +0800
+
 dtkcore (2.0.5.2-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/debian/patches/0001-fix-break-forever-loop-for-syncing-backend-data.patch b/debian/patches/0001-fix-break-forever-loop-for-syncing-backend-data.patch
new file mode 100644 (file)
index 0000000..be5a595
--- /dev/null
@@ -0,0 +1,25 @@
+From: Sian Cao <yinshuiboy@gmail.com>
+Date: Fri, 8 Dec 2017 14:47:32 +0800
+Subject: fix: break forever loop for syncing backend data
+
+option setValue emits valueChanged, and handler for valueChanged emits
+setOption which requests backend to do doSetOption asynchronously which
+in turn calls option's setValue again.
+
+Change-Id: I5a6b5ccabfd29b26d3079779aad80461d7866d47
+---
+ src/settings/backend/qsettingbackend.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/settings/backend/qsettingbackend.cpp b/src/settings/backend/qsettingbackend.cpp
+index fec9e4b..ae15b4f 100644
+--- a/src/settings/backend/qsettingbackend.cpp
++++ b/src/settings/backend/qsettingbackend.cpp
+@@ -72,7 +72,6 @@ void QSettingBackend::doSetOption(const QString &key, const QVariant &value)
+     auto oldValue = d->settings->value("value");
+     if (oldValue != value) {
+         d->settings->setValue("value", value);
+-        Q_EMIT optionChanged(key, value);
+     }
+     d->settings->endGroup();
+     d->settings->sync();
diff --git a/debian/patches/0002-multiarch-fix-support-for-kfreebsd-and-hurd.patch b/debian/patches/0002-multiarch-fix-support-for-kfreebsd-and-hurd.patch
new file mode 100644 (file)
index 0000000..a4bf4b6
--- /dev/null
@@ -0,0 +1,342 @@
+From: Yangfl <mmyangfl@gmail.com>
+Date: Tue, 12 Dec 2017 16:47:45 +0800
+Subject: multiarch: fix support for kfreebsd and hurd
+
+Currently DFileSystemWatcher does not actually support non-Linux
+platforms but provides a dummy file for win* and mac*, while
+unconsidered condition prevents the entire library from building on
+kFreebsd and Hurd, which are parts of platforms supported by Debian
+project.
+
+Resolves: https://bugs.debian.org/874137
+
+Change-Id: I5ff455e8b1497492132599309ee9d5760b63694b
+---
+ src/filesystem/dfilesystemwatcher_dummy.cpp        | 248 +++++++++++++++++++++
+ src/filesystem/filesystem.pri                      |   4 +-
+ .../private/dfilesystemwatcher_dummy_p.h           |  45 ++++
+ 3 files changed, 295 insertions(+), 2 deletions(-)
+ create mode 100644 src/filesystem/dfilesystemwatcher_dummy.cpp
+ create mode 100644 src/filesystem/private/dfilesystemwatcher_dummy_p.h
+
+diff --git a/src/filesystem/dfilesystemwatcher_dummy.cpp b/src/filesystem/dfilesystemwatcher_dummy.cpp
+new file mode 100644
+index 0000000..022c42e
+--- /dev/null
++++ b/src/filesystem/dfilesystemwatcher_dummy.cpp
+@@ -0,0 +1,248 @@
++/*
++ * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd.
++ *
++ * This program is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation, either version 3 of the License, or
++ * any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
++ */
++
++#include "dfilesystemwatcher.h"
++#include "private/dfilesystemwatcher_dummy_p.h"
++
++DCORE_BEGIN_NAMESPACE
++
++DFileSystemWatcherPrivate::DFileSystemWatcherPrivate(int fd, DFileSystemWatcher *qq)
++    : DObjectPrivate(qq)
++{
++
++}
++
++DFileSystemWatcherPrivate::~DFileSystemWatcherPrivate()
++{
++
++}
++
++/*!
++    \class DFileSystemWatcher
++    \inmodule QtCore
++    \brief The DFileSystemWatcher class provides an interface for monitoring files and directories for modifications.
++    \ingroup io
++    \since 4.2
++    \reentrant
++
++    DFileSystemWatcher monitors the file system for changes to files
++    and directories by watching a list of specified paths.
++
++    Call addPath() to watch a particular file or directory. Multiple
++    paths can be added using the addPaths() function. Existing paths can
++    be removed by using the removePath() and removePaths() functions.
++
++    DFileSystemWatcher examines each path added to it. Files that have
++    been added to the DFileSystemWatcher can be accessed using the
++    files() function, and directories using the directories() function.
++
++    The fileChanged() signal is emitted when a file has been modified,
++    renamed or removed from disk. Similarly, the directoryChanged()
++    signal is emitted when a directory or its contents is modified or
++    removed.  Note that DFileSystemWatcher stops monitoring files once
++    they have been renamed or removed from disk, and directories once
++    they have been removed from disk.
++
++    \note On systems running a Linux kernel without inotify support,
++    file systems that contain watched paths cannot be unmounted.
++
++    \note Windows CE does not support directory monitoring by
++    default as this depends on the file system driver installed.
++
++    \note The act of monitoring files and directories for
++    modifications consumes system resources. This implies there is a
++    limit to the number of files and directories your process can
++    monitor simultaneously. On all BSD variants, for
++    example, an open file descriptor is required for each monitored
++    file. Some system limits the number of open file descriptors to 256
++    by default. This means that addPath() and addPaths() will fail if
++    your process tries to add more than 256 files or directories to
++    the file system monitor. Also note that your process may have
++    other file descriptors open in addition to the ones for files
++    being monitored, and these other open descriptors also count in
++    the total. OS X uses a different backend and does not
++    suffer from this issue.
++
++
++    \sa QFile, QDir
++*/
++
++
++/*!
++    Constructs a new file system watcher object with the given \a parent.
++*/
++DFileSystemWatcher::DFileSystemWatcher(QObject *parent)
++    : QObject(parent)
++    , DObject()
++{
++
++}
++
++/*!
++    Constructs a new file system watcher object with the given \a parent
++    which monitors the specified \a paths list.
++*/
++DFileSystemWatcher::DFileSystemWatcher(const QStringList &paths, QObject *parent)
++    : DFileSystemWatcher(parent)
++{
++    addPaths(paths);
++}
++
++/*!
++    Destroys the file system watcher.
++*/
++DFileSystemWatcher::~DFileSystemWatcher()
++{ }
++
++/*!
++    Adds \a path to the file system watcher if \a path exists. The
++    path is not added if it does not exist, or if it is already being
++    monitored by the file system watcher.
++
++    If \a path specifies a directory, the directoryChanged() signal
++    will be emitted when \a path is modified or removed from disk;
++    otherwise the fileChanged() signal is emitted when \a path is
++    modified, renamed or removed.
++
++    If the watch was successful, true is returned.
++
++    Reasons for a watch failure are generally system-dependent, but
++    may include the resource not existing, access failures, or the
++    total watch count limit, if the platform has one.
++
++    \note There may be a system dependent limit to the number of
++    files and directories that can be monitored simultaneously.
++    If this limit is been reached, \a path will not be monitored,
++    and false is returned.
++
++    \sa addPaths(), removePath()
++*/
++bool DFileSystemWatcher::addPath(const QString &path)
++{
++    return false;
++}
++
++/*!
++    Adds each path in \a paths to the file system watcher. Paths are
++    not added if they not exist, or if they are already being
++    monitored by the file system watcher.
++
++    If a path specifies a directory, the directoryChanged() signal
++    will be emitted when the path is modified or removed from disk;
++    otherwise the fileChanged() signal is emitted when the path is
++    modified, renamed, or removed.
++
++    The return value is a list of paths that could not be watched.
++
++    Reasons for a watch failure are generally system-dependent, but
++    may include the resource not existing, access failures, or the
++    total watch count limit, if the platform has one.
++
++    \note There may be a system dependent limit to the number of
++    files and directories that can be monitored simultaneously.
++    If this limit has been reached, the excess \a paths will not
++    be monitored, and they will be added to the returned QStringList.
++
++    \sa addPath(), removePaths()
++*/
++QStringList DFileSystemWatcher::addPaths(const QStringList &paths)
++{
++    return QStringList();
++}
++
++/*!
++    Removes the specified \a path from the file system watcher.
++
++    If the watch is successfully removed, true is returned.
++
++    Reasons for watch removal failing are generally system-dependent,
++    but may be due to the path having already been deleted, for example.
++
++    \sa removePaths(), addPath()
++*/
++bool DFileSystemWatcher::removePath(const QString &path)
++{
++    return false;
++}
++
++/*!
++    Removes the specified \a paths from the file system watcher.
++
++    The return value is a list of paths which were not able to be
++    unwatched successfully.
++
++    Reasons for watch removal failing are generally system-dependent,
++    but may be due to the path having already been deleted, for example.
++
++    \sa removePath(), addPaths()
++*/
++QStringList DFileSystemWatcher::removePaths(const QStringList &paths)
++{
++    return QStringList();
++}
++
++/*!
++    \fn void DFileSystemWatcher::fileChanged(const QString &path)
++
++    This signal is emitted when the file at the specified \a path is
++    modified, renamed or removed from disk.
++
++    \sa directoryChanged()
++*/
++
++/*!
++    \fn void DFileSystemWatcher::directoryChanged(const QString &path)
++
++    This signal is emitted when the directory at a specified \a path
++    is modified (e.g., when a file is added or deleted) or removed
++    from disk. Note that if there are several changes during a short
++    period of time, some of the changes might not Q_EMIT this signal.
++    However, the last change in the sequence of changes will always
++    generate this signal.
++
++    \sa fileChanged()
++*/
++
++/*!
++    \fn QStringList DFileSystemWatcher::directories() const
++
++    Returns a list of paths to directories that are being watched.
++
++    \sa files()
++*/
++
++/*!
++    \fn QStringList DFileSystemWatcher::files() const
++
++    Returns a list of paths to files that are being watched.
++
++    \sa directories()
++*/
++
++QStringList DFileSystemWatcher::directories() const
++{
++    return QStringList();
++}
++
++QStringList DFileSystemWatcher::files() const
++{
++    return QStringList();
++}
++
++DCORE_END_NAMESPACE
++
++#include "moc_dfilesystemwatcher.cpp"
+diff --git a/src/filesystem/filesystem.pri b/src/filesystem/filesystem.pri
+index 86d929b..d0e67f6 100644
+--- a/src/filesystem/filesystem.pri
++++ b/src/filesystem/filesystem.pri
+@@ -23,9 +23,9 @@ linux {
+ } else:win* {
+     SOURCES += \
+         $$PWD/dfilesystemwatcher_win.cpp
+-} else:mac* {
++} else {
+     SOURCES += \
+-        $$PWD/dfilesystemwatcher_win.cpp
++        $$PWD/dfilesystemwatcher_dummy.cpp
+ }
+ includes.files += $$PWD/*.h
+diff --git a/src/filesystem/private/dfilesystemwatcher_dummy_p.h b/src/filesystem/private/dfilesystemwatcher_dummy_p.h
+new file mode 100644
+index 0000000..67311b6
+--- /dev/null
++++ b/src/filesystem/private/dfilesystemwatcher_dummy_p.h
+@@ -0,0 +1,45 @@
++/*
++ * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd.
++ *
++ * This program is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation, either version 3 of the License, or
++ * any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
++ */
++
++#ifndef DFILESYSTEMWATCHER_WIN_P_H
++#define DFILESYSTEMWATCHER_WIN_P_H
++
++#include "base/private/dobject_p.h"
++
++DCORE_BEGIN_NAMESPACE
++
++class DFileSystemWatcher;
++class DFileSystemWatcherPrivate : public DObjectPrivate
++{
++    Q_DECLARE_PUBLIC(DFileSystemWatcher)
++
++public:
++    DFileSystemWatcherPrivate(int fd, DFileSystemWatcher *qq);
++    ~DFileSystemWatcherPrivate();
++
++    // private slots
++    void _q_readFromInotify();
++};
++
++void DFileSystemWatcherPrivate::_q_readFromInotify()
++{
++
++}
++
++DCORE_END_NAMESPACE
++
++#endif // DFILESYSTEMWATCHER_WIN_P_H
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644 (file)
index 0000000..f48b548
--- /dev/null
@@ -0,0 +1,2 @@
+0001-fix-break-forever-loop-for-syncing-backend-data.patch
+0002-multiarch-fix-support-for-kfreebsd-and-hurd.patch