openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
June 2014
- 1 participants
- 1147 discussions
Hello community,
here is the log from the commit of package libqt5-creator for openSUSE:Factory checked in at 2014-06-30 21:44:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-creator (Old)
and /work/SRC/openSUSE:Factory/.libqt5-creator.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-creator"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libqt5-creator/libqt5-creator.changes 2014-05-22 06:39:21.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libqt5-creator.new/libqt5-creator.changes 2014-06-30 21:44:27.000000000 +0200
@@ -1,0 +2,7 @@
+Wed Jun 25 10:37:59 UTC 2014 - hrvoje.senjan(a)gmail.com
+
+- Update to 3.1.2
+ * Bugfix release, for more details please see:
+ http://blog.qt.digia.com/blog/2014/06/25/qt-5-3-1-released/
+
+-------------------------------------------------------------------
Old:
----
qt-creator-opensource-src-3.1.1.tar.gz
New:
----
qt-creator-opensource-src-3.1.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libqt5-creator.spec ++++++
--- /var/tmp/diff_new_pack.iNTrgq/_old 2014-06-30 21:44:30.000000000 +0200
+++ /var/tmp/diff_new_pack.iNTrgq/_new 2014-06-30 21:44:30.000000000 +0200
@@ -17,15 +17,15 @@
Name: libqt5-creator
-Version: 3.1.1
+Version: 3.1.2
Release: 0
Summary: Lightweight IDE
License: SUSE-LGPL-2.1-with-digia-exception-1.1
Group: Development/Tools/IDE
Url: http://qt.digia.com/Product/Developer-Tools/
-%define rversion 3.1.1
+%define rversion 3.1.2
%define rname qt-creator
-%define qt5_version 5.3.0
+%define qt5_version 5.3.1
Source: http://download.qt-project.org/official_releases/qtcreator/3.1/%{rversion}/…
Source1: %{name}-rpmlintrc
Source2: qtcreator.desktop
++++++ qt-creator-opensource-src-3.1.1.tar.gz -> qt-creator-opensource-src-3.1.2.tar.gz ++++++
/work/SRC/openSUSE:Factory/libqt5-creator/qt-creator-opensource-src-3.1.1.tar.gz /work/SRC/openSUSE:Factory/.libqt5-creator.new/qt-creator-opensource-src-3.1.2.tar.gz differ: char 5, line 1
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package libqt5-qtbase for openSUSE:Factory checked in at 2014-06-30 21:44:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtbase (Old)
and /work/SRC/openSUSE:Factory/.libqt5-qtbase.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-qtbase"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libqt5-qtbase/libqt5-qtbase.changes 2014-06-04 18:38:28.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libqt5-qtbase.new/libqt5-qtbase.changes 2014-06-30 21:44:21.000000000 +0200
@@ -1,0 +2,14 @@
+Wed Jun 25 10:38:00 UTC 2014 - hrvoje.senjan(a)gmail.com
+
+- Update to 5.3.1
+ * Bugfix release, for more details please see:
+ http://blog.qt.digia.com/blog/2014/06/25/qt-5-3-1-released/
+- Drop libqt5-fix-the-modal-dialogs-can-go-behind.patch, merged upstream
+- Added patches from upstream:
+ 0001-Do-not-overwrite-existing-event-mask-of-root-window.patch -- QTBUG-39648
+ 0002-Properly-check-which-OpenGL-features-are-supported.patch -- QTBUG-39730
+ 0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch -- Fix data race on QLoggingCategory
+ 0004-QDBus-fix-data-race-on-isDebugging-bool.patch -- fix data race on isDebugging bool
+ 0005-Translate-Super-Hyper-keys-to-MetaModifier.patch -- QTBUG-38428
+
+-------------------------------------------------------------------
Old:
----
libqt5-fix-the-modal-dialogs-can-go-behind.patch
qtbase-opensource-src-5.3.0.tar.xz
New:
----
0001-Do-not-overwrite-existing-event-mask-of-root-window.patch
0002-Properly-check-which-OpenGL-features-are-supported.patch
0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch
0004-QDBus-fix-data-race-on-isDebugging-bool.patch
0005-Translate-Super-Hyper-keys-to-MetaModifier.patch
qtbase-opensource-src-5.3.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libqt5-qtbase.spec ++++++
--- /var/tmp/diff_new_pack.dWhYfX/_old 2014-06-30 21:44:26.000000000 +0200
+++ /var/tmp/diff_new_pack.dWhYfX/_new 2014-06-30 21:44:26.000000000 +0200
@@ -20,15 +20,15 @@
%define journald 0
Name: libqt5-qtbase
-Version: 5.3.0
+Version: 5.3.1
Release: 0
Summary: C++ Program Library, Core Components
License: GPL-3.0 or SUSE-LGPL-2.1-with-digia-exception-1.1
Group: System/Libraries
Url: http://qt.digia.com
%define base_name libqt5
-%define real_version 5.3.0
-%define so_version 5.3.0
+%define real_version 5.3.1
+%define so_version 5.3.1
%if %qt5_snapshot
%define tar_version qtbase-%{real_version}
%else
@@ -53,8 +53,18 @@
Patch135: libqt5-byte-order-byte-is-address0.patch
# PATCH-FIX-SUSE libqt5-Fix-Gujarati-font.patch bnc#878292 fix broken Gujarati font rendering
Patch136: libqt5-Fix-Gujarati-font.patch
-# PATCH-FIX-UPSTREAM libqt5-fix-the-modal-dialogs-can-go-behind.patch -- fix that modal dialogs can go behind other process window
-Patch137: libqt5-fix-the-modal-dialogs-can-go-behind.patch
+
+# patches 1000 and above from upstream 5.3 branch #
+# PATCH-FIX-UPSTREAM 0001-Do-not-overwrite-existing-event-mask-of-root-window.patch -- QTBUG-39648
+Patch1000: 0001-Do-not-overwrite-existing-event-mask-of-root-window.patch
+# PATCH-FIX-UPSTREAM 0002-Properly-check-which-OpenGL-features-are-supported.patch -- QTBUG-39730
+Patch1001: 0002-Properly-check-which-OpenGL-features-are-supported.patch
+# PATCH-FIX-UPSTREAM 0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch -- Fix data race on QLoggingCategory
+Patch1002: 0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch
+# PATCH-FIX-UPSTREAM 0004-QDBus-fix-data-race-on-isDebugging-bool.patch -- fix data race on isDebugging bool
+Patch1003: 0004-QDBus-fix-data-race-on-isDebugging-bool.patch
+# PATCH-FIX-UPSTREAM 0005-Translate-Super-Hyper-keys-to-MetaModifier.patch -- QTBUG-38428
+Patch1004: 0005-Translate-Super-Hyper-keys-to-MetaModifier.patch
BuildRequires: alsa-devel
BuildRequires: cups-devel
BuildRequires: fdupes
@@ -144,7 +154,11 @@
%patch134 -p1
%patch135 -p1
%patch136 -p1
-%patch137 -p1
+%patch1000 -p1
+%patch1001 -p1
+%patch1002 -p1
+%patch1003 -p1
+%patch1004 -p1
# be sure not to use them
rm -r src/3rdparty/{libjpeg,freetype,libpng,zlib}
++++++ 0001-Do-not-overwrite-existing-event-mask-of-root-window.patch ++++++
>From 075c36e39beedb33ec4b239d57075f54acb21acf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <mgraesslin(a)kde.org>
Date: Mon, 16 Jun 2014 14:20:05 +0200
Subject: [PATCH 1/1] Do not overwrite existing event mask of root window
QXcbScreen installs its own event mask on the screen's root window.
This overwrites any existing event mask already set and by that
breaks applications when a new screen is added.
By first fetching the existing event mask and adding it to the newly
installed event mask, Qt does no longer break applications also
installing an event mask on the root window.
Task-number: QTBUG-39648
Change-Id: I8686dd6ae49d0e807c6fe1ea4a231ff728bfcf25
Reviewed-by: Friedemann Kleint <Friedemann.Kleint(a)digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge(a)digia.com>
Reviewed-by: Uli Schlachter <psychon(a)znc.in>
Reviewed-by: Gatis Paeglis <gatis.paeglis(a)digia.com>
---
src/plugins/platforms/xcb/qxcbscreen.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp
index 9f19841..01e7846 100644
--- a/src/plugins/platforms/xcb/qxcbscreen.cpp
+++ b/src/plugins/platforms/xcb/qxcbscreen.cpp
@@ -106,6 +106,11 @@ QXcbScreen::QXcbScreen(QXcbConnection *connection, xcb_screen_t *scr,
qDebug(" root ID........: %x", screen()->root);
#endif
+ QScopedPointer<xcb_get_window_attributes_reply_t, QScopedPointerPodDeleter> rootAttribs(
+ xcb_get_window_attributes_reply(xcb_connection(),
+ xcb_get_window_attributes_unchecked(xcb_connection(), screen()->root), NULL));
+ const quint32 existingEventMask = rootAttribs.isNull() ? 0 : rootAttribs->your_event_mask;
+
const quint32 mask = XCB_CW_EVENT_MASK;
const quint32 values[] = {
// XCB_CW_EVENT_MASK
@@ -113,6 +118,7 @@ QXcbScreen::QXcbScreen(QXcbConnection *connection, xcb_screen_t *scr,
| XCB_EVENT_MASK_LEAVE_WINDOW
| XCB_EVENT_MASK_PROPERTY_CHANGE
| XCB_EVENT_MASK_STRUCTURE_NOTIFY // for the "MANAGER" atom (system tray notification).
+ | existingEventMask // don't overwrite the event mask on the root window
};
xcb_change_window_attributes(xcb_connection(), screen()->root, mask, values);
--
1.9.3
++++++ 0002-Properly-check-which-OpenGL-features-are-supported.patch ++++++
>From 473ed1c1aa67ceb345b20d13c408ed8bd65a9e41 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <mgraesslin(a)kde.org>
Date: Wed, 18 Jun 2014 13:03:15 +0200
Subject: [PATCH 1/1] Properly check which OpenGL features are supported
QOpenGLShaderProgram::hasOpenGLShaderPrograms tests whether
QOpenGLFunctions::Shaders is provided for the given context. As the
initialization code assumed OpenGL 2 this always was true. But
unfortunately we still cannot assume that OpenGL 2 is universally
supported. E.g. indirect rendering (no matter how bad that idea is)
does not support OpenGL 2 on all hardware and the Shader related
extensions are not available.
This change makes sure that only when OpenGL 2 is available the
features provided by OpenGL 2 are enabled. If OpenGL 2 is not
available the extensions are tested. The checks are slightly
reordered to not do the extension tests at all if OpenGL 2 is
available.
Task-number: QTBUG-39730
Change-Id: Ic775163e0dcc519925b1287f3c4ca5e8ebf101d5
Reviewed-by: Laszlo Agocs <laszlo.agocs(a)digia.com>
---
src/gui/opengl/qopenglfunctions.cpp | 78 +++++++++++++++++++------------------
1 file changed, 40 insertions(+), 38 deletions(-)
diff --git a/src/gui/opengl/qopenglfunctions.cpp b/src/gui/opengl/qopenglfunctions.cpp
index a0d1775..bc4a714 100644
--- a/src/gui/opengl/qopenglfunctions.cpp
+++ b/src/gui/opengl/qopenglfunctions.cpp
@@ -283,46 +283,48 @@ static int qt_gl_resolve_features()
QSurfaceFormat format = QOpenGLContext::currentContext()->format();
QOpenGLExtensionMatcher extensions;
- // Recognize features by extension name.
- if (extensions.match("GL_ARB_multitexture"))
- features |= QOpenGLFunctions::Multitexture;
- if (extensions.match("GL_ARB_shader_objects"))
- features |= QOpenGLFunctions::Shaders;
- if (extensions.match("GL_EXT_framebuffer_object") ||
- extensions.match("GL_ARB_framebuffer_object"))
- features |= QOpenGLFunctions::Framebuffers;
- if (extensions.match("GL_EXT_blend_color"))
- features |= QOpenGLFunctions::BlendColor;
- if (extensions.match("GL_EXT_blend_equation_separate"))
- features |= QOpenGLFunctions::BlendEquationSeparate;
- if (extensions.match("GL_EXT_blend_func_separate"))
- features |= QOpenGLFunctions::BlendFuncSeparate;
- if (extensions.match("GL_EXT_blend_subtract"))
- features |= QOpenGLFunctions::BlendSubtract;
- if (extensions.match("GL_ARB_texture_compression"))
- features |= QOpenGLFunctions::CompressedTextures;
- if (extensions.match("GL_ARB_multisample"))
- features |= QOpenGLFunctions::Multisample;
- if (extensions.match("GL_ARB_texture_non_power_of_two"))
- features |= QOpenGLFunctions::NPOTTextures |
- QOpenGLFunctions::NPOTTextureRepeat;
-
- // assume version 2.0 or higher
- features |= QOpenGLFunctions::BlendColor |
- QOpenGLFunctions::BlendEquation |
- QOpenGLFunctions::Multitexture |
- QOpenGLFunctions::CompressedTextures |
- QOpenGLFunctions::Multisample |
- QOpenGLFunctions::BlendFuncSeparate |
- QOpenGLFunctions::Buffers |
- QOpenGLFunctions::Shaders |
- QOpenGLFunctions::StencilSeparate |
- QOpenGLFunctions::BlendEquationSeparate |
- QOpenGLFunctions::NPOTTextures |
- QOpenGLFunctions::NPOTTextureRepeat;
-
if (format.majorVersion() >= 3)
features |= QOpenGLFunctions::Framebuffers;
+ else if (extensions.match("GL_EXT_framebuffer_object") ||
+ extensions.match("GL_ARB_framebuffer_object"))
+ features |= QOpenGLFunctions::Framebuffers;
+
+ if (format.majorVersion() >= 2) {
+ features |= QOpenGLFunctions::BlendColor |
+ QOpenGLFunctions::BlendEquation |
+ QOpenGLFunctions::BlendSubtract |
+ QOpenGLFunctions::Multitexture |
+ QOpenGLFunctions::CompressedTextures |
+ QOpenGLFunctions::Multisample |
+ QOpenGLFunctions::BlendFuncSeparate |
+ QOpenGLFunctions::Buffers |
+ QOpenGLFunctions::Shaders |
+ QOpenGLFunctions::StencilSeparate |
+ QOpenGLFunctions::BlendEquationSeparate |
+ QOpenGLFunctions::NPOTTextures |
+ QOpenGLFunctions::NPOTTextureRepeat;
+ } else {
+ // Recognize features by extension name.
+ if (extensions.match("GL_ARB_multitexture"))
+ features |= QOpenGLFunctions::Multitexture;
+ if (extensions.match("GL_ARB_shader_objects"))
+ features |= QOpenGLFunctions::Shaders;
+ if (extensions.match("GL_EXT_blend_color"))
+ features |= QOpenGLFunctions::BlendColor;
+ if (extensions.match("GL_EXT_blend_equation_separate"))
+ features |= QOpenGLFunctions::BlendEquationSeparate;
+ if (extensions.match("GL_EXT_blend_subtract"))
+ features |= QOpenGLFunctions::BlendSubtract;
+ if (extensions.match("GL_EXT_blend_func_separate"))
+ features |= QOpenGLFunctions::BlendFuncSeparate;
+ if (extensions.match("GL_ARB_texture_compression"))
+ features |= QOpenGLFunctions::CompressedTextures;
+ if (extensions.match("GL_ARB_multisample"))
+ features |= QOpenGLFunctions::Multisample;
+ if (extensions.match("GL_ARB_texture_non_power_of_two"))
+ features |= QOpenGLFunctions::NPOTTextures |
+ QOpenGLFunctions::NPOTTextureRepeat;
+ }
const QPair<int, int> version = format.version();
if (version < qMakePair(3, 0)
--
1.9.3
++++++ 0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch ++++++
>From 884b38157689a893ace0a4c793fab921167abb2c Mon Sep 17 00:00:00 2001
From: David Faure <david.faure(a)kdab.com>
Date: Sun, 8 Jun 2014 21:46:24 +0200
Subject: [PATCH 1/1] Fix data race on QLoggingCategory when using qDebug from
multiple threads
setEnabled() would race with isEnabled()/isDebugEnabled()/etc.
Change-Id: I2004cba81d5417a634b97f5c2f98d3a4ab71770d
Reviewed-by: David Faure <david.faure(a)kdab.com>
---
src/corelib/arch/qatomic_bootstrap.h | 4 ++-
src/corelib/io/qloggingcategory.cpp | 36 ++++++++++++++++++--------
src/corelib/io/qloggingcategory.h | 35 +++++++++++++++++++------
tests/auto/corelib/io/qdebug/qdebug.pro | 2 +-
tests/auto/corelib/io/qdebug/tst_qdebug.cpp | 40 +++++++++++++++++++++++++++++
5 files changed, 97 insertions(+), 20 deletions(-)
diff --git a/src/corelib/arch/qatomic_bootstrap.h b/src/corelib/arch/qatomic_bootstrap.h
index 7f17387..0d6843a 100644
--- a/src/corelib/arch/qatomic_bootstrap.h
+++ b/src/corelib/arch/qatomic_bootstrap.h
@@ -67,8 +67,10 @@ template <typename T> struct QAtomicOps: QGenericAtomicOps<QAtomicOps<T> >
return --_q_value != 0;
}
- static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) Q_DECL_NOTHROW
+ static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue = 0) Q_DECL_NOTHROW
{
+ if (currentValue)
+ *currentValue = _q_value;
if (_q_value == expectedValue) {
_q_value = newValue;
return true;
diff --git a/src/corelib/io/qloggingcategory.cpp b/src/corelib/io/qloggingcategory.cpp
index 518052e..45fab11 100644
--- a/src/corelib/io/qloggingcategory.cpp
+++ b/src/corelib/io/qloggingcategory.cpp
@@ -50,6 +50,18 @@ const char qtDefaultCategoryName[] = "default";
Q_GLOBAL_STATIC_WITH_ARGS(QLoggingCategory, qtDefaultCategory,
(qtDefaultCategoryName))
+#ifndef Q_ATOMIC_INT8_IS_SUPPORTED
+static void setBoolLane(QBasicAtomicInt *atomic, bool enable, int shift)
+{
+ const int bit = 1 << shift;
+
+ if (enable)
+ atomic->fetchAndOrRelaxed(bit);
+ else
+ atomic->fetchAndAndRelaxed(~bit);
+}
+#endif
+
/*!
\class QLoggingCategory
\inmodule QtCore
@@ -171,13 +183,11 @@ Q_GLOBAL_STATIC_WITH_ARGS(QLoggingCategory, qtDefaultCategory,
*/
QLoggingCategory::QLoggingCategory(const char *category)
: d(0),
- name(0),
- enabledDebug(true),
- enabledWarning(true),
- enabledCritical(true)
+ name(0)
{
Q_UNUSED(d);
Q_UNUSED(placeholder);
+ enabled.store(0x01010101); // enabledDebug = enabledWarning = enabledCritical = true;
const bool isDefaultCategory
= (category == 0) || (strcmp(category, qtDefaultCategoryName) == 0);
@@ -249,9 +259,9 @@ QLoggingCategory::~QLoggingCategory()
bool QLoggingCategory::isEnabled(QtMsgType msgtype) const
{
switch (msgtype) {
- case QtDebugMsg: return enabledDebug;
- case QtWarningMsg: return enabledWarning;
- case QtCriticalMsg: return enabledCritical;
+ case QtDebugMsg: return isDebugEnabled();
+ case QtWarningMsg: return isWarningEnabled();
+ case QtCriticalMsg: return isCriticalEnabled();
case QtFatalMsg: return true;
}
return false;
@@ -270,9 +280,15 @@ bool QLoggingCategory::isEnabled(QtMsgType msgtype) const
void QLoggingCategory::setEnabled(QtMsgType type, bool enable)
{
switch (type) {
- case QtDebugMsg: enabledDebug = enable; break;
- case QtWarningMsg: enabledWarning = enable; break;
- case QtCriticalMsg: enabledCritical = enable; break;
+#ifdef Q_ATOMIC_INT8_IS_SUPPORTED
+ case QtDebugMsg: bools.enabledDebug.store(enable); break;
+ case QtWarningMsg: bools.enabledWarning.store(enable); break;
+ case QtCriticalMsg: bools.enabledCritical.store(enable); break;
+#else
+ case QtDebugMsg: setBoolLane(&enabled, enable, DebugShift); break;
+ case QtWarningMsg: setBoolLane(&enabled, enable, WarningShift); break;
+ case QtCriticalMsg: setBoolLane(&enabled, enable, CriticalShift); break;
+#endif
case QtFatalMsg: break;
}
}
diff --git a/src/corelib/io/qloggingcategory.h b/src/corelib/io/qloggingcategory.h
index 4aec8e6..573af21 100644
--- a/src/corelib/io/qloggingcategory.h
+++ b/src/corelib/io/qloggingcategory.h
@@ -57,10 +57,15 @@ public:
bool isEnabled(QtMsgType type) const;
void setEnabled(QtMsgType type, bool enable);
- bool isDebugEnabled() const { return enabledDebug; }
- bool isWarningEnabled() const { return enabledWarning; }
- bool isCriticalEnabled() const { return enabledCritical; }
-
+#ifdef Q_ATOMIC_INT8_IS_SUPPORTED
+ bool isDebugEnabled() const { return bools.enabledDebug.load(); }
+ bool isWarningEnabled() const { return bools.enabledWarning.load(); }
+ bool isCriticalEnabled() const { return bools.enabledCritical.load(); }
+#else
+ bool isDebugEnabled() const { return enabled.load() >> DebugShift & 1; }
+ bool isWarningEnabled() const { return enabled.load() >> WarningShift & 1; }
+ bool isCriticalEnabled() const { return enabled.load() >> CriticalShift & 1; }
+#endif
const char *categoryName() const { return name; }
// allows usage of both factory method and variable in qCX macros
@@ -78,10 +83,24 @@ private:
void *d; // reserved for future use
const char *name;
- bool enabledDebug;
- bool enabledWarning;
- bool enabledCritical;
- bool placeholder[5]; // reserve for future use
+#ifdef Q_BIG_ENDIAN
+ enum { DebugShift = 0, WarningShift = 8, CriticalShift = 16 };
+#else
+ enum { DebugShift = 24, WarningShift = 16, CriticalShift = 8 };
+#endif
+
+ struct AtomicBools {
+#ifdef Q_ATOMIC_INT8_IS_SUPPORTED
+ QBasicAtomicInteger<bool> enabledDebug;
+ QBasicAtomicInteger<bool> enabledWarning;
+ QBasicAtomicInteger<bool> enabledCritical;
+#endif
+ };
+ union {
+ AtomicBools bools;
+ QBasicAtomicInt enabled;
+ };
+ bool placeholder[4]; // reserve for future use
};
#define Q_DECLARE_LOGGING_CATEGORY(name) \
diff --git a/tests/auto/corelib/io/qdebug/qdebug.pro b/tests/auto/corelib/io/qdebug/qdebug.pro
index 820c17f..5e902bb 100644
--- a/tests/auto/corelib/io/qdebug/qdebug.pro
+++ b/tests/auto/corelib/io/qdebug/qdebug.pro
@@ -1,5 +1,5 @@
CONFIG += testcase parallel_test
TARGET = tst_qdebug
-QT = core testlib
+QT = core testlib concurrent
SOURCES = tst_qdebug.cpp
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
index 80144db..8fd830a 100644
--- a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
+++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
@@ -44,6 +44,9 @@
#include <QtCore/QtDebug>
#include <QtTest/QtTest>
+#include <QtConcurrentRun>
+#include <QFutureSynchronizer>
+
class tst_QDebug: public QObject
{
Q_OBJECT
@@ -59,6 +62,7 @@ private slots:
void qDebugQLatin1String() const;
void textStreamModifiers() const;
void defaultMessagehandler() const;
+ void threadSafety() const;
};
void tst_QDebug::assignment() const
@@ -305,5 +309,41 @@ void tst_QDebug::defaultMessagehandler() const
QVERIFY(same);
}
+QMutex s_mutex;
+QStringList s_messages;
+QSemaphore s_sema;
+
+static void threadSafeMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
+{
+ QMutexLocker lock(&s_mutex);
+ s_messages.append(msg);
+ Q_UNUSED(type);
+ Q_UNUSED(context);
+}
+
+static void doDebug() // called in each thread
+{
+ s_sema.acquire();
+ qDebug() << "doDebug";
+}
+
+void tst_QDebug::threadSafety() const
+{
+ MessageHandlerSetter mhs(threadSafeMessageHandler);
+ const int numThreads = 10;
+ QThreadPool::globalInstance()->setMaxThreadCount(numThreads);
+ QFutureSynchronizer<void> sync;
+ for (int i = 0; i < numThreads; ++i) {
+ sync.addFuture(QtConcurrent::run(&doDebug));
+ }
+ s_sema.release(numThreads);
+ sync.waitForFinished();
+ QMutexLocker lock(&s_mutex);
+ QCOMPARE(s_messages.count(), numThreads);
+ for (int i = 0; i < numThreads; ++i) {
+ QCOMPARE(s_messages.at(i), QStringLiteral("doDebug"));
+ }
+}
+
QTEST_MAIN(tst_QDebug);
#include "tst_qdebug.moc"
--
1.9.3
++++++ 0004-QDBus-fix-data-race-on-isDebugging-bool.patch ++++++
>From 7a4dcbaabf037a6913a5662ebb74cc47e04673b9 Mon Sep 17 00:00:00 2001
From: David Faure <david.faure(a)kdab.com>
Date: Sun, 8 Jun 2014 15:39:00 +0200
Subject: [PATCH 1/1] QDBus: fix data race on isDebugging bool
Change-Id: Id0b8bf8dac570abfc6c8768bd4264650ae0c199b
Reviewed-by: Thiago Macieira <thiago.macieira(a)intel.com>
---
src/dbus/qdbusintegrator.cpp | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 1fef6d4..260c188 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -73,8 +73,8 @@
QT_BEGIN_NAMESPACE
-static bool isDebugging;
-#define qDBusDebug if (!::isDebugging); else qDebug
+static QBasicAtomicInt isDebugging = Q_BASIC_ATOMIC_INITIALIZER(-1);
+#define qDBusDebug if (::isDebugging == 0); else qDebug
Q_GLOBAL_STATIC_WITH_ARGS(const QString, orgFreedesktopDBusString, (QLatin1String(DBUS_SERVICE_DBUS)))
@@ -1022,13 +1022,12 @@ QDBusConnectionPrivate::QDBusConnectionPrivate(QObject *p)
anonymousAuthenticationAllowed(false)
{
static const bool threads = q_dbus_threads_init_default();
- static const int debugging = qgetenv("QDBUS_DEBUG").toInt();
- ::isDebugging = debugging;
+ if (::isDebugging == -1)
+ ::isDebugging = qgetenv("QDBUS_DEBUG").toInt();
Q_UNUSED(threads)
- Q_UNUSED(debugging)
#ifdef QDBUS_THREAD_DEBUG
- if (debugging > 1)
+ if (::isDebugging > 1)
qdbusThreadDebug = qdbusDefaultThreadDebug;
#endif
--
1.9.3
++++++ 0005-Translate-Super-Hyper-keys-to-MetaModifier.patch ++++++
>From 51d6df1d18322c630f79567ed22de3718436d78d Mon Sep 17 00:00:00 2001
From: Gatis Paeglis <gatis.paeglis(a)digia.com>
Date: Tue, 17 Jun 2014 11:41:23 +0200
Subject: [PATCH 1/1] Translate Super/Hyper keys to MetaModifier
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is how it was done in Qt4. If users are interested
in an actual X11 keysym they can use QKeyEvent::nativeVirtualKey().
Change-Id: I710664e48c5db1633a357aa0a5d238f3453103ab
Task-number: QTBUG-38428
Reviewed-by: Christian Stenger <christian.stenger(a)digia.com>
Reviewed-by: Lars Knoll <lars.knoll(a)digia.com>
Reviewed-by: Sebastian Kügler <sebas(a)kde.org>
Reviewed-by: Shawn Rutledge <shawn.rutledge(a)digia.com>
---
src/plugins/platforms/xcb/qxcbkeyboard.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.cpp b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
index 69601f4..4c84b19 100644
--- a/src/plugins/platforms/xcb/qxcbkeyboard.cpp
+++ b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
@@ -929,6 +929,15 @@ int QXcbKeyboard::keysymToQtKey(xcb_keysym_t key) const
i += 2;
}
+ if (rmod_masks.meta) {
+ // translate Super/Hyper keys to Meta if we're using them as the MetaModifier
+ if (rmod_masks.meta == rmod_masks.super && (code == Qt::Key_Super_L || code == Qt::Key_Super_R)) {
+ code = Qt::Key_Meta;
+ } else if (rmod_masks.meta == rmod_masks.hyper && (code == Qt::Key_Hyper_L || code == Qt::Key_Hyper_R)) {
+ code = Qt::Key_Meta;
+ }
+ }
+
return code;
}
--
1.9.3
++++++ qtbase-opensource-src-5.3.0.tar.xz -> qtbase-opensource-src-5.3.1.tar.xz ++++++
/work/SRC/openSUSE:Factory/libqt5-qtbase/qtbase-opensource-src-5.3.0.tar.xz /work/SRC/openSUSE:Factory/.libqt5-qtbase.new/qtbase-opensource-src-5.3.1.tar.xz differ: char 29, line 1
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package systemd for openSUSE:Factory checked in at 2014-06-30 21:43:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/systemd (Old)
and /work/SRC/openSUSE:Factory/.systemd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "systemd"
Changes:
--------
--- /work/SRC/openSUSE:Factory/systemd/systemd-mini.changes 2014-05-28 06:43:51.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.changes 2014-06-30 21:43:31.000000000 +0200
@@ -1,0 +2,313 @@
+Fri Jun 27 08:17:47 UTC 2014 - werner(a)suse.de
+
+- Update of patch 0001-detect-s390-virt.patch (bnc#880438)
+
+-------------------------------------------------------------------
+Thu Jun 26 10:02:26 UTC 2014 - werner(a)suse.de
+
+- Shut up stupid check scripts crying for not mentioned systemd-mini-rpmlintrc
+
+-------------------------------------------------------------------
+Thu Jun 26 09:31:19 UTC 2014 - werner(a)suse.de
+
+- Add upstream patchs
+ 0001-core-use-correct-format-string-for-UIDs.patch
+ 0002-core-transaction-fix-cycle-break-attempts-outside-tr.patch
+ 0003-fsck-consider-a-fsck-implementation-linked-to-bin-tr.patch
+
+-------------------------------------------------------------------
+Thu Jun 26 06:44:09 UTC 2014 - werner(a)suse.de
+
+- Add upstream patch
+ 0001-units-order-network-online.target-after-network.targ.patch
+ to make sure that etwork-online.target follows network.target
+
+-------------------------------------------------------------------
+Wed Jun 25 18:09:52 UTC 2014 - rmilasan(a)suse.com
+
+- rules: re-enable dev_id conditionally in persistent rules
+ (bnc#884403 and bnc#882714).
+ Add 1040-re-enable-dev_id-conditionally-in-persistent-rules.patch
+
+-------------------------------------------------------------------
+Wed Jun 25 17:27:55 UTC 2014 - werner(a)suse.de
+
+- Add upstream patches
+ 0001-vconsole-also-copy-character-maps-not-just-fonts-fro.patch
+ 0002-core-make-sure-Environment-fields-passed-in-for-tran.patch
+ 0003-core-You-can-not-put-the-cached-result-of-use_smack-.patch
+ 0004-cryptsetup-don-t-add-unit-dependency-on-dev-null-dev.patch
+ 0005-man-fix-path-in-crypttab-5.patch
+
+-------------------------------------------------------------------
+Wed Jun 25 17:06:07 UTC 2014 - werner(a)suse.de
+
+- Add upstream patch
+ 1039-udevadm-settle-fixed-return-code-for-empty-queue.patch it
+ fixes udevadm settle exit code which may had roken dracut scripts
+ (bnc#884271 comment#18)
+
+-------------------------------------------------------------------
+Wed Jun 25 14:12:52 UTC 2014 - werner(a)suse.de
+
+- Temporary disable patch 1022 (bnc#884271 and bnc#882714).
+
+-------------------------------------------------------------------
+Tue Jun 24 11:55:39 UTC 2014 - rmilasan(a)suse.com
+
+- Rename 0002-udev-fix-invalid-free-in-enable_name_policy.patch
+ to 1038-udev-fix-invalid-free-in-enable_name_policy.patch
+
+-------------------------------------------------------------------
+Tue Jun 24 11:27:27 UTC 2014 - werner(a)suse.de
+
+- Replace patches
+ 0001-systemd-empty-sigmask-on-reexec.patch with
+ upstream 0008-Reset-signal-mask-on-re-exec-to-init.patch
+ ensure-sysctl-are-applied-after-modules-are-loaded.patch with
+ upstream 0001-units-systemd-sysctl.service.in-run-after-load-modul.patch
+ getty-generator-with-serial-3270-tty.patch with
+ upstream 0004-getty-generator-properly-escape-instance-names.patch
+- Add upstream patches
+ 0002-units-add-missing-caps-so-that-GetAddresses-can-work.patch
+ 0003-units-order-systemd-tmpfiles-clean.service-after-tim.patch
+ 0005-po-add-Greek-translation.patch
+ 0006-hwdb-Update-database-of-Bluetooth-company-identifier.patch
+ 0007-po-add-German-translation.patch
+ 0009-core-clean-up-signal-reset-logic-when-reexec.patch
+ 0010-util-treat-fuse.sshfs-as-a-network-filesystem.patch
+ 0011-build-sys-add-pthread-flag-for-libsystemd-shared.patch
+ 0012-core-transaction-avoid-misleading-error-message-when.patch
+
+-------------------------------------------------------------------
+Tue Jun 24 10:04:21 UTC 2014 - werner(a)suse.de
+
+- Invert of the boolean for locking scheme of fsck (bnc#881125)
+- Remove the ghost entry /etc/hostname and require the netcfg
+
+-------------------------------------------------------------------
+Mon Jun 23 16:39:50 UTC 2014 - arvidjaar(a)gmail.com
+
+- make sure legacy services that depend on network are started after
+ network is available (bnc#883565)
+ * 0001-core-sysvcompat-network-should-be-equivalent-to-netw.patch
+ * update insserv-generator.patch to translate $network into
+ network-online.target
+
+-------------------------------------------------------------------
+Wed Jun 18 13:35:58 UTC 2014 - werner(a)suse.de
+
+- Add patch 0001-detect-s390-virt.patch from Thomas Blume (bnc#880438)
+ to detect the virtualization layers on s390x as well
+
+-------------------------------------------------------------------
+Wed Jun 18 12:58:42 UTC 2014 - werner(a)suse.de
+
+- Do not generate synthesize change for cd/dvd (bnc#882714, comment #51)
+ add patch 1037-udev-exclude-cd-dvd-from-block-device.patch from
+ Roberts suggestion as well as readd
+ 1022-udev-remove-seqnum-API-and-all-assumptions-about-seq.patch
+
+-------------------------------------------------------------------
+Tue Jun 17 14:21:56 UTC 2014 - werner(a)suse.de
+
+- Add upstream patches
+ 0001-core-fix-invalid-free-in-killall.patch
+ 0002-udev-fix-invalid-free-in-enable_name_policy.patch
+ 0003-install-fix-invalid-free-in-unit_file_mask.patch
+
+-------------------------------------------------------------------
+Tue Jun 17 11:43:23 UTC 2014 - rmilasan(a)suse.com
+
+- rules: disable usage of dev_id in persistent rules (bnc#882714).
+ add: 1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch
+- Disable patch (bnc#882714).
+ 1022-udev-remove-seqnum-API-and-all-assumptions-about-seq.patch
+
+-------------------------------------------------------------------
+Thu Jun 12 12:14:11 UTC 2014 - werner(a)suse.de
+
+- Add patch
+ 1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch
+ from Hannes Reinecke to avoid a race condition between variable
+ 'SYSTEMD_READY=0' and 'systemd' tag within udev rules (bnc#881942)
+
+-------------------------------------------------------------------
+Thu Jun 12 09:40:54 UTC 2014 - werner(a)suse.de
+
+- Add workaround for bnc#882393 by adding the systemd update utmp
+ runlevel service to the wanted unit of e.g. the graphical target
+- Add some later on created files to our file list
+
+-------------------------------------------------------------------
+Thu Jun 12 03:33:01 UTC 2014 - jlee(a)suse.com
+
+- Generate %{_libexecdir}/modules-load.d/efivars.conf so we load efivars
+ module at boot time not from udev (bnc#881559).
+
+-------------------------------------------------------------------
+Wed Jun 11 21:59:29 UTC 2014 - crrodriguez(a)opensuse.org
+
+- Do not build EFI support code in architectures on which
+ the kernel does not support CONFIG_EFI, it won't work.
+ (ia64 also supports it, but that's dead so is not included)
+
+-------------------------------------------------------------------
+Wed Jun 11 14:09:30 UTC 2014 - werner(a)suse.de
+
+- Add patch tmpfiles-do-not-clean-for-mandb-index-files.patch
+ there is no need to clean out all 30 days the index data base
+ files nor the cachedir tags of mandb. Those files are used
+ for whatis(1) as well as for apropos(1).
+
+-------------------------------------------------------------------
+Wed Jun 11 13:31:53 UTC 2014 - werner(a)suse.de
+
+- Do not override predictable names for openSUSE
+
+-------------------------------------------------------------------
+Wed Jun 11 11:03:45 UTC 2014 - werner(a)suse.de
+
+- Remove systemd-detect-xendom.patch as it becomes obsolete with
+ upstream patch 0004-systemd-detect-virt-only-discover-Xen-domU.patch
+- Add upstream patches
+ 0001-umount-modernizations.patch
+ 0002-namespace-when-setting-up-an-inaccessible-mount-poin.patch
+ 0003-core-allow-transient-mount-units.patch
+ 0004-systemd-detect-virt-only-discover-Xen-domU.patch
+ 0005-backlight-Do-not-clamp-brightness-for-LEDs.patch
+ 0006-log-honour-the-kernel-s-quiet-cmdline-argument.patch
+
+-------------------------------------------------------------------
+Tue Jun 10 19:58:56 UTC 2014 - rmilasan(a)suse.com
+
+- Add upstream patches
+ 1033-udev-really-exclude-device-mapper-from-block-device.patch
+ 1034-udev-check-the-return-value-from-udev_enumerate_scan.patch
+
+-------------------------------------------------------------------
+Tue Jun 10 15:29:49 UTC 2014 - werner(a)suse.de
+
+- Change detection of new locking scheme of fsck
+
+-------------------------------------------------------------------
+Tue Jun 10 11:11:55 UTC 2014 - werner(a)suse.de
+
+- Change 1021-udev-re-add-persistent-net-rules.patch to use persistent
+ rules as a default on SLES-12 and predictable rules as a default
++++ 116 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/systemd/systemd-mini.changes
++++ and /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.changes
systemd.changes: same change
Old:
----
0001-systemd-empty-sigmask-on-reexec.patch
delay-fsck-cryptsetup-after-md-dmraid-lvm-are-started.patch
ensure-DM-and-LVM-are-started-before-local-fs-pre-target.patch
ensure-sysctl-are-applied-after-modules-are-loaded.patch
getty-generator-with-serial-3270-tty.patch
systemd-detect-xendom.patch
New:
----
0001-build-sys-use-glibc-s-xattr-support-instead-of-requi.patch
0001-core-fix-invalid-free-in-killall.patch
0001-core-sysvcompat-network-should-be-equivalent-to-netw.patch
0001-core-use-correct-format-string-for-UIDs.patch
0001-detect-s390-virt.patch
0001-hwdb-fix-case-sensitive-match.patch
0001-sd-event-restore-correct-timeout-behaviour.patch
0001-umount-modernizations.patch
0001-units-order-network-online.target-after-network.targ.patch
0001-units-systemd-sysctl.service.in-run-after-load-modul.patch
0001-vconsole-also-copy-character-maps-not-just-fonts-fro.patch
0001-virt-rework-container-detection-logic.patch
0002-bus-make-use-of-sd_bus_try_close-in-exit-on-idle-ser.patch
0002-core-make-sure-Environment-fields-passed-in-for-tran.patch
0002-core-transaction-fix-cycle-break-attempts-outside-tr.patch
0002-fsck-include-device-name-in-the-message-about-missin.patch
0002-namespace-when-setting-up-an-inaccessible-mount-poin.patch
0002-units-add-missing-caps-so-that-GetAddresses-can-work.patch
0003-core-You-can-not-put-the-cached-result-of-use_smack-.patch
0003-core-allow-transient-mount-units.patch
0003-fsck-consider-a-fsck-implementation-linked-to-bin-tr.patch
0003-install-fix-invalid-free-in-unit_file_mask.patch
0003-units-order-systemd-tmpfiles-clean.service-after-tim.patch
0003-units-use-KillMode-mixed-for-systemd-nspawn-.service.patch
0004-cryptsetup-don-t-add-unit-dependency-on-dev-null-dev.patch
0004-getty-generator-properly-escape-instance-names.patch
0004-systemd-detect-virt-only-discover-Xen-domU.patch
0004-util-ignore_file-should-not-allow-files-ending-with.patch
0005-backlight-Do-not-clamp-brightness-for-LEDs.patch
0005-man-fix-path-in-crypttab-5.patch
0005-po-add-Greek-translation.patch
0006-hwdb-Update-database-of-Bluetooth-company-identifier.patch
0006-log-honour-the-kernel-s-quiet-cmdline-argument.patch
0006-tty-ask-password-agent-Do-tell-what-directory-we-fai.patch
0007-keyboard-add-Plantronics-.Audio-mute-button.patch
0007-po-add-German-translation.patch
0008-Reset-signal-mask-on-re-exec-to-init.patch
0009-core-clean-up-signal-reset-logic-when-reexec.patch
0010-util-treat-fuse.sshfs-as-a-network-filesystem.patch
0011-build-sys-add-pthread-flag-for-libsystemd-shared.patch
0012-core-transaction-avoid-misleading-error-message-when.patch
1021-udev-re-add-persistent-net-rules.patch
1022-udev-remove-seqnum-API-and-all-assumptions-about-seq.patch
1023-udev-builtin-keyboard-do-tell-on-which-device-EVIOCS.patch
1024-udev-always-close-lock-file-descriptor.patch
1025-udev-exclude-device-mapper-from-block-device-ownersh.patch
1026-udevd-inotify-modernizations.patch
1027-udev-synthesize-change-events-for-partitions-when-to.patch
1028-udev-link-config-fix-mem-leak.patch
1029-udev-try-first-re-reading-the-partition-table.patch
1030-udev-guard-REREADP-logic-with-open-O_ECXL.patch
1031-udev-make-sure-we-always-get-change-for-the-disk.patch
1032-udev-guard-REREADPT-by-exclusive-lock-instead-of-O_E.patch
1033-udev-really-exclude-device-mapper-from-block-device.patch
1034-udev-check-the-return-value-from-udev_enumerate_scan.patch
1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch
1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch
1037-udev-exclude-cd-dvd-from-block-device.patch
1038-udev-fix-invalid-free-in-enable_name_policy.patch
1039-udevadm-settle-fixed-return-code-for-empty-queue.patch
1040-re-enable-dev_id-conditionally-in-persistent-rules.patch
apply-ACL-for-nvidia-uvm-device-node.patch
tmpfiles-do-not-clean-for-mandb-index-files.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ systemd-mini.spec ++++++
++++ 752 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/systemd/systemd-mini.spec
++++ and /work/SRC/openSUSE:Factory/.systemd.new/systemd-mini.spec
systemd.spec: same change
++++++ 0001-build-sys-use-glibc-s-xattr-support-instead-of-requi.patch ++++++
Based on d2edfae0f9bdbecf6a8518e2a5bcf06f470e0d9e Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay(a)vrfy.org>
Date: Wed, 28 May 2014 17:36:40 +0800
Subject: [PATCH] build-sys: use glibc's xattr support instead of requiring
libattr
---
configure.ac | 53 ++-----------------------------------------
src/core/mount-setup.c | 2 -
src/core/socket.c | 4 ---
src/journal/journal-file.c | 7 -----
src/journal/journal-vacuum.c | 10 --------
src/shared/label.c | 2 -
src/shared/smack-util.c | 4 ---
7 files changed, 7 insertions(+), 75 deletions(-)
--- configure.ac
+++ configure.ac 2014-06-03 00:00:00.000000000 +0000
@@ -526,44 +526,6 @@ AC_SUBST(ACL_LIBS)
AM_CONDITIONAL([HAVE_ACL], [test "x$have_acl" != xno])
# ------------------------------------------------------------------------------
-AC_ARG_ENABLE([xattr],
- AS_HELP_STRING([--disable-xattr],[Disable optional XATTR support]),
- [case "${enableval}" in
- yes) have_xattr=yes ;;
- no) have_xattr=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --disable-xattr) ;;
- esac],
- [have_xattr=auto])
-
-if test "x${have_xattr}" != xno ; then
- AC_CHECK_HEADERS(
- [attr/xattr.h],
- [have_xattr=yes],
- [if test "x$have_xattr" = xyes ; then
- AC_MSG_ERROR([*** XATTR headers not found.])
- fi])
-
- AC_CHECK_LIB(
- [attr],
- [fsetxattr],
- [have_xattr=yes],
- [if test "x$have_xattr" = xyes ; then
- AC_MSG_ERROR([*** libattr not found.])
- fi])
-
- if test "x$have_xattr" = xyes ; then
- XATTR_LIBS="-lattr"
- AC_DEFINE(HAVE_XATTR, 1, [XATTR available])
- else
- have_xattr=no
- fi
-else
- XATTR_LIBS=
-fi
-AC_SUBST(XATTR_LIBS)
-AM_CONDITIONAL([HAVE_XATTR], [test "x$have_xattr" != xno])
-
-# ------------------------------------------------------------------------------
AC_ARG_ENABLE([smack], AS_HELP_STRING([--disable-smack],[Disable optional SMACK support]),
[case "${enableval}" in
yes) have_smack=yes ;;
@@ -572,17 +534,9 @@ AC_ARG_ENABLE([smack], AS_HELP_STRING([-
esac],
[have_smack=auto])
-if test "x${have_xattr}" = xno; then
- if test "x${have_smack}" = xyes; then
- AC_MSG_ERROR(SMACK requires xattr support)
- else
- have_smack=no
- fi
-else
- if test "x${have_smack}" = xauto; then
- M4_DEFINES="$M4_DEFINES -DHAVE_SMACK"
- have_smack=yes
- fi
+if test "x${have_smack}" = xauto; then
+ M4_DEFINES="$M4_DEFINES -DHAVE_SMACK"
+ have_smack=yes
fi
AC_ARG_WITH(smack-run-label,
@@ -1131,7 +1085,6 @@ AC_MSG_RESULT([
SMACK: ${have_smack}
XZ: ${have_xz}
ACL: ${have_acl}
- XATTR: ${have_xattr}
GCRYPT: ${have_gcrypt}
QRENCODE: ${have_qrencode}
MICROHTTPD: ${have_microhttpd}
--- src/core/mount-setup.c
+++ src/core/mount-setup.c 2014-06-03 00:00:00.000000000 +0000
@@ -93,10 +93,8 @@ static const MountPoint mount_table[] =
NULL, MNT_FATAL|MNT_IN_CONTAINER },
{ "tmpfs", "/sys/fs/cgroup", "tmpfs", "mode=755", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME,
NULL, MNT_IN_CONTAINER },
-#ifdef HAVE_XATTR
{ "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd,xattr", MS_NOSUID|MS_NOEXEC|MS_NODEV,
NULL, MNT_IN_CONTAINER },
-#endif
{ "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd", MS_NOSUID|MS_NOEXEC|MS_NODEV,
NULL, MNT_IN_CONTAINER },
{ "pstore", "/sys/fs/pstore", "pstore", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
--- src/core/socket.c
+++ src/core/socket.c 2014-06-03 00:00:00.000000000 +0000
@@ -29,9 +29,7 @@
#include <arpa/inet.h>
#include <netinet/tcp.h>
#include <mqueue.h>
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
#include "sd-event.h"
#include "log.h"
--- src/journal/journal-file.c
+++ src/journal/journal-file.c 2014-06-03 00:00:00.000000000 +0000
@@ -26,10 +26,7 @@
#include <sys/statvfs.h>
#include <fcntl.h>
#include <stddef.h>
-
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
#include "journal-def.h"
#include "journal-file.h"
@@ -2515,7 +2512,6 @@ int journal_file_open(
}
if (f->last_stat.st_size == 0 && f->writable) {
-#ifdef HAVE_XATTR
uint64_t crtime;
/* Let's attach the creation time to the journal file,
@@ -2530,7 +2526,6 @@ int journal_file_open(
crtime = htole64((uint64_t) now(CLOCK_REALTIME));
fsetxattr(f->fd, "user.crtime_usec", &crtime, sizeof(crtime), XATTR_CREATE);
-#endif
#ifdef HAVE_GCRYPT
/* Try to load the FSPRG state, and if we can't, then
--- src/journal/journal-vacuum.c
+++ src/journal/journal-vacuum.c 2014-06-03 00:00:00.000000000 +0000
@@ -24,10 +24,7 @@
#include <sys/stat.h>
#include <sys/statvfs.h>
#include <unistd.h>
-
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
#include "journal-def.h"
#include "journal-file.h"
@@ -79,11 +76,8 @@ static void patch_realtime(
unsigned long long *realtime) {
usec_t x;
-
-#ifdef HAVE_XATTR
uint64_t crtime;
_cleanup_free_ const char *path = NULL;
-#endif
/* The timestamp was determined by the file name, but let's
* see if the file might actually be older than the file name
@@ -106,7 +100,6 @@ static void patch_realtime(
if (x > 0 && x != (usec_t) -1 && x < *realtime)
*realtime = x;
-#ifdef HAVE_XATTR
/* Let's read the original creation time, if possible. Ideally
* we'd just query the creation time the FS might provide, but
* unfortunately there's currently no sane API to query
@@ -125,7 +118,6 @@ static void patch_realtime(
if (crtime > 0 && crtime != (uint64_t) -1 && crtime < *realtime)
*realtime = crtime;
}
-#endif
}
static int journal_file_empty(int dir_fd, const char *name) {
--- src/shared/label.c
+++ src/shared/label.c 2014-06-03 00:00:00.000000000 +0000
@@ -27,9 +27,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
-#ifdef HAVE_XATTR
#include <sys/xattr.h>
-#endif
#ifdef HAVE_SELINUX
#include <selinux/selinux.h>
#include <selinux/label.h>
--- src/shared/smack-util.c
+++ src/shared/smack-util.c 2014-06-03 00:00:00.000000000 +0000
@@ -23,9 +23,7 @@
#include <unistd.h>
#include <string.h>
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
#include "smack-util.h"
++++++ 0001-core-fix-invalid-free-in-killall.patch ++++++
>From 3e09eb5c83e56bc0184bd9d9c44f76047464f77c Mon Sep 17 00:00:00 2001
From: Andreas Henriksson <andreas(a)fatal.se>
Date: Fri, 13 Jun 2014 18:48:19 +0200
Subject: [PATCH] core: fix invalid free() in killall()
static int killall(....) in ./src/core/killall.c tries to get "s"
initialized by calling get_process_comm(...) which calls
read_one_line_file(...) which if it fails will mean it is left
uninitialized.
It is then used in argument to strna(s) call where it is
dereferenced(!), in addition to nothing else initializing it before
the scope it is in finishes.
---
src/core/killall.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git src/core/killall.c src/core/killall.c
index 57ed41c..eab48f7 100644
--- src/core/killall.c
+++ src/core/killall.c
@@ -168,7 +168,7 @@ static int killall(int sig, Set *pids, bool send_sighup) {
continue;
if (sig == SIGKILL) {
- _cleanup_free_ char *s;
+ _cleanup_free_ char *s = NULL;
get_process_comm(pid, &s);
log_notice("Sending SIGKILL to PID "PID_FMT" (%s).", pid, strna(s));
--
1.7.9.2
++++++ 0001-core-sysvcompat-network-should-be-equivalent-to-netw.patch ++++++
>From 0404c609f399b2092a3de52eef9d75b0dc12e94c Mon Sep 17 00:00:00 2001
From: Tom Gundersen <teg(a)jklm.no>
Date: Mon, 12 May 2014 21:26:54 +0200
Subject: [PATCH] core: sysvcompat - $network should be equivalent to
network-online, rather than network target
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Most likely the facility needed is actual connectivity, rather than whether or not the
network managment daemon is running.
We also need to explicitly pull in the network-online.target, as it is not active by
default.
This means {systemd-networkd,NetworkManager}-wait-online.service, can be enabled by default
as part of network-online.target, and only delay boot when some service actively pulls it in.
See: <https://bugzilla.gnome.org/show_bug.cgi?id=728965>
Cc: Pavel Šimerda <psimerda(a)redhat.com>
Cc: Michal Sekletar <msekleta(a)redhat.com>
---
TODO | 4 ----
src/core/service.c | 8 ++++++--
2 files changed, 6 insertions(+), 6 deletions(-)
Modified by Andrey Borzenkov <arvidjaar(a)gmail.com> for openSUSE.
Index: systemd-210/src/core/service.c
===================================================================
--- systemd-210.orig/src/core/service.c
+++ systemd-210/src/core/service.c
@@ -404,7 +404,7 @@ static int sysv_translate_facility(const
static const char * const table[] = {
/* LSB defined facilities */
"local_fs", NULL,
- "network", SPECIAL_NETWORK_TARGET,
+ "network", SPECIAL_NETWORK_ONLINE_TARGET,
"named", SPECIAL_NSS_LOOKUP_TARGET,
"portmap", SPECIAL_RPCBIND_TARGET,
"remote_fs", SPECIAL_REMOTE_FS_TARGET,
@@ -881,6 +881,9 @@ static int service_load_sysv_path(Servic
if (r == 0)
continue;
+ if (streq(m, SPECIAL_NETWORK_ONLINE_TARGET) && d == UNIT_AFTER && e == _UNIT_DEPENDENCY_INVALID)
+ e = UNIT_WANTS;
+
if (e != _UNIT_DEPENDENCY_INVALID)
r = unit_add_two_dependencies_by_name(u, d, e, m, NULL, true);
else
++++++ 0001-core-use-correct-format-string-for-UIDs.patch ++++++
Based on d6239dc4b0cf55a953d6c40890859b85d504ef19 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Bartoszkiewicz?= <mbartoszkiewicz(a)gmail.com>
Date: Wed, 25 Jun 2014 14:54:48 +0200
Subject: [PATCH] core: use correct format string for UIDs
---
src/core/main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- src/core/main.c
+++ src/core/main.c 2014-06-26 09:29:28.182235325 +0000
@@ -1526,7 +1526,7 @@ int main(int argc, char *argv[]) {
} else {
_cleanup_free_ char *t = uid_to_name(getuid());
- log_debug(PACKAGE_STRING " running in user mode for user "PID_FMT"/%s. (" SYSTEMD_FEATURES ")",
+ log_debug(PACKAGE_STRING " running in user mode for user "UID_FMT"/%s. (" SYSTEMD_FEATURES ")",
getuid(), t);
}
++++++ 0001-detect-s390-virt.patch ++++++
bnc#880438 - systemd-detect-virt doesn't work on System z
--- systemd-210/src/shared/virt.c
+++ systemd-210/src/shared/virt.c 2014-06-26 07:55:30.081608729 +0000
@@ -196,6 +196,30 @@
} else
return r;
+#if defined(__s390x__)
+ /* First layer virtualization (PR/SM) is always present on s390x */
+ _id = "PR/SM";
+ r = 1;
+
+ /* Check for second layer virtualization */
+ _cleanup_fclose_ FILE *f = NULL;
+ char line[LINE_MAX];
+ f = fopen("/proc/sysinfo", "re");
+ if (f) {
+ FOREACH_LINE(line, f, return -errno) {
+ if (startswith(line, "VM00 Control Program:")) {
+ if (strstr(line,"z/VM"))
+ _id = "z/VM";
+ else if (strstr(line,"KVM/Linux"))
+ _id = "KVM";
+ break;
+ }
+ }
+ }
+
+ goto finish;
+#endif
+
/* this will set _id to "other" and return 0 for unknown hypervisors */
r = detect_vm_cpuid(&_id);
if (r != 0)
++++++ 0001-hwdb-fix-case-sensitive-match.patch ++++++
>From 4c02dd7153f970244950b5e00f7bdfea8d2ff0be Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay(a)vrfy.org>
Date: Wed, 4 Jun 2014 17:55:14 +0200
Subject: [PATCH] hwdb: fix case-sensitive match
---
hwdb/60-keyboard.hwdb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git hwdb/60-keyboard.hwdb hwdb/60-keyboard.hwdb
index d053766..c7ff4e4 100644
--- hwdb/60-keyboard.hwdb
+++ hwdb/60-keyboard.hwdb
@@ -870,7 +870,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnOQO*Inc.*:pnOQO*Model*2*:pvr*
###########################################################
# Plantronics .Audio 626 DSP
-keyboard:usb:v047fpC006*
+keyboard:usb:v047FpC006*
KEYBOARD_KEY_b002f=f20 # Microphone mute button; should be micmute
###########################################################
--
1.7.9.2
++++++ 0001-sd-event-restore-correct-timeout-behaviour.patch ++++++
Based on eec6022cf039e62233139000b9e95db943959e48 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart(a)poettering.net>
Date: Thu, 5 Jun 2014 13:43:30 +0200
Subject: [PATCH] sd-event: restore correct timeout behaviour
---
src/libsystemd/sd-event/sd-event.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--- src/libsystemd/sd-event/sd-event.c
+++ src/libsystemd/sd-event/sd-event.c 2014-06-06 10:26:51.422235695 +0000
@@ -2047,6 +2047,7 @@ _public_ int sd_event_run(sd_event *e, u
unsigned ev_queue_max;
sd_event_source *p;
int r, i, m;
+ bool timedout;
assert_return(e, -EINVAL);
assert_return(!event_pid_changed(e), -ECHILD);
@@ -2084,6 +2085,8 @@ _public_ int sd_event_run(sd_event *e, u
goto finish;
}
+ timedout = m == 0;
+
dual_timestamp_get(&e->timestamp);
for (i = 0; i < m; i++) {
@@ -2123,7 +2126,7 @@ _public_ int sd_event_run(sd_event *e, u
p = event_next_pending(e);
if (!p) {
- r = 1;
+ r = !timedout;
goto finish;
}
++++++ 0001-umount-modernizations.patch ++++++
>From c3544e8d2c2d870a2aff0944aff4ab7824b9ae6b Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart(a)poettering.net>
Date: Thu, 5 Jun 2014 21:35:15 +0200
Subject: [PATCH] umount: modernizations
---
src/core/umount.c | 65 ++++++++++++++++++++++-------------------------------
1 file changed, 27 insertions(+), 38 deletions(-)
diff --git src/core/umount.c src/core/umount.c
index d1258f0..a30f674 100644
--- src/core/umount.c
+++ src/core/umount.c
@@ -61,52 +61,46 @@ static void mount_points_list_free(MountPoint **head) {
}
static int mount_points_list_get(MountPoint **head) {
- FILE *proc_self_mountinfo;
- char *path, *p;
+ _cleanup_fclose_ FILE *proc_self_mountinfo = NULL;
unsigned int i;
- int r;
assert(head);
- if (!(proc_self_mountinfo = fopen("/proc/self/mountinfo", "re")))
+ proc_self_mountinfo = fopen("/proc/self/mountinfo", "re");
+ if (!proc_self_mountinfo)
return -errno;
for (i = 1;; i++) {
- int k;
+ _cleanup_free_ char *path = NULL;
+ char *p = NULL;
MountPoint *m;
+ int k;
- path = p = NULL;
-
- if ((k = fscanf(proc_self_mountinfo,
- "%*s " /* (1) mount id */
- "%*s " /* (2) parent id */
- "%*s " /* (3) major:minor */
- "%*s " /* (4) root */
- "%ms " /* (5) mount point */
- "%*s" /* (6) mount options */
- "%*[^-]" /* (7) optional fields */
- "- " /* (8) separator */
- "%*s " /* (9) file system type */
- "%*s" /* (10) mount source */
- "%*s" /* (11) mount options 2 */
- "%*[^\n]", /* some rubbish at the end */
- &path)) != 1) {
+ k = fscanf(proc_self_mountinfo,
+ "%*s " /* (1) mount id */
+ "%*s " /* (2) parent id */
+ "%*s " /* (3) major:minor */
+ "%*s " /* (4) root */
+ "%ms " /* (5) mount point */
+ "%*s" /* (6) mount options */
+ "%*[^-]" /* (7) optional fields */
+ "- " /* (8) separator */
+ "%*s " /* (9) file system type */
+ "%*s" /* (10) mount source */
+ "%*s" /* (11) mount options 2 */
+ "%*[^\n]", /* some rubbish at the end */
+ &path);
+ if (k != 1) {
if (k == EOF)
break;
log_warning("Failed to parse /proc/self/mountinfo:%u.", i);
-
- free(path);
continue;
}
p = cunescape(path);
- free(path);
-
- if (!p) {
- r = -ENOMEM;
- goto finish;
- }
+ if (!p)
+ return -ENOMEM;
/* Ignore mount points we can't unmount because they
* are API or because we are keeping them open (like
@@ -118,22 +112,17 @@ static int mount_points_list_get(MountPoint **head) {
continue;
}
- if (!(m = new0(MountPoint, 1))) {
+ m = new0(MountPoint, 1);
+ if (!m) {
free(p);
- r = -ENOMEM;
- goto finish;
+ return -ENOMEM;
}
m->path = p;
LIST_PREPEND(mount_point, *head, m);
}
- r = 0;
-
-finish:
- fclose(proc_self_mountinfo);
-
- return r;
+ return 0;
}
static int swap_list_get(MountPoint **head) {
--
1.7.9.2
++++++ 0001-units-order-network-online.target-after-network.targ.patch ++++++
Based on 58e027023b47b32e42cf93dd4a629b869ee1ef25 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart(a)poettering.net>
Date: Wed, 11 Jun 2014 14:58:32 +0200
Subject: [PATCH] units: order network-online.target after network.target
There might be implementations around where the network-online logic
might not talk to any network configuration service (and thus not have
to wait for it), hence let's explicitly order network-online.target
after network.target to avoid any ambiguities.
---
units/network-online.target | 1 +
1 file changed, 1 insertion(+)
--- units/network-online.target
+++ units/network-online.target 2014-06-26 00:00:00.000000000 +0000
@@ -9,3 +9,4 @@
Description=Network is Online
Documentation=man:systemd.special(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
+After=network.target
++++++ 0001-units-systemd-sysctl.service.in-run-after-load-modul.patch ++++++
Based on 0b73eab7a2185ae0377650e3fdb8208347a8a575 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez(a)opensuse.org>
Date: Sat, 23 Mar 2013 03:54:16 +0100
Subject: [PATCH] units/systemd-sysctl.service.in: run after load-modules
Modules might or will register new sysctl options.
[zj: This mechanism of adding modules just to reliably set sysctl
attributes is not ideal. Nevertheless, sysctl for dynamically created
attributes is simply broken, and this is the easiest workaround.]
https://bugzilla.redhat.com/show_bug.cgi?id=1022977
https://bugzilla.novell.com/show_bug.cgi?id=725412
---
units/systemd-sysctl.service.in | 1 +
1 file changed, 1 insertion(+)
diff --git units/systemd-sysctl.service.in units/systemd-sysctl.service.in
index 5c7c5d7..ade9dc3 100644
--- units/systemd-sysctl.service.in
+++ units/systemd-sysctl.service.in
@@ -11,6 +11,7 @@ Documentation=man:systemd-sysctl.service
DefaultDependencies=no
Conflicts=shutdown.target
After=systemd-readahead-collect.service systemd-readahead-replay.service
+After=systemd-modules-load.service
Before=sysinit.target shutdown.target
ConditionPathIsReadWrite=/proc/sys/
ConditionDirectoryNotEmpty=|/lib/sysctl.d
++++++ 0001-vconsole-also-copy-character-maps-not-just-fonts-fro.patch ++++++
>From ff452e76e2c0f89a32542b7179bb2fd538335933 Mon Sep 17 00:00:00 2001
From: Carl Schaefer <schaefer(a)trilug.org>
Date: Mon, 23 Jun 2014 18:23:48 +0200
Subject: [PATCH] vconsole: also copy character maps (not just fonts) from vt1
to vt2, vt3, ...
https://bugs.freedesktop.org/show_bug.cgi?id=78796
---
src/vconsole/vconsole-setup.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git src/vconsole/vconsole-setup.c src/vconsole/vconsole-setup.c
index 0f2b706..e0c4050 100644
--- src/vconsole/vconsole-setup.c
+++ src/vconsole/vconsole-setup.c
@@ -180,6 +180,10 @@ static int font_load(const char *vc, const char *font, const char *map, const ch
*/
static void font_copy_to_all_vcs(int fd) {
struct vt_stat vcs = {};
+ unsigned char map8[E_TABSZ];
+ unsigned short map16[E_TABSZ];
+ struct unimapdesc unimapd;
+ struct unipair unipairs[USHRT_MAX];
int i, r;
/* get active, and 16 bit mask of used VT numbers */
@@ -209,6 +213,26 @@ static void font_copy_to_all_vcs(int fd) {
cfo.op = KD_FONT_OP_COPY;
cfo.height = vcs.v_active-1; /* tty1 == index 0 */
ioctl(vcfd, KDFONTOP, &cfo);
+
+ /* copy map of 8bit chars */
+ if (ioctl(fd, GIO_SCRNMAP, map8) >= 0)
+ ioctl(vcfd, PIO_SCRNMAP, map8);
+
+ /* copy map of 8bit chars -> 16bit Unicode values */
+ if (ioctl(fd, GIO_UNISCRNMAP, map16) >= 0)
+ ioctl(vcfd, PIO_UNISCRNMAP, map16);
+
+ /* copy unicode translation table */
+ /* unimapd is a ushort count and a pointer to an
+ array of struct unipair { ushort, ushort } */
+ unimapd.entries = unipairs;
+ unimapd.entry_ct = USHRT_MAX;
+ if (ioctl(fd, GIO_UNIMAP, &unimapd) >= 0) {
+ struct unimapinit adv = { 0, 0, 0 };
+
+ ioctl(vcfd, PIO_UNIMAPCLR, &adv);
+ ioctl(vcfd, PIO_UNIMAP, &unimapd);
+ }
}
}
--
1.7.9.2
++++++ 0001-virt-rework-container-detection-logic.patch ++++++
Based on fdd25311706bd32580ec4d43211cdf4665d2f9de Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart(a)poettering.net>
Date: Wed, 28 May 2014 18:37:11 +0800
Subject: [PATCH] virt: rework container detection logic
Instead of accessing /proc/1/environ directly, trying to read the
$container variable from it, let's make PID 1 save the contents of that
variable to /run/systemd/container. This allows us to detect containers
without the need for CAP_SYS_PTRACE, which allows us to drop it from a
number of daemons and from the file capabilities of systemd-detect-virt.
Also, don't consider chroot a container technology anymore. After all,
we don't consider file system namespaces container technology anymore,
and hence chroot() should be considered a container even less.
---
Makefile.am | 3 ---
configure.ac | 2 --
src/core/main.c | 12 ++++++++++++
src/shared/virt.c | 48 ++++++++++++++++++++++++++++++------------------
4 files changed, 42 insertions(+), 23 deletions(-)
diff --git Makefile.am Makefile.am
index 5b26bc3..f66ef42 100644
--- Makefile.am
+++ Makefile.am
@@ -1798,9 +1798,6 @@ systemd_detect_virt_SOURCES = \
systemd_detect_virt_LDADD = \
libsystemd-shared.la
-systemd-detect-virt-install-hook:
- -$(SETCAP) cap_dac_override,cap_sys_ptrace=ep $(DESTDIR)$(bindir)/systemd-detect-virt
-
INSTALL_EXEC_HOOKS += \
systemd-detect-virt-install-hook
--- configure.ac
+++ configure.ac 2014-06-03 14:16:45.046237826 +0000
@@ -68,8 +68,6 @@ AC_PATH_PROG([XSLTPROC], [xsltproc])
AC_PATH_PROG([QUOTAON], [quotaon], [/usr/sbin/quotaon])
AC_PATH_PROG([QUOTACHECK], [quotacheck], [/usr/sbin/quotacheck])
-AC_PATH_PROG([SETCAP], [setcap], [/usr/sbin/setcap])
-
AC_PATH_PROG([KILL], [kill], [/usr/bin/kill])
AC_PATH_PROG([KMOD], [kmod], [/usr/bin/kmod])
diff --git src/core/main.c src/core/main.c
index 77cc2fb..d5d1ee2 100644
--- src/core/main.c
+++ src/core/main.c
@@ -1261,6 +1261,16 @@ static int status_welcome(void) {
isempty(pretty_name) ? "Linux" : pretty_name);
}
+static int write_container_id(void) {
+ const char *c;
+
+ c = getenv("container");
+ if (isempty(c))
+ return 0;
+
+ return write_string_file("/run/systemd/container", c);
+}
+
int main(int argc, char *argv[]) {
Manager *m = NULL;
int r, retval = EXIT_FAILURE;
@@ -1544,6 +1554,8 @@ int main(int argc, char *argv[]) {
if (virtualization)
log_info("Detected virtualization '%s'.", virtualization);
+ write_container_id();
+
log_info("Detected architecture '%s'.", architecture_to_string(uname_architecture()));
if (in_initrd())
diff --git src/shared/virt.c src/shared/virt.c
index 0db0514..1e227c5 100644
--- src/shared/virt.c
+++ src/shared/virt.c
@@ -217,8 +217,8 @@ int detect_container(const char **id) {
static thread_local int cached_found = -1;
static thread_local const char *cached_id = NULL;
- _cleanup_free_ char *e = NULL;
- const char *_id = NULL;
+ _cleanup_free_ char *m = NULL;
+ const char *_id = NULL, *e = NULL;
int r;
if (_likely_(cached_found >= 0)) {
@@ -229,17 +229,6 @@ int detect_container(const char **id) {
return cached_found;
}
- /* Unfortunately many of these operations require root access
- * in one way or another */
-
- r = running_in_chroot();
- if (r < 0)
- return r;
- if (r > 0) {
- _id = "chroot";
- goto finish;
- }
-
/* /proc/vz exists in container and outside of the container,
* /proc/bc only outside of the container. */
if (access("/proc/vz", F_OK) >= 0 &&
@@ -249,11 +238,32 @@ int detect_container(const char **id) {
goto finish;
}
- r = getenv_for_pid(1, "container", &e);
- if (r < 0)
- return r;
- if (r == 0)
- goto finish;
+ if (getpid() == 1) {
+ /* If we are PID 1 we can just check our own
+ * environment variable */
+
+ e = getenv("container");
+ if (isempty(e)) {
+ r = 0;
+ goto finish;
+ }
+ } else {
+
+ /* Otherwise, PID 1 dropped this information into a
+ * file in /run. This is better than accessing
+ * /proc/1/environ, since we don't need CAP_SYS_PTRACE
+ * for that. */
+
+ r = read_one_line_file("/run/systemd/container", &m);
+ if (r == -ENOENT) {
+ r = 0;
+ goto finish;
+ }
+ if (r < 0)
+ return r;
+
+ e = m;
+ }
/* We only recognize a selected few here, since we want to
* enforce a redacted namespace */
@@ -266,6 +276,8 @@ int detect_container(const char **id) {
else
_id = "other";
+ r = 1;
+
finish:
cached_found = r;
--
1.7.9.2
++++++ 0002-bus-make-use-of-sd_bus_try_close-in-exit-on-idle-ser.patch ++++++
>From b27adf354a83ad25f4a209c0a6f7989ecab7b4e2 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart(a)poettering.net>
Date: Thu, 5 Jun 2014 13:31:25 +0200
Subject: [PATCH] bus: make use of sd_bus_try_close() in exit-on-idle services
---
src/libsystemd/sd-bus/bus-util.c | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git src/libsystemd/sd-bus/bus-util.c src/libsystemd/sd-bus/bus-util.c
index 6bd21cc..6441c5b 100644
--- src/libsystemd/sd-bus/bus-util.c
+++ src/libsystemd/sd-bus/bus-util.c
@@ -43,7 +43,9 @@ static int name_owner_change_callback(sd_bus *bus, sd_bus_message *m, void *user
assert(m);
assert(e);
+ sd_bus_close(bus);
sd_event_exit(e, 0);
+
return 1;
}
@@ -121,11 +123,30 @@ int bus_event_loop_with_idle(
return r;
if (r == 0 && !exiting) {
- r = bus_async_unregister_and_exit(e, bus, name);
+
+ r = sd_bus_try_close(bus);
+ if (r == -EBUSY)
+ continue;
+
+ if (r == -ENOTSUP) {
+ /* Fallback for dbus1 connections: we
+ * unregister the name and wait for
+ * the response to come through for
+ * it */
+
+ r = bus_async_unregister_and_exit(e, bus, name);
+ if (r < 0)
+ return r;
+
+ exiting = true;
+ continue;
+ }
+
if (r < 0)
return r;
- exiting = true;
+ sd_event_exit(e, 0);
+ break;
}
}
--
1.7.9.2
++++++ 0002-core-make-sure-Environment-fields-passed-in-for-tran.patch ++++++
>From cdd7b7dfd44649b204c43e907f03d4294de4f28a Mon Sep 17 00:00:00 2001
From: Hristo Venev <mustrumr97(a)gmail.com>
Date: Mon, 23 Jun 2014 18:53:04 +0200
Subject: [PATCH] core: make sure Environment fields passed in for transient
units are properly written to unit files
https://bugs.freedesktop.org/show_bug.cgi?id=76744
---
src/core/dbus-execute.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git src/core/dbus-execute.c src/core/dbus-execute.c
index cb9a077..ecbadd7 100644
--- src/core/dbus-execute.c
+++ src/core/dbus-execute.c
@@ -848,7 +848,7 @@ int bus_exec_context_set_transient_property(
strv_free(c->environment);
c->environment = e;
- joined = strv_join(c->environment, " ");
+ joined = strv_join_quoted(c->environment);
if (!joined)
return -ENOMEM;
--
1.7.9.2
++++++ 0002-core-transaction-fix-cycle-break-attempts-outside-tr.patch ++++++
>From 375ae4aa4d2f89ae8afdd27e9f2b8336fcc2a046 Mon Sep 17 00:00:00 2001
From: Uoti Urpala <uoti.urpala(a)pp1.inet.fi>
Date: Mon, 23 Jun 2014 16:50:03 +0300
Subject: [PATCH] core/transaction: fix cycle break attempts outside
transaction
Patch fixes some incorrect-looking code in transaction.c.
It could fix cases where Debian users with bad package configurations
had systemd go into an infinite loop printing messages about breaking an
ordering cycle, though I have not reproduced that problem myself.
transaction_verify_order_one() considers jobs/units outside current
transaction when checking whether ordering dependencies cause cycles.
It would also incorrectly try to break cycles at these jobs; this
cannot work, as the break action is to remove the job from the
transaction, which is a no-op if the job isn't part of the transaction
to begin with. The unit_matters_to_anchor() test also looks like it
would not work correctly for non-transaction jobs. Add a check to
verify that the unit is part of the transaction before considering a
job a candidate for deletion.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=752259
---
src/core/transaction.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git src/core/transaction.c src/core/transaction.c
index d23a45c..805d40a 100644
--- src/core/transaction.c
+++ src/core/transaction.c
@@ -381,7 +381,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
"Found dependency on %s/%s",
k->unit->id, job_type_to_string(k->type));
- if (!delete &&
+ if (!delete && hashmap_get(tr->jobs, k->unit) &&
!unit_matters_to_anchor(k->unit, k)) {
/* Ok, we can drop this one, so let's
* do so. */
--
1.7.9.2
++++++ 0002-fsck-include-device-name-in-the-message-about-missin.patch ++++++
Based on 8d2a6145334257c8a9ceabc9dd52dff06cca818e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek(a)in.waw.pl>
Date: Mon, 26 May 2014 23:03:11 -0400
Subject: [PATCH] fsck: include device name in the message about missing fsck
---
src/fsck/fsck.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- src/fsck/fsck.c
+++ src/fsck/fsck.c 2014-06-03 14:15:15.746235301 +0000
@@ -284,10 +284,12 @@ int main(int argc, char *argv[]) {
r = access(checker, X_OK);
if (r < 0) {
if (errno == ENOENT) {
- log_info("%s doesn't exist, not checking file system.", checker);
+ log_info("%s doesn't exist, not checking file system on %s",
+ checker, device);
return EXIT_SUCCESS;
} else
- log_warning("%s cannot be used: %m", checker);
+ log_warning("%s cannot be used for %s: %m",
+ checker, device);
}
}
++++++ 0002-namespace-when-setting-up-an-inaccessible-mount-poin.patch ++++++
Based on 6d313367d9ef780560e117e886502a99fa220eac Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart(a)poettering.net>
Date: Thu, 5 Jun 2014 21:35:35 +0200
Subject: [PATCH] namespace: when setting up an inaccessible mount point,
unmounting everything below
This has the benefit of not triggering any autofs mount points
unnecessarily.
---
src/core/namespace.c | 6 ++++
src/shared/util.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++
src/shared/util.h | 2 +
3 files changed, 76 insertions(+)
--- src/core/namespace.c
+++ src/core/namespace.c 2014-06-11 00:00:00.000000000 +0000
@@ -220,6 +220,12 @@ static int apply_mount(
return mount_dev(m);
case INACCESSIBLE:
+
+ /* First, get rid of everything that is below if there
+ * is anything... Then, overmount it with an
+ * inaccessible directory. */
+ umount_recursive(m->path, 0);
+
what = "/run/systemd/inaccessible";
break;
--- src/shared/util.c
+++ src/shared/util.c 2014-06-11 00:00:00.000000000 +0000
@@ -54,6 +54,7 @@
#include <grp.h>
#include <sys/mman.h>
#include <sys/vfs.h>
+#include <sys/mount.h>
#include <linux/magic.h>
#include <limits.h>
#include <langinfo.h>
@@ -4635,6 +4636,73 @@ char *strjoin(const char *x, ...) {
return r;
}
+int umount_recursive(const char *prefix, int flags) {
+ bool again;
+ int n = 0, r;
+
+ /* Try to umount everything recursively below a
+ * directory. Also, take care of stacked mounts, and keep
+ * unmounting them until they are gone. */
+
+ do {
+ _cleanup_fclose_ FILE *proc_self_mountinfo = NULL;
+
+ again = false;
+ r = 0;
+
+ proc_self_mountinfo = fopen("/proc/self/mountinfo", "re");
+ if (!proc_self_mountinfo)
+ return -errno;
+
+ for (;;) {
+ _cleanup_free_ char *path = NULL, *p = NULL;
+ int k;
+
+ k = fscanf(proc_self_mountinfo,
+ "%*s " /* (1) mount id */
+ "%*s " /* (2) parent id */
+ "%*s " /* (3) major:minor */
+ "%*s " /* (4) root */
+ "%ms " /* (5) mount point */
+ "%*s" /* (6) mount options */
+ "%*[^-]" /* (7) optional fields */
+ "- " /* (8) separator */
+ "%*s " /* (9) file system type */
+ "%*s" /* (10) mount source */
+ "%*s" /* (11) mount options 2 */
+ "%*[^\n]", /* some rubbish at the end */
+ &path);
+
+ if (k != 1) {
+ if (k == EOF)
+ break;
+
+ continue;
+ }
+
+ p = cunescape(path);
+ if (!p)
+ return -ENOMEM;
+
+ if (!path_startswith(p, prefix))
+ continue;
+
+ if (umount2(p, flags) < 0) {
+ r = -errno;
+ continue;
+ }
+
+ again = true;
+ n++;
+
+ break;
+ }
+
+ } while (again);
+
+ return r ? r : n;
+}
+
bool is_main_thread(void) {
static thread_local int cached = 0;
--- src/shared/util.h
+++ src/shared/util.h 2014-06-11 10:10:08.000000000 +0000
@@ -890,3 +890,5 @@ union file_handle_union {
struct file_handle handle;
char padding[sizeof(struct file_handle) + MAX_HANDLE_SZ];
};
+
+int umount_recursive(const char *target, int flags);
++++++ 0002-units-add-missing-caps-so-that-GetAddresses-can-work.patch ++++++
Basedo n a55954297dade7b432fd3a4f328f23261621ff79 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart(a)poettering.net>
Date: Thu, 19 Jun 2014 19:53:16 +0200
Subject: [PATCH] units: add missing caps so that GetAddresses() can work
---
units/systemd-machined.service.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- units/systemd-machined.service.in
+++ units/systemd-machined.service.in 2014-06-24 11:26:19.554235869 +0000
@@ -15,5 +15,5 @@ After=machine.slice
[Service]
ExecStart=@rootlibexecdir@/systemd-machined
BusName=org.freedesktop.machine1
-CapabilityBoundingSet=CAP_KILL
+CapabilityBoundingSet=CAP_KILL CAP_SYS_PTRACE CAP_SYS_ADMIN CAP_SETGID
WatchdogSec=1min
++++++ 0003-core-You-can-not-put-the-cached-result-of-use_smack-.patch ++++++
>From d1d8e5d49f3149d03ceb94d1d2f6c14e7abccb6f Mon Sep 17 00:00:00 2001
From: Ronan Le Martret <ronan(a)fridu.net>
Date: Tue, 22 Apr 2014 10:33:25 +0200
Subject: [PATCH] core: You can not put the cached result of use_smack fct, as
we are not sure the "/sys" is mounted. So we should mount
"sys" before "/proc"
https://bugs.freedesktop.org/show_bug.cgi?id=77646
---
src/core/mount-setup.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git src/core/mount-setup.c src/core/mount-setup.c
index ae8447c..991bfdf 100644
--- src/core/mount-setup.c
+++ src/core/mount-setup.c
@@ -67,10 +67,10 @@ typedef struct MountPoint {
#define N_EARLY_MOUNT 5
static const MountPoint mount_table[] = {
- { "proc", "/proc", "proc", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
- NULL, MNT_FATAL|MNT_IN_CONTAINER },
{ "sysfs", "/sys", "sysfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
NULL, MNT_FATAL|MNT_IN_CONTAINER },
+ { "proc", "/proc", "proc", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
+ NULL, MNT_FATAL|MNT_IN_CONTAINER },
{ "devtmpfs", "/dev", "devtmpfs", "mode=755", MS_NOSUID|MS_STRICTATIME,
NULL, MNT_FATAL|MNT_IN_CONTAINER },
{ "securityfs", "/sys/kernel/security", "securityfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
--
1.7.9.2
++++++ 0003-core-allow-transient-mount-units.patch ++++++
>From 0e252f6b375af59eac9bd6d2fe8dd6ee2f51998d Mon Sep 17 00:00:00 2001
From: Tom Gundersen <teg(a)jklm.no>
Date: Fri, 6 Jun 2014 15:10:20 +0200
Subject: [PATCH] core: allow transient mount units
For now only What=, Options=, Type= are supported, and Where= is deduced
from the unit name.
---
src/core/dbus-mount.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++-
src/core/mount.c | 2 ++
2 files changed, 65 insertions(+), 1 deletion(-)
diff --git src/core/dbus-mount.c src/core/dbus-mount.c
index e64d3ea..e27019d 100644
--- src/core/dbus-mount.c
+++ src/core/dbus-mount.c
@@ -124,6 +124,47 @@ const sd_bus_vtable bus_mount_vtable[] = {
SD_BUS_VTABLE_END
};
+static int bus_mount_set_transient_property(
+ Mount *m,
+ const char *name,
+ sd_bus_message *message,
+ UnitSetPropertiesMode mode,
+ sd_bus_error *error) {
+
+ const char *new_property;
+ char **property;
+ char *p;
+ int r;
+
+ assert(m);
+ assert(name);
+ assert(message);
+
+ if (streq(name, "What"))
+ property = &m->parameters_fragment.what;
+ else if (streq(name, "Options"))
+ property = &m->parameters_fragment.options;
+ else if (streq(name, "Type"))
+ property = &m->parameters_fragment.fstype;
+ else
+ return 0;
+
+ r = sd_bus_message_read(message, "s", &new_property);
+ if (r < 0)
+ return r;
+
+ if (mode != UNIT_CHECK) {
+ p = strdup(new_property);
+ if (!p)
+ return -ENOMEM;
+
+ free(*property);
+ *property = p;
+ }
+
+ return 1;
+}
+
int bus_mount_set_property(
Unit *u,
const char *name,
@@ -132,12 +173,33 @@ int bus_mount_set_property(
sd_bus_error *error) {
Mount *m = MOUNT(u);
+ int r;
assert(m);
assert(name);
assert(message);
- return bus_cgroup_set_property(u, &m->cgroup_context, name, message, mode, error);
+ r = bus_cgroup_set_property(u, &m->cgroup_context, name, message, mode, error);
+ if (r != 0)
+ return r;
+
+ if (u->transient && u->load_state == UNIT_STUB) {
+ /* This is a transient unit, let's load a little more */
+
+ r = bus_mount_set_transient_property(m, name, message, mode, error);
+ if (r != 0)
+ return r;
+
+ r = bus_exec_context_set_transient_property(u, &m->exec_context, name, message, mode, error);
+ if (r != 0)
+ return r;
+
+ r = bus_kill_context_set_transient_property(u, &m->kill_context, name, message, mode, error);
+ if (r != 0)
+ return r;
+ }
+
+ return 0;
}
int bus_mount_commit_properties(Unit *u) {
diff --git src/core/mount.c src/core/mount.c
index a979837..14ac0a0 100644
--- src/core/mount.c
+++ src/core/mount.c
@@ -1819,6 +1819,8 @@ const UnitVTable mount_vtable = {
.get_timeout = mount_get_timeout,
+ .can_transient = true,
+
.enumerate = mount_enumerate,
.shutdown = mount_shutdown,
--
1.7.9.2
++++++ 0003-fsck-consider-a-fsck-implementation-linked-to-bin-tr.patch ++++++
Based on 571d0134bd464444567cf4eb0d2ed8df40045f36 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart(a)poettering.net>
Date: Tue, 24 Jun 2014 19:37:22 +0200
Subject: [PATCH] fsck: consider a fsck implementation linked to /bin/true
non-existant
---
src/fsck/fsck.c | 32 ++++++++++++++++++++++----------
src/shared/path-util.c | 26 +++++++++++++++-----------
2 files changed, 37 insertions(+), 21 deletions(-)
--- src/fsck/fsck.c
+++ src/fsck/fsck.c 2014-06-26 09:19:58.591864710 +0000
@@ -280,16 +280,28 @@ int main(int argc, char *argv[]) {
type = udev_device_get_property_value(udev_device, "ID_FS_TYPE");
if (type) {
- const char *checker = strappenda("/sbin/fsck.", type);
- r = access(checker, X_OK);
- if (r < 0) {
- if (errno == ENOENT) {
- log_info("%s doesn't exist, not checking file system on %s",
- checker, device);
- return EXIT_SUCCESS;
- } else
- log_warning("%s cannot be used for %s: %m",
- checker, device);
+ _cleanup_free_ char *p = NULL, *d = NULL;
+ const char *checker = strappenda("fsck.", type);
+ r = find_binary(checker, &p);
+ if (r == -ENOENT) {
+ log_info("fsck.%s doesn't exist, not checking file system on %s",
+ type, device);
+ return EXIT_SUCCESS;
+ } else if (r < 0) {
+ log_warning("fsck.%s cannot be used for %s: %m",
+ type, device);
+ return r;
+ }
+
+ /* An fsck that is linked to /bin/true is a non-existant fsck */
+ r = readlink_malloc(p, &d);
+ if (r >= 0 &&
+ (path_equal(d, "/bin/true") ||
+ path_equal(d, "/usr/bin/true") ||
+ path_equal(d, "/dev/null"))) {
+ log_info("fsck.%s doesn't exist, not checking file system on %s",
+ type, device);
+ return EXIT_SUCCESS;
}
}
--- src/shared/path-util.c
+++ src/shared/path-util.c 2014-06-26 09:14:15.651559638 +0000
@@ -425,19 +425,21 @@ int path_is_os_tree(const char *path) {
int find_binary(const char *name, char **filename) {
assert(name);
- assert(filename);
- if (strchr(name, '/')) {
- char *p;
+ if (is_path(name)) {
+ if (access(name, X_OK) < 0)
+ return -errno;
+
+ if (filename) {
+ char *p;
- if (path_is_absolute(name))
- p = strdup(name);
- else
p = path_make_absolute_cwd(name);
- if (!p)
- return -ENOMEM;
+ if (!p)
+ return -ENOMEM;
+
+ *filename = p;
+ }
- *filename = p;
return 0;
} else {
const char *path;
@@ -463,8 +465,10 @@ int find_binary(const char *name, char *
continue;
}
- path_kill_slashes(p);
- *filename = p;
+ if (filename) {
+ path_kill_slashes(p);
+ *filename = p;
+ }
return 0;
}
++++++ 0003-install-fix-invalid-free-in-unit_file_mask.patch ++++++
>From 223217749e57996336d5730b0a28716cca56d45d Mon Sep 17 00:00:00 2001
From: Andreas Henriksson <andreas(a)fatal.se>
Date: Fri, 13 Jun 2014 18:48:18 +0200
Subject: [PATCH] install: fix invalid free() in unit_file_mask()
int unit_file_mask(...) in ./src/shared/install.c calls
get_config_path(...) which can in 4 error cases return without setting
"ret", and thus "prefix" can be uninitialized when unit_file_mask(...)
finishes (which it does directly after the error is returned from
get_config_path(...)).
---
src/shared/install.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git src/shared/install.c src/shared/install.c
index 487d0f6..f562063 100644
--- src/shared/install.c
+++ src/shared/install.c
@@ -563,7 +563,7 @@ int unit_file_mask(
unsigned *n_changes) {
char **i;
- _cleanup_free_ char *prefix;
+ _cleanup_free_ char *prefix = NULL;
int r;
assert(scope >= 0);
--
1.7.9.2
++++++ 0003-units-order-systemd-tmpfiles-clean.service-after-tim.patch ++++++
Based on 497d1986c13032f1ef8f4592bb7ed8d3aa321a47 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart(a)poettering.net>
Date: Fri, 20 Jun 2014 00:15:39 +0200
Subject: [PATCH] units: order systemd-tmpfiles-clean.service after
time-sync.target
That way, on systems lacking an RTC we don't false start removing aged
files too early.
---
units/systemd-tmpfiles-clean.service.in | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
--- units/systemd-tmpfiles-clean.service.in
+++ units/systemd-tmpfiles-clean.service.in 2014-06-24 10:47:57.398235644 +0000
@@ -10,8 +10,9 @@ Description=Cleanup of Temporary Directo
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Wants=local-fs.target
-After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target
-Before=sysinit.target shutdown.target
+Conflicts=shutdown.target
+After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target time-sync.target
+Before=shutdown.target
ConditionDirectoryNotEmpty=|/usr/lib/tmpfiles.d
ConditionDirectoryNotEmpty=|/usr/local/lib/tmpfiles.d
ConditionDirectoryNotEmpty=|/etc/tmpfiles.d
++++++ 0003-units-use-KillMode-mixed-for-systemd-nspawn-.service.patch ++++++
>From d8e40d62ab871a87fde421c4b246bb45bc3cbe2d Mon Sep 17 00:00:00 2001
From: Jonathan Liu <net147(a)gmail.com>
Date: Thu, 29 May 2014 01:17:25 +1000
Subject: [PATCH] units: use KillMode=mixed for systemd-nspawn@.service
This causes the container to shut down cleanly when the service is
stopped.
---
units/systemd-nspawn@.service.in | 1 +
1 file changed, 1 insertion(+)
diff --git units/systemd-nspawn@.service.in units/systemd-nspawn@.service.in
index ff36e90..e373628 100644
--- units/systemd-nspawn@.service.in
+++ units/systemd-nspawn@.service.in
@@ -11,6 +11,7 @@ Documentation=man:systemd-nspawn(1)
[Service]
ExecStart=@bindir@/systemd-nspawn --quiet --keep-unit --boot --link-journal=guest --directory=/var/lib/container/%i
+KillMode=mixed
Type=notify
[Install]
--
1.7.9.2
++++++ 0004-cryptsetup-don-t-add-unit-dependency-on-dev-null-dev.patch ++++++
Based on bde29068aa3815c88190a91e9867605a0aeaf9c4 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart(a)poettering.net>
Date: Mon, 23 Jun 2014 19:18:44 +0200
Subject: [PATCH] cryptsetup: don't add unit dependency on /dev/null devices
when it is listed as password file
As special magic, don't create device dependencies for /dev/null. Of
course, there might be similar devices we might want to include, but
given that none of them really make sense to specify as password source
there's really no point in checking for anything else here.
https://bugs.freedesktop.org/show_bug.cgi?id=75816
---
src/cryptsetup/cryptsetup-generator.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
--- src/cryptsetup/cryptsetup-generator.c
+++ src/cryptsetup/cryptsetup-generator.c 2014-06-25 17:24:14.338237375 +0000
@@ -29,6 +29,7 @@
#include "mkdir.h"
#include "strv.h"
#include "fileio.h"
+#include "path-util.h"
static const char *arg_dest = "/tmp";
static bool arg_enabled = true;
@@ -141,14 +142,18 @@ static int create_disk(
if (uu == NULL)
return log_oom();
- if (is_device_path(uu)) {
- _cleanup_free_ char *dd = unit_name_from_path(uu, ".device");
- if (dd == NULL)
- return log_oom();
-
- fprintf(f, "After=%1$s\nRequires=%1$s\n", dd);
- } else
- fprintf(f, "RequiresMountsFor=%s\n", password);
+ if (!path_equal(uu, "/dev/null")) {
+ if (is_device_path(uu)) {
+ _cleanup_free_ char *dd;
+
+ dd = unit_name_from_path(uu, ".device");
+ if (!dd)
+ return log_oom();
+
+ fprintf(f, "After=%1$s\nRequires=%1$s\n", dd);
+ } else
+ fprintf(f, "RequiresMountsFor=%s\n", password);
+ }
}
}
++++++ 0004-getty-generator-properly-escape-instance-names.patch ++++++
>From a2ae516a25dafe41e0cd296ab7b5d022fa62b95f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek(a)in.waw.pl>
Date: Thu, 19 Jun 2014 22:02:55 -0400
Subject: [PATCH] getty-generator: properly escape instance names
Otherwise the add_symlink() function tries to make directories for
each slash even for the slash after the @ symbol in the final link
name, failing for /dev/3270/tty1.
Based on a patch by Werner Fink <werner(a)suse.de>.
---
src/getty-generator/getty-generator.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git src/getty-generator/getty-generator.c src/getty-generator/getty-generator.c
index 35cd858..7d4b546 100644
--- src/getty-generator/getty-generator.c
+++ src/getty-generator/getty-generator.c
@@ -67,7 +67,7 @@ static int add_serial_getty(const char *tty) {
log_debug("Automatically adding serial getty for /dev/%s.", tty);
- n = unit_name_replace_instance("serial-getty@.service", tty);
+ n = unit_name_from_path_instance("serial-getty", tty, ".service");
if (!n)
return log_oom();
@@ -81,7 +81,7 @@ static int add_container_getty(const char *tty) {
log_debug("Automatically adding container getty for /dev/pts/%s.", tty);
- n = unit_name_replace_instance("container-getty@.service", tty);
+ n = unit_name_from_path_instance("container-getty", tty, ".service");
if (!n)
return log_oom();
--
1.7.9.2
++++++ 0004-systemd-detect-virt-only-discover-Xen-domU.patch ++++++
>From 37287585b6ba9a55065c8f94458f6db3c0abe0af Mon Sep 17 00:00:00 2001
From: Thomas Blume <Thomas.Blume(a)suse.com>
Date: Fri, 6 Jun 2014 16:36:45 +0200
Subject: [PATCH] systemd-detect-virt: only discover Xen domU
The current vm detection lacks the distinction between Xen dom0 and Xen domU.
Both, dom0 and domU are running inside the hypervisor.
Therefore systemd-detect-virt and the ConditionVirtualization directive detect
dom0 as a virtual machine.
dom0 is not using virtual devices but is accessing the real hardware.
Therefore dom0 should be considered the virtualisation host and not a virtual
machine.
https://bugs.freedesktop.org/show_bug.cgi?id=77271
---
src/shared/virt.c | 34 +++++++++++++++++++++++++++-------
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git src/shared/virt.c src/shared/virt.c
index 1e227c5..774915f 100644
--- src/shared/virt.c
+++ src/shared/virt.c
@@ -148,7 +148,7 @@ static int detect_vm_dmi(const char **_id) {
/* Returns a short identifier for the various VM implementations */
int detect_vm(const char **id) {
- _cleanup_free_ char *hvtype = NULL, *cpuinfo_contents = NULL;
+ _cleanup_free_ char *domcap = NULL, *cpuinfo_contents = NULL;
static thread_local int cached_found = -1;
static thread_local const char *cached_id = NULL;
const char *_id = NULL;
@@ -162,17 +162,37 @@ int detect_vm(const char **id) {
return cached_found;
}
- /* Try high-level hypervisor sysfs file first:
+ /* Try xen capabilities file first, if not found try high-level hypervisor sysfs file:
*
- * https://bugs.freedesktop.org/show_bug.cgi?id=61491 */
- r = read_one_line_file("/sys/hypervisor/type", &hvtype);
+ * https://bugs.freedesktop.org/show_bug.cgi?id=77271 */
+ r = read_one_line_file("/proc/xen/capabilities", &domcap);
if (r >= 0) {
- if (streq(hvtype, "xen")) {
+ char *cap, *i = domcap;
+
+ while ((cap = strsep(&i, ",")))
+ if (streq(cap, "control_d"))
+ break;
+
+ if (!i) {
_id = "xen";
r = 1;
- goto finish;
}
- } else if (r != -ENOENT)
+
+ goto finish;
+
+ } else if (r == -ENOENT) {
+ _cleanup_free_ char *hvtype = NULL;
+
+ r = read_one_line_file("/sys/hypervisor/type", &hvtype);
+ if (r >= 0) {
+ if (streq(hvtype, "xen")) {
+ _id = "xen";
+ r = 1;
+ goto finish;
+ }
+ } else if (r != -ENOENT)
+ return r;
+ } else
return r;
/* this will set _id to "other" and return 0 for unknown hypervisors */
--
1.7.9.2
++++++ 0004-util-ignore_file-should-not-allow-files-ending-with.patch ++++++
>From 93f1a06374e335e8508d89e1bdaadf45be6ab777 Mon Sep 17 00:00:00 2001
From: Thomas Hindoe Paaboel Andersen <phomes(a)gmail.com>
Date: Sat, 31 May 2014 21:36:23 +0200
Subject: [PATCH] util: ignore_file should not allow files ending with '~'
ignore_file currently allows any file ending with '~' while it
seems that the opposite was intended:
a228a22fda4faa9ecb7c5a5e499980c8ae5d2a08
---
src/shared/util.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git src/shared/util.c src/shared/util.c
index 0c27394..17b0ae1 100644
--- src/shared/util.c
+++ src/shared/util.c
@@ -1371,7 +1371,7 @@ bool ignore_file(const char *filename) {
assert(filename);
if (endswith(filename, "~"))
- return false;
+ return true;
return ignore_file_allow_backup(filename);
}
--
1.7.9.2
++++++ 0005-backlight-Do-not-clamp-brightness-for-LEDs.patch ++++++
>From 4cd2b2cf8ca585d15ebc859701b346658262b5bb Mon Sep 17 00:00:00 2001
From: Denis Tikhomirov <dvtikhomirov(a)gmail.com>
Date: Thu, 5 Jun 2014 23:59:40 +0400
Subject: [PATCH] backlight: Do not clamp brightness for LEDs
https://bugs.freedesktop.org/show_bug.cgi?id=77092
On Thu, Jun 05, 2014 at 08:37:20AM +0200, Lennart Poettering wrote:
> The patch is line-broken, please send an uncorrupted patch!
I am very sorry, I forgot that my client limits line width. I will use
mutt now on.
> clamp_brightness() clamps the brightness value to the range of the
> actual device. This is a recent addition that was added to deal with
> driver updates where the resolution is changed. I don't think this part
> should be dropped for LED devices. The clamp_brightness() call hence
> should be called unconditionally, however, internally it should use a
> different min_brightness value if something is an !backlight devices...
Thank you for explanation, this sounds very reasonable to me. Please,
see updated patch:
---
src/backlight/backlight.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git src/backlight/backlight.c src/backlight/backlight.c
index 691472c..4d94ebf 100644
--- src/backlight/backlight.c
+++ src/backlight/backlight.c
@@ -225,11 +225,13 @@ static unsigned get_max_brightness(struct udev_device *device) {
/* Some systems turn the backlight all the way off at the lowest levels.
* clamp_brightness clamps the saved brightness to at least 1 or 5% of
- * max_brightness. This avoids preserving an unreadably dim screen, which
- * would otherwise force the user to disable state restoration. */
+ * max_brightness in case of 'backlight' subsystem. This avoids preserving
+ * an unreadably dim screen, which would otherwise force the user to
+ * disable state restoration. */
static void clamp_brightness(struct udev_device *device, char **value, unsigned max_brightness) {
int r;
unsigned brightness, new_brightness, min_brightness;
+ const char *subsystem;
r = safe_atou(*value, &brightness);
if (r < 0) {
@@ -237,7 +239,12 @@ static void clamp_brightness(struct udev_device *device, char **value, unsigned
return;
}
- min_brightness = MAX(1U, max_brightness/20);
+ subsystem = udev_device_get_subsystem(device);
+ if (streq_ptr(subsystem, "backlight"))
+ min_brightness = MAX(1U, max_brightness/20);
+ else
+ min_brightness = 0;
+
new_brightness = CLAMP(brightness, min_brightness, max_brightness);
if (new_brightness != brightness) {
char *old_value = *value;
--
1.7.9.2
++++++ 0005-man-fix-path-in-crypttab-5.patch ++++++
>From 9fcdf32294e66f91d2a177f73a77049832768311 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek(a)in.waw.pl>
Date: Mon, 23 Jun 2014 23:07:53 -0400
Subject: [PATCH] man: fix path in crypttab(5)
https://bugs.freedesktop.org/show_bug.cgi?id=75816
---
man/crypttab.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git man/crypttab.xml man/crypttab.xml
index 668e51d..9030015 100644
--- man/crypttab.xml
+++ man/crypttab.xml
@@ -369,7 +369,7 @@
<programlisting>luks UUID=2505567a-9e27-4efe-a4d5-15ad146c258b
swap /dev/sda7 /dev/urandom swap
truecrypt /dev/sda2 /etc/container_password tcrypt
-hidden /mnt/tc_hidden /null tcrypt-hidden,tcrypt-keyfile=/etc/keyfile</programlisting>
+hidden /mnt/tc_hidden /dev/null tcrypt-hidden,tcrypt-keyfile=/etc/keyfile</programlisting>
</example>
</refsect1>
--
1.7.9.2
++++++ 0005-po-add-Greek-translation.patch ++++++
>From 3d89c35c2ae08c3fbf1a037c4df54c8e5ae56faf Mon Sep 17 00:00:00 2001
From: Dimitris Spingos <dmtrs32(a)gmail.com>
Date: Wed, 7 May 2014 18:27:02 +0200
Subject: [PATCH] po: add Greek translation
https://bugs.freedesktop.org/show_bug.cgi?id=78064
---
po/LINGUAS | 3 +-
po/el.po | 404 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 406 insertions(+), 1 deletion(-)
create mode 100644 po/el.po
diff --git po/LINGUAS po/LINGUAS
index 0301751..820ca82 100644
--- po/LINGUAS
+++ po/LINGUAS
@@ -1,4 +1,5 @@
+el
fr
+it
pl
ru
-it
diff --git po/el.po po/el.po
new file mode 100644
index 0000000..1570565
--- /dev/null
+++ po/el.po
@@ -0,0 +1,404 @@
+# Greek translation for systemd.
+# Copyright (C) 2014 systemd's COPYRIGHT HOLDER
+# This file is distributed under the same license as the systemd package.
+# Dimitris Spingos <dmtrs32(a)gmail.com>, 2014.
+# Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32(a)gmail.com>, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: systemd master\n"
+"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?product=sys"
+"temd&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-04-25 15:51+0000\n"
+"PO-Revision-Date: 2014-04-29 09:17+0300\n"
+"Last-Translator: Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32(a)gmail.com>\n"
+"Language-Team: team(a)lists.gnome.gr\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.7.0\n"
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:1
+msgid "Set host name"
+msgstr "Ορισμός ονόματος οικοδεσπότη"
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:2
+msgid "Authentication is required to set the local host name."
+msgstr "Απαιτείται πιστοποίηση για να ορίσετε τοπικά όνομα οικοδεσπότη."
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:3
+msgid "Set static host name"
+msgstr "Ορισμός στατικού ονόματος οικοδεσπότη"
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:4
+msgid ""
+"Authentication is required to set the statically configured local host name, "
+"as well as the pretty host name."
+msgstr ""
+"Απαιτείται πιστοποίηση για να ορίσετε το στατικά ρυθμισμένο όνομα τοπικού "
+"οικοδεσπότη, καθώς και το pretty όνομα οικοδεσπότη."
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:5
+msgid "Set machine information"
+msgstr "Ορισμός πληροφοριών μηχανής"
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:6
+msgid "Authentication is required to set local machine information."
+msgstr "Απαιτείται πιστοποίηση για να ορίσετε πληροφορίες τοπικής μηχανής."
+
+#: ../src/locale/org.freedesktop.locale1.policy.in.h:1
+msgid "Set system locale"
+msgstr "Ορισμός τοπικών ρυθμίσεων συστήματος"
+
+#: ../src/locale/org.freedesktop.locale1.policy.in.h:2
+msgid "Authentication is required to set the system locale."
+msgstr ""
+"Απαιτείται πιστοποίηση για να ορίσετε τις τοπικές ρυθμίσεις του συστήματος."
+
+#: ../src/locale/org.freedesktop.locale1.policy.in.h:3
+msgid "Set system keyboard settings"
+msgstr "Ορισμός ρυθμίσεων πληκτρολογίου συστήματος"
+
+#: ../src/locale/org.freedesktop.locale1.policy.in.h:4
+msgid "Authentication is required to set the system keyboard settings."
+msgstr ""
+"Απαιτείται πιστοποίηση για να ορίσετε τις ρυθμίσεις πληκτρολογίου του "
+"συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:1
+msgid "Allow applications to inhibit system shutdown"
+msgstr ""
+"Να επιτρέπεται στις εφαρμογές να αποτρέπουν τον τερματισμό του συστήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:2
+msgid ""
+"Authentication is required to allow an application to inhibit system "
+"shutdown."
+msgstr ""
+"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει τον "
+"τερματισμό του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:3
+msgid "Allow applications to delay system shutdown"
+msgstr ""
+"Να επιτρέπεται στις εφαρμογές να καθυστερούν τον τερματισμό του συστήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:4
+msgid ""
+"Authentication is required to allow an application to delay system shutdown."
+msgstr ""
+"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να καθυστερήσει "
+"τον τερματισμό του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:5
+msgid "Allow applications to inhibit system sleep"
+msgstr "Να επιτρέπεται στις εφαρμογές να αποτρέπουν την ύπνωση του συστήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:6
+msgid ""
+"Authentication is required to allow an application to inhibit system sleep."
+msgstr ""
+"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την "
+"ύπνωση του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:7
+msgid "Allow applications to delay system sleep"
+msgstr "Να επιτρέπεται στις εφαρμογές να καθυστερούν την ύπνωση του συστήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:8
+msgid ""
+"Authentication is required to allow an application to delay system sleep."
+msgstr ""
+"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να καθυστερήσει "
+"την ύπνωση του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:9
+msgid "Allow applications to inhibit automatic system suspend"
+msgstr ""
+"Να επιτρέπεται στις εφαρμογές να αποτρέπουν την αυτόματη αναστολή του "
+"συστήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:10
+msgid ""
+"Authentication is required to allow an application to inhibit automatic "
+"system suspend."
+msgstr ""
+"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την "
+"αυτόματη αναστολή του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:11
+msgid "Allow applications to inhibit system handling of the power key"
+msgstr ""
+"Να επιτρέπεται στις εφαρμογές να αποτρέπουν τη διαχείριση του πλήκτρου "
+"ενεργοποίησης του συστήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:12
+msgid ""
+"Authentication is required to allow an application to inhibit system "
+"handling of the power key."
+msgstr ""
+"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την "
+"διαχείριση του πλήκτρου ενεργοποίησης του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:13
+msgid "Allow applications to inhibit system handling of the suspend key"
+msgstr ""
+"Να επιτρέπεται στις εφαρμογές να αποτρέπουν τη διαχείριση του πλήκτρου "
+"αναστολής του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:14
+msgid ""
+"Authentication is required to allow an application to inhibit system "
+"handling of the suspend key."
+msgstr ""
+"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την "
+"διαχείριση του πλήκτρου αναστολής του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:15
+msgid "Allow applications to inhibit system handling of the hibernate key"
+msgstr ""
+"Να επιτρέπεται στις εφαρμογές να αποτρέπουν τη διαχείριση του πλήκτρου "
+"αδρανοποίησης του συστήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:16
+msgid ""
+"Authentication is required to allow an application to inhibit system "
+"handling of the hibernate key."
+msgstr ""
+"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την "
+"διαχείριση του πλήκτρου αδρανοποίησης του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:17
+msgid "Allow applications to inhibit system handling of the lid switch"
+msgstr ""
+"Να επιτρέπεται στις εφαρμογές να αποτρέπουν τη διαχείριση του διακόπτη "
+"καλύμματος του συστήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:18
+msgid ""
+"Authentication is required to allow an application to inhibit system "
+"handling of the lid switch."
+msgstr ""
+"Απαιτείται πιστοποίηση για να επιτρέπεται σε μια εφαρμογή να αποτρέψει την "
+"διαχείριση του διακόπτη καλύμματος του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:19
+msgid "Allow non-logged-in users to run programs"
+msgstr "Να επιτρέπεται σε μη συνδεμένους χρήστες να εκτελούν προγράμματα"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:20
+msgid ""
+"Authentication is required to allow a non-logged-in user to run programs."
+msgstr ""
+"Απαιτείται πιστοποίηση για να επιτρέπεται σε μη συνδεμένους χρήστες να "
+"εκτελούν προγράμματα."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:21
+msgid "Allow attaching devices to seats"
+msgstr "Να επιτρέπεται η προσάρτηση συσκευών στους σταθμούς εργασίας"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:22
+msgid "Authentication is required for attaching a device to a seat."
+msgstr ""
+"Απαιτείται πιστοποίηση για προσάρτηση μιας συσκευής σε έναν σταθμό εργασίας."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:23
+msgid "Flush device to seat attachments"
+msgstr "Αφαίρεση συσκευής από προσαρτήσεις σταθμού εργασίας"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:24
+msgid ""
+"Authentication is required for resetting how devices are attached to seats."
+msgstr ""
+"Απαιτείται πιστοποίηση για επαναφορά του τρόπου που οι συσκευές προσαρτώνται "
+"στους σταθμούς εργασίας."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:25
+msgid "Power off the system"
+msgstr "Σβήσιμο του συστήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:26
+msgid "Authentication is required for powering off the system."
+msgstr "Απαιτείται πιστοποίηση για την σβήσιμο του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:27
+msgid "Power off the system while other users are logged in"
+msgstr "Σβήσιμο του συστήματος ενώ άλλοι χρήστες είναι συνδεμένοι"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:28
+msgid ""
+"Authentication is required for powering off the system while other users are "
+"logged in."
+msgstr ""
+"Απαιτείται πιστοποίηση για σβήσιμο του συστήματος ενώ άλλοι χρήστες είναι "
+"συνδεμένοι."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:29
+msgid "Power off the system while an application asked to inhibit it"
+msgstr "Απενεργοποίηση του συστήματος ενώ μια εφαρμογή ζήτησε να αποτραπεί."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:30
+msgid ""
+"Authentication is required for powering off the system while an application "
+"asked to inhibit it."
+msgstr ""
+"Απαιτείται πιστοποίηση για απενεργοποίηση του συστήματος ενώ μια εφαρμογή "
+"ζήτησε να αποτραπεί."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:31
+msgid "Reboot the system"
+msgstr "Επανεκκίνηση του συστήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:32
+msgid "Authentication is required for rebooting the system."
+msgstr "Απαιτείται πιστοποίηση για επανεκκίνηση του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:33
+msgid "Reboot the system while other users are logged in"
+msgstr "Επανεκκίνηση του συστήματος ενώ άλλοι χρήστες είναι συνδεμένοι"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:34
+msgid ""
+"Authentication is required for rebooting the system while other users are "
+"logged in."
+msgstr ""
+"Απαιτείται πιστοποίηση για επανεκκίνηση του συστήματος ενώ άλλοι χρήστες "
+"είναι συνδεμένοι."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:35
+msgid "Reboot the system while an application asked to inhibit it"
+msgstr "Επανεκκίνηση του συστήματος ενώ μια εφαρμογή ζήτησε να αποτραπεί"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:36
+msgid ""
+"Authentication is required for rebooting the system while an application "
+"asked to inhibit it."
+msgstr ""
+"Απαιτείται πιστοποίηση για επανεκκίνηση του συστήματος ενώ μια εφαρμογή "
+"ζήτησε να αποτραπεί."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:37
+msgid "Suspend the system"
+msgstr "Αναστολή του συστήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:38
+msgid "Authentication is required for suspending the system."
+msgstr "Απαιτείται πιστοποίηση για την αναστολή του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:39
+msgid "Suspend the system while other users are logged in"
+msgstr "Αναστολή του συστήματος ενώ άλλοι χρήστες είναι συνδεμένοι"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:40
+msgid ""
+"Authentication is required for suspending the system while other users are "
+"logged in."
+msgstr ""
+"Απαιτείται πιστοποίηση για αναστολή του συστήματος ενώ άλλοι χρήστες είναι "
+"συνδεμένοι."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:41
+msgid "Suspend the system while an application asked to inhibit it"
+msgstr "Αναστολή του συστήματος ενώ μια εφαρμογή ζήτησε να αποτραπεί"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:42
+msgid ""
+"Authentication is required for suspending the system while an application "
+"asked to inhibit it."
+msgstr ""
+"Απαιτείται πιστοποίηση για αναστολή του συστήματος ενώ μια εφαρμογή ζήτησε "
+"να αποτραπεί."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:43
+msgid "Hibernate the system"
+msgstr "Αδρανοποίηση του συτήματος"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:44
+msgid "Authentication is required for hibernating the system."
+msgstr "Απαιτείται πιστοποίηση για αδρανοποίηση του συστήματος."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:45
+msgid "Hibernate the system while other users are logged in"
+msgstr "Αδρανοποίηση του συστήματος ενώ άλλοι χρήστες είναι συνδεμένοι"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:46
+msgid ""
+"Authentication is required for hibernating the system while other users are "
+"logged in."
+msgstr ""
+"Απαιτείται πιστοποίηση για αδρανοποίηση του συστήματος ενώ άλλοι χρήστες "
+"είναι συνδεμένοι."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:47
+msgid "Hibernate the system while an application asked to inhibit it"
+msgstr "Αδρανοποίηση του συστήματος ενώ μια εφαρμογή ζήτησε να αποτραπεί"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:48
+msgid ""
+"Authentication is required for hibernating the system while an application "
+"asked to inhibit it."
+msgstr ""
+"Απαιτείται πιστοποίηση για αδρανοποίηση του συστήματος ενώ μια εφαρμογή "
+"ζήτησε να αποτραπεί."
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:1
+msgid "Set system time"
+msgstr "Ορισμός ώρας συστήματος"
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:2
+msgid "Authentication is required to set the system time."
+msgstr "Απαιτείται πιστοποίηση για να ορίσετε την ώρα του συστήματος."
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:3
+msgid "Set system timezone"
+msgstr "Ορισμός ζώνης ώρας συστήματος"
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:4
+msgid "Authentication is required to set the system timezone."
+msgstr "Απαιτείται πιστοποίηση για να ορίσετε την ώρα ζώνης του συστήματος."
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:5
+msgid "Set RTC to local timezone or UTC"
+msgstr "Ορισμός RTC στην τοπική ζώνη ώρας ή UTC"
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:6
+msgid ""
+"Authentication is required to control whether the RTC stores the local or "
+"UTC time."
+msgstr ""
+"Απαιτείται πιστοποίηση για να ελέγξετε αν το RTC αποθηκεύει την τοπική ή την "
+"ώρα UTC."
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:7
+msgid "Turn network time synchronization on or off"
+msgstr "Ενεργοποίηση/Απενεργοποίηση συγχρονισμού ώρας δικτύου"
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:8
+msgid ""
+"Authentication is required to control whether network time synchronization "
+"shall be enabled."
+msgstr ""
+"Απαιτείται πιστοποίηση για να ελέγξετε αν ο συγχρονισμός ώρας δικτύου θα "
+"ενεργοποιηθεί."
+
+#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:1
+msgid "Send passphrase back to system"
+msgstr "Αποστολή του συνθηματικού πίσω στο σύστημα"
+
+#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:2
+msgid ""
+"Authentication is required to send the entered passphrase back to the system."
+msgstr ""
+"Απαιτείται πιστοποίηση για αποστολή του εισερχόμενου συνθηματικού πίσω στο "
+"σύστημα."
+
+#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:3
+msgid "Privileged system and service manager access"
+msgstr "Προνομιούχος πρόσβαση διαχειριστή συστήματος και υπηρεσίας"
+
+#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:4
+msgid "Authentication is required to access the system and service manager."
+msgstr ""
+"Απαιτείται πιστοποίηση για να προσπελάσετε τον διαχειριστή συστήματος και "
+"υπηρεσιών."
--
1.7.9.2
++++++ 0006-hwdb-Update-database-of-Bluetooth-company-identifier.patch ++++++
>From 7cfa80f07e94c3e48703d145ef03a73dd6e7b983 Mon Sep 17 00:00:00 2001
From: Marcel Holtmann <marcel(a)holtmann.org>
Date: Wed, 18 Jun 2014 13:55:32 +0200
Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers
---
hwdb/20-bluetooth-vendor-product.hwdb | 42 ++++++++++++++++++++++++++++++---
1 file changed, 39 insertions(+), 3 deletions(-)
diff --git hwdb/20-bluetooth-vendor-product.hwdb hwdb/20-bluetooth-vendor-product.hwdb
index a65c7db..377748a 100644
--- hwdb/20-bluetooth-vendor-product.hwdb
+++ hwdb/20-bluetooth-vendor-product.hwdb
@@ -115,7 +115,7 @@ bluetooth:v0024*
ID_VENDOR_FROM_DATABASE=Alcatel
bluetooth:v0025*
- ID_VENDOR_FROM_DATABASE=Philips Semiconductors
+ ID_VENDOR_FROM_DATABASE=NXP Semiconductors (formerly Philips Semiconductors)
bluetooth:v0026*
ID_VENDOR_FROM_DATABASE=C Technologies
@@ -427,7 +427,7 @@ bluetooth:v008B*
ID_VENDOR_FROM_DATABASE=Topcorn Positioning Systems, LLC
bluetooth:v008C*
- ID_VENDOR_FROM_DATABASE=Qualcomm Retail Solutions, Inc. (formerly Qualcomm Labs, Inc.)
+ ID_VENDOR_FROM_DATABASE=Gimbal Inc. (formerly Qualcomm Labs, Inc. and Qualcomm Retail Solutions, Inc.)
bluetooth:v008D*
ID_VENDOR_FROM_DATABASE=Zscan Software
@@ -1006,10 +1006,46 @@ bluetooth:v014C*
ID_VENDOR_FROM_DATABASE=Mesh-Net Ltd
bluetooth:v014D*
- ID_VENDOR_FROM_DATABASE=HUIZHOU DESAY SV AUTOMOTIVE CO., LTD.
+ ID_VENDOR_FROM_DATABASE=Huizhou Desay SV Automotive CO., LTD.
bluetooth:v014E*
ID_VENDOR_FROM_DATABASE=Tangerine, Inc.
bluetooth:v014F*
ID_VENDOR_FROM_DATABASE=B&W Group Ltd.
+
+bluetooth:v0150*
+ ID_VENDOR_FROM_DATABASE=Pioneer Corporation
+
+bluetooth:v0151*
+ ID_VENDOR_FROM_DATABASE=OnBeep
+
+bluetooth:v0152*
+ ID_VENDOR_FROM_DATABASE=Vernier Software & Technology
+
+bluetooth:v0153*
+ ID_VENDOR_FROM_DATABASE=ROL Ergo
+
+bluetooth:v0154*
+ ID_VENDOR_FROM_DATABASE=Pebble Technology
+
+bluetooth:v0155*
+ ID_VENDOR_FROM_DATABASE=NETATMO
+
+bluetooth:v0156*
+ ID_VENDOR_FROM_DATABASE=Accumulate AB
+
+bluetooth:v0157*
+ ID_VENDOR_FROM_DATABASE=Anhui Huami Information Technology Co., Ltd.
+
+bluetooth:v0158*
+ ID_VENDOR_FROM_DATABASE=Inmite s.r.o.
+
+bluetooth:v0159*
+ ID_VENDOR_FROM_DATABASE=ChefSteps, Inc.
+
+bluetooth:v015A*
+ ID_VENDOR_FROM_DATABASE=micus AG
+
+bluetooth:v015B*
+ ID_VENDOR_FROM_DATABASE=Biomedical Research Ltd.
--
1.7.9.2
++++++ 0006-log-honour-the-kernel-s-quiet-cmdline-argument.patch ++++++
>From e683212f049ac5d3f95fb17300cfa2fd971f78f3 Mon Sep 17 00:00:00 2001
From: Ronny Chevalier <chevalier.ronny(a)gmail.com>
Date: Tue, 3 Jun 2014 19:44:03 +0200
Subject: [PATCH] log: honour the kernel's quiet cmdline argument
It was forgotten in b1e90ec515408aec2702522f6f68c4920b56375b
See https://bugs.freedesktop.org/show_bug.cgi?id=79582
---
src/shared/log.c | 3 +++
1 file changed, 3 insertions(+)
diff --git src/shared/log.c src/shared/log.c
index 9039db3..6f17705 100644
--- src/shared/log.c
+++ src/shared/log.c
@@ -878,6 +878,9 @@ void log_parse_environment(void) {
if (l == 5 && startswith(w, "debug")) {
log_set_max_level(LOG_DEBUG);
break;
+ } else if (l == 5 && startswith(w, "quiet")) {
+ log_set_max_level(LOG_WARNING);
+ break;
}
}
}
--
1.7.9.2
++++++ 0006-tty-ask-password-agent-Do-tell-what-directory-we-fai.patch ++++++
>From 267b3e41df5a2181f2911433539f81de2fa1511a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez(a)opensuse.org>
Date: Thu, 29 May 2014 14:17:37 -0400
Subject: [PATCH] tty-ask-password-agent: Do tell what directory we failed to
open
---
.../tty-ask-password-agent.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git src/tty-ask-password-agent/tty-ask-password-agent.c src/tty-ask-password-agent/tty-ask-password-agent.c
index 3203474..55a2215 100644
--- src/tty-ask-password-agent/tty-ask-password-agent.c
+++ src/tty-ask-password-agent/tty-ask-password-agent.c
@@ -501,7 +501,7 @@ static int show_passwords(void) {
if (errno == ENOENT)
return 0;
- log_error("opendir(): %m");
+ log_error("opendir(/run/systemd/ask-password): %m");
return -errno;
}
--
1.7.9.2
++++++ 0007-keyboard-add-Plantronics-.Audio-mute-button.patch ++++++
>From 9e3dbf6b2b99d0e16989d9cedb458729db5a60c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek(a)in.waw.pl>
Date: Sun, 1 Jun 2014 14:01:23 -0400
Subject: [PATCH] keyboard: add Plantronics .Audio mute button
https://bugs.freedesktop.org/show_bug.cgi?id=79495
---
hwdb/60-keyboard.hwdb | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git hwdb/60-keyboard.hwdb hwdb/60-keyboard.hwdb
index 05e6a04..d053766 100644
--- hwdb/60-keyboard.hwdb
+++ hwdb/60-keyboard.hwdb
@@ -866,6 +866,14 @@ keyboard:dmi:bvn*:bvr*:bd*:svnOQO*Inc.*:pnOQO*Model*2*:pvr*
KEYBOARD_KEY_f3=volumeup
###########################################################
+# Plantronics
+###########################################################
+
+# Plantronics .Audio 626 DSP
+keyboard:usb:v047fpC006*
+ KEYBOARD_KEY_b002f=f20 # Microphone mute button; should be micmute
+
+###########################################################
# Quanta
###########################################################
--
1.7.9.2
++++++ 0007-po-add-German-translation.patch ++++++
>From 351e57652a7d9a51f9064c089794d13801eaee73 Mon Sep 17 00:00:00 2001
From: Benjamin Steinwender <b(a)stbe.at>
Date: Sun, 8 Jun 2014 18:39:50 +0200
Subject: [PATCH] po: add German translation
https://bugs.freedesktop.org/show_bug.cgi?id=79430
---
po/LINGUAS | 1 +
po/de.po | 418 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 419 insertions(+)
create mode 100644 po/de.po
diff --git po/LINGUAS po/LINGUAS
index 820ca82..2cb0f30 100644
--- po/LINGUAS
+++ po/LINGUAS
@@ -1,3 +1,4 @@
+de
el
fr
it
diff --git po/de.po po/de.po
new file mode 100644
index 0000000..a41e33d
--- /dev/null
+++ po/de.po
@@ -0,0 +1,418 @@
+# German translation for systemd.
+# Copyright (C) 2014 systemd's COPYRIGHT HOLDER
+# This file is distributed under the same license as the systemd package.
+# Christian Kirbach <Christian.Kirbach(a)gmail.com>, 2014.
+# Benjamin Steinwender <b(a)stbe.at>, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: systemd master\n"
+"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?"
+"product=systemd&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2014-06-02 10:25+0000\n"
+"PO-Revision-Date: 2014-06-02 22:43+0100\n"
+"Last-Translator: Benjamin Steinwender <b(a)stbe.at>\n"
+"Language-Team: German <gnome-de(a)gnome.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 1.6.5\n"
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:1
+msgid "Set host name"
+msgstr "Rechnername festlegen"
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:2
+msgid "Authentication is required to set the local host name."
+msgstr "Legitimierung ist zum Festlegen des lokalen Rechnernamens notwendig"
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:3
+msgid "Set static host name"
+msgstr "Statischen Rechnernamen festlegen"
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:4
+msgid ""
+"Authentication is required to set the statically configured local host name, "
+"as well as the pretty host name."
+msgstr ""
+"Authentifizierung ist erforderlich, um den statisch geänderten, lokalen "
+"Rechnernamen, sowie den beschönigten Rechnernamen festzulegen."
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:5
+msgid "Set machine information"
+msgstr "Maschinen-Information festlegen"
+
+#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:6
+msgid "Authentication is required to set local machine information."
+msgstr ""
+"Legitimierung ist zum Festlegen der lokalen Maschinen-Information "
+"erforderlich."
+
+#: ../src/locale/org.freedesktop.locale1.policy.in.h:1
+msgid "Set system locale"
+msgstr "Die lokale Sprachumgebung festlegen"
+
+#: ../src/locale/org.freedesktop.locale1.policy.in.h:2
+msgid "Authentication is required to set the system locale."
+msgstr ""
+"Legitimierung ist zum Festlegen der systemweiten Spracheinstellungen "
+"erforderlich."
+
+#: ../src/locale/org.freedesktop.locale1.policy.in.h:3
+msgid "Set system keyboard settings"
+msgstr "Tastatureinstellungen des Systems festlegen"
+
+#: ../src/locale/org.freedesktop.locale1.policy.in.h:4
+msgid "Authentication is required to set the system keyboard settings."
+msgstr ""
+"Legitimierung ist zum Festlegen der Tastatureinstellungen des Systems "
+"erforderlich."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:1
+msgid "Allow applications to inhibit system shutdown"
+msgstr "Anwendungen dürfen das Herunterfahren des Systems unterbinden"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:2
+msgid ""
+"Authentication is required to allow an application to inhibit system "
+"shutdown."
+msgstr ""
+"Legitimierung ist notwendig, um Anwendungen das Herunterfahren des Systems "
+"zu erlauben."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:3
+msgid "Allow applications to delay system shutdown"
+msgstr "Anwendungen dürfen das Herunterfahren des Systems verzögern"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:4
+msgid ""
+"Authentication is required to allow an application to delay system shutdown."
+msgstr ""
+"Legitimierung ist notwendig, um Anwendungen das Verzögern des Herunterfahren "
+"des Systems zu erlauben."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:5
+msgid "Allow applications to inhibit system sleep"
+msgstr "Anwendungen dürfen den Bereitschaftsmodus unterbinden"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:6
+msgid ""
+"Authentication is required to allow an application to inhibit system sleep."
+msgstr ""
+"Legitimierung ist erforderlich, um Anwendungen das Unterbinden des "
+"Bereitschaftsmodus zu erlauben."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:7
+msgid "Allow applications to delay system sleep"
+msgstr "Anwendungen dürfen den Bereitschaftsmodus verzögern"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:8
+msgid ""
+"Authentication is required to allow an application to delay system sleep."
+msgstr ""
+"Legitimierung ist erforderlich, um Anwendungen das Verzögern des "
+"Bereitschaftsmodus zu erlauben."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:9
+msgid "Allow applications to inhibit automatic system suspend"
+msgstr "Anwendungen dürfen den automatischen Bereitschaftsmodus unterbinden"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:10
+msgid ""
+"Authentication is required to allow an application to inhibit automatic "
+"system suspend."
+msgstr ""
+"Legitimierung ist notwendig, um Anwendungen das Unterbinden des "
+"automatischen Bereitschaftsmodus zu erlauben."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:11
+msgid "Allow applications to inhibit system handling of the power key"
+msgstr ""
+"Anwendungen dürfen das Auswerten des Ein-/Ausschaltknopfs des Systems "
+"unterbinden"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:12
+msgid ""
+"Authentication is required to allow an application to inhibit system "
+"handling of the power key."
+msgstr ""
+"Legitmierung ist erforderlich, um Anwendungen das Unterbinden der Auswertung "
+"der Ein-/Ausschaltknopfs des Systems zu erlauben."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:13
+msgid "Allow applications to inhibit system handling of the suspend key"
+msgstr ""
+"Anwendungen dürfen das Auswerten des Bereitschaftsknopfs des Systems "
+"unterbinden"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:14
+msgid ""
+"Authentication is required to allow an application to inhibit system "
+"handling of the suspend key."
+msgstr ""
+"Legitimierung ist erforderlich, um Anwendungen das Unterbinden der "
+"Auswertung des Bereitschaftsknopfes des Systems zu erlauben."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:15
+msgid "Allow applications to inhibit system handling of the hibernate key"
+msgstr ""
+"Anwendungen dürfen das Auswerten des Knopfs für den Ruhezustand unterbinden"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:16
+msgid ""
+"Authentication is required to allow an application to inhibit system "
+"handling of the hibernate key."
+msgstr ""
+"Legitimierung ist erforderlich, um Anwendungen das Unterbinden der "
+"Auswertung des Knopfs für den Ruhezustand zu erlauben."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:17
+msgid "Allow applications to inhibit system handling of the lid switch"
+msgstr ""
+"Anwendungen dürfen das Auswerten des Notebookdeckelschalters unterbinden"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:18
+msgid ""
+"Authentication is required to allow an application to inhibit system "
+"handling of the lid switch."
+msgstr ""
+"Legitimierung ist erforderlich, um Anwendungen das Unterbinden der "
+"Auswertung des Notebookdeckelschalters des Systems zu erlauben."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:19
+msgid "Allow non-logged-in users to run programs"
+msgstr "Nicht angemeldete Benutzer dürfen Programme ausführen"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:20
+msgid ""
+"Authentication is required to allow a non-logged-in user to run programs."
+msgstr ""
+"Legitimierung ist erforderlich, damit nicht angemeldete Benutzer Programme "
+"ausführen dürfen."
+
+# www.freedesktop.org/wiki/Software/systemd/multiseat/
+#: ../src/login/org.freedesktop.login1.policy.in.h:21
+msgid "Allow attaching devices to seats"
+msgstr "Das Anschließen von Geräten an Arbeitsstationen erlauben"
+
+# www.freedesktop.org/wiki/Software/systemd/multiseat/
+#: ../src/login/org.freedesktop.login1.policy.in.h:22
+msgid "Authentication is required for attaching a device to a seat."
+msgstr ""
+"Legitimierung ist zum Anschließen eines Geräts an eine Arbeitsstation "
+"notwendig."
+
+# www.freedesktop.org/wiki/Software/systemd/multiseat/
+#: ../src/login/org.freedesktop.login1.policy.in.h:23
+msgid "Flush device to seat attachments"
+msgstr "Zurücksetzen der an eine Arbeitsstation angeschlossenen Geräte"
+
+# www.freedesktop.org/wiki/Software/systemd/multiseat/
+#: ../src/login/org.freedesktop.login1.policy.in.h:24
+msgid ""
+"Authentication is required for resetting how devices are attached to seats."
+msgstr ""
+"Legitimierung ist zum Zurücksetzen notwendig, wie Geräte an eine "
+"Arbeitsstation angeschlossen werden."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:25
+msgid "Power off the system"
+msgstr "Das System ausschalten"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:26
+msgid "Authentication is required for powering off the system."
+msgstr "Legitimierung ist zum Ausschalten des Systems notwendig."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:27
+msgid "Power off the system while other users are logged in"
+msgstr "Das System herunter fahren, während andere Benutzer angemeldet sind"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:28
+msgid ""
+"Authentication is required for powering off the system while other users are "
+"logged in."
+msgstr ""
+"Legitimierung ist zum Herunterfahren des Systems notwendig, während andere "
+"Benutzer angemeldet sind."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:29
+msgid "Power off the system while an application asked to inhibit it"
+msgstr ""
+"Das System ausschalten, während eine Anwendung anfordert es zu unterbinden"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:30
+msgid ""
+"Authentication is required for powering off the system while an application "
+"asked to inhibit it."
+msgstr ""
+"Legitimierung ist zum Ausschalten des Systems notwendig, während eine "
+"Anwendung anfordert es zu unterbinden."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:31
+msgid "Reboot the system"
+msgstr "Das System neu starten"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:32
+msgid "Authentication is required for rebooting the system."
+msgstr "Legitimierung ist zum Neustart des Systems notwendig."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:33
+msgid "Reboot the system while other users are logged in"
+msgstr "Das Systems neu starten, während andere Benutzer angemeldet sind"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:34
+msgid ""
+"Authentication is required for rebooting the system while other users are "
+"logged in."
+msgstr ""
+"Legitimierung ist zum Neustart des Systems notwendig, während andere "
+"Benutzer angemeldet sind."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:35
+msgid "Reboot the system while an application asked to inhibit it"
+msgstr ""
+"Das System neu starten, während eine Anwendung anfordert es zu unterbinden"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:36
+msgid ""
+"Authentication is required for rebooting the system while an application "
+"asked to inhibit it."
+msgstr ""
+"Legitimierung ist zum Neustart des Systems notwendig, während eine Anwendung "
+"anforderte es zu unterbinden."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:37
+msgid "Suspend the system"
+msgstr "Das System in Bereitschaft versetzen"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:38
+msgid "Authentication is required for suspending the system."
+msgstr "Legitimierung ist zum Versetzen des Systems in Bereitschaft notwendig."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:39
+msgid "Suspend the system while other users are logged in"
+msgstr ""
+"Das System in Bereitschaft versetzen, während andere Benutzer angemeldet "
+"sind."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:40
+msgid ""
+"Authentication is required for suspending the system while other users are "
+"logged in."
+msgstr ""
+"Legitimierung ist zum Versetzen des Systems in Bereitschaft notwendig, "
+"während andere Benutzer angemeldet sind."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:41
+msgid "Suspend the system while an application asked to inhibit it"
+msgstr ""
+"Das System in Bereitschaft versetzen, während eine Anwendung anfordert dies "
+"zu unterbinden"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:42
+msgid ""
+"Authentication is required for suspending the system while an application "
+"asked to inhibit it."
+msgstr ""
+"Legitimierung ist zum Versetzen des Systems in Bereitschaft notwendig, "
+"während eine Anwendung anfordert dies zu unterbinden."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:43
+msgid "Hibernate the system"
+msgstr "Den Ruhezustand des Systems aktivieren"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:44
+msgid "Authentication is required for hibernating the system."
+msgstr ""
+"Legitimierung ist zum Aktivieren des Ruhezustands des Systems notwendig."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:45
+msgid "Hibernate the system while other users are logged in"
+msgstr ""
+"Den Ruhezustand des Systems aktivieren, während andere Benutzer angemeldet "
+"sind"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:46
+msgid ""
+"Authentication is required for hibernating the system while other users are "
+"logged in."
+msgstr ""
+"Legitimierung ist zum Aktivieren des Ruhezustands des Systems notwendig, "
+"während andere Benutzer angemeldet sind."
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:47
+msgid "Hibernate the system while an application asked to inhibit it"
+msgstr ""
+"Das System in den Ruhezustand versetzen, während eine Anwendung wünscht dies "
+"zu verhindern"
+
+#: ../src/login/org.freedesktop.login1.policy.in.h:48
+msgid ""
+"Authentication is required for hibernating the system while an application "
+"asked to inhibit it."
+msgstr ""
+"Legitimierung ist zum Versetzen des System in den Ruhezustand notwendig, "
+"während eine Anwendung wünscht dies zu verhindern."
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:1
+msgid "Set system time"
+msgstr "Die Systemzeit festlegen"
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:2
+msgid "Authentication is required to set the system time."
+msgstr "Legitimierung ist zum Festlegen der Systemzeit notwendig."
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:3
+msgid "Set system timezone"
+msgstr "Die Systemzeitzone festlegen"
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:4
+msgid "Authentication is required to set the system timezone."
+msgstr "Legitimierung ist zum Festlegen der Systemzeitzone notwendig."
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:5
+msgid "Set RTC to local timezone or UTC"
+msgstr "Echtzeituhr auf lokale Zeitzone oder UTC setzen"
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:6
+msgid ""
+"Authentication is required to control whether the RTC stores the local or "
+"UTC time."
+msgstr ""
+"Legitimierung ist notwendig zum Festlegen, ob die Echtzeituhr auf lokale "
+"Zeitzone oder UTC eingestellt ist."
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:7
+msgid "Turn network time synchronization on or off"
+msgstr "Netzwerkzeitabgeich ein- oder ausschalten"
+
+#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:8
+msgid ""
+"Authentication is required to control whether network time synchronization "
+"shall be enabled."
+msgstr ""
+"Legitimierung ist zum Festlegen, ob Netzwerkzeitabgeich eingeschaltet sein "
+"soll, erforderlich."
+
+#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:1
+msgid "Send passphrase back to system"
+msgstr "Passphrase zurück an das System senden"
+
+#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:2
+msgid ""
+"Authentication is required to send the entered passphrase back to the system."
+msgstr ""
+"Legitimierung ist zum Senden des eingegebenen Kennworts zurück an das System "
+"notwendig."
+
+#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:3
+msgid "Privileged system and service manager access"
+msgstr "Privilegierter Zugriff auf die System- und Dienstverwaltung"
+
+#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:4
+msgid "Authentication is required to access the system and service manager."
+msgstr ""
+"Legitimierung ist notwendig für den Zugriff auf die System- und "
+"Dienstverwaltung."
--
1.7.9.2
++++++ 0008-Reset-signal-mask-on-re-exec-to-init.patch ++++++
>From 5a85ca1cb622fda4a39c8a6f00dccea7f8a1e82a Mon Sep 17 00:00:00 2001
From: Ruediger Oertel <ro(a)suse.de>
Date: Fri, 13 Jun 2014 16:41:06 +0200
Subject: [PATCH] Reset signal-mask on re-exec to init=..
Process 1 (aka init) needs to be started with an empty signal mask.
That includes the process 1 that's started after the initrd is finished.
When the initrd is using systemd (as it does with dracut based initrds)
then it is systemd that calls the real init. Normally this is systemd
again, except when the user uses for instance "init=/bin/bash" on the
kernel command line.
---
src/core/main.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git src/core/main.c src/core/main.c
index 3aac5d1..3e57f07 100644
--- src/core/main.c
+++ src/core/main.c
@@ -1843,6 +1843,7 @@ finish:
if (reexecute) {
const char **args;
unsigned i, args_size;
+ sigset_t ss, o_ss;
/* Close and disarm the watchdog, so that the new
* instance can reinitialize it, but doesn't get
@@ -1926,6 +1927,11 @@ finish:
args[i++] = NULL;
assert(i <= args_size);
+ /* reenable any blocked signals, especially important
+ * if we switch from initial ramdisk to init=... */
+ sigemptyset(&ss);
+ sigprocmask(SIG_SETMASK, &ss, &o_ss);
+
if (switch_root_init) {
args[0] = switch_root_init;
execv(args[0], (char* const*) args);
@@ -1944,6 +1950,8 @@ finish:
log_error("Failed to execute /bin/sh, giving up: %m");
} else
log_warning("Failed to execute /sbin/init, giving up: %m");
+
+ sigprocmask(SIG_SETMASK, &o_ss, NULL);
}
if (arg_serialization) {
--
1.7.9.2
++++++ 0009-core-clean-up-signal-reset-logic-when-reexec.patch ++++++
>From 9bfcda9528636914aef3e0ab91191bb81654c83d Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart(a)poettering.net>
Date: Fri, 20 Jun 2014 16:58:21 +0200
Subject: [PATCH] core: clean-up signal reset logic when reexec
There's no need to save the old sigmask, if we are going to die. Let's
simplify this. Also, reset all the signal handlers, so that we don't
leave SIG_IGN set for some of them across reexec.
---
src/core/main.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git src/core/main.c src/core/main.c
index 863ba52..6981e72 100644
--- src/core/main.c
+++ src/core/main.c
@@ -1824,7 +1824,7 @@ finish:
if (reexecute) {
const char **args;
unsigned i, args_size;
- sigset_t ss, o_ss;
+ sigset_t ss;
/* Close and disarm the watchdog, so that the new
* instance can reinitialize it, but doesn't get
@@ -1910,8 +1910,10 @@ finish:
/* reenable any blocked signals, especially important
* if we switch from initial ramdisk to init=... */
- sigemptyset(&ss);
- sigprocmask(SIG_SETMASK, &ss, &o_ss);
+ reset_all_signal_handlers();
+
+ assert_se(sigemptyset(&ss) == 0);
+ assert_se(sigprocmask(SIG_SETMASK, &ss, NULL) == 0);
if (switch_root_init) {
args[0] = switch_root_init;
@@ -1931,8 +1933,6 @@ finish:
log_error("Failed to execute /bin/sh, giving up: %m");
} else
log_warning("Failed to execute /sbin/init, giving up: %m");
-
- sigprocmask(SIG_SETMASK, &o_ss, NULL);
}
if (arg_serialization) {
--
1.7.9.2
++++++ 0010-util-treat-fuse.sshfs-as-a-network-filesystem.patch ++++++
>From da92ca5eb506d513033e0c7a85daf25a7e1c9d0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek(a)in.waw.pl>
Date: Fri, 20 Jun 2014 22:43:49 -0400
Subject: [PATCH] util: treat fuse.sshfs as a network filesystem
https://bugs.freedesktop.org/show_bug.cgi?id=73727
---
src/shared/util.c | 1 +
1 file changed, 1 insertion(+)
diff --git src/shared/util.c src/shared/util.c
index 882a690..dbdb692 100644
--- src/shared/util.c
+++ src/shared/util.c
@@ -1514,6 +1514,7 @@ bool fstype_is_network(const char *fstype) {
static const char table[] =
"cifs\0"
"smbfs\0"
+ "sshfs\0"
"ncpfs\0"
"ncp\0"
"nfs\0"
--
1.7.9.2
++++++ 0011-build-sys-add-pthread-flag-for-libsystemd-shared.patch ++++++
>From 8e75477abdd838d3beddc5fd1c6a7707b22748b6 Mon Sep 17 00:00:00 2001
From: Ronny Chevalier <chevalier.ronny(a)gmail.com>
Date: Sat, 21 Jun 2014 22:07:09 +0200
Subject: [PATCH] build-sys: add -pthread flag for libsystemd-shared
src/shared/async.c uses pthread so it will fail at link time if we link
only to libsystemd-shared and use async
---
Makefile.am | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git Makefile.am Makefile.am
index c7653ea..00db82d 100644
--- Makefile.am
+++ Makefile.am
@@ -837,7 +837,8 @@ nodist_libsystemd_shared_la_SOURCES = \
libsystemd_shared_la_CFLAGS = \
$(AM_CFLAGS) \
- $(SECCOMP_CFLAGS)
+ $(SECCOMP_CFLAGS) \
+ -pthread
# ------------------------------------------------------------------------------
noinst_LTLIBRARIES += \
--
1.7.9.2
++++++ 0012-core-transaction-avoid-misleading-error-message-when.patch ++++++
Based on 04ef5b03f64d3824a51a2a903548af029a006744 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek(a)in.waw.pl>
Date: Sun, 22 Jun 2014 14:04:23 -0400
Subject: [PATCH] core/transaction: avoid misleading error message when unit
not found
There's no point in telling the user to look at the logs when
an attempt to load the unit file failed with ENOENT.
https://bugzilla.redhat.com/show_bug.cgi?id=996133
---
TODO | 4 ----
src/core/transaction.c | 18 ++++++++++++------
2 files changed, 12 insertions(+), 10 deletions(-)
--- src/core/transaction.c
+++ src/core/transaction.c 2014-06-24 11:18:42.746235805 +0000
@@ -865,12 +865,18 @@ int transaction_add_job_and_dependencies
}
if (type != JOB_STOP && unit->load_state == UNIT_ERROR) {
- sd_bus_error_setf(e, BUS_ERROR_LOAD_FAILED,
- "Unit %s failed to load: %s. "
- "See system logs and 'systemctl status %s' for details.",
- unit->id,
- strerror(-unit->load_error),
- unit->id);
+ if (unit->load_error == -ENOENT)
+ sd_bus_error_setf(e, BUS_ERROR_LOAD_FAILED,
+ "Unit %s failed to load: %s.",
+ unit->id,
+ strerror(-unit->load_error));
+ else
+ sd_bus_error_setf(e, BUS_ERROR_LOAD_FAILED,
+ "Unit %s failed to load: %s. "
+ "See system logs and 'systemctl status %s' for details.",
+ unit->id,
+ strerror(-unit->load_error),
+ unit->id);
return -EINVAL;
}
++++++ 1021-udev-re-add-persistent-net-rules.patch ++++++
Index: systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules
===================================================================
--- /dev/null
+++ systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules
@@ -0,0 +1,105 @@
+# do not edit this file, it will be overwritten on update
+
+# these rules generate rules for persistent network device naming
+#
+# variables used to communicate:
+# MATCHADDR MAC address used for the match
+# MATCHID bus_id used for the match
+# MATCHDRV driver name used for the match
+# MATCHIFTYPE interface type match
+# COMMENT comment to add to the generated rule
+# INTERFACE_NAME requested name supplied by external tool
+# INTERFACE_NEW new interface name returned by rule writer
+
+ACTION!="add", GOTO="persistent_net_generator_end"
+SUBSYSTEM!="net", GOTO="persistent_net_generator_end"
+
+# ignore the interface if a name has already been set
+NAME=="?*", GOTO="persistent_net_generator_end"
+
+# device name whitelist
+KERNEL!="eth*|ath*|wlan*[0-9]|msh*|ra*|sta*|ctc*|lcs*|hsi*", GOTO="persistent_net_generator_end"
+
+IMPORT{cmdline}="net.ifnames"
+ENV{net.ifnames}=="1", GOTO="persistent_net_generator_end"
+
+# ignore Xen virtual interfaces
+SUBSYSTEMS=="xen", GOTO="persistent_net_generator_end"
+
+# read MAC address
+ENV{MATCHADDR}="$attr{address}"
+
+# match interface type
+ENV{MATCHIFTYPE}="$attr{type}"
+
+# ignore KVM virtual interfaces
+ENV{MATCHADDR}=="52:54:00:*", GOTO="persistent_net_generator_end"
+# ignore VMWare virtual interfaces
+ENV{MATCHADDR}=="00:0c:29:*|00:50:56:*", GOTO="persistent_net_generator_end"
+# ignore Hyper-V virtual interfaces
+ENV{MATCHADDR}=="00:15:5d:*", GOTO="persistent_net_generator_end"
+
+# These vendors are known to violate the local MAC address assignment scheme
+# Interlan, DEC (UNIBUS or QBUS), Apollo, Cisco, Racal-Datacom
+ENV{MATCHADDR}=="02:07:01:*", GOTO="globally_administered_whitelist"
+# 3Com
+ENV{MATCHADDR}=="02:60:60:*", GOTO="globally_administered_whitelist"
+# 3Com IBM PC; Imagen; Valid; Cisco; Apple
+ENV{MATCHADDR}=="02:60:8c:*", GOTO="globally_administered_whitelist"
+# Intel
+ENV{MATCHADDR}=="02:a0:c9:*", GOTO="globally_administered_whitelist"
+# Olivetti
+ENV{MATCHADDR}=="02:aa:3c:*", GOTO="globally_administered_whitelist"
+# CMC Masscomp; Silicon Graphics; Prime EXL
+ENV{MATCHADDR}=="02:cf:1f:*", GOTO="globally_administered_whitelist"
+# Prominet Corporation Gigabit Ethernet Switch
+ENV{MATCHADDR}=="02:e0:3b:*", GOTO="globally_administered_whitelist"
+# BTI (Bus-Tech, Inc.) IBM Mainframes
+ENV{MATCHADDR}=="02:e6:d3:*", GOTO="globally_administered_whitelist"
+# Realtek
+ENV{MATCHADDR}=="52:54:00:*", GOTO="globally_administered_whitelist"
+# Novell 2000
+ENV{MATCHADDR}=="52:54:4c:*", GOTO="globally_administered_whitelist"
+# Realtec
+ENV{MATCHADDR}=="52:54:ab:*", GOTO="globally_administered_whitelist"
+# Kingston Technologies
+ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="globally_administered_whitelist"
+# Xensource
+ENV{MATCHADDR}=="00:16:3e:*", GOTO="globally_administered_whitelist"
+
+# match interface dev_id
+ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
+
+# do not use "locally administered" MAC address
+ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}=""
+
+# do not use empty address
+ENV{MATCHADDR}=="00:00:00:00:00:00", ENV{MATCHADDR}=""
+
+LABEL="globally_administered_whitelist"
+
+# build comment line for generated rule:
+SUBSYSTEMS=="pci", ENV{COMMENT}="PCI device $attr{vendor}:$attr{device} ($driver)"
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="?*", ENV{COMMENT}="USB device 0x$attr{idVendor}:0x$attr{idProduct} ($driver)"
+SUBSYSTEMS=="pcmcia", ENV{COMMENT}="PCMCIA device $attr{card_id}:$attr{manf_id} ($driver)"
+SUBSYSTEMS=="ieee1394", ENV{COMMENT}="Firewire device $attr{host_id})"
+
+# ibmveth likes to use "locally administered" MAC addresses
+DRIVERS=="ibmveth", ENV{MATCHADDR}="$attr{address}", ENV{COMMENT}="ibmveth ($id)"
+
+# S/390 uses id matches only, do not use MAC address match
+SUBSYSTEMS=="ccwgroup", ENV{COMMENT}="S/390 $driver device at $id", ENV{MATCHID}="$id", ENV{MATCHDRV}="$driver", ENV{MATCHADDR}=""
+
+# see if we got enough data to create a rule
+ENV{MATCHADDR}=="", ENV{MATCHID}=="", ENV{INTERFACE_NAME}=="", GOTO="persistent_net_generator_end"
+
+# default comment
+ENV{COMMENT}=="", ENV{COMMENT}="net device ($attr{driver})"
+
+# write rule
+DRIVERS=="?*", IMPORT{program}="write_net_rules"
+
+# rename interface if needed
+ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}"
+
+LABEL="persistent_net_generator_end"
Index: systemd-210/src/udev/rule_generator/rule_generator.functions
===================================================================
--- /dev/null
+++ systemd-210/src/udev/rule_generator/rule_generator.functions
@@ -0,0 +1,113 @@
+# functions used by the udev rule generator
+
+# Copyright (C) 2006 Marco d'Itri <md(a)Linux.IT>
+
+# 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 2 of the License, or
+# (at your option) 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/>.
+
+PATH='/usr/bin:/bin:/usr/sbin:/sbin'
+
+# Read a single line from file $1 in the $DEVPATH directory.
+# The function must not return an error even if the file does not exist.
+sysread() {
+ local file="$1"
+ [ -e "/sys$DEVPATH/$file" ] || return 0
+ local value
+ read value < "/sys$DEVPATH/$file" || return 0
+ echo "$value"
+}
+
+sysreadlink() {
+ local file="$1"
+ [ -e "/sys$DEVPATH/$file" ] || return 0
+ readlink -f /sys$DEVPATH/$file 2> /dev/null || true
+}
+
+# Return true if a directory is writeable.
+writeable() {
+ if ln -s test-link $1/.is-writeable 2> /dev/null; then
+ rm -f $1/.is-writeable
+ return 0
+ else
+ return 1
+ fi
+}
+
+# Create a lock file for the current rules file.
+lock_rules_file() {
+ RUNDIR="/run/udev"
+ [ -e "$RUNDIR" ] || return 0
+
+ RULES_LOCK="$RUNDIR/.lock-${RULES_FILE##*/}"
+
+ retry=30
+ while ! mkdir $RULES_LOCK 2> /dev/null; do
+ if [ $retry -eq 0 ]; then
+ echo "Cannot lock $RULES_FILE!" >&2
+ exit 2
+ fi
+ sleep 1
+ retry=$(($retry - 1))
+ done
+}
+
+unlock_rules_file() {
+ [ "$RULES_LOCK" ] || return 0
+ rmdir $RULES_LOCK || true
+}
+
+# Choose the real rules file if it is writeable or a temporary file if not.
+# Both files should be checked later when looking for existing rules.
+choose_rules_file() {
+ RUNDIR="/run/udev"
+ local tmp_rules_file="$RUNDIR/tmp-rules--${RULES_FILE##*/}"
+ [ -e "$RULES_FILE" -o -e "$tmp_rules_file" ] || PRINT_HEADER=1
+
+ if writeable ${RULES_FILE%/*}; then
+ RO_RULES_FILE='/dev/null'
+ else
+ RO_RULES_FILE=$RULES_FILE
+ RULES_FILE=$tmp_rules_file
+ fi
+}
+
+# Return the name of the first free device.
+raw_find_next_available() {
+ local links="$1"
+
+ local basename=${links%%[ 0-9]*}
+ local max=-1
+ for name in $links; do
+ local num=${name#$basename}
+ [ "$num" ] || num=0
+ [ $num -gt $max ] && max=$num
+ done
+
+ local max=$(($max + 1))
+ # "name0" actually is just "name"
+ [ $max -eq 0 ] && return
+ echo "$max"
+}
+
+# Find all rules matching a key (with action) and a pattern.
+find_all_rules() {
+ local key="$1"
+ local linkre="$2"
+ local match="$3"
+
+ local search='.*[[:space:],]'"$key"'"('"$linkre"')".*'
+ echo $(sed -n -r -e 's/^#.*//' -e "${match}s/${search}/\1/p" \
+ $RO_RULES_FILE \
+ $([ -e $RULES_FILE ] && echo $RULES_FILE) \
+ 2>/dev/null)
+}
Index: systemd-210/src/udev/rule_generator/write_net_rules
===================================================================
--- /dev/null
+++ systemd-210/src/udev/rule_generator/write_net_rules
@@ -0,0 +1,141 @@
+#!/bin/sh -e
+
+# This script is run to create persistent network device naming rules
+# based on properties of the device.
+# If the interface needs to be renamed, INTERFACE_NEW=<name> will be printed
+# on stdout to allow udev to IMPORT it.
+
+# variables used to communicate:
+# MATCHADDR MAC address used for the match
+# MATCHID bus_id used for the match
+# MATCHDEVID dev_id used for the match
+# MATCHDRV driver name used for the match
+# MATCHIFTYPE interface type match
+# COMMENT comment to add to the generated rule
+# INTERFACE_NAME requested name supplied by external tool
+# INTERFACE_NEW new interface name returned by rule writer
+
+# Copyright (C) 2006 Marco d'Itri <md(a)Linux.IT>
+# Copyright (C) 2007 Kay Sievers <kay.sievers(a)vrfy.org>
+#
+# 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 2 of the License, or
+# (at your option) 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/>.
+
+# debug, if UDEV_LOG=<debug>
+if [ -n "$UDEV_LOG" ]; then
+ if [ "$UDEV_LOG" -ge 7 ]; then
+ set -x
+ fi
+fi
+
+RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
+
+. /usr/lib/udev/rule_generator.functions
+
+interface_name_taken() {
+ local value="$(find_all_rules 'NAME=' $INTERFACE)"
+ if [ "$value" ]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+find_next_available() {
+ raw_find_next_available "$(find_all_rules 'NAME=' "$1")"
+}
+
+write_rule() {
+ local match="$1"
+ local name="$2"
+ local comment="$3"
+
+ {
+ if [ "$PRINT_HEADER" ]; then
+ PRINT_HEADER=
+ echo "# This file was automatically generated by the $0"
+ echo "# program, run by the persistent-net-generator.rules rules file."
+ echo "#"
+ echo "# You can modify it, as long as you keep each rule on a single"
+ echo "# line, and change only the value of the NAME= key."
+ fi
+
+ echo ""
+ [ "$comment" ] && echo "# $comment"
+ echo "SUBSYSTEM==\"net\", ACTION==\"add\"$match, NAME=\"$name\""
+ } >> $RULES_FILE
+}
+
+if [ -z "$INTERFACE" ]; then
+ echo "missing \$INTERFACE" >&2
+ exit 1
+fi
+
+# Prevent concurrent processes from modifying the file at the same time.
+lock_rules_file
+
+# Check if the rules file is writeable.
+choose_rules_file
+
+# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces
+if [ "$MATCHADDR" ]; then
+ match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\""
+fi
+
+if [ "$MATCHDRV" ]; then
+ match="$match, DRIVERS==\"$MATCHDRV\""
+fi
+
+if [ "$MATCHDEVID" ]; then
+ match="$match, ATTR{dev_id}==\"$MATCHDEVID\""
+fi
+
+if [ "$MATCHID" ]; then
+ match="$match, KERNELS==\"$MATCHID\""
+fi
+
+if [ "$MATCHIFTYPE" ]; then
+ match="$match, ATTR{type}==\"$MATCHIFTYPE\""
+fi
+
+if [ -z "$match" ]; then
+ echo "missing valid match" >&2
+ unlock_rules_file
+ exit 1
+fi
+
+basename=${INTERFACE%%[0-9]*}
+match="$match, KERNEL==\"$basename*\""
+
+if [ "$INTERFACE_NAME" ]; then
+ # external tools may request a custom name
+ COMMENT="$COMMENT (custom name provided by external tool)"
+ if [ "$INTERFACE_NAME" != "$INTERFACE" ]; then
+ INTERFACE=$INTERFACE_NAME;
+ echo "INTERFACE_NEW=$INTERFACE"
+ fi
+else
+ # if a rule using the current name already exists, find a new name
+ if interface_name_taken; then
+ INTERFACE="$basename$(find_next_available "$basename[0-9]*")"
+ # prevent INTERFACE from being "eth" instead of "eth0"
+ [ "$INTERFACE" = "${INTERFACE%%[ \[\]0-9]*}" ] && INTERFACE=${INTERFACE}0
+ echo "INTERFACE_NEW=$INTERFACE"
+ fi
+fi
+
+write_rule "$match" "$INTERFACE" "$COMMENT"
+
+unlock_rules_file
+
+exit 0
Index: systemd-210/Makefile.am
===================================================================
--- systemd-210.orig/Makefile.am
+++ systemd-210/Makefile.am
@@ -2552,7 +2552,14 @@ dist_udevrules_DATA += \
rules/75-tty-description.rules \
rules/78-sound-card.rules \
rules/80-net-setup-link.rules \
- rules/95-udev-late.rules
+ rules/95-udev-late.rules \
+ src/udev/rule_generator/75-persistent-net-generator.rules \
+ src/udev/rule_generator/76-net-sriov-names.rules
+
+udevlibexec_PROGRAMS += \
+ src/udev/rule_generator/rule_generator.functions \
+ src/udev/rule_generator/write_net_rules \
+ src/udev/rule_generator/net-set-sriov-names
dist_udevhwdb_DATA = \
hwdb/20-pci-vendor-model.hwdb \
Index: systemd-210/src/udev/rule_generator/76-net-sriov-names.rules
===================================================================
--- /dev/null
+++ systemd-210/src/udev/rule_generator/76-net-sriov-names.rules
@@ -0,0 +1,18 @@
+# do not edit this file, it will be overwritten on update
+#
+# rename SRIOV virtual function interfaces
+
+ACTION=="remove", GOTO="net-sriov-names_end"
+SUBSYSTEM!="net", GOTO="net-sriov-names_end"
+
+IMPORT{cmdline}="net.ifnames"
+ENV{net.ifnames}=="1", GOTO="net-sriov-names_end"
+
+SUBSYSTEM=="net", SUBSYSTEMS=="pci", ACTION=="add", NAME=="?*", ENV{INTERFACE_NEW}="$name"
+SUBSYSTEM=="net", SUBSYSTEMS=="pci", ACTION=="add", IMPORT{program}="net-set-sriov-names"
+
+# rename interface if needed
+ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}"
+ENV{INTERFACE_NEW}=="", DRIVERS=="cxgb4vf|igbvf|ixgbevf", NAME="vf$attr{ifindex}"
+
+LABEL="net-sriov-names_end"
Index: systemd-210/src/udev/rule_generator/net-set-sriov-names
===================================================================
--- /dev/null
+++ systemd-210/src/udev/rule_generator/net-set-sriov-names
@@ -0,0 +1,79 @@
+#!/bin/bash -e
+#
+# This script is run to rename virtual interfaces
+#
+
+if [ -n "$UDEV_LOG" ]; then
+ if [ "$UDEV_LOG" -ge 7 ]; then
+ set -x
+ fi
+fi
+
+# according to dev_new_index(), ifindex is within [1, INT_MAX]
+int_max=$(/usr/bin/getconf INT_MAX)
+ifindex_before() {
+ a=$1
+ b=$2
+
+ ((0 < (b - a) && (b - a) < int_max / 2 ||
+ -1 * int_max < (b - a) && (b - a) < -1 * int_max / 2))
+}
+
+rename_interface() {
+ local src_net=$1
+ local dest_net=$2
+ local err=0
+
+ /sbin/ip link set dev $src_net down
+ /sbin/ip link set dev $src_net name $dest_net
+}
+
+if [ -z "$INTERFACE" ]; then
+ echo "missing \$INTERFACE" >&2
+ exit 1
+fi
+
+if [ -e "/sys/class/net/$INTERFACE/device/physfn" ]; then
+ pf=$(ls -1 "/sys/class/net/$INTERFACE/device/physfn/net")
+ if [ $(echo "$pf" | wc -l) -ne 1 ]; then
+ echo "too many pf's" >&2
+ exit 1
+ fi
+ read vfindex < "/sys/class/net/$INTERFACE/ifindex"
+ read pfindex < "/sys/class/net/$pf/ifindex"
+ if ifindex_before $pfindex $vfindex; then
+ bus_info=$(basename $(readlink "/sys/class/net/$INTERFACE/device"))
+ for virtfn in "/sys/class/net/$pf/device/"virtfn*; do
+ if [ "$(basename $(readlink "$virtfn"))" = "$bus_info" ]; then
+ vfnum=$(basename "$virtfn")
+ vfnum=${vfnum#virtfn}
+ echo "INTERFACE_NEW=$pf.vf$vfnum"
+ exit 0
+ fi
+ done
+ fi
+fi
+
+read pfindex < "/sys/class/net/$INTERFACE/ifindex"
+shopt -s nullglob
+for virtfn in "/sys/class/net/$INTERFACE/device/"virtfn*; do
+ vf=$(ls -1 "$virtfn/net")
+ if [ $(echo "$vf" | wc -l) -ne 1 ]; then
+ echo "too many vf's" >&2
+ exit 1
+ fi
+ read vfindex < "/sys/class/net/$vf/ifindex"
+ if ifindex_before $vfindex $pfindex; then
+ vfnum=$(basename "$virtfn")
+ vfnum=${vfnum#virtfn}
+ if [ "$INTERFACE_NEW" ]; then
+ new_name=$INTERFACE_NEW
+ else
+ new_name=$INTERFACE
+ fi
+ new_name="$new_name.vf$vfnum"
+ if [ "$vf" != "$new_name" ]; then
+ rename_interface "$vf" "$new_name"
+ fi
+ fi
+done
Index: systemd-210/src/udev/net/link-config.c
===================================================================
--- systemd-210.orig/src/udev/net/link-config.c
+++ systemd-210/src/udev/net/link-config.c
@@ -193,6 +193,18 @@ static bool enable_name_policy(void) {
r = proc_cmdline(&line);
if (r < 0)
log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r));
+#if defined(NET_IFNAMES) && (NET_IFNAMES == 1)
+# warning Using persistent rules as a default
+ if (r <= 0)
+ return false;
+
+ FOREACH_WORD_QUOTED(w, l, line, state)
+ if (strneq(w, "net.ifnames=1", l))
+ return true;
+
+ return false;
+#else
+# warning Using predictable rules as a default
if (r <= 0)
return true;
@@ -201,6 +213,7 @@ static bool enable_name_policy(void) {
return false;
return true;
+#endif
}
int link_config_load(link_config_ctx *ctx) {
++++++ 1022-udev-remove-seqnum-API-and-all-assumptions-about-seq.patch ++++++
++++ 1445 lines (skipped)
++++++ 1023-udev-builtin-keyboard-do-tell-on-which-device-EVIOCS.patch ++++++
>From a52ec8ed881537627869afa8f0486db7e20ce2db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez(a)opensuse.org>
Date: Fri, 30 May 2014 13:16:56 -0400
Subject: [PATCH] udev-builtin-keyboard: do tell on which device EVIOCSKEYCODE
failed.
I am getting
"Error calling EVIOCSKEYCODE (scan code 0xc022d, key code 418): Invalid
argument", the error message does not tell on which specific device the
problem is, add that info.
---
src/udev/udev-builtin-keyboard.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git src/udev/udev-builtin-keyboard.c src/udev/udev-builtin-keyboard.c
index 614e44e..9b66bfd 100644
--- src/udev/udev-builtin-keyboard.c
+++ src/udev/udev-builtin-keyboard.c
@@ -143,7 +143,7 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo
log_debug("keyboard: mapping scan code %d (0x%x) to key code %d (0x%x)",
map[i].scan, map[i].scan, map[i].key, map[i].key);
if (ioctl(fd, EVIOCSKEYCODE, &map[i]) < 0)
- log_error("Error calling EVIOCSKEYCODE (scan code 0x%x, key code %d): %m", map[i].scan, map[i].key);
+ log_error("Error calling EVIOCSKEYCODE on device node '%s' (scan code 0x%x, key code %d): %m", node, map[i].scan, map[i].key);
}
/* install list of force-release codes */
--
1.7.9.2
++++++ 1024-udev-always-close-lock-file-descriptor.patch ++++++
Based on 3d06f4183470d42361303086ed9dedd29c0ffc1b Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay(a)vrfy.org>
Date: Tue, 3 Jun 2014 10:46:51 +0200
Subject: [PATCH] udev: always close lock file descriptor
https://bugs.freedesktop.org/show_bug.cgi?id=79576
---
src/udev/udevd.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
--- src/udev/udevd.c
+++ src/udev/udevd.c 2014-06-03 15:34:42.778346368 +0000
@@ -301,6 +301,7 @@ static void worker_new(struct event *eve
if (fd_lock >= 0 && flock(fd_lock, LOCK_SH|LOCK_NB) < 0) {
log_debug("Unable to flock(%s), skipping event handling: %m", udev_device_get_devnode(d));
err = -EWOULDBLOCK;
+ close_nointr_nofail(fd_lock); fd_lock = -1;
goto skip;
}
}
@@ -318,7 +319,7 @@ static void worker_new(struct event *eve
}
if (fd_lock >= 0)
- close(fd_lock);
+ close_nointr_nofail(fd_lock);
/* send processed event back to libudev listeners */
udev_monitor_send_device(worker_monitor, NULL, dev);
@@ -378,9 +379,9 @@ skip:
out:
udev_device_unref(dev);
if (fd_signal >= 0)
- close(fd_signal);
+ close_nointr_nofail(fd_signal);
if (fd_ep >= 0)
- close(fd_ep);
+ close_nointr_nofail(fd_ep);
close(fd_inotify);
close(worker_watch[WRITE_END]);
udev_rules_unref(rules);
++++++ 1025-udev-exclude-device-mapper-from-block-device-ownersh.patch ++++++
>From e918a1b5a94f270186dca59156354acd2a596494 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay(a)vrfy.org>
Date: Tue, 3 Jun 2014 16:49:38 +0200
Subject: [PATCH] udev: exclude device-mapper from block device ownership event
locking
Signed-off-by: Robert Milasan <rmilasan(a)suse.com>
---
src/udev/udevd.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index 819ea3b..6c05104 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -290,7 +290,19 @@ static void worker_new(struct event *event)
* acquired the lock, the external process will block until
* udev has finished its event handling.
*/
- if (streq_ptr("block", udev_device_get_subsystem(dev))) {
+
+ /*
+ * <kabi_> since we make check - device seems unused - we try
+ * ioctl to deactivate - and device is found to be opened
+ * <kay> sure, you try to take a write lock
+ * <kay> if you get it udev is out
+ * <kay> if you can't get it, udev is busy
+ * <kabi_> we cannot deactivate openned device (as it is in-use)
+ * <kay> maybe we should just exclude dm from that thing entirely
+ * <kabi_> IMHO this sounds like a good plan for this moment
+ */
+ if (streq_ptr("block", udev_device_get_subsystem(dev)) &&
+ !startswith("dm-", udev_device_get_sysname(dev))) {
struct udev_device *d = dev;
if (streq_ptr("partition", udev_device_get_devtype(d)))
--
1.8.4.5
++++++ 1026-udevd-inotify-modernizations.patch ++++++
>From edd32000c806e4527c5f376d138f7bff07724c26 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay(a)vrfy.org>
Date: Wed, 4 Jun 2014 11:05:45 +0200
Subject: [PATCH] udevd: inotify - modernizations
Signed-off-by: Robert Milasan <rmilasan(a)suse.com>
---
src/udev/udevd.c | 45 ++++++++++++++++++++++-----------------------
1 file changed, 22 insertions(+), 23 deletions(-)
Index: systemd-210/src/udev/udevd.c
===================================================================
--- systemd-210.orig/src/udev/udevd.c
+++ systemd-210/src/udev/udevd.c
@@ -736,20 +736,30 @@ out:
return udev_ctrl_connection_unref(ctrl_conn);
}
+static void synthesize_change(struct udev_device *dev) {
+ char filename[UTIL_PATH_SIZE];
+
+ log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev));
+ strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL);
+ write_string_file(filename, "change");
+}
+
/* read inotify messages */
static int handle_inotify(struct udev *udev)
{
int nbytes, pos;
char *buf;
struct inotify_event *ev;
+ int r;
- if ((ioctl(fd_inotify, FIONREAD, &nbytes) < 0) || (nbytes <= 0))
- return 0;
+ r = ioctl(fd_inotify, FIONREAD, &nbytes);
+ if (r < 0 || nbytes <= 0)
+ return -errno;
buf = malloc(nbytes);
- if (buf == NULL) {
+ if (!buf) {
log_error("error getting buffer for inotify");
- return -1;
+ return -ENOMEM;
}
nbytes = read(fd_inotify, buf, nbytes);
@@ -759,27 +769,16 @@ static int handle_inotify(struct udev *u
ev = (struct inotify_event *)(buf + pos);
dev = udev_watch_lookup(udev, ev->wd);
- if (dev != NULL) {
- log_debug("inotify event: %x for %s", ev->mask, udev_device_get_devnode(dev));
- if (ev->mask & IN_CLOSE_WRITE) {
- char filename[UTIL_PATH_SIZE];
- int fd;
-
- log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev));
- strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL);
- fd = open(filename, O_WRONLY|O_CLOEXEC);
- if (fd >= 0) {
- if (write(fd, "change", 6) < 0)
- log_debug("error writing uevent: %m");
- close(fd);
- }
- }
- if (ev->mask & IN_IGNORED)
- udev_watch_end(udev, dev);
+ if (!dev)
+ continue;
- udev_device_unref(dev);
- }
+ log_debug("inotify event: %x for %s", ev->mask, udev_device_get_devnode(dev));
+ if (ev->mask & IN_CLOSE_WRITE)
+ synthesize_change(dev);
+ else if (ev->mask & IN_IGNORED)
+ udev_watch_end(udev, dev);
+ udev_device_unref(dev);
}
free(buf);
++++++ 1027-udev-synthesize-change-events-for-partitions-when-to.patch ++++++
>From f3a740a5dae792fb6b2d411022ce8c29ced1c3f1 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay(a)vrfy.org>
Date: Wed, 4 Jun 2014 12:16:28 +0200
Subject: [PATCH] udev: synthesize "change' events for partitions when tools
change the disk
This should make sure that fdisk-like programs will automatically
cause an update of all partitions, just like mkfs-like programs cause
an update of the partition.
Signed-off-by: Robert Milasan <rmilasan(a)suse.com>
---
src/udev/udevd.c | 44 ++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 42 insertions(+), 2 deletions(-)
Index: systemd-210/src/udev/udevd.c
===================================================================
--- systemd-210.orig/src/udev/udevd.c
+++ systemd-210/src/udev/udevd.c
@@ -46,6 +46,7 @@
#include <sys/utsname.h>
#include "udev.h"
+#include "udev-util.h"
#include "sd-daemon.h"
#include "cgroup-util.h"
#include "dev-setup.h"
@@ -736,15 +737,54 @@ out:
return udev_ctrl_connection_unref(ctrl_conn);
}
-static void synthesize_change(struct udev_device *dev) {
+static int synthesize_change(struct udev_device *dev) {
char filename[UTIL_PATH_SIZE];
+ int r;
log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev));
strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL);
write_string_file(filename, "change");
+
+ /* for disks devices, re-trigger all partitions too */
+ if (streq_ptr("block", udev_device_get_subsystem(dev)) &&
+ streq_ptr("disk", udev_device_get_devtype(dev))) {
+ struct udev *udev = udev_device_get_udev(dev);
+ _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
+ struct udev_list_entry *item;
+
+ e = udev_enumerate_new(udev);
+ if (!e)
+ return -ENOMEM;
+
+ r = udev_enumerate_add_match_parent(e, dev);
+ if (r < 0)
+ return r;
+
+ r = udev_enumerate_add_match_subsystem(e, "block");
+ if (r < 0)
+ return r;
+
+ r = udev_enumerate_scan_devices(e);
+ udev_list_entry_foreach(item, udev_enumerate_get_list_entry(e)) {
+ _cleanup_udev_device_unref_ struct udev_device *d = NULL;
+
+ d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));
+ if (!d)
+ continue;
+
+ if (!streq_ptr("partition", udev_device_get_devtype(d)))
+ continue;
+
+ log_debug("device %s closed, synthesising partition '%s' 'change'",
+ udev_device_get_devnode(dev), udev_device_get_devnode(d));
+ strscpyl(filename, sizeof(filename), udev_device_get_syspath(d), "/uevent", NULL);
+ write_string_file(filename, "change");
+ }
+ }
+
+ return 0;
}
-/* read inotify messages */
static int handle_inotify(struct udev *udev)
{
int nbytes, pos;
++++++ 1028-udev-link-config-fix-mem-leak.patch ++++++
>From edf029b7fd9a5853a87d3ca99aac2922bb8a277e Mon Sep 17 00:00:00 2001
From: Tom Gundersen <teg(a)jklm.no>
Date: Wed, 4 Jun 2014 12:34:23 +0200
Subject: [PATCH] udev: link-config - fix mem leak
Reported by Kay.
Signed-off-by: Robert Milasan <rmilasan(a)suse.com>
---
src/udev/net/link-config.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Index: systemd-210/src/udev/net/link-config.c
===================================================================
--- systemd-210.orig/src/udev/net/link-config.c
+++ systemd-210/src/udev/net/link-config.c
@@ -118,6 +118,7 @@ static void link_configs_free(link_confi
free(link->match_type);
free(link->description);
free(link->alias);
+ free(link->name_policy);
free(link);
}
@@ -205,7 +206,8 @@ static bool enable_name_policy(void) {
int link_config_load(link_config_ctx *ctx) {
int r;
- char **files, **f;
+ _cleanup_strv_free_ char **files;
+ char **f;
link_configs_free(ctx);
++++++ 1029-udev-try-first-re-reading-the-partition-table.patch ++++++
>From ede344452a54e1c53f541cad12a06269a4fe96a9 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay(a)vrfy.org>
Date: Wed, 4 Jun 2014 13:30:24 +0200
Subject: [PATCH] udev: try first re-reading the partition table
mounted partitions:
# dd if=/dev/zero of=/dev/sda bs=1 count=1
UDEV [4157.369250] change .../0:0:0:0/block/sda (block)
UDEV [4157.375059] change .../0:0:0:0/block/sda/sda1 (block)
UDEV [4157.397088] change .../0:0:0:0/block/sda/sda2 (block)
UDEV [4157.404842] change .../0:0:0:0/block/sda/sda4 (block)
unmounted partitions:
# dd if=/dev/zero of=/dev/sdb bs=1 count=1
UDEV [4163.450217] remove .../target6:0:0/6:0:0:0/block/sdb/sdb1 (block)
UDEV [4163.593167] change .../target6:0:0/6:0:0:0/block/sdb (block)
UDEV [4163.713982] add .../target6:0:0/6:0:0:0/block/sdb/sdb1 (block)
Signed-off-by: Robert Milasan <rmilasan(a)suse.com>
---
src/udev/udevd.c | 39 +++++++++++++++++++++++++++++++++------
1 file changed, 33 insertions(+), 6 deletions(-)
Index: systemd-210/src/udev/udevd.c
===================================================================
--- systemd-210.orig/src/udev/udevd.c
+++ systemd-210/src/udev/udevd.c
@@ -38,6 +38,7 @@
#include <sys/un.h>
#include <sys/signalfd.h>
#include <sys/epoll.h>
+#include <sys/mount.h>
#include <sys/poll.h>
#include <sys/wait.h>
#include <sys/stat.h>
@@ -741,17 +742,37 @@ static int synthesize_change(struct udev
char filename[UTIL_PATH_SIZE];
int r;
- log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev));
- strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL);
- write_string_file(filename, "change");
-
- /* for disks devices, re-trigger all partitions too */
if (streq_ptr("block", udev_device_get_subsystem(dev)) &&
- streq_ptr("disk", udev_device_get_devtype(dev))) {
+ streq_ptr("disk", udev_device_get_devtype(dev)) &&
+ !startswith("dm-", udev_device_get_sysname(dev))) {
+ int fd;
struct udev *udev = udev_device_get_udev(dev);
_cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
struct udev_list_entry *item;
+ /*
+ * Try to re-read the partition table, this only succeeds if
+ * none of the devices is busy.
+ *
+ * The kernel will send out a change event for the disk, and
+ * "remove/add" for all partitions.
+ */
+ fd = open(udev_device_get_devnode(dev), O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
+ if (fd >= 0) {
+ r = ioctl(fd, BLKRRPART, 0);
+ close(fd);
+ if (r >= 0)
+ return 0;
+ }
+
+ /*
+ * Re-reading the partition table did not work, synthesize "change"
+ * events for the disk and all partitions.
+ */
+ log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev));
+ strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL);
+ write_string_file(filename, "change");
+
e = udev_enumerate_new(udev);
if (!e)
return -ENOMEM;
@@ -780,8 +801,14 @@ static int synthesize_change(struct udev
strscpyl(filename, sizeof(filename), udev_device_get_syspath(d), "/uevent", NULL);
write_string_file(filename, "change");
}
+
+ return 0;
}
+ log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev));
+ strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL);
+ write_string_file(filename, "change");
+
return 0;
}
++++++ 1030-udev-guard-REREADP-logic-with-open-O_ECXL.patch ++++++
>From 10fab50a3091e0b819c3ddab5a7c07acf750c050 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay(a)vrfy.org>
Date: Wed, 4 Jun 2014 14:09:31 +0200
Subject: [PATCH] udev: guard REREADP logic with open(O_ECXL)
Signed-off-by: Robert Milasan <rmilasan(a)suse.com>
---
src/udev/udevd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: systemd-210/src/udev/udevd.c
===================================================================
--- systemd-210.orig/src/udev/udevd.c
+++ systemd-210/src/udev/udevd.c
@@ -757,7 +757,7 @@ static int synthesize_change(struct udev
* The kernel will send out a change event for the disk, and
* "remove/add" for all partitions.
*/
- fd = open(udev_device_get_devnode(dev), O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
+ fd = open(udev_device_get_devnode(dev), O_RDONLY|O_EXCL|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
if (fd >= 0) {
r = ioctl(fd, BLKRRPART, 0);
close(fd);
++++++ 1031-udev-make-sure-we-always-get-change-for-the-disk.patch ++++++
>From e9fc29f4ecc9509ccc02eb8a014341e26c0d7831 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay(a)vrfy.org>
Date: Wed, 4 Jun 2014 15:17:15 +0200
Subject: [PATCH] udev: make sure we always get "change" for the disk
The kernel will return 0 for REREADPT when no partition table
is found, we have to send out "change" ourselves.
Signed-off-by: Robert Milasan <rmilasan(a)suse.com>
---
src/udev/udevd.c | 53 +++++++++++++++++++++++++++++++++++++++--------------
1 file changed, 39 insertions(+), 14 deletions(-)
Index: systemd-210/src/udev/udevd.c
===================================================================
--- systemd-210.orig/src/udev/udevd.c
+++ systemd-210/src/udev/udevd.c
@@ -745,34 +745,28 @@ static int synthesize_change(struct udev
if (streq_ptr("block", udev_device_get_subsystem(dev)) &&
streq_ptr("disk", udev_device_get_devtype(dev)) &&
!startswith("dm-", udev_device_get_sysname(dev))) {
+ bool part_table_read = false;
+ bool has_partitions = false;
int fd;
struct udev *udev = udev_device_get_udev(dev);
_cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
struct udev_list_entry *item;
/*
- * Try to re-read the partition table, this only succeeds if
- * none of the devices is busy.
- *
- * The kernel will send out a change event for the disk, and
- * "remove/add" for all partitions.
+ * Try to re-read the partition table. This only succeeds if
+ * none of the devices is busy. The kernel returns 0 if no
+ * partition table is found, and we will not get an event for
+ * the disk.
*/
fd = open(udev_device_get_devnode(dev), O_RDONLY|O_EXCL|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
if (fd >= 0) {
r = ioctl(fd, BLKRRPART, 0);
close(fd);
if (r >= 0)
- return 0;
+ part_table_read = true;
}
- /*
- * Re-reading the partition table did not work, synthesize "change"
- * events for the disk and all partitions.
- */
- log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev));
- strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL);
- write_string_file(filename, "change");
-
+ /* search for partitions */
e = udev_enumerate_new(udev);
if (!e)
return -ENOMEM;
@@ -786,6 +780,37 @@ static int synthesize_change(struct udev
return r;
r = udev_enumerate_scan_devices(e);
+
+ udev_list_entry_foreach(item, udev_enumerate_get_list_entry(e)) {
+ _cleanup_udev_device_unref_ struct udev_device *d = NULL;
+
+ d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));
+ if (!d)
+ continue;
+
+ if (!streq_ptr("partition", udev_device_get_devtype(d)))
+ continue;
+
+ has_partitions = true;
+ break;
+ }
+
+ /*
+ * We have partitions and re-read the table, the kernel already sent
+ * out a "change" event for the disk, and "remove/add" for all
+ * partitions.
+ */
+ if (part_table_read && has_partitions)
+ return 0;
+
+ /*
+ * We have partitions but re-reading the partition table did not
+ * work, synthesize "change" for the disk and all partitions.
+ */
+ log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev));
+ strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL);
+ write_string_file(filename, "change");
+
udev_list_entry_foreach(item, udev_enumerate_get_list_entry(e)) {
_cleanup_udev_device_unref_ struct udev_device *d = NULL;
++++++ 1032-udev-guard-REREADPT-by-exclusive-lock-instead-of-O_E.patch ++++++
>From 02ba8fb3357daf57f6120ac512fb464a4c623419 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay(a)vrfy.org>
Date: Wed, 4 Jun 2014 16:21:19 +0200
Subject: [PATCH] udev: guard REREADPT by exclusive lock instead of O_EXCL
Signed-off-by: Robert Milasan <rmilasan(a)suse.com>
---
src/udev/udevd.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
Index: systemd-210/src/udev/udevd.c
===================================================================
--- systemd-210.orig/src/udev/udevd.c
+++ systemd-210/src/udev/udevd.c
@@ -758,9 +758,12 @@ static int synthesize_change(struct udev
* partition table is found, and we will not get an event for
* the disk.
*/
- fd = open(udev_device_get_devnode(dev), O_RDONLY|O_EXCL|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
+ fd = open(udev_device_get_devnode(dev), O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
if (fd >= 0) {
- r = ioctl(fd, BLKRRPART, 0);
+ r = flock(fd, LOCK_EX|LOCK_NB);
+ if (r >= 0)
+ r = ioctl(fd, BLKRRPART, 0);
+
close(fd);
if (r >= 0)
part_table_read = true;
++++++ 1033-udev-really-exclude-device-mapper-from-block-device.patch ++++++
>From 638ca89c53e2b897cfb3f627f4acbc7d09af2f4c Mon Sep 17 00:00:00 2001
From: Christian Hesse <mail(a)eworm.de>
Date: Tue, 10 Jun 2014 15:51:15 +0200
Subject: [PATCH] udev: really exclude device-mapper from block device
ownership event locking
Arguments were wrong order, no?
This fixes commits:
e918a1b5a94f270186dca59156354acd2a596494
3d06f4183470d42361303086ed9dedd29c0ffc1b
Signed-off-by: Robert Milasan <rmilasan(a)suse.com>
---
src/udev/udevd.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: systemd-210/src/udev/udevd.c
===================================================================
--- systemd-210.orig/src/udev/udevd.c
+++ systemd-210/src/udev/udevd.c
@@ -304,7 +304,7 @@ static void worker_new(struct event *eve
* <kabi_> IMHO this sounds like a good plan for this moment
*/
if (streq_ptr("block", udev_device_get_subsystem(dev)) &&
- !startswith("dm-", udev_device_get_sysname(dev))) {
+ !startswith(udev_device_get_sysname(dev), "dm-")) {
struct udev_device *d = dev;
if (streq_ptr("partition", udev_device_get_devtype(d)))
@@ -744,7 +744,7 @@ static int synthesize_change(struct udev
if (streq_ptr("block", udev_device_get_subsystem(dev)) &&
streq_ptr("disk", udev_device_get_devtype(dev)) &&
- !startswith("dm-", udev_device_get_sysname(dev))) {
+ !startswith(udev_device_get_sysname(dev), "dm-")) {
bool part_table_read = false;
bool has_partitions = false;
int fd;
++++++ 1034-udev-check-the-return-value-from-udev_enumerate_scan.patch ++++++
>From 47a3fa0f7679521b85f7aeba9e245c52cc7bb2cb Mon Sep 17 00:00:00 2001
From: Thomas Hindoe Paaboel Andersen <phomes(a)gmail.com>
Date: Wed, 4 Jun 2014 23:40:43 +0200
Subject: [PATCH] udev: check the return value from udev_enumerate_scan_devices
The return value from udev_enumerate_scan_devices was stored but
never used. I assume this was meant to be checked.
Signed-off-by: Robert Milasan <rmilasan(a)suse.com>
---
src/udev/udevd.c | 2 ++
1 file changed, 2 insertions(+)
Index: systemd-210/src/udev/udevd.c
===================================================================
--- systemd-210.orig/src/udev/udevd.c
+++ systemd-210/src/udev/udevd.c
@@ -783,6 +783,8 @@ static int synthesize_change(struct udev
return r;
r = udev_enumerate_scan_devices(e);
+ if (r < 0)
+ return r;
udev_list_entry_foreach(item, udev_enumerate_get_list_entry(e)) {
_cleanup_udev_device_unref_ struct udev_device *d = NULL;
++++++ 1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch ++++++
>From c9af1be90db5a29ac86605c67bc2bb4bc5780520 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Thu, 12 Jun 2014 12:25:03 +0200
Subject: [PATCH] 99-systemd.rules: Ignore devices with 'SYSTEMD_READY=0'
Whenever a rule sets 'SYSTEMD_READY=0' it tries to indicate
that systemd should ignore this device. So we should not
set the 'systemd' tag in these cases; otherwise systemd
will pick up the device.
References: bnc#881942
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
rules/99-systemd.rules.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
index db72373..11ee262 100644
--- a/rules/99-systemd.rules.in
+++ b/rules/99-systemd.rules.in
@@ -11,6 +11,7 @@ SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270
KERNEL=="vport*", TAG+="systemd"
+SUBSYSTEM=="block", KERNEL!="ram*", ENV{SYSTEMD_READY}=="0", GOTO="systemd_end"
SUBSYSTEM=="block", KERNEL!="ram*", TAG+="systemd"
SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0"
--
1.8.4.5
++++++ 1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch ++++++
Index: systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules
===================================================================
--- systemd-210.orig/src/udev/rule_generator/75-persistent-net-generator.rules
+++ systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules
@@ -68,7 +68,8 @@ ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="glob
ENV{MATCHADDR}=="00:16:3e:*", GOTO="globally_administered_whitelist"
# match interface dev_id
-ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
+# disable due to bnc#882714
+# ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
# do not use "locally administered" MAC address
ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}=""
++++++ 1037-udev-exclude-cd-dvd-from-block-device.patch ++++++
Exclude cd/dvd as well (bnc#882714)
--- systemd-210/src/udev/udevd.c
+++ systemd-210/src/udev/udevd.c 2014-06-18 12:53:34.454235577 +0000
@@ -744,7 +744,8 @@ static int synthesize_change(struct udev
if (streq_ptr("block", udev_device_get_subsystem(dev)) &&
streq_ptr("disk", udev_device_get_devtype(dev)) &&
- !startswith(udev_device_get_sysname(dev), "dm-")) {
+ !startswith(udev_device_get_sysname(dev), "dm-") &&
+ !startswith(udev_device_get_sysname(dev), "sr")) {
bool part_table_read = false;
bool has_partitions = false;
int fd;
++++++ 1038-udev-fix-invalid-free-in-enable_name_policy.patch ++++++
>From f8a0bb5285024b6ce372c3157e761e6543ebdcd2 Mon Sep 17 00:00:00 2001
From: Andreas Henriksson <andreas(a)fatal.se>
Date: Fri, 13 Jun 2014 18:48:21 +0200
Subject: [PATCH] udev: fix invalid free() in enable_name_policy()
static bool enable_name_policy(...) in ./src/udev/net/link-config.c
calls proc_cmdline(...) to get "line" initialized, but
proc_cmdline(...) does not guarantee that atleast when both
conditions (detect_container(NULL) > 0) and
read_full_file(...) returned < 0.
---
src/udev/net/link-config.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git src/udev/net/link-config.c src/udev/net/link-config.c
index a9acc3d..7a9d01b 100644
--- src/udev/net/link-config.c
+++ src/udev/net/link-config.c
@@ -185,7 +185,7 @@ static int load_link(link_config_ctx *ctx, const char *filename) {
}
static bool enable_name_policy(void) {
- _cleanup_free_ char *line;
+ _cleanup_free_ char *line = NULL;
char *w, *state;
int r;
size_t l;
--
1.7.9.2
++++++ 1039-udevadm-settle-fixed-return-code-for-empty-queue.patch ++++++
>From 83be2c398589a3d64db5999cfd5527c5219bff46 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald(a)redhat.com>
Date: Tue, 20 May 2014 12:25:16 +0200
Subject: [PATCH] udevadm-settle: fixed return code for empty queue
If the udev queue is empty and "/run/udev/queue" does not exist,
"udevadm settle" would return with EXIT_FAILURE, because the inotify on
"/run/udev/queue" would fail with ENOENT.
This patch lets "udevadm settle" exit with EXIT_SUCCESS in this case.
---
src/udev/udevadm-settle.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git src/udev/udevadm-settle.c src/udev/udevadm-settle.c
index 65fc35f..66fd843 100644
--- src/udev/udevadm-settle.c
+++ src/udev/udevadm-settle.c
@@ -116,7 +116,11 @@ static int adm_settle(struct udev *udev, int argc, char *argv[])
}
if (inotify_add_watch(pfd[0].fd, "/run/udev/queue" , IN_DELETE) < 0) {
- log_debug("watching /run/udev failed");
+ /* If it does not exist, we don't have to wait */
+ if (errno == ENOENT)
+ rc = EXIT_SUCCESS;
+ else
+ log_debug("watching /run/udev/queue failed");
goto out;
}
--
1.7.9.2
++++++ 1040-re-enable-dev_id-conditionally-in-persistent-rules.patch ++++++
Index: systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules
===================================================================
--- systemd-210.orig/src/udev/rule_generator/75-persistent-net-generator.rules
+++ systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules
@@ -68,8 +68,9 @@ ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="glob
ENV{MATCHADDR}=="00:16:3e:*", GOTO="globally_administered_whitelist"
# match interface dev_id
-# disable due to bnc#882714
-# ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
+# HACK: for s390x, if layer2 == 0, dont use dev_id
+ENV{LAYER2}="1", TEST=="device/layer2", ENV{LAYER2}="$attr{device/layer2}"
+ENV{LAYER2}!="0", ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
# do not use "locally administered" MAC address
ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}=""
++++++ apply-ACL-for-nvidia-uvm-device-node.patch ++++++
>From c79437b7967cf5a23faa881bc5da6b88b63a1ada Mon Sep 17 00:00:00 2001
From: Stefan Dirsch <sndirsch(a)suse.de>
Date: Tue, 3 Jun 2014 15:05:55 +0200
Subject: [PATCH] apply ACL for nvidia-uvm device node
set ACL on nvidia-uvm device (bnc#879767).
---
src/login/logind-acl.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/login/logind-acl.c b/src/login/logind-acl.c
index 54bc16b..a40af21 100644
--- a/src/login/logind-acl.c
+++ b/src/login/logind-acl.c
@@ -295,6 +295,8 @@ int devnode_acl_all(struct udev *udev,
if (devnode_acl(devname, flush, del, old_uid, add, new_uid) < 0)
break;
}
+ /* required for additional CUDA support (nvidia-uvm module with appropriate device), bnc#879767 */
+ devnode_acl("/dev/nvidia-uvm", flush, del, old_uid, add, new_uid);
}
return r;
--
1.8.4.5
++++++ ensure-ask-password-wall-starts-after-getty-tty1.patch ++++++
--- /var/tmp/diff_new_pack.FvWgYO/_old 2014-06-30 21:43:36.000000000 +0200
+++ /var/tmp/diff_new_pack.FvWgYO/_new 2014-06-30 21:43:36.000000000 +0200
@@ -1,20 +1,23 @@
From: Frederic Crozat <fcrozat(a)suse.com>
+Cc: Werner Fink <werner(a)suse.de>
Date: Wed, 24 Aug 2011 13:02:12 +0000
Subject: ensure ask-password-wall starts after getty@tty1
ensure passphrase is handled before starting getty on tty1.
+
---
- units/systemd-ask-password-wall.service.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ units/systemd-ask-password-wall.service.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
--- systemd-206_git201308300826.orig/units/systemd-ask-password-wall.service.in
+++ systemd-206_git201308300826/units/systemd-ask-password-wall.service.in
-@@ -8,7 +8,7 @@
+@@ -8,7 +8,8 @@
[Unit]
Description=Forward Password Requests to Wall
Documentation=man:systemd-ask-password-console.service(8)
-After=systemd-user-sessions.service
-+After=systemd-user-sessions.service getty(a)tty1.service
++Wants=getty.target
++After=systemd-user-sessions.service getty.target
[Service]
ExecStartPre=-@SYSTEMCTL@ stop systemd-ask-password-console.path systemd-ask-password-console.service systemd-ask-password-plymouth.path systemd-ask-password-plymouth.service
++++++ insserv-generator.patch ++++++
--- /var/tmp/diff_new_pack.FvWgYO/_old 2014-06-30 21:43:36.000000000 +0200
+++ /var/tmp/diff_new_pack.FvWgYO/_new 2014-06-30 21:43:36.000000000 +0200
@@ -13,11 +13,11 @@
create mode 100644 src/insserv-generator/Makefile
create mode 100644 src/insserv-generator/insserv-generator.c
-Index: systemd-208/Makefile.am
+Index: systemd-210/Makefile.am
===================================================================
---- systemd-208.orig/Makefile.am
-+++ systemd-208/Makefile.am
-@@ -322,6 +322,7 @@ rootlibexec_PROGRAMS = \
+--- systemd-210.orig/Makefile.am
++++ systemd-210/Makefile.am
+@@ -343,6 +343,7 @@ rootlibexec_PROGRAMS = \
systemd-socket-proxyd
systemgenerator_PROGRAMS = \
@@ -25,7 +25,7 @@
systemd-getty-generator \
systemd-fstab-generator \
systemd-system-update-generator
-@@ -1658,6 +1659,14 @@ systemd_delta_LDADD = \
+@@ -1728,6 +1729,14 @@ systemd_delta_LDADD = \
libsystemd-shared.la
# ------------------------------------------------------------------------------
@@ -40,10 +40,10 @@
systemd_getty_generator_SOURCES = \
src/getty-generator/getty-generator.c
-Index: systemd-208/src/insserv-generator/Makefile
+Index: systemd-210/src/insserv-generator/Makefile
===================================================================
--- /dev/null
-+++ systemd-208/src/insserv-generator/Makefile
++++ systemd-210/src/insserv-generator/Makefile
@@ -0,0 +1,28 @@
+# This file is part of systemd.
+#
@@ -73,10 +73,10 @@
+ $(MAKE) -C .. clean
+
+.PHONY: all clean
-Index: systemd-208/src/insserv-generator/insserv-generator.c
+Index: systemd-210/src/insserv-generator/insserv-generator.c
===================================================================
--- /dev/null
-+++ systemd-208/src/insserv-generator/insserv-generator.c
++++ systemd-210/src/insserv-generator/insserv-generator.c
@@ -0,0 +1,312 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
@@ -146,7 +146,7 @@
+ static const char * const table[] = {
+ /* LSB defined facilities */
+ "local_fs", NULL,
-+ "network", SPECIAL_NETWORK_TARGET,
++ "network", SPECIAL_NETWORK_ONLINE_TARGET,
+ "named", SPECIAL_NSS_LOOKUP_TARGET,
+ "portmap", SPECIAL_RPCBIND_TARGET,
+ "remote_fs", SPECIAL_REMOTE_FS_TARGET,
++++++ keep-crypt-password-prompt.patch ++++++
--- /var/tmp/diff_new_pack.FvWgYO/_old 2014-06-30 21:43:36.000000000 +0200
+++ /var/tmp/diff_new_pack.FvWgYO/_new 2014-06-30 21:43:36.000000000 +0200
@@ -9,10 +9,10 @@
+ struct dirent *de;
+
+ if (!(d = opendir("/run/systemd/ask-password"))) {
-+ log_error("opendir(): %m");
+
+ if (errno == ENOENT)
+ return 1;
++ log_error("opendir(/run/systemd/ask-password): %m");
+
+ return -errno;
+ }
++++++ tmpfiles-do-not-clean-for-mandb-index-files.patch ++++++
There is no need to clean out all 30 days the index data base
files nor the cachedir tags of mandb. Those files are used
for whatis(1) as well as for apropos(1).
---
systemd-210/tmpfiles.d/systemd.conf | 5 +++++
1 file changed, 5 insertions(+)
--- systemd-210/tmpfiles.d/systemd.conf
+++ systemd-210/tmpfiles.d/systemd.conf 2014-06-11 13:47:59.470236564 +0000
@@ -14,6 +14,11 @@ f /var/log/wtmp 0664 root utmp -
f /var/log/btmp 0600 root root -
d /var/cache/man - - - 30d
+# mandb uses data base file which should not be cleared
+x /var/cache/man/index.*
+x /var/cache/man/CACHEDIR.TAG
+x /var/cache/man/*/index.*
+x /var/cache/man/*/CACHEDIR.TAG
d /run/systemd/ask-password 0755 root root -
d /run/systemd/seats 0755 root root -
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package dracut for openSUSE:Factory checked in at 2014-06-30 21:43:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dracut (Old)
and /work/SRC/openSUSE:Factory/.dracut.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dracut"
Changes:
--------
--- /work/SRC/openSUSE:Factory/dracut/dracut.changes 2014-06-25 10:49:00.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.dracut.new/dracut.changes 2014-06-30 21:43:26.000000000 +0200
@@ -1,0 +2,46 @@
+Thu Jun 26 16:41:58 CEST 2014 - hare(a)suse.de
+
+- 95dasd_rules: Fixup rd.dasd parsing
+ * Add: 0079-95dasd_rules-fixup-rd.dasd-parsing.patch
+- 95dasd_rules: Print out rd.dasd command-line
+ * Add: 0080-95dasd_rules-print-out-rd.dasd-commandline.patch
+- 95dasd_mod: do not set module parameter
+ * Add: 0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch
+- 00warpclock: Check for /sbin/hwclock (bnc#884513)
+ * Add: 0082-00warpclock-check-for-sbin-hwclock.patch
+- 95zfcp_rules: Fixup rd.zfcp parsing
+ * Add: 0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch
+- 95rootfs_block: terminate commandline parameter
+ * Add: 0084-95rootfs-block-Correctly-terminate-commandline-param.patch
+- 95zfcp_rules: Print out rd.zfcp command-line
+ * Add: 0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch
+- 95zfcp_rules: Auto-generate ipl device rule
+ * Add: 0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch
+- 95dasd_rules: Auto-generate ipl device rule
+ * Add: 0087-95dasd_rules-Auto-generate-udev-rule-for-ipl-device.patch
+
+-------------------------------------------------------------------
+Mon Jun 23 14:13:53 CEST 2014 - hare(a)suse.de
+
+- More empty commandline fixes
+ * Add: 0074-More-empty-cmdline-fixes.patch
+- 95dasd_rules: enable parsing of rd.dasd= commandline parameter
+ * Add: 0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch
+- Correctly set cio_ignore for dynamic s390 rules
+ * Add: 0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch
+- 90multipath: add missing 11-dm-mpath.rules file (bnc#883149)
+ * Add: 0077-90multipath-add-missing-11-dm-mpath.rules-file.patch
+- Restore original IFS value (bnc#883770)
+ * Add: 0078-Restore-original-IFS-value.patch
+
+-------------------------------------------------------------------
+Wed Jun 18 02:00:28 CEST 2014 - tbehrens(a)suse.com
+
+- Fix non-export of journal dev boot options
+ * Add: 0071-Fix-non-export-of-journal-dev-boot-options.patch
+- Also export root= boot param for hostonly-cmdline
+ * Add: 0072-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch
+- Don't create lots of empty cmdline files
+ * Add: 0073-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch
+
+-------------------------------------------------------------------
New:
----
0071-Fix-non-export-of-journal-dev-boot-options.patch
0072-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch
0073-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch
0074-More-empty-cmdline-fixes.patch
0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch
0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch
0077-90multipath-add-missing-11-dm-mpath.rules-file.patch
0078-Restore-original-IFS-value.patch
0079-95dasd_rules-fixup-rd.dasd-parsing.patch
0080-95dasd_rules-print-out-rd.dasd-commandline.patch
0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch
0082-00warpclock-check-for-sbin-hwclock.patch
0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch
0084-95rootfs-block-Correctly-terminate-commandline-param.patch
0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch
0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch
0087-95dasd_rules-Auto-generate-udev-rule-for-ipl-device.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dracut.spec ++++++
--- /var/tmp/diff_new_pack.e1VV93/_old 2014-06-30 21:43:27.000000000 +0200
+++ /var/tmp/diff_new_pack.e1VV93/_new 2014-06-30 21:43:27.000000000 +0200
@@ -91,6 +91,23 @@
Patch68: 0068-95fcoe-uefi-Test-for-EFI-firmware.patch
Patch69: 0069-81cio_ignore-skip-module-if-cio_ignore-is-not-active.patch
Patch70: 0070-81cio_ignore-rewrite-module.patch
+Patch71: 0071-Fix-non-export-of-journal-dev-boot-options.patch
+Patch72: 0072-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch
+Patch73: 0073-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch
+Patch74: 0074-More-empty-cmdline-fixes.patch
+Patch75: 0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch
+Patch76: 0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch
+Patch77: 0077-90multipath-add-missing-11-dm-mpath.rules-file.patch
+Patch78: 0078-Restore-original-IFS-value.patch
+Patch79: 0079-95dasd_rules-fixup-rd.dasd-parsing.patch
+Patch80: 0080-95dasd_rules-print-out-rd.dasd-commandline.patch
+Patch81: 0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch
+Patch82: 0082-00warpclock-check-for-sbin-hwclock.patch
+Patch83: 0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch
+Patch84: 0084-95rootfs-block-Correctly-terminate-commandline-param.patch
+Patch85: 0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch
+Patch86: 0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch
+Patch87: 0087-95dasd_rules-Auto-generate-udev-rule-for-ipl-device.patch
BuildRequires: asciidoc
BuildRequires: bash
@@ -202,6 +219,23 @@
%patch68 -p1
%patch69 -p1
%patch70 -p1
+%patch71 -p1
+%patch72 -p1
+%patch73 -p1
+%patch74 -p1
+%patch75 -p1
+%patch76 -p1
+%patch77 -p1
+%patch78 -p1
+%patch79 -p1
+%patch80 -p1
+%patch81 -p1
+%patch82 -p1
+%patch83 -p1
+%patch84 -p1
+%patch85 -p1
+%patch86 -p1
+%patch87 -p1
%build
%configure\
++++++ 0071-Fix-non-export-of-journal-dev-boot-options.patch ++++++
>From f483c78483992a7778751f9a01bbf09feb2b5bbe Mon Sep 17 00:00:00 2001
From: Thorsten Behrens <tbehrens(a)suse.com>
Date: Wed, 18 Jun 2014 01:57:29 +0200
Subject: Fix non-export of journal dev boot options.
cmdline_journal does not contain linefeeds anymore, so read
silently skipped it altogether.
Signed-off-by: Thorsten Behrens <tbehrens(a)suse.com>
---
modules.d/95rootfs-block/module-setup.sh | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
index b209ab6..5f1b826 100755
--- a/modules.d/95rootfs-block/module-setup.sh
+++ b/modules.d/95rootfs-block/module-setup.sh
@@ -45,9 +45,8 @@ cmdline() {
# called by dracut
install() {
if [[ $hostonly_cmdline == "yes" ]]; then
- cmdline_journal | while read journaldev; do
- [[ $journaldev ]] && printf "%s\n" "$journaldev" >> "${initdir}/etc/cmdline.d/95root-journaldev.conf"
- done
+ local _journaldev=$(cmdline_journal)
+ [[ $_journaldev ]] && printf "%s\n" "$_journaldev" >> "${initdir}/etc/cmdline.d/95root-journaldev.conf"
fi
inst_multiple umount
--
1.8.4.5
++++++ 0072-Also-export-root-boot-param-for-hostonly-cmdline-cas.patch ++++++
>From df582ab4c05fc417ce9b6b8a8bed4e259041013b Mon Sep 17 00:00:00 2001
From: Thorsten Behrens <tbehrens(a)suse.com>
Date: Wed, 18 Jun 2014 02:00:28 +0200
Subject: Also export root= boot param for hostonly-cmdline case.
If there's a root fallback, at least attempt to have it falling
back to the last root filesystem this system ran off of.
Signed-off-by: Thorsten Behrens <tbehrens(a)suse.com>
---
modules.d/95rootfs-block/module-setup.sh | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
index 5f1b826..b868d0b 100755
--- a/modules.d/95rootfs-block/module-setup.sh
+++ b/modules.d/95rootfs-block/module-setup.sh
@@ -31,14 +31,18 @@ cmdline_journal() {
return 0
}
-# called by dracut
-cmdline() {
+cmdline_rootfs() {
local dev=/dev/block/$(find_root_block_device)
if [ -e $dev ]; then
printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")"
printf " rootflags=%s" "$(find_mp_fsopts /)"
printf " rootfstype=%s" "$(find_mp_fstype /)"
fi
+}
+
+# called by dracut
+cmdline() {
+ cmdline_rootfs
cmdline_journal
}
@@ -47,6 +51,8 @@ install() {
if [[ $hostonly_cmdline == "yes" ]]; then
local _journaldev=$(cmdline_journal)
[[ $_journaldev ]] && printf "%s\n" "$_journaldev" >> "${initdir}/etc/cmdline.d/95root-journaldev.conf"
+ local _rootdev=$(cmdline_rootfs)
+ [[ $_rootdev ]] && printf "%s\n" "$_rootdev" >> "${initdir}/etc/cmdline.d/95root-dev.conf"
fi
inst_multiple umount
--
1.8.4.5
++++++ 0073-Don-t-create-lots-of-empty-cmdline-files-for-hostonl.patch ++++++
>From 706f28a7bc193455fcd0656f70adaee442f12ff8 Mon Sep 17 00:00:00 2001
From: Thorsten Behrens <tbehrens(a)suse.com>
Date: Wed, 18 Jun 2014 02:09:38 +0200
Subject: Don't create lots of empty cmdline files for hostonly-cmdline case
This aligns other places piping cmdline() output to cmdline.d files
with the earlier fix for 95rootfs-block.
Signed-off-by: Thorsten Behrens <tbehrens(a)suse.com>
---
modules.d/90crypt/module-setup.sh | 4 ++--
modules.d/90dmraid/module-setup.sh | 4 ++--
modules.d/90lvm/module-setup.sh | 4 ++--
modules.d/90mdraid/module-setup.sh | 4 ++--
modules.d/95resume/module-setup.sh | 5 ++---
5 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh
index 5707404..e423a95 100755
--- a/modules.d/90crypt/module-setup.sh
+++ b/modules.d/90crypt/module-setup.sh
@@ -52,8 +52,8 @@ cmdline() {
install() {
if [[ $hostonly_cmdline == "yes" ]]; then
- cmdline >> "${initdir}/etc/cmdline.d/90crypt.conf"
- echo >> "${initdir}/etc/cmdline.d/90crypt.conf"
+ local _cryptconf=$(cmdline)
+ [[ $_cryptconf ]] && printf "%s\n" "$_cryptconf" >> "${initdir}/etc/cmdline.d/90crypt.conf"
fi
inst_multiple cryptsetup rmdir readlink umount
diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
index aebb28d..3769dd0 100755
--- a/modules.d/90dmraid/module-setup.sh
+++ b/modules.d/90dmraid/module-setup.sh
@@ -66,8 +66,8 @@ install() {
local _i
if [[ $hostonly_cmdline == "yes" ]]; then
- cmdline >> "${initdir}/etc/cmdline.d/90dmraid.conf"
- echo >> "${initdir}/etc/cmdline.d/90dmraid.conf"
+ local _raidconf=$(cmdline)
+ [[ $_raidconf ]] && printf "%s\n" "$_raidconf" >> "${initdir}/etc/cmdline.d/90dmraid.conf"
fi
inst_multiple dmraid
diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh
index 5b810b9..2a5b392 100755
--- a/modules.d/90lvm/module-setup.sh
+++ b/modules.d/90lvm/module-setup.sh
@@ -51,8 +51,8 @@ install() {
inst lvm
if [[ $hostonly_cmdline == "yes" ]]; then
- cmdline >> "${initdir}/etc/cmdline.d/90lvm.conf"
- echo >> "${initdir}/etc/cmdline.d/90lvm.conf"
+ local _lvmconf=$(cmdline)
+ [[ $_lvmconf ]] && printf "%s\n" "$_lvmconf" >> "${initdir}/etc/cmdline.d/90lvm.conf"
fi
inst_rules "$moddir/64-lvm.rules"
diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
index 4963537..da464b8 100755
--- a/modules.d/90mdraid/module-setup.sh
+++ b/modules.d/90mdraid/module-setup.sh
@@ -73,8 +73,8 @@ install() {
inst $(command -v mdadm) /sbin/mdadm
if [[ $hostonly_cmdline == "yes" ]]; then
- cmdline >> "${initdir}/etc/cmdline.d/90mdraid.conf"
- echo >> "${initdir}/etc/cmdline.d/90mdraid.conf"
+ local _raidconf=$(cmdline)
+ [[ $_raidconf ]] && printf "%s\n" "$_raidconf" >> "${initdir}/etc/cmdline.d/90mdraid.conf"
fi
# <mdadm-3.3 udev rule
diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh
index 7f3cf24..b1044ed 100755
--- a/modules.d/95resume/module-setup.sh
+++ b/modules.d/95resume/module-setup.sh
@@ -33,9 +33,8 @@ cmdline() {
# called by dracut
install() {
local _bin
-
- cmdline >> "${initdir}/etc/cmdline.d/95resume.conf"
- echo >> "${initdir}/etc/cmdline.d/95resume.conf"
+ local _resumeconf=$(cmdline)
+ [[ $_resumeconf ]] && printf "%s\n" "$_resumeconf" >> "${initdir}/etc/cmdline.d/95resume.conf"
# Optional uswsusp support
for _bin in /usr/sbin/resume /usr/lib/suspend/resume /usr/lib/uswsusp/resume
--
1.8.4.5
++++++ 0074-More-empty-cmdline-fixes.patch ++++++
>From c323ff844931d7b9d171d3c11f8c3152c346a62a Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Wed, 18 Jun 2014 09:59:22 +0200
Subject: More empty cmdline fixes
This fixes up some more modules which might print out empty
commandline files.
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/81cio_ignore/module-setup.sh | 5 +++--
modules.d/95fcoe/module-setup.sh | 4 ++--
modules.d/95iscsi/module-setup.sh | 13 +++++++------
3 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/modules.d/81cio_ignore/module-setup.sh b/modules.d/81cio_ignore/module-setup.sh
index 42ae2f9..37b414b 100644
--- a/modules.d/81cio_ignore/module-setup.sh
+++ b/modules.d/81cio_ignore/module-setup.sh
@@ -30,8 +30,9 @@ cmdline() {
# called by dracut
install() {
- if [[ $hostonly_cmdline == "yes" ]];then
- cmdline >> "${initdir}/etc/cmdline.d/01cio_accept.conf"
+ if [[ $hostonly_cmdline == "yes" ]] ; then
+ local _cio_accept=$(cmdline)
+ [[ $_cio_accept ]] && printf "%s\n" "$_cio_accept" >> "${initdir}/etc/cmdline.d/01cio_accept.conf"
fi
inst_hook cmdline 20 "$moddir/parse-cio_accept.sh"
diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh
index 57d5c1e..9ca4c67 100755
--- a/modules.d/95fcoe/module-setup.sh
+++ b/modules.d/95fcoe/module-setup.sh
@@ -74,8 +74,8 @@ install() {
mkdir -m 0755 -p "$initdir/var/lib/lldpad"
if [[ $hostonly_cmdline == "yes" ]] ; then
- cmdline >> "${initdir}/etc/cmdline.d/95fcoe.conf"
- echo >> "${initdir}/etc/cmdline.d/95fcoe.conf"
+ local _fcoeconf=$(cmdline)
+ [[ $_fcoeconf ]] && printf "%s\n" "$_fcoeconf" >> "${initdir}/etc/cmdline.d/95fcoe.conf"
fi
inst "$moddir/fcoe-up.sh" "/sbin/fcoe-up"
inst "$moddir/fcoe-edd.sh" "/sbin/fcoe-edd"
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
index e94e913..b90e298 100755
--- a/modules.d/95iscsi/module-setup.sh
+++ b/modules.d/95iscsi/module-setup.sh
@@ -78,12 +78,6 @@ depends() {
installkernel() {
local _arch=$(uname -m)
- # Detect iBFT and perform mandatory steps
- if [[ $hostonly_cmdline == "yes" ]] ; then
- install_ibft > "${initdir}/etc/cmdline.d/95iscsi.conf"
- echo >> "${initdir}/etc/cmdline.d/95iscsi.conf"
- fi
-
instmods bnx2i qla4xxx cxgb3i cxgb4i be2iscsi
hostonly="" instmods iscsi_tcp iscsi_ibft crc32c iscsi_boot_sysfs
iscsi_module_filter() {
@@ -133,6 +127,13 @@ install() {
inst_multiple umount iscsistart hostname iscsi-iname
inst_multiple -o iscsiuio
inst_libdir_file 'libgcc_s.so*'
+
+ # Detect iBFT and perform mandatory steps
+ if [[ $hostonly_cmdline == "yes" ]] ; then
+ local _ibftconf=$(install_ibft)
+ [[ $_ibftconf ]] && printf "%s\n" "$_ibftconf" >> "${initdir}/etc/cmdline.d/95iscsi.conf"
+ fi
+
inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh"
inst_hook cleanup 90 "$moddir/cleanup-iscsi.sh"
inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot"
--
1.8.4.5
++++++ 0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch ++++++
>From 1ab0a485f8e3a3b0ba62ea2f920fd3457039e7f1 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Wed, 18 Jun 2014 15:10:46 +0200
Subject: 95dasd_rules: enable parsing of rd.dasd= commandline parameter
Dracut documents the 'rd.dasd=' parameter, so we should be
enabling the usage of this parameter, too.
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/95dasd_rules/parse-dasd.sh | 37 ++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh
index 9389c44..a0ba1ff 100755
--- a/modules.d/95dasd_rules/parse-dasd.sh
+++ b/modules.d/95dasd_rules/parse-dasd.sh
@@ -54,3 +54,40 @@ for dasd_arg in $(getargs root=) $(getargs resume=); do
fi
)
done
+
+for dasd_arg in $(getargs rd.dasd=); do
+ (
+ IFS=","
+ set -- $dasd_arg
+ unset IFS
+ while (($# > 0)); do
+ case $1 in
+ autodetect|probeonly)
+ shift
+ ;;
+ *-*)
+ range=$1
+ IFS="-"
+ set -- $range
+ start=${1#0.0.}
+ shift
+ end=${1#0.0.}
+ shift
+ unset IFS
+ for dev in $(seq $(( 10#$start )) $(( 10#$end )) ) ; do
+ create_udev_rule $(printf "0.0.%04d" "$dev")
+ done
+ ;;
+ *)
+ dev=${1%(ro)}
+ if [ "$dev" != "$1" ] ; then
+ ro=1
+ fi
+ dev=${dev#0.0.}
+ create_udev_rule $(printf "0.0.%04d" $(( 10#$dev )) )
+ shift
+ ;;
+ esac
+ done
+ )
+done
--
1.8.4.5
++++++ 0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch ++++++
>From 7a725ea4a1cb606edd3f060f46818250f2a82a1a Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Wed, 18 Jun 2014 15:17:21 +0200
Subject: Correctly set cio_ignore for dynamic s390 rules
When converting 'rd.zfcp' and 'rd.dasd' into udev rules we
need to make sure the enable those device ids via cio_ignore,
otherwise the rules might never be called.
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/95dasd_rules/parse-dasd.sh | 3 +++
modules.d/95zfcp_rules/parse-zfcp.sh | 3 +++
2 files changed, 6 insertions(+)
diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh
index a0ba1ff..94a4b30 100755
--- a/modules.d/95dasd_rules/parse-dasd.sh
+++ b/modules.d/95dasd_rules/parse-dasd.sh
@@ -38,6 +38,9 @@ ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="$ccw", IMPORT{program}="collect $ccw %
ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="$_drv", IMPORT{program}="collect $ccw %k ${ccw} $_drv"
ACTION=="add", ENV{COLLECT_$ccw}=="0", ATTR{[ccw/$ccw]online}="1"
EOF
+ if [ -x /sbin/cio_ignore ] && ! cio_ignore -i $ccw > /dev/null ; then
+ cio_ignore -r $ccw
+ fi
}
for dasd_arg in $(getargs root=) $(getargs resume=); do
diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh
index 24dbdd3..8538ae3 100755
--- a/modules.d/95zfcp_rules/parse-zfcp.sh
+++ b/modules.d/95zfcp_rules/parse-zfcp.sh
@@ -37,6 +37,9 @@ EOF
ACTION=="add", KERNEL=="rport-*", ATTR{port_name}=="$wwpn", SUBSYSTEMS=="ccw", KERNELS=="$ccw", ATTR{[ccw/$ccw]$wwpn/unit_add}="$lun"
EOF
fi
+ if [ -x /sbin/cio_ignore ] && ! cio_ignore -i $ccw > /dev/null ; then
+ cio_ignore -r $ccw
+ fi
}
for zfcp_arg in $(getargs rd.zfcp); do
--
1.8.4.5
++++++ 0077-90multipath-add-missing-11-dm-mpath.rules-file.patch ++++++
>From 3d4030e354b12686cb91d41a1ec8bc00df37ea5f Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Wed, 18 Jun 2014 17:48:16 +0200
Subject: 90multipath: add missing 11-dm-mpath.rules file
The 11-dm-mpath.rules file had been missing, causing
blacklisting to not work properly.
References: bnc#883149
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/90multipath/module-setup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
index 7b20709..22ff580 100755
--- a/modules.d/90multipath/module-setup.sh
+++ b/modules.d/90multipath/module-setup.sh
@@ -102,7 +102,7 @@ install() {
inst_hook cleanup 80 "$moddir/multipathd-needshutdown.sh"
- inst_rules 56-multipath.rules \
+ inst_rules 11-dm-mpath.rules 56-multipath.rules \
66-kpartx.rules 67-kpartx-compat.rules
}
--
1.8.4.5
++++++ 0078-Restore-original-IFS-value.patch ++++++
>From 3ad963984b30a990c1ac94c81deb410322daafb6 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Mon, 23 Jun 2014 14:06:47 +0200
Subject: Restore original IFS value
Whenever the IFS setting is modified it needs to be restored to
its original value. Otherwise it'll lead to unexpected results.
References: bnc#883770
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/81cio_ignore/parse-cio_accept.sh | 3 ++-
modules.d/90kernel-modules/insmodpost.sh | 2 +-
modules.d/90kernel-modules/parse-kernel.sh | 4 ++++
modules.d/95dasd/parse-dasd.sh | 2 +-
modules.d/95dasd_rules/parse-dasd.sh | 8 +++++---
modules.d/95iscsi/module-setup.sh | 6 ++++--
modules.d/95zfcp/parse-zfcp.sh | 2 +-
modules.d/95zfcp_rules/parse-zfcp.sh | 4 +++-
modules.d/98systemd/dracut-pre-udev.sh | 4 ++--
9 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/modules.d/81cio_ignore/parse-cio_accept.sh b/modules.d/81cio_ignore/parse-cio_accept.sh
index fec8a92..4f899d2 100644
--- a/modules.d/81cio_ignore/parse-cio_accept.sh
+++ b/modules.d/81cio_ignore/parse-cio_accept.sh
@@ -10,6 +10,7 @@ if [ -z $CIO_IGNORE ] ; then
return
fi
if [ -n "$CIO_ACCEPT" ] ; then
+ OLDIFS="$IFS"
IFS=,
set -- $CIO_ACCEPT
while (($# > 0)) ; do
@@ -17,5 +18,5 @@ if [ -n "$CIO_ACCEPT" ] ; then
cio_ignore --remove $1
shift
done
- unset IFS
+ IFS="$OLDIFS"
fi
diff --git a/modules.d/90kernel-modules/insmodpost.sh b/modules.d/90kernel-modules/insmodpost.sh
index d2b8723..141f091 100755
--- a/modules.d/90kernel-modules/insmodpost.sh
+++ b/modules.d/90kernel-modules/insmodpost.sh
@@ -6,7 +6,7 @@
for modlist in $(getargs rd.driver.post -d rdinsmodpost=); do
(
- IFS=,
+ local IFS=,
for m in $modlist; do
modprobe $m
done
diff --git a/modules.d/90kernel-modules/parse-kernel.sh b/modules.d/90kernel-modules/parse-kernel.sh
index fa891bf..e012e52 100755
--- a/modules.d/90kernel-modules/parse-kernel.sh
+++ b/modules.d/90kernel-modules/parse-kernel.sh
@@ -13,10 +13,12 @@ fi
for i in $(getargs rd.driver.pre -d rdloaddriver=); do
(
+ OLDIFS="$IFS"
IFS=,
for p in $i; do
modprobe $p 2>&1 | vinfo
done
+ IFS="$OLDIFS"
)
done
@@ -25,10 +27,12 @@ done
for i in $(getargs rd.driver.blacklist -d rdblacklist=); do
(
+ OLDIFS="$IFS"
IFS=,
for p in $i; do
echo "blacklist $p" >> $_modprobe_d/initramfsblacklist.conf
done
+ IFS="$OLDIFS"
)
done
diff --git a/modules.d/95dasd/parse-dasd.sh b/modules.d/95dasd/parse-dasd.sh
index 1aa1455..aba720b 100755
--- a/modules.d/95dasd/parse-dasd.sh
+++ b/modules.d/95dasd/parse-dasd.sh
@@ -3,7 +3,7 @@
# ex: ts=8 sw=4 sts=4 et filetype=sh
for dasd_arg in $(getargs rd.dasd= -d rd_DASD= DASD=); do
(
- IFS=","
+ local IFS=","
set -- $dasd_arg
echo "$@" | normalize_dasd_arg >> /etc/dasd.conf
)
diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh
index 94a4b30..02b4aea 100755
--- a/modules.d/95dasd_rules/parse-dasd.sh
+++ b/modules.d/95dasd_rules/parse-dasd.sh
@@ -51,8 +51,10 @@ for dasd_arg in $(getargs root=) $(getargs resume=); do
break;
esac
if [ -n "$ccw_arg" ] ; then
+ OLDIFS="$IFS"
IFS="-"
set -- $ccw_arg
+ IFS="$OLDIFS"
create_udev_rule $2
fi
)
@@ -60,9 +62,8 @@ done
for dasd_arg in $(getargs rd.dasd=); do
(
- IFS=","
+ local IFS=","
set -- $dasd_arg
- unset IFS
while (($# > 0)); do
case $1 in
autodetect|probeonly)
@@ -70,13 +71,14 @@ for dasd_arg in $(getargs rd.dasd=); do
;;
*-*)
range=$1
+ OLDIFS="$IFS"
IFS="-"
set -- $range
start=${1#0.0.}
shift
end=${1#0.0.}
shift
- unset IFS
+ IFS="$OLDIFS"
for dev in $(seq $(( 10#$start )) $(( 10#$end )) ) ; do
create_udev_rule $(printf "0.0.%04d" "$dev")
done
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
index b90e298..cfa6f39 100755
--- a/modules.d/95iscsi/module-setup.sh
+++ b/modules.d/95iscsi/module-setup.sh
@@ -3,16 +3,18 @@
# ex: ts=8 sw=4 sts=4 et filetype=sh
get_ibft_mod() {
- local ibft_mac=$1
+ local ibft_mac=$1 IFS
# Return the iSCSI offload module for a given MAC address
iscsiadm -m iface | while read iface_name iface_desc ; do
+ OLDIFS="$IFS"
IFS=$','
set -- $iface_desc
+ IFS="$OLDIFS"
if [ "$ibft_mac" = "$2" ] ; then
echo $1
return 0
fi
- unset IFS
+
done
}
diff --git a/modules.d/95zfcp/parse-zfcp.sh b/modules.d/95zfcp/parse-zfcp.sh
index 9b22d93..1d21472 100755
--- a/modules.d/95zfcp/parse-zfcp.sh
+++ b/modules.d/95zfcp/parse-zfcp.sh
@@ -6,7 +6,7 @@ getargbool 1 rd.zfcp.conf -d -n rd_NO_ZFCPCONF || rm /etc/zfcp.conf
for zfcp_arg in $(getargs rd.zfcp -d 'rd_ZFCP='); do
(
- IFS=","
+ local IFS=","
set $zfcp_arg
echo "$@" >> /etc/zfcp.conf
)
diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh
index 8538ae3..56152da 100755
--- a/modules.d/95zfcp_rules/parse-zfcp.sh
+++ b/modules.d/95zfcp_rules/parse-zfcp.sh
@@ -44,7 +44,7 @@ EOF
for zfcp_arg in $(getargs rd.zfcp); do
(
- IFS=","
+ local IFS=","
set $zfcp_arg
create_udev_rule $1 $2 $3
)
@@ -58,8 +58,10 @@ for zfcp_arg in $(getargs root=) $(getargs resume=); do
break;
esac
if [ -n "$ccw_arg" ] ; then
+ OLDIFS="$IFS"
IFS="-"
set -- $ccw_arg
+ IFS="$OLDIFS"
wwpn=${4%:*}
lun=${4#*:}
create_udev_rule $2 $wwpn $lun
diff --git a/modules.d/98systemd/dracut-pre-udev.sh b/modules.d/98systemd/dracut-pre-udev.sh
index 638da40..77977d2 100755
--- a/modules.d/98systemd/dracut-pre-udev.sh
+++ b/modules.d/98systemd/dracut-pre-udev.sh
@@ -26,7 +26,7 @@ fi
for i in $(getargs rd.driver.pre -d rdloaddriver=); do
(
- IFS=,
+ local IFS=,
for p in $i; do
modprobe $p 2>&1 | vinfo
done
@@ -38,7 +38,7 @@ done
for i in $(getargs rd.driver.blacklist -d rdblacklist=); do
(
- IFS=,
+ local IFS=,
for p in $i; do
echo "blacklist $p" >> $_modprobe_d/initramfsblacklist.conf
done
--
1.8.4.5
++++++ 0079-95dasd_rules-fixup-rd.dasd-parsing.patch ++++++
>From b302dd2a53864bdd4ff271275fa244f654cb92ca Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Thu, 26 Jun 2014 10:49:03 +0200
Subject: 95dasd_rules: fixup rd.dasd parsing
There were some errors when rd.dasd parsing, resulting in the
device never to be activated. And we should check for
cio_ignore even if a udev rules has been found.
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/95dasd_rules/parse-dasd.sh | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh
index 02b4aea..43ca87a 100755
--- a/modules.d/95dasd_rules/parse-dasd.sh
+++ b/modules.d/95dasd_rules/parse-dasd.sh
@@ -31,6 +31,10 @@ create_udev_rule() {
esac
[ -z "${_drv}" ] && return 0
+ if [ -x /sbin/cio_ignore ] && cio_ignore -i $ccw > /dev/null ; then
+ cio_ignore -r $ccw
+ fi
+
[ -e ${_rule} ] && return 0
cat > $_rule <<EOF
@@ -38,9 +42,6 @@ ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="$ccw", IMPORT{program}="collect $ccw %
ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="$_drv", IMPORT{program}="collect $ccw %k ${ccw} $_drv"
ACTION=="add", ENV{COLLECT_$ccw}=="0", ATTR{[ccw/$ccw]online}="1"
EOF
- if [ -x /sbin/cio_ignore ] && ! cio_ignore -i $ccw > /dev/null ; then
- cio_ignore -r $ccw
- fi
}
for dasd_arg in $(getargs root=) $(getargs resume=); do
@@ -48,7 +49,7 @@ for dasd_arg in $(getargs root=) $(getargs resume=); do
case $dasd_arg in
/dev/disk/by-path/ccw-*)
ccw_arg=${dasd_arg##*/}
- break;
+ ;;
esac
if [ -n "$ccw_arg" ] ; then
OLDIFS="$IFS"
@@ -79,8 +80,8 @@ for dasd_arg in $(getargs rd.dasd=); do
end=${1#0.0.}
shift
IFS="$OLDIFS"
- for dev in $(seq $(( 10#$start )) $(( 10#$end )) ) ; do
- create_udev_rule $(printf "0.0.%04d" "$dev")
+ for dev in $(seq $(( 16#$start )) $(( 16#$end )) ) ; do
+ create_udev_rule $(printf "0.0.%04x" "$dev")
done
;;
*)
@@ -89,7 +90,7 @@ for dasd_arg in $(getargs rd.dasd=); do
ro=1
fi
dev=${dev#0.0.}
- create_udev_rule $(printf "0.0.%04d" $(( 10#$dev )) )
+ create_udev_rule $(printf "0.0.%04x" $(( 16#$dev )) )
shift
;;
esac
--
1.8.4.5
++++++ 0080-95dasd_rules-print-out-rd.dasd-commandline.patch ++++++
>From 3e2e526a74cdad48d40a1ec58dac9f709d8fef0e Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Thu, 26 Jun 2014 10:50:43 +0200
Subject: 95dasd_rules: print out 'rd.dasd' commandline
When a DASD is found to be required for the rootfs we should
be printing out a 'rd.dasd' commandline parameter. This not
only enables us to correctly enable the device with cio_ignore,
we can also inspect the resulting initrd to figure out which
devices are required to mount the rootfs.
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/95dasd_rules/module-setup.sh | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/modules.d/95dasd_rules/module-setup.sh b/modules.d/95dasd_rules/module-setup.sh
index 451fc25..e4736a2 100755
--- a/modules.d/95dasd_rules/module-setup.sh
+++ b/modules.d/95dasd_rules/module-setup.sh
@@ -3,10 +3,39 @@
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
+cmdline() {
+ is_dasd() {
+ local _dev=$1
+ local _devpath=$(cd -P /sys/dev/block/$_dev ; echo $PWD)
+
+ [ "${_devpath#*/dasd}" == "$_devpath" ] && return 1
+ _ccw="${_devpath%%/block/*}"
+ echo "rd.dasd=${_ccw##*/}"
+ return 0
+ }
+ [[ $hostonly ]] || [[ $mount_needs ]] && {
+ for_each_host_dev_and_slaves is_dasd || return 255
+ }
+}
+
+# called by dracut
check() {
local _arch=$(uname -m)
+ local found=0
+ local bdev
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
require_binaries /usr/lib/udev/collect || return 1
+
+ [[ $hostonly ]] || [[ $mount_needs ]] && {
+ for bdev in /sys/block/* ; do
+ case "${bdev##*/}" in
+ dasd*)
+ found=$(($found+1));
+ break;
+ esac
+ done
+ [ $found -eq 0 ] && return 255
+ }
return 0
}
@@ -19,6 +48,10 @@ depends() {
# called by dracut
install() {
inst_hook cmdline 30 "$moddir/parse-dasd.sh"
+ if [[ $hostonly_cmdline == "yes" ]] ; then
+ local _dasd=$(cmdline)
+ [[ $_dasd ]] && printf "%s\n" "$_dasd" >> "${initdir}/etc/cmdline.d/95dasd.conf"
+ fi
if [[ $hostonly ]] ; then
inst_rules_wildcard 51-dasd-*.rules
inst_rules_wildcard 41-s390x-dasd-*.rules
--
1.8.4.5
++++++ 0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch ++++++
>From 95dc2742b9304029068a2b320e011bdfcc4087ea Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Thu, 26 Jun 2014 10:53:01 +0200
Subject: 95dasd_mod: do not set module parameters if dasd_cio_free is not
present
We're now parsing the 'rd.dasd' parameter from 95dasd_rules, so
setting the 'dasd_mod' module parameter should be dropped here.
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/95dasd_mod/parse-dasd-mod.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/95dasd_mod/parse-dasd-mod.sh b/modules.d/95dasd_mod/parse-dasd-mod.sh
index 0236d12..0b8adef 100755
--- a/modules.d/95dasd_mod/parse-dasd-mod.sh
+++ b/modules.d/95dasd_mod/parse-dasd-mod.sh
@@ -9,7 +9,7 @@ done
mod_args="${mod_args#*,}"
-if [ -n "$mod_args" ]; then
+if [ -x /sbin/dasd_cio_free -a -n "$mod_args" ]; then
[ -d /etc/modprobe.d ] || mkdir -m 0755 -p /etc/modprobe.d
echo "options dasd_mod dasd=$mod_args" >> /etc/modprobe.d/dasd_mod.conf
fi
--
1.8.4.5
++++++ 0082-00warpclock-check-for-sbin-hwclock.patch ++++++
>From 354e32e863a19d3539c3bf1b6affc98630b0003d Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Thu, 26 Jun 2014 10:44:42 +0200
Subject: 00warpclock: check for /sbin/hwclock
We need to check if /sbin/hwclock exists to avoid error messages
when running dracut.
References: bnc#884513
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/00warpclock/module-setup.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/modules.d/00warpclock/module-setup.sh b/modules.d/00warpclock/module-setup.sh
index 4d18795..5aec4eb 100755
--- a/modules.d/00warpclock/module-setup.sh
+++ b/modules.d/00warpclock/module-setup.sh
@@ -4,7 +4,8 @@
# called by dracut
check() {
- [ -e /etc/localtime -a -e /etc/adjtime ]
+ [ -e /etc/localtime -a -e /etc/adjtime ] || return 1
+ require_binaries /sbin/hwclock || return 1
}
# called by dracut
--
1.8.4.5
++++++ 0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch ++++++
>From 90b21dafd469ce4a8ac56944ce825f90c0782b16 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Thu, 26 Jun 2014 11:52:29 +0200
Subject: 95zfcp_rules: Fixup rd.zfcp parsing
There were some errors when parsing rd.zfcp, causing the device
never to be activated.
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/95zfcp_rules/parse-zfcp.sh | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh
index 56152da..bb5cd3a 100755
--- a/modules.d/95zfcp_rules/parse-zfcp.sh
+++ b/modules.d/95zfcp_rules/parse-zfcp.sh
@@ -7,9 +7,7 @@ create_udev_rule() {
local wwpn=$2
local lun=$3
local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules
-
local _cu_type _dev_type
- local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules
if [ -e /sys/bus/ccw/devices/${ccw} ] ; then
read _cu_type < /sys/bus/ccw/devices/${ccw}/cutype
@@ -22,6 +20,10 @@ create_udev_rule() {
return 0;
fi
+ if [ -x /sbin/cio_ignore ] && cio_ignore -i $ccw > /dev/null ; then
+ cio_ignore -r $ccw
+ fi
+
[ -e ${_rule} ] && return 0
if [ ! -f "$_rule" ] ; then
@@ -37,9 +39,6 @@ EOF
ACTION=="add", KERNEL=="rport-*", ATTR{port_name}=="$wwpn", SUBSYSTEMS=="ccw", KERNELS=="$ccw", ATTR{[ccw/$ccw]$wwpn/unit_add}="$lun"
EOF
fi
- if [ -x /sbin/cio_ignore ] && ! cio_ignore -i $ccw > /dev/null ; then
- cio_ignore -r $ccw
- fi
}
for zfcp_arg in $(getargs rd.zfcp); do
@@ -55,7 +54,7 @@ for zfcp_arg in $(getargs root=) $(getargs resume=); do
case $zfcp_arg in
/dev/disk/by-path/ccw-*)
ccw_arg=${zfcp_arg##*/}
- break;
+ ;;
esac
if [ -n "$ccw_arg" ] ; then
OLDIFS="$IFS"
--
1.8.4.5
++++++ 0084-95rootfs-block-Correctly-terminate-commandline-param.patch ++++++
>From 21e4cbee5d852108880cedc9edc619cdd9b296a5 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Thu, 26 Jun 2014 13:41:56 +0200
Subject: 95rootfs-block: Correctly terminate commandline parameter
95rootfs-block would not terminate the commandline parameter with
a space or newline, instead it'll rely on the main routine from
dracut.sh to do this.
Which will cause unexpected problems for any modules called
after this.
So terminate the commandline parameters correctly here and remove
the newline from dracut.sh.
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
dracut.sh | 1 -
modules.d/95rootfs-block/module-setup.sh | 8 ++++----
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/dracut.sh b/dracut.sh
index a58e134..40006e7 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -1166,7 +1166,6 @@ if [[ $print_cmdline ]]; then
module_cmdline "$_d_mod"
done
unset moddir
- printf "\n"
exit 0
fi
diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
index b868d0b..a620786 100755
--- a/modules.d/95rootfs-block/module-setup.sh
+++ b/modules.d/95rootfs-block/module-setup.sh
@@ -24,7 +24,7 @@ cmdline_journal() {
fi
if [ -n "$journaldev" ]; then
- printf " root.journaldev=%s" "$journaldev"
+ echo "root.journaldev=${journaldev}"
fi
done
fi
@@ -34,9 +34,9 @@ cmdline_journal() {
cmdline_rootfs() {
local dev=/dev/block/$(find_root_block_device)
if [ -e $dev ]; then
- printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")"
- printf " rootflags=%s" "$(find_mp_fsopts /)"
- printf " rootfstype=%s" "$(find_mp_fstype /)"
+ printf "root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")"
+ printf "rootflags=%s" "$(find_mp_fsopts /)"
+ printf "rootfstype=%s\n" "$(find_mp_fstype /)"
fi
}
--
1.8.4.5
++++++ 0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch ++++++
>From 3d918eb5be673f243dc75b358a35e1ed307f0ea5 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Thu, 26 Jun 2014 13:44:05 +0200
Subject: 95zfcp_rules: print out rd.zfcp commandline parameter
When called with '--hostonly-cmdline' the module should print
out the configuration.
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/95zfcp_rules/module-setup.sh | 39 +++++++++++++++++++++++++++++++++-
1 file changed, 38 insertions(+), 1 deletion(-)
diff --git a/modules.d/95zfcp_rules/module-setup.sh b/modules.d/95zfcp_rules/module-setup.sh
index 849645c..3f80754 100755
--- a/modules.d/95zfcp_rules/module-setup.sh
+++ b/modules.d/95zfcp_rules/module-setup.sh
@@ -3,10 +3,40 @@
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
+cmdline() {
+ is_zfcp() {
+ local _dev=$1
+ local _devpath=$(cd -P /sys/dev/block/$_dev ; echo $PWD)
+ local _sdev _lun _wwpn _ccw
+
+ [ "${_devpath#*/sd}" == "$_devpath" ] && return 1
+ _sdev="${_devpath%%/block/*}"
+ [ -e ${_sdev}/fcp_lun ] || return 1
+ _lun=$(cat ${_sdev}/fcp_lun)
+ _wwpn=$(cat ${_sdev}/wwpn)
+ _ccw=$(cat ${_sdev}/hba_id)
+ echo "rd.zfcp=${_ccw},${_wwpn},${_lun}"
+ return 1
+ }
+ [[ $hostonly ]] || [[ $mount_needs ]] && {
+ for_each_host_dev_and_slaves is_zfcp
+ }
+}
+
+# called by dracut
check() {
local _arch=$(uname -m)
+ local _ccw
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
- require_binaries zfcp_disk_configure /usr/lib/udev/collect || return 1
+ require_binaries /usr/lib/udev/collect || return 1
+
+ [[ $hostonly ]] || [[ $mount_needs ]] && {
+ for _ccw in /sys/bus/ccw/devices/*/host* ; do
+ [ -d "$_ccw" ] || continue
+ found=$(($found+1));
+ done
+ [ $found -eq 0 ] && return 255
+ }
return 0
}
@@ -19,6 +49,13 @@ depends() {
install() {
inst_multiple /usr/lib/udev/collect
inst_hook cmdline 30 "$moddir/parse-zfcp.sh"
+ if [[ $hostonly_cmdline == "yes" ]] ; then
+ local _zfcp
+
+ for _zfcp in $(cmdline) ; do
+ printf "%s\n" "$zfcp" >> "${initdir}/etc/cmdline.d/94zfcp.conf"
+ done
+ fi
if [[ $hostonly ]] ; then
inst_rules_wildcard 51-zfcp-*.rules
inst_rules_wildcard 41-s390x-zfcp-*.rules
--
1.8.4.5
++++++ 0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch ++++++
>From 754bda4bcf9698837802b31bd74061702edf6c8c Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Thu, 26 Jun 2014 14:01:33 +0200
Subject: 95zfcp_rules: Auto-generate udev rule for ipl device
We should auto-generate an udev rule for the ipl device; it'll be
enabled anyway.
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/95zfcp_rules/parse-zfcp.sh | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh
index bb5cd3a..05c1ed0 100755
--- a/modules.d/95zfcp_rules/parse-zfcp.sh
+++ b/modules.d/95zfcp_rules/parse-zfcp.sh
@@ -41,6 +41,17 @@ EOF
fi
}
+if [[ -f /sys/firmware/ipl/ipl_type &&
+ $(</sys/firmare/ipl/ipl_type) = "fcp" ]] ; then
+ (
+ local _wwpn=$(cat /sys/firmware/ipl/wwpn)
+ local _lun=$(cat /sys/firmware/ipl/lun)
+ local _ccw=$(cat /sys/firmware/ipl/device)
+
+ create_udev_rule $_ccw $_wwpn $_lun
+ )
+fi
+
for zfcp_arg in $(getargs rd.zfcp); do
(
local IFS=","
@@ -51,6 +62,9 @@ done
for zfcp_arg in $(getargs root=) $(getargs resume=); do
(
+ local _wwpn
+ local _lun
+
case $zfcp_arg in
/dev/disk/by-path/ccw-*)
ccw_arg=${zfcp_arg##*/}
@@ -61,8 +75,8 @@ for zfcp_arg in $(getargs root=) $(getargs resume=); do
IFS="-"
set -- $ccw_arg
IFS="$OLDIFS"
- wwpn=${4%:*}
- lun=${4#*:}
+ _wwpn=${4%:*}
+ _lun=${4#*:}
create_udev_rule $2 $wwpn $lun
fi
)
--
1.8.4.5
++++++ 0087-95dasd_rules-Auto-generate-udev-rule-for-ipl-device.patch ++++++
>From 96af5adcdc4ec9bdbaff4dc053f415060eee301a Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare(a)suse.de>
Date: Thu, 26 Jun 2014 14:04:19 +0200
Subject: 95dasd_rules: Auto-generate udev rule for ipl device
We should be generating a udev rule for the ipl device; it'll
be enabled anyway.
Signed-off-by: Hannes Reinecke <hare(a)suse.de>
---
modules.d/95dasd_rules/parse-dasd.sh | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh
index 43ca87a..7b6a3d2 100755
--- a/modules.d/95dasd_rules/parse-dasd.sh
+++ b/modules.d/95dasd_rules/parse-dasd.sh
@@ -44,6 +44,15 @@ ACTION=="add", ENV{COLLECT_$ccw}=="0", ATTR{[ccw/$ccw]online}="1"
EOF
}
+if [[ -f /sys/firmware/ipl/ipl_type &&
+ $(</sys/firmare/ipl/ipl_type) = "ccw" ]] ; then
+ (
+ local _ccw=$(cat /sys/firmware/ipl/device)
+
+ create_udev_rule $_ccw
+ )
+fi
+
for dasd_arg in $(getargs root=) $(getargs resume=); do
(
case $dasd_arg in
--
1.8.4.5
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package perl-XML-Simple for openSUSE:Factory checked in at 2014-06-30 21:43:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-XML-Simple (Old)
and /work/SRC/openSUSE:Factory/.perl-XML-Simple.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-XML-Simple"
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-XML-Simple/perl-XML-Simple.changes 2013-07-30 19:11:19.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.perl-XML-Simple.new/perl-XML-Simple.changes 2014-06-30 21:43:25.000000000 +0200
@@ -1,0 +2,6 @@
+Thu Jun 26 07:02:07 UTC 2014 - lchiquitto(a)suse.com
+
+- remove XML-Simple-2.18-test.diff from package sources, it's not
+ being applied since the last update
+
+-------------------------------------------------------------------
Old:
----
XML-Simple-2.18-test.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-XML-Simple.spec ++++++
--- /var/tmp/diff_new_pack.GdfJl8/_old 2014-06-30 21:43:26.000000000 +0200
+++ /var/tmp/diff_new_pack.GdfJl8/_new 2014-06-30 21:43:26.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-XML-Simple
#
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package java-1_7_0-openjdk for openSUSE:Factory checked in at 2014-06-30 21:43:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/java-1_7_0-openjdk (Old)
and /work/SRC/openSUSE:Factory/.java-1_7_0-openjdk.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "java-1_7_0-openjdk"
Changes:
--------
--- /work/SRC/openSUSE:Factory/java-1_7_0-openjdk/java-1_7_0-openjdk.changes 2014-06-25 06:58:03.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.java-1_7_0-openjdk.new/java-1_7_0-openjdk.changes 2014-06-30 21:43:23.000000000 +0200
@@ -1,0 +2,12 @@
+Tue Jun 24 08:20:39 UTC 2014 - fstrba(a)suse.com
+
+- Remove the jamvm virtual machine that is used on armv6l and use
+ the zero port instead. Remove some conditionals that are not true
+ after this change.
+- Remove the use of %origin variable since it is the same for
+ every architecture now.
+- Remove --with-arm32-jit that does not work any more.
+- Bootstrap build on arm32, since previous compiler cannot cope with
+ this version.
+
+-------------------------------------------------------------------
Old:
----
jamvm-ec18fb9e49e62dce16c5094ef1527eed619463aa.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ java-1_7_0-openjdk.spec ++++++
--- /var/tmp/diff_new_pack.yGWcWz/_old 2014-06-30 21:43:25.000000000 +0200
+++ /var/tmp/diff_new_pack.yGWcWz/_new 2014-06-30 21:43:25.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package java-1_7_0
+# spec file for package java-1_7_0-openjdk
#
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -16,19 +16,23 @@
#
+%{!?aarch64:%global aarch64 aarch64 arm64 armv8}
+%global jit_arches %{ix86} x86_64 aarch64 ppc64 ppc64le
+%global test_arches %{ix86} x86_64 ppc64 ppc64le
+
# Because of a change in architecture directories from ppc64le to ppc64,
-# bootstrap is needed on ppc64le architecture. Add your architecture to the
-# condition if you need to be building with bootstrap.
-%ifarch ppc64le
+# bootstrap is needed on ppc64le architecture. We are requiring bootstrap
+# currently for % {arm}, since the old version had errors compiling some
+# java files of this one. All this changes can be removed once the
+# repositories settled on the new version.
+# Add your architecture to the condition if you need to be building with
+# bootstrap.
+%ifarch ppc64le %{arm}
%global _with_bootstrap 1
%endif
# or use osc build --with bootstrap
%bcond_with bootstrap
-%{!?aarch64:%global aarch64 aarch64 arm64 armv8}
-%global jit_arches %{ix86} x86_64 aarch64 ppc64 ppc64le
-%global test_arches %{ix86} x86_64 ppc64 ppc64le
-
# Turn on/off some features depending on openSUSE version
%ifarch %{jit_arches}
@@ -41,18 +45,10 @@
%global with_systemtap 0
%endif
-%ifarch %arm
-%bcond_without jamvm
-%else
-%bcond_with jamvm
-%endif
-
-# turn zero on non jit arches by default, unless jamvm has been specified
+# turn zero on non jit arches by default
%ifnarch %{jit_arches}
-%if ! %{with jamvm}
%global _with_zero --with-zero
%endif
-%endif
%bcond_with zero
%if 0%{?suse_version} >= 1220
@@ -108,19 +104,14 @@
%global abs2rel %{__perl} -e %{script}
# Standard JPackage naming and versioning defines.
-%if ! %{with jamvm}
-%global origin openjdk
-%else
-%global origin icedtea
-%endif
%global priority 17147
%global javaver 1.7.0
%global buildver 60
# Standard JPackage directories and symbolic links.
-%global sdklnk java-%{javaver}-%{origin}
+%global sdklnk java-%{javaver}-openjdk
%global archname %{sdklnk}
-%global jrelnk jre-%{javaver}-%{origin}
+%global jrelnk jre-%{javaver}-openjdk
%global sdkdir %{sdklnk}-%{javaver}
%global jredir %{sdkdir}/jre
%global sdkbindir %{_jvmdir}/%{sdklnk}/bin
@@ -152,7 +143,7 @@
# real file made by update-ca-certificates
%global javacacerts %{_var}/lib/ca-certificates/java-cacerts
-Name: java-1_7_0-%{origin}
+Name: java-1_7_0-openjdk
Version: %{javaver}.%{buildver}
Release: 0
Summary: Java runtime environment based on OpenJDK 7 and IcedTea 7
@@ -178,7 +169,6 @@
%else
Source11: http://icedtea.classpath.org/download/drops/icedtea7/2.5/hotspot.tar.bz2
%endif
-Source13: http://icedtea.classpath.org/download/drops/jamvm/jamvm-ec18fb9e49e62dce16c…
#Source1000: java-1_7_0-openjdk-rpmlintrc
# those properties are for opeSUSE only
@@ -259,9 +249,6 @@
BuildRequires: liblcms2-devel >= 2.5
%endif
BuildRequires: libpng-devel
-%if %{with jamvm}
-BuildRequires: libtool
-%endif
%if 0%{?suse_version} >= 1220
BuildRequires: libxslt-tools
%endif
@@ -368,12 +355,12 @@
# Standard JPackage base provides.
Provides: java = %{javaver}
Provides: java-%{javaver} = %{version}-%{release}
-Provides: java-%{javaver}-%{origin} = %{version}-%{release}
-Provides: java-%{origin} = %{version}-%{release}
+Provides: java-%{javaver}-openjdk = %{version}-%{release}
+Provides: java-openjdk = %{version}-%{release}
Provides: jre = %{javaver}
Provides: jre-%{javaver} = %{version}-%{release}
-Provides: jre-%{javaver}-%{origin} = %{version}-%{release}
-Provides: jre-%{origin} = %{version}-%{release}
+Provides: jre-%{javaver}-openjdk = %{version}-%{release}
+Provides: jre-openjdk = %{version}-%{release}
# Standard JPackage extensions provides.
Provides: jaas = %{version}
Provides: java-sasl = %{version}
@@ -405,11 +392,11 @@
%endif
Provides: java-%{bits} = %{javaver}
Provides: java-%{javaver}-%{bits}
-Provides: java-%{origin}-%{bits} = %{version}-%{release}
+Provides: java-openjdk-%{bits} = %{version}-%{release}
Provides: jre-%{bits} = %{javaver}
Provides: jre-%{javaver}-%{bits}
-Provides: jre-%{javaver}-%{origin}-%{bits} = %{version}-%{release}
-Provides: jre-%{origin}-%{bits} = %{version}-%{release}
+Provides: jre-%{javaver}-openjdk-%{bits} = %{version}-%{release}
+Provides: jre-openjdk-%{bits} = %{version}-%{release}
%description
This Java 7 compatible Java Runtime Environment is based on OpenJDK 7
@@ -433,12 +420,12 @@
Requires: tzdata-java
Requires(pre): update-alternatives
-Provides: java-%{origin}-headless = %{version}-%{release}
Provides: java-headless = %{version}-%{release}
-Provides: jre-%{javaver}-%{origin}-headless = %{version}-%{release}
+Provides: java-openjdk-headless = %{version}-%{release}
Provides: jre-%{javaver}-headless = %{version}-%{release}
-Provides: jre-%{origin}-headless = %{version}-%{release}
+Provides: jre-%{javaver}-openjdk-headless = %{version}-%{release}
Provides: jre-headless = %{version}-%{release}
+Provides: jre-openjdk-headless = %{version}-%{release}
#FIXME: add extensions provides? Would not it be better to require full JRE?
# from http://en.opensuse.org/openSUSE:Package_dependencies#Splitting_off_a_sub-pa…
@@ -461,14 +448,14 @@
Group: Development/Languages/Java
Requires: %{name} = %{version}-%{release}
Requires(pre): %{_sbindir}/update-alternatives
-Provides: java-%{javaver}-%{origin}-devel = %{version}-%{release}
Provides: java-%{javaver}-devel = %{version}
+Provides: java-%{javaver}-openjdk-devel = %{version}-%{release}
Provides: java-devel = %{javaver}
-Provides: java-devel-%{origin} = %{version}
+Provides: java-devel-openjdk = %{version}
Provides: java-sdk = %{javaver}
Provides: java-sdk-%{javaver} = %{version}
-Provides: java-sdk-%{javaver}-%{origin} = %{version}
-Provides: java-sdk-%{origin} = %{version}
+Provides: java-sdk-%{javaver}-openjdk = %{version}
+Provides: java-sdk-openjdk = %{version}
%description devel
This Java 7 compatible Java SDK is based on OpenJDK 6 and IcedTea 6.
@@ -487,7 +474,7 @@
%package demo
Summary: Sources for building demo applications with OpenJDK 7
Group: Development/Languages/Java
-Provides: java-%{javaver}-%{origin}-demo = %{version}-%{release}
+Provides: java-%{javaver}-openjdk-demo = %{version}-%{release}
Requires: %{name}-devel = %{version}-%{release}
%description demo
@@ -509,8 +496,8 @@
Summary: Documentation of the Java API of OpenJDK 7
Group: Development/Languages/Java
Requires(pre): %{_sbindir}/update-alternatives
-Provides: java-%{javaver}-%{origin}-javadoc = %{version}-%{release}
Provides: java-%{javaver}-javadoc = %{version}-%{release}
+Provides: java-%{javaver}-openjdk-javadoc = %{version}-%{release}
Provides: java-javadoc = %{version}-%{release}
%description javadoc
@@ -537,11 +524,6 @@
%gpg_verify -f %{SOURCE2001} %{SOURCE2000}
%endif
-%if %{with jamvm} && %{with zero}
-echo "ERROR: use either --with jamvm or --with zero, both are not supported!" >&2
-exit 1
-%endif
-
%setup -q -n icedtea-%{icedtea_version} -a 3
cp %{SOURCE4} .
@@ -608,11 +590,6 @@
%if %{with zero}
--enable-zero \
%endif
-%if %{with jamvm}
- --enable-jamvm \
- --with-jamvm-src-zip=%{SOURCE13} \
-%endif
- --enable-arm32-jit \
%if 0%{?suse_version} <= 1110
--disable-system-gio \
%endif
@@ -916,10 +893,10 @@
%{_jvmdir}/%{sdkdir}/jre/lib/desktop/policytool.desktop
update-alternatives \
- --install %{_jvmdir}/jre-%{origin} \
- jre_%{origin} %{_jvmdir}/%{jrelnk} %{priority} \
- --slave %{_jvmjardir}/jre-%{origin} \
- jre_%{origin}_exports %{_jvmjardir}/%{jrelnk}
+ --install %{_jvmdir}/jre-openjdk \
+ jre_openjdk %{_jvmdir}/%{jrelnk} %{priority} \
+ --slave %{_jvmjardir}/jre-openjdk \
+ jre_openjdk_exports %{_jvmjardir}/%{jrelnk}
update-alternatives \
--install %{_jvmdir}/jre-%{javaver} \
jre_%{javaver} %{_jvmdir}/%{jrelnk} %{priority} \
@@ -934,7 +911,7 @@
echo '-1' > /proc/sys/fs/binfmt_misc/jarexec
fi
update-alternatives --remove java %{jrebindir}/java
- update-alternatives --remove jre_%{origin} %{_jvmdir}/%{jrelnk}
+ update-alternatives --remove jre_openjdk %{_jvmdir}/%{jrelnk}
update-alternatives --remove jre_%{javaver} %{_jvmdir}/%{jrelnk}
fi
@@ -1067,10 +1044,10 @@
%{_jvmdir}/%{sdkdir}/jre/lib/desktop/jconsole.desktop
update-alternatives \
- --install %{_jvmdir}/java-%{origin} \
- java_sdk_%{origin} %{_jvmdir}/%{sdklnk} %{priority} \
- --slave %{_jvmjardir}/java-%{origin} \
- java_sdk_%{origin}_exports %{jvmjarlink}
+ --install %{_jvmdir}/java-openjdk \
+ java_sdk_openjdk %{_jvmdir}/%{sdklnk} %{priority} \
+ --slave %{_jvmjardir}/java-openjdk \
+ java_sdk_openjdk_exports %{jvmjarlink}
update-alternatives \
--install %{_jvmdir}/java-%{javaver} \
java_sdk_%{javaver} %{_jvmdir}/%{sdklnk} %{priority} \
@@ -1081,7 +1058,7 @@
if [ $1 -eq 0 ]
then
update-alternatives --remove javac %{sdkbindir}/javac
- update-alternatives --remove java_sdk_%{origin} %{_jvmdir}/%{sdklnk}
+ update-alternatives --remove java_sdk_openjdk %{_jvmdir}/%{sdklnk}
update-alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdklnk}
fi
@@ -1126,7 +1103,7 @@
%{_jvmdir}/%{sdkdir}/jre/lib/desktop/policytool.desktop
%{_datadir}/icons/hicolor/*/apps/java.png
-%{_jvmdir}/java-%{javaver}-%{origin}
+%{_jvmdir}/java-%{javaver}-openjdk
%dir %{_jvmdir}/%{sdkdir}
%{_jvmdir}/%{jrelnk}
@@ -1154,7 +1131,7 @@
#belongs to full package
%exclude %{_jvmdir}/%{sdkdir}/jre/lib/%{archinstall}/libjsoundalsa.so
%exclude %{_jvmdir}/%{sdkdir}/jre/lib/%{archinstall}/libsplashscreen.so
-%ifarch %{ix86} %{arm}
+%ifarch %{ix86}
%dir %{_jvmdir}/%{sdkdir}/jre/lib/%{archinstall}/client
%{_jvmdir}/%{sdkdir}/jre/lib/%{archinstall}/client/libjsig.so
%attr(755,root,root) %{_jvmdir}/%{sdkdir}/jre/lib/%{archinstall}/client/libjvm.so
@@ -1167,7 +1144,7 @@
#belongs to full package
%exclude %{_jvmdir}/%{sdkdir}/jre/lib/%{archinstall}/xawt/libmawt.so
%config(noreplace) %{_jvmdir}/%{sdkdir}/jre/lib/%{archinstall}/jvm.cfg
-%if ! %{with jamvm} && ! %{with zero}
+%if ! %{with zero}
%ifnarch ppc64 ppc64le
%{_jvmdir}/%{sdkdir}/jre/lib/%{archinstall}/server/classes.jsa
%endif
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package procps for openSUSE:Factory checked in at 2014-06-30 21:43:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/procps (Old)
and /work/SRC/openSUSE:Factory/.procps.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "procps"
Changes:
--------
--- /work/SRC/openSUSE:Factory/procps/procps.changes 2014-05-27 07:09:01.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.procps.new/procps.changes 2014-06-30 21:43:21.000000000 +0200
@@ -1,0 +2,8 @@
+Thu Jun 26 07:17:08 UTC 2014 - werner(a)suse.de
+
+- Remove patches
+ procps-v3.3.3-chroot.diff
+ procps-v3.3.5-top-locale.patch
+ as already included in upstream code (bnc#884502)
+
+-------------------------------------------------------------------
Old:
----
procps-v3.3.3-chroot.diff
procps-v3.3.5-top-locale.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package multipath-tools for openSUSE:Factory checked in at 2014-06-30 21:43:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/multipath-tools (Old)
and /work/SRC/openSUSE:Factory/.multipath-tools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "multipath-tools"
Changes:
--------
--- /work/SRC/openSUSE:Factory/multipath-tools/multipath-tools.changes 2014-06-19 13:19:58.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.multipath-tools.new/multipath-tools.changes 2014-06-30 21:43:20.000000000 +0200
@@ -1,0 +2,14 @@
+Tue Jun 24 09:45:57 CEST 2014 - hare(a)suse.de
+
+- Fixup race condition with udev (bnc#883878)
+- Cleanup foreground operation handling in multipathd
+- Fix some minor issues in path reordering code (bnc#870465)
+- Patches from upstream:
+ * Use existing user friendly names if possible
+ * kpartx: fix extended partition size for >512b sectors
+ * Mismatch between allocation length and transfer length in
+ rdac prio
+ * Mismatch between allocation length and transfer length in
+ emc_clariion prio.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ multipath-tools-0.5.0-sles12.diff.bz2 ++++++
--- /var/tmp/diff_new_pack.JM7x81/_old 2014-06-30 21:43:21.000000000 +0200
+++ /var/tmp/diff_new_pack.JM7x81/_new 2014-06-30 21:43:21.000000000 +0200
@@ -110,6 +110,25 @@
int dm_addmap (int, const char *, const char *, const char *, uint64_t,
int, const char *, int, mode_t, uid_t, gid_t, uint32_t *);
int dm_map_present (char *);
+diff --git a/kpartx/dos.c b/kpartx/dos.c
+index 0e57f0e..90ad3bd 100644
+--- a/kpartx/dos.c
++++ b/kpartx/dos.c
+@@ -101,8 +101,12 @@ read_dos_pt(int fd, struct slice all, struct slice *sp, int ns) {
+ break;
+ }
+ if (is_extended(p.sys_type)) {
+- sp[i].size = sector_size_mul * 2; /* extended partitions only get two
+- sectors mapped for LILO to install */
++ /* extended partitions only get one or
++ two sectors mapped for LILO to install,
++ whichever is needed to have 1kb of space */
++ if (sector_size_mul == 1)
++ sp[i].size = 2;
++ else sp[i].size = sector_size_mul;
+ n += read_extended_partition(fd, &p, i, sp+n, ns-n);
+ }
+ }
diff --git a/kpartx/kpartx-compat.rules b/kpartx/kpartx-compat.rules
new file mode 100644
index 0000000..3b94f92
@@ -380,6 +399,128 @@
endif
OBJS = memory.o parser.o vector.o devmapper.o callout.o \
+diff --git a/libmultipath/alias.c b/libmultipath/alias.c
+index ab15185..f1879c9 100644
+--- a/libmultipath/alias.c
++++ b/libmultipath/alias.c
+@@ -67,7 +67,7 @@ scan_devname(char *alias, char *prefix)
+ return -1;
+
+ if (strlen(alias) == strlen(prefix))
+- return -1;
++ return -1;
+
+ if (strlen(alias) > strlen(prefix) + 7)
+ /* id of 'aaaaaaaa' overflows int */
+@@ -145,7 +145,7 @@ lookup_binding(FILE *f, char *map_wwid, char **map_alias, char *prefix)
+ }
+
+ static int
+-rlookup_binding(FILE *f, char *buff, char *map_alias)
++rlookup_binding(FILE *f, char *buff, char *map_alias, char *prefix)
+ {
+ char line[LINE_MAX];
+ unsigned int line_nr = 0;
+@@ -164,7 +164,7 @@ rlookup_binding(FILE *f, char *buff, char *map_alias)
+ alias = strtok(line, " \t");
+ if (!alias) /* blank line */
+ continue;
+- curr_id = scan_devname(alias, NULL); /* TBD: Why this call? */
++ curr_id = scan_devname(alias, prefix);
+ if (curr_id >= id)
+ id = curr_id + 1;
+ wwid = strtok(NULL, " \t");
+@@ -188,6 +188,11 @@ rlookup_binding(FILE *f, char *buff, char *map_alias)
+ }
+ }
+ condlog(3, "No matching alias [%s] in bindings file.", map_alias);
++
++ /* Get the theoretical id for this map alias.
++ * Used by use_existing_alias
++ */
++ id = scan_devname(map_alias, prefix);
+ return id;
+ }
+
+@@ -237,6 +242,59 @@ allocate_binding(int fd, char *wwid, int id, char *prefix)
+ }
+
+ char *
++use_existing_alias (char *wwid, char *file, char *alias_old,
++ char *prefix, int bindings_read_only)
++{
++ char *alias = NULL;
++ int id = 0;
++ int fd, can_write;
++ char buff[WWID_SIZE];
++ FILE *f;
++
++ fd = open_file(file, &can_write, BINDINGS_FILE_HEADER);
++ if (fd < 0)
++ return NULL;
++
++ f = fdopen(fd, "r");
++ if (!f) {
++ condlog(0, "cannot fdopen on bindings file descriptor");
++ close(fd);
++ return NULL;
++ }
++ /* lookup the binding. if it exsists, the wwid will be in buff
++ * either way, id contains the id for the alias
++ */
++ id = rlookup_binding(f , buff, alias_old, prefix);
++ if (id < 0)
++ goto out;
++
++ if (strlen(buff) > 0) {
++ /* if buff is our wwid, it's already
++ * allocated correctly
++ */
++ if (strcmp(buff, wwid) == 0)
++ alias = STRDUP(alias_old);
++ else {
++ alias = NULL;
++ condlog(0, "alias %s already bound to wwid %s, cannot reuse",
++ alias_old, buff);
++ }
++ goto out;
++ }
++
++ /* allocate the existing alias in the bindings file */
++ if (can_write && id && !bindings_read_only) {
++ alias = allocate_binding(fd, wwid, id, prefix);
++ condlog(0, "Allocated existing binding [%s] for WWID [%s]",
++ alias, wwid);
++ }
++
++out:
++ fclose(f);
++ return alias;
++}
++
++char *
+ get_user_friendly_alias(char *wwid, char *file, char *prefix,
+ int bindings_read_only)
+ {
+@@ -305,7 +363,7 @@ get_user_friendly_wwid(char *alias, char *buff, char *file)
+ return -1;
+ }
+
+- rlookup_binding(f, buff, alias);
++ rlookup_binding(f, buff, alias, NULL);
+ if (!strlen(buff)) {
+ fclose(f);
+ return -1;
+diff --git a/libmultipath/alias.h b/libmultipath/alias.h
+index 8ddd0b5..9cb3e8f 100644
+--- a/libmultipath/alias.h
++++ b/libmultipath/alias.h
+@@ -10,3 +10,5 @@
+ char *get_user_friendly_alias(char *wwid, char *file, char *prefix,
+ int bindings_readonly);
+ int get_user_friendly_wwid(char *alias, char *buff, char *file);
++char *use_existing_alias (char *wwid, char *file, char *alias_old,
++ char *prefix, int bindings_read_only);
diff --git a/libmultipath/blacklist.c b/libmultipath/blacklist.c
index 79ddcde..6420b4c 100644
--- a/libmultipath/blacklist.c
@@ -511,7 +652,7 @@
struct hwentry {
diff --git a/libmultipath/configure.c b/libmultipath/configure.c
-index 8c09791..0ddd3d5 100644
+index 8c09791..c530391 100644
--- a/libmultipath/configure.c
+++ b/libmultipath/configure.c
@@ -39,6 +39,211 @@
@@ -535,7 +676,7 @@
+ pp = VECTOR_SLOT(pgp->paths, 0);
+
+ if (sysfs_get_host_adapter_name(pp, adapter_name1))
-+ return 1;
++ goto out;
+ /* create a new host adapter group
+ */
+ agp = alloc_adaptergroup();
@@ -749,6 +890,15 @@
/*
* transform the mp->pg vector of vectors of paths
* into a mp->params strings to feed the device-mapper
+@@ -308,7 +529,7 @@ lock_multipath (struct multipath * mpp, int lock)
+ if (!pgp->paths)
+ continue;
+ vector_foreach_slot(pgp->paths, pp, j) {
+- if (lock && flock(pp->fd, LOCK_EX | LOCK_NB) &&
++ if (lock && flock(pp->fd, LOCK_SH | LOCK_NB) &&
+ errno == EWOULDBLOCK)
+ goto fail;
+ else if (!lock)
@@ -389,13 +610,13 @@ domap (struct multipath * mpp, char * params)
case ACT_RELOAD:
r = dm_addmap_reload(mpp, params);
@@ -989,7 +1139,7 @@
conf->fast_io_fail = MP_FAST_IO_FAIL_OFF;
else if (sscanf(buff, "%d", &conf->fast_io_fail) != 1 ||
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
-index 228ffd3..a37eb40 100644
+index 228ffd3..f42e59c 100644
--- a/libmultipath/discovery.c
+++ b/libmultipath/discovery.c
@@ -4,6 +4,7 @@
@@ -1194,7 +1344,7 @@
+ "iscsi_host", host_name);
+ if (hostdev) {
+ value = udev_device_get_sysattr_value(hostdev,
-+ "ip_address");
++ "ipaddress");
+ if (value) {
+ strncpy(ip_address, value, SLOT_NAME_SIZE);
+ udev_device_unref(hostdev);
@@ -1432,11 +1582,99 @@
return;
src = prio_lookup(dst->name);
+diff --git a/libmultipath/prioritizers/emc.c b/libmultipath/prioritizers/emc.c
+index 87e9a8d..91b3d90 100644
+--- a/libmultipath/prioritizers/emc.c
++++ b/libmultipath/prioritizers/emc.c
+@@ -14,15 +14,15 @@
+
+ int emc_clariion_prio(const char *dev, int fd)
+ {
+- unsigned char sense_buffer[256];
++ unsigned char sense_buffer[128];
+ unsigned char sb[128];
+ unsigned char inqCmdBlk[INQUIRY_CMDLEN] = {INQUIRY_CMD, 1, 0xC0, 0,
+- sizeof(sb), 0};
++ sizeof(sense_buffer), 0};
+ struct sg_io_hdr io_hdr;
+ int ret = PRIO_UNDEF;
+
+ memset(&io_hdr, 0, sizeof (struct sg_io_hdr));
+- memset(&sense_buffer, 0, 256);
++ memset(&sense_buffer, 0, 128);
+ io_hdr.interface_id = 'S';
+ io_hdr.cmd_len = sizeof (inqCmdBlk);
+ io_hdr.mx_sb_len = sizeof (sb);
+diff --git a/libmultipath/prioritizers/rdac.c b/libmultipath/prioritizers/rdac.c
+index 441b3b0..2bf1443 100644
+--- a/libmultipath/prioritizers/rdac.c
++++ b/libmultipath/prioritizers/rdac.c
+@@ -14,15 +14,15 @@
+
+ int rdac_prio(const char *dev, int fd)
+ {
+- unsigned char sense_buffer[256];
++ unsigned char sense_buffer[128];
+ unsigned char sb[128];
+ unsigned char inqCmdBlk[INQUIRY_CMDLEN] = {INQUIRY_CMD, 1, 0xC9, 0,
+- sizeof(sb), 0};
++ sizeof(sense_buffer), 0};
+ struct sg_io_hdr io_hdr;
+ int ret = 0;
+
+ memset(&io_hdr, 0, sizeof (struct sg_io_hdr));
+- memset(sense_buffer, 0, 256);
++ memset(sense_buffer, 0, 128);
+ io_hdr.interface_id = 'S';
+ io_hdr.cmd_len = sizeof (inqCmdBlk);
+ io_hdr.mx_sb_len = sizeof (sb);
diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
-index 7b7944d..72001a8 100644
+index 7b7944d..8c95b5a 100644
--- a/libmultipath/propsel.c
+++ b/libmultipath/propsel.c
-@@ -363,30 +363,30 @@ out:
+@@ -253,19 +253,31 @@ want_user_friendly_names(struct multipath * mp)
+ extern int
+ select_alias (struct multipath * mp)
+ {
+- if (mp->mpe && mp->mpe->alias)
++ if (mp->mpe && mp->mpe->alias) {
+ mp->alias = STRDUP(mp->mpe->alias);
+- else {
+- mp->alias = NULL;
+- if (want_user_friendly_names(mp)) {
+- select_alias_prefix(mp);
+- mp->alias = get_user_friendly_alias(mp->wwid,
+- conf->bindings_file, mp->alias_prefix, conf->bindings_read_only);
+- }
+- if (mp->alias == NULL)
+- mp->alias = STRDUP(mp->wwid);
++ goto out;
+ }
+
++ mp->alias = NULL;
++ if (!want_user_friendly_names(mp))
++ goto out;
++
++ select_alias_prefix(mp);
++
++ if (strlen(mp->alias_old) > 0) {
++ mp->alias = use_existing_alias(mp->wwid, conf->bindings_file,
++ mp->alias_old, mp->alias_prefix,
++ conf->bindings_read_only);
++ memset (mp->alias_old, 0, WWID_SIZE);
++ }
++
++ if (mp->alias == NULL)
++ mp->alias = get_user_friendly_alias(mp->wwid,
++ conf->bindings_file, mp->alias_prefix, conf->bindings_read_only);
++out:
++ if (mp->alias == NULL)
++ mp->alias = STRDUP(mp->wwid);
++
+ return mp->alias ? 0 : 1;
+ }
+
+@@ -363,30 +375,30 @@ out:
extern int
select_getuid (struct path * pp)
{
@@ -1582,7 +1820,7 @@
find_mp_by_minor (vector mpvec, int minor)
{
diff --git a/libmultipath/structs.h b/libmultipath/structs.h
-index 64de06e..772a7d7 100644
+index 64de06e..af03edf 100644
--- a/libmultipath/structs.h
+++ b/libmultipath/structs.h
@@ -15,7 +15,8 @@
@@ -1591,7 +1829,7 @@
#define NAME_SIZE 512
-
+#define HOST_NAME_LEN 8
-+#define SLOT_NAME_SIZE 32
++#define SLOT_NAME_SIZE 40
#define SCSI_VENDOR_SIZE 9
#define SCSI_PRODUCT_SIZE 17
@@ -1632,7 +1870,7 @@
int store_pathgroup (vector pgvec, struct pathgroup * pgp);
diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
-index 76c7e02..411903c 100644
+index 76c7e02..0f22590 100644
--- a/libmultipath/structs_vec.c
+++ b/libmultipath/structs_vec.c
@@ -226,6 +226,12 @@ extract_hwe_from_path(struct multipath * mpp)
@@ -1648,6 +1886,35 @@
condlog(3, "%s: vendor = %s", pp->dev, pp->vendor_id);
condlog(3, "%s: product = %s", pp->dev, pp->product_id);
condlog(3, "%s: rev = %s", pp->dev, pp->rev);
+@@ -403,6 +409,20 @@ out:
+ return NULL;
+ }
+
++static void
++find_existing_alias (struct multipath * mpp,
++ struct vectors *vecs)
++{
++ struct multipath * mp;
++ int i;
++
++ vector_foreach_slot (vecs->mpvec, mp, i)
++ if (strcmp(mp->wwid, mpp->wwid) == 0) {
++ strncpy(mpp->alias_old, mp->alias, WWID_SIZE);
++ return;
++ }
++}
++
+ extern struct multipath *
+ add_map_with_path (struct vectors * vecs,
+ struct path * pp, int add_vec)
+@@ -416,6 +436,7 @@ add_map_with_path (struct vectors * vecs,
+ mpp->hwe = pp->hwe;
+
+ strcpy(mpp->wwid, pp->wwid);
++ find_existing_alias(mpp, vecs);
+ if (select_alias(mpp))
+ goto out;
+ mpp->size = pp->size;
diff --git a/libmultipath/sysfs.c b/libmultipath/sysfs.c
index e5834f9..298a0ba 100644
--- a/libmultipath/sysfs.c
@@ -2040,10 +2307,35 @@
int cli_list_daemon (void * v, char ** reply, int * len, void * data);
int cli_list_maps (void * v, char ** reply, int * len, void * data);
diff --git a/multipathd/main.c b/multipathd/main.c
-index af93f32..8bd89d3 100644
+index af93f32..14ce939 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
-@@ -864,6 +864,7 @@ uxlsnrloop (void * ap)
+@@ -449,6 +449,7 @@ ev_add_path (struct path * pp, struct vectors * vecs)
+ char params[PARAMS_SIZE] = {0};
+ int retries = 3;
+ int start_waiter = 0;
++ int ret;
+
+ /*
+ * need path UID to go any further
+@@ -523,7 +524,15 @@ rescan:
+ /*
+ * reload the map for the multipath mapped device
+ */
+- if (domap(mpp, params) <= 0) {
++retry:
++ ret = domap(mpp, params);
++ if (ret <= 0) {
++ if (ret < 0 && retries-- > 0) {
++ condlog(0, "%s: retry domap for addition of new "
++ "path %s", mpp->alias, pp->dev);
++ sleep(1);
++ goto retry;
++ }
+ condlog(0, "%s: failed in domap for addition of new "
+ "path %s", mpp->alias, pp->dev);
+ /*
+@@ -864,6 +873,7 @@ uxlsnrloop (void * ap)
set_handler_callback(LIST+PATHS, cli_list_paths);
set_handler_callback(LIST+PATHS+FMT, cli_list_paths_fmt);
@@ -2051,7 +2343,7 @@
set_handler_callback(LIST+MAPS, cli_list_maps);
set_handler_callback(LIST+STATUS, cli_list_status);
set_handler_callback(LIST+DAEMON, cli_list_daemon);
-@@ -1118,9 +1119,6 @@ check_path (struct vectors * vecs, struct path * pp)
+@@ -1118,9 +1128,6 @@ check_path (struct vectors * vecs, struct path * pp)
int chkr_new_path_up = 0;
int oldchkrstate = pp->chkrstate;
@@ -2061,7 +2353,7 @@
if (pp->tick && --pp->tick)
return 0; /* don't check this path yet */
-@@ -1663,7 +1661,7 @@ child (void * param)
+@@ -1663,7 +1670,7 @@ child (void * param)
udev = udev_new();
setup_thread_attr(&misc_attr, 64 * 1024, 1);
@@ -2070,12 +2362,31 @@
setup_thread_attr(&waiter_attr, 32 * 1024, 1);
if (logsink == 1) {
-@@ -2000,9 +1998,10 @@ main (int argc, char *argv[])
+@@ -1939,6 +1946,7 @@ main (int argc, char *argv[])
+ extern int optind;
+ int arg;
+ int err;
++ int foreground = 0;
+
+ logsink = 1;
+ running_state = DAEMON_INIT;
+@@ -1963,7 +1971,9 @@ main (int argc, char *argv[])
+ while ((arg = getopt(argc, argv, ":dsv:k::")) != EOF ) {
+ switch(arg) {
+ case 'd':
+- logsink = 0;
++ foreground = 1;
++ if (logsink > 0)
++ logsink = 0;
+ //debug=1; /* ### comment me out ### */
+ break;
+ case 'v':
+@@ -2000,9 +2010,10 @@ main (int argc, char *argv[])
exit(0);
}
- if (logsink < 1)
-+ if (logsink < 1) {
++ if (foreground) {
err = 0;
- else
+ daemon_pid = getpid();
@@ -2279,10 +2590,24 @@
+fi
diff --git a/rpm/multipath-tools.changes b/rpm/multipath-tools.changes
new file mode 100644
-index 0000000..021329d
+index 0000000..79e4c27
--- /dev/null
+++ b/rpm/multipath-tools.changes
-@@ -0,0 +1,1141 @@
+@@ -0,0 +1,1155 @@
++-------------------------------------------------------------------
++Tue Jun 24 09:45:57 CEST 2014 - hare(a)suse.de
++
++- Fixup race condition with udev (bnc#883878)
++- Cleanup foreground operation handling in multipathd
++- Fix some minor issues in path reordering code (bnc#870465)
++- Patches from upstream:
++ * Use existing user friendly names if possible
++ * kpartx: fix extended partition size for >512b sectors
++ * Mismatch between allocation length and transfer length in
++ rdac prio
++ * Mismatch between allocation length and transfer length in
++ emc_clariion prio.
++
+-------------------------------------------------------------------
+Fri Jun 13 10:51:48 CEST 2014 - hare(a)suse.de
+
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package kernel-firmware for openSUSE:Factory checked in at 2014-06-30 21:43:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kernel-firmware (Old)
and /work/SRC/openSUSE:Factory/.kernel-firmware.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kernel-firmware"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kernel-firmware/kernel-firmware.changes 2014-06-25 15:24:21.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.kernel-firmware.new/kernel-firmware.changes 2014-06-30 21:43:16.000000000 +0200
@@ -1,0 +2,6 @@
+Tue Jun 24 15:31:52 CEST 2014 - tiwai(a)suse.de
+
+- Updated to git snapshot 20140624:
+ including previous intel firmware files
+
+-------------------------------------------------------------------
Old:
----
ibt-hw-37.8.10-fw-1.10.2.27.d.bseq
ibt-hw-37.8.bseq
iwlwifi-7265-ucode-22.24.8.0.tgz
linux-firmware-20140319git.tar.bz2
New:
----
linux-firmware-20140624git.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kernel-firmware.spec ++++++
--- /var/tmp/diff_new_pack.wtpaJG/_old 2014-06-30 21:43:20.000000000 +0200
+++ /var/tmp/diff_new_pack.wtpaJG/_new 2014-06-30 21:43:20.000000000 +0200
@@ -19,18 +19,15 @@
Name: kernel-firmware
BuildRequires: fdupes
BuildRequires: kernel-default
-Version: 20140319git
+Version: 20140624git
Release: 0
Summary: Linux kernel firmware files
License: SUSE-Firmware and GPL-2.0 and GPL-2.0+ and MIT
Group: System/Kernel
-Url: http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git
+Url: https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/
# Created with git archive | bzip2
Source0: linux-firmware-%{version}.tar.bz2
Source1: firmware.sh
-Source2: iwlwifi-7265-ucode-22.24.8.0.tgz
-Source3: ibt-hw-37.8.10-fw-1.10.2.27.d.bseq
-Source4: ibt-hw-37.8.bseq
Source5: mkinitrd_setup-amd_microcode.sh
Source6: mkinitrd_boot-amd_microcode.sh
%define __find_supplements bash %_sourcedir/firmware.sh --find-supplements
@@ -82,11 +79,7 @@
This package contains the microcode files used by AMD CPUs.
%prep
-%setup -q -c kernel-firmware -a 2
-mv iwlwifi-7265-ucode-22.24.8.0/* .
-rmdir iwlwifi-7265-ucode-22.24.8.0
-install -c -m 0644 %{S:3} intel/
-install -c -m 0644 %{S:4} intel/
+%setup -q -c kernel-firmware
%build
# nothing to do
++++++ linux-firmware-20140319git.tar.bz2 -> linux-firmware-20140624git.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/kernel-firmware/linux-firmware-20140319git.tar.bz2 /work/SRC/openSUSE:Factory/.kernel-firmware.new/linux-firmware-20140624git.tar.bz2 differ: char 11, line 1
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package rsync for openSUSE:Factory checked in at 2014-06-30 21:43:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rsync (Old)
and /work/SRC/openSUSE:Factory/.rsync.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rsync"
Changes:
--------
--- /work/SRC/openSUSE:Factory/rsync/rsync.changes 2014-04-23 20:35:49.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.rsync.new/rsync.changes 2014-06-30 21:43:14.000000000 +0200
@@ -1,0 +2,8 @@
+Fri Jun 20 21:11:04 UTC 2014 - crrodriguez(a)opensuse.org
+
+- Remove sysvinit support on distros that have systemd
+- Remove libattr-devel from buildRequires, application does
+ not link to libattr but it picks the glibc implementation
+ instead.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rsync.spec ++++++
--- /var/tmp/diff_new_pack.5TJmZA/_old 2014-06-30 21:43:15.000000000 +0200
+++ /var/tmp/diff_new_pack.5TJmZA/_new 2014-06-30 21:43:15.000000000 +0200
@@ -46,7 +46,6 @@
Patch5: rsync-CVE-2014-2855.patch
BuildRequires: autoconf
BuildRequires: libacl-devel
-BuildRequires: libattr-devel
BuildRequires: openslp-devel
BuildRequires: popt-devel
BuildRequires: zlib-devel
@@ -116,14 +115,16 @@
install -m 755 support/rsyncstats %{buildroot}%{_prefix}/bin
install -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/rsync
install -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/xinetd.d/rsync
-install -m 755 %{SOURCE4} %{buildroot}%{_initddir}/rsyncd
install -m 644 %{SOURCE5} %{buildroot}%{_sysconfdir}/rsyncd.conf
install -m 600 %{SOURCE6} %{buildroot}%{_sysconfdir}/rsyncd.secrets
-ln -sf ../../etc/init.d/rsyncd %{buildroot}%{_sbindir}/rcrsyncd
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services
install -m 644 %{SOURCE7} %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/rsync-server
%if 0%{?has_systemd}
install -D -m 0644 %SOURCE8 %{buildroot}%{_unitdir}/rsyncd.service
+ln -sf /usr/sbin/service %{buildroot}%{_sbindir}/rcrsyncd
+%else
+install -m 755 %{SOURCE4} %{buildroot}%{_initddir}/rsyncd
+ln -sf ../../etc/init.d/rsyncd %{buildroot}%{_sbindir}/rcrsyncd
%endif
%pre
@@ -132,37 +133,41 @@
%endif
%preun
-%stop_on_removal rsyncd
%if 0%{?has_systemd}
%service_del_preun rsyncd.service
+%else
+%stop_on_removal rsyncd
%endif
%post
-%fillup_and_insserv rsyncd
if ! grep -q "^pid file" /etc/rsyncd.conf ; then
sed -i -e "/^log file/{;p;s@\(.*\)@pid file = /var/run/rsyncd.pid@;}" /etc/rsyncd.conf
fi
%if 0%{?has_systemd}
%service_add_post rsyncd.service
+%else
+%fillup_and_insserv rsyncd
%endif
%postun
-%restart_on_update rsyncd
-%insserv_cleanup
%if 0%{?has_systemd}
%service_del_postun rsyncd.service
+%else
+%restart_on_update rsyncd
+%insserv_cleanup
%endif
%files
%defattr(-,root,root)
%if 0%{?has_systemd}
%{_unitdir}/rsyncd.service
+%else
+%config %{_sysconfdir}/init.d/rsyncd
%endif
%config(noreplace) %{_sysconfdir}/rsyncd.conf
%config(noreplace) %{_sysconfdir}/rsyncd.secrets
%config(noreplace) %{_sysconfdir}/logrotate.d/rsync
%config(noreplace) %{_sysconfdir}/xinetd.d/rsync
-%config %{_sysconfdir}/init.d/rsyncd
%{_sbindir}/rcrsyncd
%{_sbindir}/rsyncd
%{_bindir}/rsyncstats
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0