summaryrefslogtreecommitdiff
path: root/sys-fs/eudev/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /sys-fs/eudev/files
reinit the tree, so we can have metadata
Diffstat (limited to 'sys-fs/eudev/files')
-rw-r--r--sys-fs/eudev/files/40-gentoo.rules10
-rw-r--r--sys-fs/eudev/files/eudev-exclude-MD.patch53
-rw-r--r--sys-fs/eudev/files/eudev-fix-disk-by-id.patch43
-rw-r--r--sys-fs/eudev/files/eudev-fix-selinux-headers.patch32
-rw-r--r--sys-fs/eudev/files/eudev-fix-selinux-linking.patch30
-rw-r--r--sys-fs/eudev/files/udev-postmount55
6 files changed, 223 insertions, 0 deletions
diff --git a/sys-fs/eudev/files/40-gentoo.rules b/sys-fs/eudev/files/40-gentoo.rules
new file mode 100644
index 000000000000..365c6ea0d441
--- /dev/null
+++ b/sys-fs/eudev/files/40-gentoo.rules
@@ -0,0 +1,10 @@
+# do not edit this file, it will be overwritten on update
+
+# Propably unrequired, check how it is with OSS/OSS4, then remove
+SUBSYSTEM=="snd", GROUP="audio"
+
+# Gentoo specific usb group
+SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="usb"
+
+# Keep this for Linux 2.6.32 support wrt #457868
+SUBSYSTEM=="mem", KERNEL=="null|zero|full|random|urandom", MODE="0666"
diff --git a/sys-fs/eudev/files/eudev-exclude-MD.patch b/sys-fs/eudev/files/eudev-exclude-MD.patch
new file mode 100644
index 000000000000..d56026168809
--- /dev/null
+++ b/sys-fs/eudev/files/eudev-exclude-MD.patch
@@ -0,0 +1,53 @@
+From 2e5b17d01347d3c3118be2b8ad63d20415dbb1f0 Mon Sep 17 00:00:00 2001
+From: Kay Sievers <kay@vrfy.org>
+Date: Thu, 24 Jul 2014 23:37:35 +0200
+Subject: [PATCH] udev: exclude MD from block device ownership event locking
+
+MD instantiates devices at open(). This is incomptible with the
+locking logic, as the "change" event emitted when stopping a
+device will bring it back.
+---
+ src/udev/udevd.c | 23 +++++++----------------
+ 1 file changed, 7 insertions(+), 16 deletions(-)
+
+diff --git a/src/udev/udevd.c b/src/udev/udevd.c
+index a45d324..db935d6 100644
+--- a/src/udev/udevd.c
++++ b/src/udev/udevd.c
+@@ -285,26 +285,17 @@ static void worker_new(struct event *event)
+ udev_event->exec_delay = exec_delay;
+
+ /*
+- * Take a "read lock" on the device node; this establishes
++ * Take a shared lock on the device node; this establishes
+ * a concept of device "ownership" to serialize device
+- * access. External processes holding a "write lock" will
++ * access. External processes holding an exclusive lock will
+ * cause udev to skip the event handling; in the case udev
+- * acquired the lock, the external process will block until
++ * acquired the lock, the external process can block until
+ * udev has finished its event handling.
+ */
+-
+- /*
+- * <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(udev_device_get_sysname(dev), "dm-")) {
++ if (!streq_ptr(udev_device_get_action(dev), "remove") &&
++ streq_ptr("block", udev_device_get_subsystem(dev)) &&
++ !startswith(udev_device_get_sysname(dev), "dm-") &&
++ !startswith(udev_device_get_sysname(dev), "md")) {
+ struct udev_device *d = dev;
+
+ if (streq_ptr("partition", udev_device_get_devtype(d)))
+--
+1.8.5.5
+
diff --git a/sys-fs/eudev/files/eudev-fix-disk-by-id.patch b/sys-fs/eudev/files/eudev-fix-disk-by-id.patch
new file mode 100644
index 000000000000..07bc0c518c62
--- /dev/null
+++ b/sys-fs/eudev/files/eudev-fix-disk-by-id.patch
@@ -0,0 +1,43 @@
+diff -ruN eudev-3.2.2-orig/rules/60-persistent-storage.rules eudev-3.2.2-new/rules/60-persistent-storage.rules
+--- eudev-3.2.2-orig/rules/60-persistent-storage.rules 2016-12-11 16:41:58.000000000 +0100
++++ eudev-3.2.2-new/rules/60-persistent-storage.rules 2017-04-26 23:14:04.197109882 +0200
+@@ -83,6 +83,9 @@
+ # by-id (World Wide Name)
+ ENV{DEVTYPE}=="disk", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}"
+ ENV{DEVTYPE}=="partition", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}-part%n"
++#(Temporary) Compatibility rule for old broken WWNs in case some uses them:
++ENV{DEVTYPE}=="disk", ENV{ID_WWN_WITH_EXTENSION_REVERSED_DO_NOT_USE}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION_REVERSED_DO_NOT_USE}"
++ENV{DEVTYPE}=="partition", ENV{ID_WWN_WITH_EXTENSION_REVERSED_DO_NOT_USE}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION_REVERSED_DO_NOT_USE}-part%n"
+
+ # by-partlabel/by-partuuid links (partition metadata)
+ ENV{ID_PART_ENTRY_UUID}=="?*", SYMLINK+="disk/by-partuuid/$env{ID_PART_ENTRY_UUID}"
+diff -ruN eudev-3.2.2-orig/src/ata_id/ata_id.c eudev-3.2.2-new/src/ata_id/ata_id.c
+--- eudev-3.2.2-orig/src/ata_id/ata_id.c 2016-11-17 22:14:19.000000000 +0100
++++ eudev-3.2.2-new/src/ata_id/ata_id.c 2017-04-26 23:18:51.116127146 +0200
+@@ -645,10 +645,22 @@
+ * All other values are reserved.
+ */
+ word = identify.wyde[108];
+- if ((word & 0xf000) == 0x5000)
+- printf("ID_WWN=0x%1$"PRIu64"x\n"
+- "ID_WWN_WITH_EXTENSION=0x%1$"PRIu64"x\n",
+- identify.octa[108/4]);
++ if ((word & 0xf000) == 0x5000){
++ uint64_t wwn;
++
++ wwn = identify.wyde[108];
++ wwn <<= 16;
++ wwn |= identify.wyde[109];
++ wwn <<= 16;
++ wwn |= identify.wyde[110];
++ wwn <<= 16;
++ wwn |= identify.wyde[111]; /* Could possibly done nicer ? */
++ printf("ID_WWN=0x%1$" PRIx64 "\n"
++ "ID_WWN_WITH_EXTENSION=0x%1$" PRIx64 "\n",
++ wwn);
++ printf("ID_WWN_WITH_EXTENSION_REVERSED_DO_NOT_USE=0x%" PRIu64 "x\n",
++ identify.octa[108/4]);
++ }
+
+ /* from Linux's include/linux/ata.h */
+ if (identify.wyde[0] == 0x848a ||
diff --git a/sys-fs/eudev/files/eudev-fix-selinux-headers.patch b/sys-fs/eudev/files/eudev-fix-selinux-headers.patch
new file mode 100644
index 000000000000..1d1d8dcc236f
--- /dev/null
+++ b/sys-fs/eudev/files/eudev-fix-selinux-headers.patch
@@ -0,0 +1,32 @@
+From 361aa273d6fedda161c14b24302f009a58331693 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20S=C5=82awi=C5=84ski?= <amade@asmblr.net>
+Date: Tue, 2 Sep 2014 21:20:24 +0200
+Subject: [PATCH] fix SELINUX build
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Amadeusz Sławiński <amade@asmblr.net>
+---
+ src/shared/label.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/shared/label.c b/src/shared/label.c
+index 3c6277a..e674241 100644
+--- a/src/shared/label.c
++++ b/src/shared/label.c
+@@ -23,6 +23,11 @@
+ #include <sys/socket.h>
+ #include <sys/un.h>
+
++#ifdef HAVE_SELINUX
++#include <selinux/selinux.h>
++#include <selinux/label.h>
++#endif
++
+ #include "label.h"
+ #include "util.h"
+ #include "path-util.h"
+--
+2.1.0
+
diff --git a/sys-fs/eudev/files/eudev-fix-selinux-linking.patch b/sys-fs/eudev/files/eudev-fix-selinux-linking.patch
new file mode 100644
index 000000000000..6a5e05bcaf1e
--- /dev/null
+++ b/sys-fs/eudev/files/eudev-fix-selinux-linking.patch
@@ -0,0 +1,30 @@
+From e7f7217b9b9dbb3304116eae2b0ad90c84ede034 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20S=C5=82awi=C5=84ski?= <amade@asmblr.net>
+Date: Wed, 3 Sep 2014 11:01:31 +0200
+Subject: [PATCH] link libudev against SELINUX
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Amadeusz Sławiński <amade@asmblr.net>
+---
+ src/libudev/Makefile.am | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/libudev/Makefile.am b/src/libudev/Makefile.am
+index 868a9fc..72e43bc 100644
+--- a/src/libudev/Makefile.am
++++ b/src/libudev/Makefile.am
+@@ -54,7 +54,8 @@ libudev_la_LDFLAGS = \
+ -Wl,--version-script=$(top_srcdir)/src/libudev/libudev.sym
+
+ libudev_la_LIBADD = \
+- $(top_builddir)/src/shared/libudev_shared.la
++ $(top_builddir)/src/shared/libudev_shared.la \
++ $(SELINUX_LIBS)
+
+ libudev_private_la_SOURCES = \
+ $(libudev_la_SOURCES) \
+--
+2.1.0
+
diff --git a/sys-fs/eudev/files/udev-postmount b/sys-fs/eudev/files/udev-postmount
new file mode 100644
index 000000000000..f1f94f48902a
--- /dev/null
+++ b/sys-fs/eudev/files/udev-postmount
@@ -0,0 +1,55 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+depend()
+{
+ need localmount
+ keyword -vserver -lxc
+}
+
+dir_writeable()
+{
+ touch "$1"/.test.$$ 2>/dev/null && rm "$1"/.test.$$
+}
+
+# store persistent-rules that got created while booting
+# when / was still read-only
+store_persistent_rules()
+{
+ # create /etc/udev/rules.d if it does not exist and /etc/udev is writable
+ [ -d /etc/udev/rules.d ] || \
+ dir_writeable /etc/udev && \
+ mkdir -p /etc/udev/rules.d
+
+ # only continue if rules-directory is writable
+ dir_writeable /etc/udev/rules.d || return 0
+
+ local file dest
+ for file in /run/udev/tmp-rules--*; do
+ dest=${file##*tmp-rules--}
+ [ "$dest" = '*' ] && break
+ type=${dest##70-persistent-}
+ type=${type%%.rules}
+ ebegin "Saving udev persistent ${type} rules to /etc/udev/rules.d"
+ cat "$file" >> /etc/udev/rules.d/"$dest" && rm -f "$file"
+ eend $? "Failed moving persistent rules!"
+ done
+}
+
+start()
+{
+ # check if this system uses udev
+ [ -d /run/udev ] || return 0
+
+ # store persistent-rules that got created while booting
+ # when / was still read-only
+ store_persistent_rules
+}
+
+stop()
+{
+ return 0
+}
+
+# vim:ts=4