diff --git a/README.md b/README.md index 2327f77..1f7980c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ # systemd -A system and service manager compatible with SysV and LSB init scripts \ No newline at end of file +systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. +systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux cgroups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. +It can work as a drop-in replacement for sysvinit. + diff --git a/systemd-191-upstream-build-fix.patch b/systemd-191-upstream-build-fix.patch new file mode 100644 index 0000000..3034e20 --- /dev/null +++ b/systemd-191-upstream-build-fix.patch @@ -0,0 +1,20 @@ +From e2c8b07dcb50c2adf64cdfb22e4a496fc76576fb Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 21 Sep 2012 22:16:13 +0000 +Subject: journal: bring mmap cache prototype in sync + +--- +diff --git a/src/journal/mmap-cache.h b/src/journal/mmap-cache.h +index de34634..0c42fb8 100644 +--- a/src/journal/mmap-cache.h ++++ b/src/journal/mmap-cache.h +@@ -31,6 +31,6 @@ MMapCache* mmap_cache_new(void); + MMapCache* mmap_cache_ref(MMapCache *m); + MMapCache* mmap_cache_unref(MMapCache *m); + +-int mmap_cache_get(MMapCache *m, int fd, int prot, unsigned context, bool keep_always, uint64_t offset, uint64_t size, struct stat *st, void **ret); ++int mmap_cache_get(MMapCache *m, int fd, int prot, unsigned context, bool keep_always, uint64_t offset, size_t size, struct stat *st, void **ret); + void mmap_cache_close_fd(MMapCache *m, int fd); + void mmap_cache_close_context(MMapCache *m, unsigned context); +-- +cgit v0.9.0.2-2-gbebe diff --git a/systemd-197-revert-only-add-support.patch b/systemd-197-revert-only-add-support.patch new file mode 100644 index 0000000..426afea --- /dev/null +++ b/systemd-197-revert-only-add-support.patch @@ -0,0 +1,63 @@ +From 48a849ee17fb25e0001bfcc0f28a4aa633d016a1 Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Fri, 04 Jan 2013 15:15:46 +0000 +Subject: udev: set device node permissions only at "add" events + +--- +diff --git a/TODO b/TODO +index 8ebb951..35d96ec 100644 +--- a/TODO ++++ b/TODO +@@ -29,8 +29,6 @@ Features: + + * exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty. + +-* udev: only reset mode/gid of /dev/tty1 and friends on ACTION=add, not ACTION=changed +- + * DeviceAllow/DeviceDeny: disallow everything by default, but whitelist /dev/zero, /dev/null and friends + + * service: watchdog logic: for testing purposes allow ping, but do not require pong +diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c +index 7774303..1e378ad 100644 +--- a/src/udev/udev-node.c ++++ b/src/udev/udev-node.c +@@ -279,22 +279,23 @@ static int node_fixup(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid + goto out; + } + +- if ((stats.st_mode & 0777) != (mode & 0777) || stats.st_uid != uid || stats.st_gid != gid) { +- log_debug("set permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid); +- chmod(devnode, mode); +- chown(devnode, uid, gid); +- } else { +- log_debug("preserve permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid); +- } +- + /* +- * Set initial selinux file context only on add events. +- * We set the proper context on bootup (triger) or for newly +- * added devices, but we don't change it later, in case +- * something else has set a custom context in the meantime. ++ * Set permissions and selinux file context only on add events. We always ++ * set it on bootup (coldplug) with "trigger --action=add" for all devices ++ * and for any newly added devices (hotplug). We don't want to change it ++ * later, in case something else has applied custom settings in the meantime. + */ +- if (strcmp(udev_device_get_action(dev), "add") == 0) +- label_fix(devnode, true, false); ++ if (strcmp(udev_device_get_action(dev), "add") == 0) { ++ if ((stats.st_mode & 0777) != (mode & 0777) || stats.st_uid != uid || stats.st_gid != gid) { ++ log_debug("set permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid); ++ chmod(devnode, mode); ++ chown(devnode, uid, gid); ++ } else { ++ log_debug("preserve permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid); ++ } ++ ++ label_fix(devnode, true, false); ++ } + + /* always update timestamp when we re-use the node, like on media change events */ + utimensat(AT_FDCWD, devnode, NULL, 0); +-- +cgit v0.9.0.2-2-gbebe diff --git a/systemd-198-lock-to-tty-group-openmamba.patch b/systemd-198-lock-to-tty-group-openmamba.patch new file mode 100644 index 0000000..1c51fd5 --- /dev/null +++ b/systemd-198-lock-to-tty-group-openmamba.patch @@ -0,0 +1,12 @@ +diff -Nru systemd-198.orig/tmpfiles.d/legacy.conf systemd-198/tmpfiles.d/legacy.conf +--- systemd-198.orig/tmpfiles.d/legacy.conf 2013-01-07 22:50:49.082315571 +0100 ++++ systemd-198/tmpfiles.d/legacy.conf 2013-03-17 16:02:42.445059870 +0100 +@@ -23,7 +23,7 @@ + # On modern systems a BSD file lock is a better choice if + # serialization is needed on those devices. + +-d /run/lock/lockdev 0775 root lock - ++d /run/lock/lockdev 0775 root tty - + + # /forcefsck, /fastboot and /forcequotecheck are deprecated in favor of the + # kernel command line options 'fsck.mode=force', 'fsck.mode=skip' and diff --git a/systemd-205-disable-systemd-coredump.patch b/systemd-205-disable-systemd-coredump.patch new file mode 100644 index 0000000..07eb1ed --- /dev/null +++ b/systemd-205-disable-systemd-coredump.patch @@ -0,0 +1,13 @@ +--- systemd-205/sysctl.d/50-coredump.conf.in.orig 2013-07-17 14:57:45.487845209 +0200 ++++ systemd-205/sysctl.d/50-coredump.conf.in 2013-07-17 14:59:18.777993310 +0200 +@@ -7,4 +7,9 @@ + + # See sysctl.d(5) and core(5) for for details. + +-kernel.core_pattern=|@rootlibexecdir@/systemd-coredump %p %u %g %s %t %e ++# NOTE: systemd-coredump is disabled; to enable it create a file called ++# /etc/sysctl.d/50-coredump.conf with the following uncommented line: ++#kernel.core_pattern=|@rootlibexecdir@/systemd-coredump %p %u %g %s %t %e ++ ++kernel.core_pattern = core ++kernel.core_users_pid = 0 diff --git a/systemd-207-create_wants_symlink.patch b/systemd-207-create_wants_symlink.patch new file mode 100644 index 0000000..a7b174e --- /dev/null +++ b/systemd-207-create_wants_symlink.patch @@ -0,0 +1,85 @@ +From 4e82fe5213bedcb70e25c0270e516d5f2706d8c8 Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Sun, 15 Sep 2013 23:08:32 +0000 +Subject: swap: create .wants symlink to 'auto' swap devices + +As we load unit files lazily, we need to make sure something pulls in swap +units that should be started automatically, otherwise the default dependencies +will never be applied. + +This partially reinstates code removed in +commit 64347fc2b983f33e7efb0fd2bb44e133fb9f30f4. + +Also don't order swap devices after swap.target when they are 'nofail'. +--- +diff --git a/src/core/swap.c b/src/core/swap.c +index 3950860..76c7d45 100644 +--- a/src/core/swap.c ++++ b/src/core/swap.c +@@ -220,8 +220,12 @@ static int swap_add_default_dependencies(Swap *s) { + } + + if (!noauto) { +- r = unit_add_two_dependencies_by_name_inverse(UNIT(s), UNIT_AFTER, (nofail ? UNIT_WANTS : UNIT_REQUIRES), +- SPECIAL_SWAP_TARGET, NULL, true); ++ if (nofail) ++ r = unit_add_dependency_by_name_inverse(UNIT(s), ++ UNIT_WANTS, SPECIAL_SWAP_TARGET, NULL, true); ++ else ++ r = unit_add_two_dependencies_by_name_inverse(UNIT(s), ++ UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SWAP_TARGET, NULL, true); + if (r < 0) + return r; + } +diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c +index 6ebe8aa..b73dfa4 100644 +--- a/src/fstab-generator/fstab-generator.c ++++ b/src/fstab-generator/fstab-generator.c +@@ -66,6 +66,7 @@ static int mount_find_pri(struct mntent *me, int *ret) { + static int add_swap(const char *what, struct mntent *me) { + _cleanup_free_ char *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL; + _cleanup_fclose_ FILE *f = NULL; ++ bool noauto; + int r, pri = -1; + + assert(what); +@@ -77,6 +78,8 @@ static int add_swap(const char *what, struct mntent *me) { + return pri; + } + ++ noauto = !!hasmntopt(me, "noauto"); ++ + name = unit_name_from_path(what, ".swap"); + if (!name) + return log_oom(); +@@ -97,8 +100,7 @@ static int add_swap(const char *what, struct mntent *me) { + fprintf(f, + "# Automatically generated by systemd-fstab-generator\n\n" + "[Unit]\n" +- "SourcePath=/etc/fstab\n" +- "\n" ++ "SourcePath=/etc/fstab\n\n" + "[Swap]\n" + "What=%s\n", + what); +@@ -114,6 +116,18 @@ static int add_swap(const char *what, struct mntent *me) { + return -errno; + } + ++ if (!noauto) { ++ lnk = strjoin(arg_dest, "/" SPECIAL_SWAP_TARGET ".wants/", name, NULL); ++ if (!lnk) ++ return log_oom(); ++ ++ mkdir_parents_label(lnk, 0755); ++ if (symlink(unit, lnk) < 0) { ++ log_error("Failed to create symlink %s: %m", lnk); ++ return -errno; ++ } ++ } ++ + return 0; + } + +-- +cgit v0.9.0.2-2-gbebe diff --git a/systemd-207-gpt-auto-generator.patch b/systemd-207-gpt-auto-generator.patch new file mode 100644 index 0000000..280ce19 --- /dev/null +++ b/systemd-207-gpt-auto-generator.patch @@ -0,0 +1,204 @@ +From 3db604b907323b8df0fc810216f6112056d26a02 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 17 Sep 2013 23:04:40 +0000 +Subject: gpt-auto-generator: do not assume that /dev/block/%u:%u is useable + +The generator might run before udev, and udev sets up the /dev/block/ +symlinks, hence we cannot use them from the gpt generator. Instead, +manually translate a major/minor to a device node. +--- +diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c +index 880661e..ca54925 100644 +--- a/src/gpt-auto-generator/gpt-auto-generator.c ++++ b/src/gpt-auto-generator/gpt-auto-generator.c +@@ -55,18 +55,13 @@ static inline void blkid_free_probep(blkid_probe *b) { + } + #define _cleanup_blkid_freep_probe_ _cleanup_(blkid_free_probep) + +-static int verify_gpt_partition(dev_t dev, sd_id128_t *type, unsigned *nr, char **fstype) { +- _cleanup_free_ char *t = NULL; ++static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr, char **fstype) { + _cleanup_blkid_freep_probe_ blkid_probe b = NULL; + const char *v; + int r; + +- r = asprintf(&t, "/dev/block/%u:%u", major(dev), minor(dev)); +- if (r < 0) +- return -ENOMEM; +- + errno = 0; +- b = blkid_new_probe_from_filename(t); ++ b = blkid_new_probe_from_filename(node); + if (!b) + return errno != 0 ? -errno : -ENOMEM; + +@@ -237,8 +232,7 @@ static int add_home(const char *path, const char *fstype) { + return 0; + } + +-static int enumerate_partitions(dev_t dev) { +- struct udev *udev; ++static int enumerate_partitions(struct udev *udev, dev_t dev) { + struct udev_enumerate *e = NULL; + struct udev_device *parent = NULL, *d = NULL; + struct udev_list_entry *first, *item; +@@ -246,10 +240,6 @@ static int enumerate_partitions(dev_t dev) { + _cleanup_free_ char *home = NULL, *home_fstype = NULL; + int r; + +- udev = udev_new(); +- if (!udev) +- return log_oom(); +- + e = udev_enumerate_new(udev); + if (!e) { + r = log_oom(); +@@ -294,7 +284,6 @@ static int enumerate_partitions(dev_t dev) { + struct udev_device *q; + sd_id128_t type_id; + unsigned nr; +- dev_t sub; + + q = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)); + if (!q) { +@@ -314,12 +303,10 @@ static int enumerate_partitions(dev_t dev) { + goto finish; + } + +- sub = udev_device_get_devnum(q); +- +- r = verify_gpt_partition(sub, &type_id, &nr, &fstype); ++ r = verify_gpt_partition(node, &type_id, &nr, &fstype); + if (r < 0) { +- log_error("Failed to verify GPT partition /dev/block/%u:%u: %s", +- major(sub), minor(sub), strerror(-r)); ++ log_error("Failed to verify GPT partition %s: %s", ++ node, strerror(-r)); + udev_device_unref(q); + goto finish; + } +@@ -360,8 +347,6 @@ finish: + if (e) + udev_enumerate_unref(e); + +- if (udev) +- udev_unref(udev); + + return r; + } +@@ -440,13 +425,50 @@ static int get_block_device(const char *path, dev_t *dev) { + return 0; + } + ++static int devno_to_devnode(struct udev *udev, dev_t devno, char **ret) { ++ struct udev_device *d = NULL; ++ const char *t; ++ char *n; ++ int r; ++ ++ d = udev_device_new_from_devnum(udev, 'b', devno); ++ if (!d) { ++ r = log_oom(); ++ goto finish; ++ } ++ ++ t = udev_device_get_devnode(d); ++ if (!t) { ++ r = -ENODEV; ++ goto finish; ++ } ++ ++ n = strdup(t); ++ if (!n) { ++ r = -ENOMEM; ++ goto finish; ++ } ++ ++ *ret = n; ++ r = 0; ++ ++finish: ++ if (d) ++ udev_device_unref(d); ++ ++ return r; ++} ++ + int main(int argc, char *argv[]) { +- dev_t dev; ++ _cleanup_free_ char *node = NULL; ++ struct udev *udev = NULL; ++ dev_t devno; + int r; + + if (argc > 1 && argc != 4) { + log_error("This program takes three or no arguments."); +- return EXIT_FAILURE; ++ r = -EINVAL; ++ goto finish; + } + + if (argc > 1) +@@ -458,31 +480,48 @@ int main(int argc, char *argv[]) { + + umask(0022); + +- if (in_initrd()) +- return EXIT_SUCCESS; ++ if (in_initrd()) { ++ r = 0; ++ goto finish; ++ } + +- r = get_block_device("/", &dev); ++ r = get_block_device("/", &devno); + if (r < 0) { + log_error("Failed to determine block device of root file system: %s", strerror(-r)); +- return EXIT_FAILURE; ++ goto finish; + } + if (r == 0) { + log_debug("Root file system not on a (single) block device."); +- return EXIT_SUCCESS; ++ goto finish; ++ } ++ ++ udev = udev_new(); ++ if (!udev) { ++ r = log_oom(); ++ goto finish; ++ } ++ ++ r = devno_to_devnode(udev, devno, &node); ++ if (r < 0) { ++ log_error("Failed to determine block device node from major/minor: %s", strerror(-r)); ++ goto finish; + } + +- log_debug("Root device /dev/block/%u:%u.", major(dev), minor(dev)); ++ log_debug("Root device %s.", node); + +- r = verify_gpt_partition(dev, NULL, NULL, NULL); ++ r = verify_gpt_partition(node, NULL, NULL, NULL); + if (r < 0) { +- log_error("Failed to verify GPT partition /dev/block/%u:%u: %s", +- major(dev), minor(dev), strerror(-r)); +- return EXIT_FAILURE; ++ log_error("Failed to verify GPT partition %s: %s", node, strerror(-r)); ++ goto finish; + } + if (r == 0) +- return EXIT_SUCCESS; ++ goto finish; ++ ++ r = enumerate_partitions(udev, devno); + +- r = enumerate_partitions(dev); ++finish: ++ if (udev) ++ udev_unref(udev); + + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; + } +-- +cgit v0.9.0.2-2-gbebe diff --git a/systemd-207-swap_fix_reverse_dependencies.patch b/systemd-207-swap_fix_reverse_dependencies.patch new file mode 100644 index 0000000..e81bada --- /dev/null +++ b/systemd-207-swap_fix_reverse_dependencies.patch @@ -0,0 +1,26 @@ +From 90060fa6605446bef7078867423b691e4effa575 Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Fri, 13 Sep 2013 12:46:18 +0000 +Subject: swap: fix reverse dependencies + +Make sure swap.target correctly requires/wants the swap units. + +This fixes https://bugs.freedesktop.org/show_bug.cgi?id=69291. + +Reported-by: Hussam Al-Tayeb +--- +diff --git a/src/core/swap.c b/src/core/swap.c +index 57d15eb..3950860 100644 +--- a/src/core/swap.c ++++ b/src/core/swap.c +@@ -220,7 +220,7 @@ static int swap_add_default_dependencies(Swap *s) { + } + + if (!noauto) { +- r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, (nofail ? UNIT_WANTED_BY : UNIT_REQUIRED_BY), ++ r = unit_add_two_dependencies_by_name_inverse(UNIT(s), UNIT_AFTER, (nofail ? UNIT_WANTS : UNIT_REQUIRES), + SPECIAL_SWAP_TARGET, NULL, true); + if (r < 0) + return r; +-- +cgit v0.9.0.2-2-gbebe diff --git a/systemd-208-journald-reduce-sizes.patch b/systemd-208-journald-reduce-sizes.patch new file mode 100644 index 0000000..632bc2e --- /dev/null +++ b/systemd-208-journald-reduce-sizes.patch @@ -0,0 +1,15 @@ +diff -Nru systemd-208.orig/src/journal/journald.conf systemd-208/src/journal/journald.conf +--- systemd-208.orig/src/journal/journald.conf 2013-08-13 22:02:46.413707211 +0200 ++++ systemd-208/src/journal/journald.conf 2014-01-18 14:31:20.184025254 +0100 +@@ -15,9 +15,9 @@ + #SyncIntervalSec=5m + #RateLimitInterval=30s + #RateLimitBurst=1000 +-#SystemMaxUse= ++SystemMaxUse=200M + #SystemKeepFree= +-#SystemMaxFileSize= ++SystemMaxFileSize=50M + #RuntimeMaxUse= + #RuntimeKeepFree= + #RuntimeMaxFileSize= diff --git a/systemd.spec b/systemd.spec new file mode 100644 index 0000000..46fbdd1 --- /dev/null +++ b/systemd.spec @@ -0,0 +1,758 @@ +%define group_audio 11 +%define group_cdrecording 12 +%define group_cdrom 19 +%define group_video 24 +%define group_camera 22 +%define group_scanner 23 +%define group_nvram 50 +%define group_kvm 31 +%define group_systemd_journal 57 +%define group_systemd_journal_gateway 58 +%define user_systemd_journal_gateway 58 + +Name: systemd +Epoch: 2 +Version: 212 +Release: 7mamba +Summary: A system and service manager compatible with SysV and LSB init scripts +Group: System/Configuration +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +URL: http://freedesktop.org/wiki/Software/systemd +Source: http://www.freedesktop.org/software/systemd/systemd-%{version}.tar.xz +Source1: udev-initscript +Source2: udev-permissions.rules +Source4: udev-openmamba.rules +Source8: udev-check-cdrom.sh +Source11: udev-MAKEDEV +Source13: udev-blacklist +Source14: udev-ifupdown.rules +Source15: udev-post-initscript +Source16: udev-sysconfig +Patch0: systemd-191-upstream-build-fix.patch +Patch1: systemd-197-revert-only-add-support.patch +Patch2: systemd-198-lock-to-tty-group-openmamba.patch +Patch3: systemd-205-disable-systemd-coredump.patch +Patch4: systemd-207-gpt-auto-generator.patch +Patch5: udev-177-arm-pre-accept4.patch +Patch6: systemd-207-swap_fix_reverse_dependencies.patch +Patch7: systemd-207-create_wants_symlink.patch +Patch8: systemd-208-journald-reduce-sizes.patch +License: GPL +## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +BuildRequires: libacl-devel +BuildRequires: libaudit-devel +BuildRequires: libblkid-devel +BuildRequires: libcap-devel +BuildRequires: libcryptsetup-devel +BuildRequires: libdbus-devel +BuildRequires: libffi-devel +BuildRequires: libgcrypt-devel +BuildRequires: libglib-devel +BuildRequires: libgpg-error-devel +BuildRequires: libkmod-devel +BuildRequires: liblzma-devel +BuildRequires: libpython-devel +BuildRequires: libqrencode-devel +BuildRequires: libselinux-devel +BuildRequires: libwrap-devel +BuildRequires: pam-devel +## AUTOBUILDREQ-END +BuildRequires: vala-tools +BuildRequires: libmicrohttpd-devel +Conflicts: sysvinit +Conflicts: initscripts-sysv5 +Requires: sysvinit-tools +Requires: udev = %{?epoch:%epoch:}%{version}-%{release} +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. +systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux cgroups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. +It can work as a drop-in replacement for sysvinit. + +%package core +Summary: systemd core files that may be used both by udev and systemd +Group: System/Libraries +Requires: liblockdev +Requires(post): pwdutils +Requires: libsystemd = %{?epoch:%epoch:}%{version}-%{release} + +%description core +systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. +systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux cgroups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. +It can work as a drop-in replacement for sysvinit. + +This package contains systemd core files that may be used both by udev and systemd. + +%package -n libsystemd +Summary: systemd libraries +Group: System/Libraries + +%description -n libsystemd +systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. +systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux cgroups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. +It can work as a drop-in replacement for sysvinit. + +This package contains the systemd libraries. + +%package -n libsystemd-devel +Summary: Devel package for %{name} +Group: Development/Libraries +Requires: libsystemd = %{?epoch:%epoch:}%{version}-%{release} +Provides: systemd-devel +Obsoletes: systemd-devel + +%description -n libsystemd-devel +systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. +systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux cgroups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. +It can work as a drop-in replacement for sysvinit. + +This package contains static libraries and header files needed for development. + +%package tools +Summary: %{name} GTK tools +Group: Graphical Desktop/Applications/Configuration +Requires: %{name}-core = %{?epoch:%epoch:}%{version}-%{release} + +%description tools +systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. +systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux cgroups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. +It can work as a drop-in replacement for sysvinit. + +This package contains the systemd GTK tools. + +%package -n udev +Summary: A userspace tool to manage a dynamic devices directory +Group: System/Kernel and Hardware +Conflicts: devfsd +Conflicts: udev173 +Obsoletes: devfsd +Obsoletes: hotplug +Provides: udev-static +Obsoletes: udev-static +Requires(post):/usr/sbin/groupadd +Requires(post):setup +Requires: %{name}-core = %{?epoch:%epoch:}%{version}-%{release} +Requires: libudev = %{?epoch:%epoch:}%{version}-%{release} +Requires: initscripts >= 1.1.18 + +%description -n udev +Udev allows Linux users to have a dynamic /dev directory and it provides the ability to have persistent device names. +It also replaces hotplug and runs entirely in userspace. + +%package -n libudev +Summary: udev libraries +Group: System/Libraries +%ifarch x86_64 +Provides: libudev.so.0()(64bit) +%else +Provides: libudev.so.0 +%endif + +%description -n libudev +Udev allows Linux users to have a dynamic /dev directory and it provides the ability to have persistent device names. +It also replaces hotplug and runs entirely in userspace. +This package provides udev libraries. + +%package -n libudev-devel +Summary: Development files for udev +Group: Development/Libraries +Requires: libudev = %{?epoch:%epoch:}%{version}-%{release} +Provides: udev-devel +Obsoletes: udev-devel + +%description -n libudev-devel +Udev allows Linux users to have a dynamic /dev directory and it provides the ability to have persistent device names. +It also replaces hotplug and runs entirely in userspace. +This package include development files for building software using udev libraries. + +%debug_package + +%prep +%setup -q +#%patch0 -p1 + +## ARM only patch: old_cloexec compatibility patch with old kernels +#%ifarch arm +#%patch5 -p1 +#%endif +#%patch1 -R -p1 +%patch2 -p1 +%patch3 -p1 +#%patch4 -p1 +#%patch6 -p1 +#%patch7 -p1 + +%build +%configure \ + --with-rootprefix= \ + --with-rootlibdir=/%{_lib} \ + --with-pamlibdir=/%{_lib}/security \ + --with-firmware-path=/lib/firmware \ + --with-tty-gid=4 \ + --enable-chkconfig \ + --enable-split-usr \ + --with-rc-local-script-path-start=/etc/rc.d/init.d/rc.local \ + --enable-compat-libs \ + KMOD=/sbin/kmod + +%make \ + -j1 \ + rpmmacrosdir=%{_sysconfdir}/rpm + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +%makeinstall rpmmacrosdir=%{_sysconfdir}/rpm + + +# compatibility links +install -d -m0755 %{buildroot}/sbin +for f in halt poweroff reboot runlevel shutdown telinit; do + ln -s ../bin/systemctl %{buildroot}/sbin/$f +done +ln -s ../lib/systemd/systemd %{buildroot}/sbin/init + +# udev +install -D -m755 %{S:1} %{buildroot}%{_initrddir}/udev +install -D -m755 %{S:15} %{buildroot}%{_initrddir}/udev-post +install -D -m644 %{S:16} %{buildroot}%{_sysconfdir}/sysconfig/udev +install -D -m755 %{S:2} \ + %{buildroot}/lib/udev/rules.d/60-permissions.rules +install -D -m755 %{S:4} \ + %{buildroot}/lib/udev/rules.d/55-udev-openmamba.rules +install -D -m755 %{S:14} \ + %{buildroot}/lib/udev/rules.d/85-ifupdown.rules +install -D -m755 %{S:8} \ + %{buildroot}/lib/udev/check-cdrom.sh + +install -d %{buildroot}%{_sysconfdir}/rc.d/rcsysinit.d +ln -s ../init.d/udev %{buildroot}%{_sysconfdir}/rc.d/rcsysinit.d/S12udev +install -d %{buildroot}%{_sysconfdir}/rc0.d +ln -s ../init.d/udev %{buildroot}%{_sysconfdir}/rc0.d/K97udev +install -d %{buildroot}%{_sysconfdir}/rc6.d +ln -s ../init.d/udev %{buildroot}%{_sysconfdir}/rc6.d/K97udev +install -D -m755 %{S:11} \ + %{buildroot}/lib/udev/devices/MAKEDEV +install -D -m644 %{S:13} \ + %{buildroot}%{_sysconfdir}/modprobe.d/udev.conf +install -d -m0755 %{buildroot}/sbin +# compatibility symlinks +ln -s /lib/systemd/systemd-udevd %{buildroot}/sbin/udevd +ln -s libudev.so.1 %{buildroot}/%{_lib}/libudev.so.0 + +# /etc/mtab symlink +ln -s /proc/mounts %{buildroot}%{_sysconfdir}/mtab + +# install libnss_myhostname.so.* to /%{lib} +mv %{buildroot}%{_libdir}/libnss_myhostname.so.* %{buildroot}/%{_lib}/ + +%find_lang %{name} + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +%pre core +[ -e %{_sysconfdir}/mtab -a ! -L %{_sysconfdir}/mtab ] && rm -f %{_sysconfdir}/mtab +: + +%post core +if [ "$1" -ge 1 ]; then + # SYSV5 -> Systemd migration + [ -e /etc/machine-id ] || systemd-machine-id-setup >/dev/null 2>&1 + if [ ! -e %{_sysconfdir}/hostname ]; then + [ -e %{_sysconfdir}/sysconfig/network ] && . %{_sysconfdir}/sysconfig/network + [ "$HOSTNAME" ] && echo "$HOSTNAME" > %{_sysconfdir}/hostname + fi + [ -e %{_sysconfdir}/modules.d -a ! -L %{_sysconfdir}/modules.d ] && { + mv %{_sysconfdir}/modules.d/* %{_sysconfdir}/modules-load.d/ 2>/dev/null || true + rmdir %{_sysconfdir}/modules.d || true + ln -s modules-load.d %{_sysconfdir}/modules.d + } + groupadd systemd-journal -g %{group_systemd_journal} 2>/dev/null + groupadd systemd-journal-gateway -g %{group_systemd_journal_gateway} 2>/dev/null + useradd -u %{user_systemd_journal_gateway} -g systemd-journal-gateway \ + -d /var/log/journal -s /sbin/nologin -c "Journal Gateway" \ + systemd-journal-gateway 2>/dev/null + # Configure libnss_myhostanme.so resolver + grep "^hosts:.* myhostname" /etc/nsswitch.conf &>/dev/null || \ + sed -i "s|\(^hosts:.*\)|\1 myhostname|" /etc/nsswitch.conf +fi +: + +%postun core +if [ $1 -eq 0 ]; then + grep "^hosts:.* myhostname" /etc/nsswitch.conf &>/dev/null && \ + sed -i "s| myhostname||" /etc/nsswitch.conf + +fi +: + +%post -n libsystemd +/sbin/ldconfig +: + +%postun -n libsystemd +/sbin/ldconfig +: + +%pre -n udev +# backup persistent-net rules file if it has an old syntax +if [ -e %{_sysconfdir}/udev/rules.d/70-persistent-net.rules ]; then + grep "ATTRS{" %{_sysconfdir}/udev/rules.d/70-persistent-net.rules >/dev/null && \ + mv %{_sysconfdir}/udev/rules.d/70-persistent-net.rules \ + %{_sysconfdir}/udev/rules.d/70-persistent-net.rules.save +fi +exit 0 + +%post -n udev +if [ $1 -ge 1 ]; then + chkconfig --add udev-post + udevadm hwdb --update +fi + +[ "`grep " vc/" /etc/inittab 2>/dev/null`" ] && { + sed -i "s| vc/| tty|" /etc/inittab + telinit q +} + +groupadd audio -g %{group_audio} 2>/dev/null +groupadd cdrecording -g %{group_cdrecording} 2>/dev/null +groupadd cdrom -g %{group_cdrom} 2>/dev/null +groupadd video -g %{group_video} 2>/dev/null +groupadd camera -g %{group_camera} 2>/dev/null +groupadd scanner -g %{group_scanner} 2>/dev/null +groupadd nvram -g %{group_nvram} 2>/dev/null +groupadd kvm -g %{group_kvm} 2>/dev/null +: + +%preun -n udev +if [ $1 -eq 0 ]; then +# erase + service udev-post stop + chkconfig --del udev-post +fi +: + +%post -n libudev +/sbin/ldconfig +: + +%postun -n libudev +/sbin/ldconfig +: + +%files +%defattr(-,root,root) +%{_sysconfdir}/init.d/README +/sbin/halt +/sbin/init +/sbin/poweroff +/sbin/reboot +/sbin/runlevel +/sbin/shutdown +/sbin/telinit +%{_mandir}/man1/init.1* +%{_mandir}/man8/reboot.8* +%{_mandir}/man8/halt.8* +%{_mandir}/man8/poweroff.8* +%{_mandir}/man8/runlevel.8* +%{_mandir}/man8/shutdown.8* +%{_mandir}/man8/telinit.8* + +%files core -f %{name}.lang +%defattr(-,root,root) +%dir %{_sysconfdir}/systemd +%config %{_sysconfdir}/systemd/bootchart.conf +%config %{_sysconfdir}/systemd/journald.conf +%config %{_sysconfdir}/systemd/logind.conf +%dir %{_sysconfdir}/systemd/system +%config %{_sysconfdir}/systemd/system.conf +%dir %{_sysconfdir}/systemd/system/multi-user.target.wants +%{_sysconfdir}/systemd/system/multi-user.target.wants/remote-fs.target +%{_sysconfdir}/systemd/system/multi-user.target.wants/systemd-networkd.service +%dir %{_sysconfdir}/systemd/system/getty.target.wants +%{_sysconfdir}/systemd/system/getty.target.wants/getty@tty1.service +%config(noreplace) %{_sysconfdir}/systemd/user.conf +%{_sysconfdir}/mtab +%{_sysconfdir}/dbus-1/system.d/org.freedesktop.*.conf +%{_sysconfdir}/pam.d/systemd-user +%dir %{_sysconfdir}/binfmt.d +%dir %{_sysconfdir}/modules-load.d +%dir %{_sysconfdir}/sysctl.d +%dir %{_sysconfdir}/tmpfiles.d +%dir %{_sysconfdir}/xdg/systemd +%{_sysconfdir}/xdg/systemd/user +%{_bindir}/busctl +%{_bindir}/bootctl +%{_bindir}/hostnamectl +%{_bindir}/kernel-install +%{_bindir}/localectl +%{_bindir}/systemd-coredumpctl +%{_bindir}/systemd-run +%{_bindir}/timedatectl +/bin/journalctl +/bin/loginctl +/bin/machinectl +/bin/systemctl +/bin/systemd-ask-password +/bin/systemd-inhibit +/bin/systemd-machine-id-setup +/bin/systemd-notify +/bin/systemd-tmpfiles +/bin/systemd-tty-ask-password-agent +%{_bindir}/systemd-cat +%{_bindir}/systemd-cgtop +%{_bindir}/systemd-delta +%{_bindir}/systemd-detect-virt +%{_bindir}/systemd-analyze +%{_bindir}/systemd-cgls +%{_bindir}/systemd-nspawn +%{_bindir}/systemd-stdio-bridge +%{_datadir}/bash-completion/completions/* +%exclude %{_datadir}/bash-completion/completions/udevadm +%dir %{_prefix}/lib/kernel +%dir %{_prefix}/lib/kernel/install.d +%{_prefix}/lib/kernel/install.d/50-depmod.install +%{_prefix}/lib/kernel/install.d/90-loaderentry.install +%dir %{_prefix}/lib/binfmt.d +%dir %{_prefix}/lib/modules-load.d +%dir %{_prefix}/lib/sysctl.d +%{_prefix}/lib/sysctl.d/50-coredump.conf +%{_prefix}/lib/sysctl.d/50-default.conf +%dir %{_prefix}/lib/tmpfiles.d +%dir %{_prefix}/lib/systemd +%{_prefix}/lib/systemd/* +%dir /lib/systemd +/lib/systemd/* +%exclude /lib/systemd/systemd-udevd +/lib/udev/rules.d/99-systemd.rules +%{_prefix}/lib/tmpfiles.d/*.conf +%{_datadir}/dbus-1/services/org.freedesktop.systemd1.service +%{_datadir}/dbus-1/system-services/org.freedesktop.*.service +%dir %{_datadir}/systemd +%{_datadir}/systemd/kbd-model-map +%dir %{_datadir}/systemd/gatewayd +%{_datadir}/systemd/gatewayd/browse.html +%dir %{_datadir}/zsh +%dir %{_datadir}/zsh/site-functions +%{_datadir}/zsh/site-functions/* +%{_datadir}/polkit-1/actions/org.freedesktop.*.policy +%dir %{python_sitearch}/systemd +%{python_sitearch}/systemd/* +%{_localstatedir}/log/README +%dir %{_localstatedir}/log/journal +%dir %{_localstatedir}/lib/systemd +%{_mandir}/man1/bootctl.1* +%{_mandir}/man1/busctl.1* +%{_mandir}/man1/hostnamectl.1* +%{_mandir}/man1/journalctl.1* +%{_mandir}/man1/localectl.1* +%{_mandir}/man1/loginctl.1* +%{_mandir}/man1/machinectl.1* +%{_mandir}/man1/systemctl.1* +%{_mandir}/man1/systemd-* +%{_mandir}/man1/systemd.1* +%{_mandir}/man1/timedatectl.1* +%{_mandir}/man5/*.5* +%{_mandir}/man7/*.7* +%{_mandir}/man8/kernel-install.8* +%{_mandir}/man8/nss-myhostname.8* +%{_mandir}/man8/pam_systemd.8* +%{_mandir}/man8/systemd-*.8* +%doc LICENSE.LGPL2.1 LICENSE.MIT + +#%files tools +#%defattr(-,root,root) +#%{_bindir}/systemadm +#%{_bindir}/systemd-gnome-ask-password-agent +#%{_mandir}/man1/systemadm.1* + +%files -n libsystemd +%defattr(-,root,root) +/%{_lib}/libsystemd.so.* +/%{_lib}/libsystemd-daemon.so.* +/%{_lib}/libsystemd-id128.so.* +/%{_lib}/libsystemd-journal.so.* +/%{_lib}/libsystemd-login.so.* +/%{_lib}/security/pam_systemd.* +/%{_lib}/libnss_myhostname.so.* + +%files -n libsystemd-devel +%defattr(-,root,root) +%{_sysconfdir}/rpm/macros.systemd +%dir %{_includedir}/systemd +%{_includedir}/systemd/*.h +%{_libdir}/libsystemd.la +%{_libdir}/libsystemd.so +%{_libdir}/libsystemd-daemon.la +%{_libdir}/libsystemd-daemon.so +%{_libdir}/libsystemd-id128.la +%{_libdir}/libsystemd-id128.so +%{_libdir}/libsystemd-journal.la +%{_libdir}/libsystemd-journal.so +%{_libdir}/libsystemd-login.la +%{_libdir}/libsystemd-login.so +%{_libdir}/libnss_myhostname.la +%{_libdir}/pkgconfig/libsystemd-daemon.pc +%{_libdir}/pkgconfig/libsystemd-id128.pc +%{_libdir}/pkgconfig/libsystemd-journal.pc +%{_libdir}/pkgconfig/libsystemd-login.pc +%{_libdir}/pkgconfig/libsystemd.pc +%{_datadir}/pkgconfig/systemd.pc +%dir %{_docdir}/systemd +%{_docdir}/systemd/* +%{_mandir}/man3/*.3* +%doc README TODO + +%files -n udev +%defattr(-,root,root) +%{_sysconfdir}/udev/udev.conf +%{_sysconfdir}/modprobe.d/udev.conf +%{_initrddir}/udev +%{_initrddir}/udev-post +%{_sysconfdir}/rc0.d/K97udev +%{_sysconfdir}/rc6.d/K97udev +%{_sysconfdir}/rc.d/rcsysinit.d/S12udev +%{_sysconfdir}/sysconfig/udev +/sbin/udevd +/bin/udevadm +%{_datadir}/bash-completion/completions/udevadm +/lib/systemd/systemd-udevd +%dir /lib/udev +/lib/udev/devices/MAKEDEV +/lib/udev/accelerometer +/lib/udev/ata_id +/lib/udev/cdrom_id +/lib/udev/check-cdrom.sh +/lib/udev/collect +#/lib/udev/findkeyboards +%dir /lib/udev/hwdb.d +/lib/udev/hwdb.d/*.hwdb +#/lib/udev/keyboard-force-release.sh +#/lib/udev/keymap +#%dir /lib/udev/keymaps +#/lib/udev/keymaps/* +/lib/udev/mtd_probe +%dir /lib/udev/rules.d +/lib/udev/rules.d/*.rules +%exclude /lib/udev/rules.d/99-systemd.rules +/lib/udev/scsi_id +/lib/udev/v4l_id +%{_mandir}/man8/udevadm.8* +%doc LICENSE.GPL2 + +%files -n libudev +%defattr(-,root,root) +/%{_lib}/libgudev-1.0.so.* +/%{_lib}/libudev.so.* +%{_libdir}/girepository-1.0/GUdev-1.0.typelib + +%files -n libudev-devel +%defattr(-,root,root) +%dir %{_includedir}/gudev-1.0 +%dir %{_includedir}/gudev-1.0/gudev +%{_includedir}/gudev-1.0/gudev/*.h +%{_includedir}/libudev.h +%{_libdir}/libgudev-1.0.la +%{_libdir}/libgudev-1.0.so +%{_datadir}/gir-1.0/GUdev-1.0.gir +%{_libdir}/libudev.la +%{_libdir}/libudev.so +%{_libdir}/pkgconfig/gudev-1.0.pc +%{_libdir}/pkgconfig/libudev.pc +%{_datadir}/pkgconfig/udev.pc + +%changelog +* Fri May 02 2014 Silvan Calarco 212-7mamba +- nssswitch.conf: configure myhostname as host resolver +- install libnss_myhostname.so.* under /%{_lib} + +* Wed Apr 09 2014 Silvan Calarco 212-6mamba +- udev, libudev, libudev-devel: other fixes in requires/obsoletes + +* Mon Apr 07 2014 Silvan Calarco 212-5mamba +- no luck with smart and libsystemd-compat, moving compat libraries to libsystemd + +* Sun Apr 06 2014 Silvan Calarco 212-4mamba +- rebuilt with --enable-compat-libs + +* Sun Apr 06 2014 Silvan Calarco 212-3mamba +- move libraries to libsystemd and libudev, rename systemd-devel to libsystemd-devel and udev-devel to libudev-devel + +* Wed Apr 02 2014 Silvan Calarco 212-2mamba +- provide compatibility package with symlinks for old library names + +* Tue Apr 01 2014 Automatic Build System 212-1mamba +- automatic version update by autodist + +* Sun Feb 16 2014 Davide Madrisan 208-6mamba +- systemd-core script: send to /dev/null the warning message 'useradd: UID 58 is not unique' +- Avoid bash-only constructs in the package scriplets + +* Sun Feb 09 2014 Silvan Calarco 208-5mamba +- x86_64: rebuilt with lib64 python_sitearch +- x86_64: install pam modules under /%{_lib}/security + +* Sat Jan 18 2014 Silvan Calarco 208-4mamba +- journald.conf: reduce default journal size from 3GB to 200MB/50MB + +* Mon Dec 09 2013 Silvan Calarco 208-3mamba +- systemd-core: added Requires(post): pwdutils + +* Thu Oct 24 2013 Silvan Calarco 208-2mamba +- add group systemd-journal and user and group systemd-journal-gateway + +* Thu Oct 03 2013 Automatic Build System 208-1mamba +- automatic version update by autodist + +* Sun Sep 29 2013 Silvan Calarco 207-4mamba +- swap: also add upstream patch http://cgit.freedesktop.org/systemd/systemd/commit/?id=4e82fe5213bedcb70e25c0270e516d5f2706d8c8 + +* Thu Sep 26 2013 Silvan Calarco 207-3mamba +- added upstream patch to fix swap enabling on boot (https://bugs.freedesktop.org/show_bug.cgi?id=69291) + +* Sat Sep 21 2013 Silvan Calarco 207-2mamba +- upstream patch to fix gpt error message on boot (https://bugs.freedesktop.org/show_bug.cgi?id=69315) + +* Fri Sep 13 2013 Automatic Build System 207-1mamba +- automatic version update by autodist + +* Thu Sep 12 2013 Silvan Calarco 206-4mamba +- configure with correct rc-local-script-path for us + +* Sat Aug 10 2013 Silvan Calarco 206-3mamba +- rebuilt with debug package + +* Sat Jul 27 2013 Silvan Calarco 206-2mamba +- force configure to use /sbin/kmod instead of /usr/bin/kmod + +* Wed Jul 24 2013 Automatic Build System 206-1mamba +- automatic version update by autodist + +* Wed Jul 17 2013 Silvan Calarco 205-2mamba +- added a patch to disable systemd-coredump (keeps dump in memory occupying memory and possibly freezing systems) + +* Mon Jul 08 2013 Automatic Build System 205-1mamba +- automatic version update by autodist + +* Wed May 29 2013 Silvan Calarco 204-2mamba +- python 2.7 mass rebuild + +* Fri May 10 2013 Automatic Build System 204-1mamba +- automatic version update by autodist + +* Tue May 07 2013 Automatic Build System 203-1mamba +- automatic version update by autodist + +* Fri Apr 19 2013 Automatic Build System 202-1mamba +- automatic version update by autodist + +* Tue Apr 09 2013 Automatic Build System 201-1mamba +- automatic version update by autodist + +* Sat Apr 06 2013 Silvan Calarco 200-4mamba +- require(post) setup before creating groups + +* Fri Apr 05 2013 Silvan Calarco 200-3mamba +- x86_64: fix /sbin/udevd symlink + +* Thu Apr 04 2013 Silvan Calarco 200-2mamba +- make modules.d -> modules-load.d conversion more silent + +* Fri Mar 29 2013 Automatic Build System 200-1mamba +- automatic version update by autodist + +* Wed Mar 27 2013 Automatic Build System 199-1mamba +- automatic version update by autodist + +* Sun Mar 24 2013 Silvan Calarco 198-11mamba +- sysv5 legacy commands must be a symlink to /bin/systemctl, except for init which links to systemd + +* Sun Mar 24 2013 Silvan Calarco 198-10mamba +- added /sbin/halt compatibility symlink to /lib/systemd/systemd + +* Sat Mar 23 2013 Silvan Calarco 198-9mamba +- move /etc/rcsysinit.d/S12udev to /etc/rc.d/rcsysinit.d/ + +* Fri Mar 22 2013 Silvan Calarco 198-8mamba +- add /etc and /var empty directories previously unpackaged +- systemd-core: migrate /etc/mtab here instead of in systemd +- systemd-core: migrate from /etc/modules.d to /etc/modules-load.d and make compatibility symlink + +* Thu Mar 21 2013 Silvan Calarco 198-7mamba +- systemd: also conflict with initscripts-sysv5 + +* Wed Mar 20 2013 Silvan Calarco 198-6mamba +- systemd: revert obsoleting sysvinit, require sysvinit-tools + +* Wed Mar 20 2013 Silvan Calarco 198-5mamba +- systemd-core: create /etc/machine-id on install/upgrade + +* Tue Mar 19 2013 Silvan Calarco 198-4mamba +- provide/obsolete sysvinit +- provide /etc/mtab as a symlink to /proc/mounts + +* Mon Mar 18 2013 Silvan Calarco 198-3mamba +- create /etc/hostname using hostname in /etc/sysconfig/network for systemd + +* Sun Mar 17 2013 Silvan Calarco 198-2mamba +- added a patch to support tty instead of lock group for openmamba +- require liblockdev + +* Tue Mar 12 2013 Automatic Build System 198-1mamba +- automatic version update by autodist + +* Sat Feb 16 2013 Silvan Calarco 197-3mamba +- udev: run udevadm hwdb --update in post script +- revert an upstream patch to re-enable support for change events (https://bugzilla.redhat.com/show_bug.cgi?id=903716) + +* Sat Jan 19 2013 Silvan Calarco 197-2mamba +- udev-devel: require systemd-devel + +* Thu Jan 10 2013 Automatic Build System 197-1mamba +- automatic version update by autodist + +* Thu Nov 22 2012 Automatic Build System 196-1mamba +- automatic version update by autodist + +* Wed Nov 07 2012 Silvan Calarco 195-4mamba +- move systemd core files to systemd-core for use by udev with sysvinit still enabled + +* Sat Nov 03 2012 Silvan Calarco 195-3mamba +- restore scripts from udev-182 used by udev-openmamba.rules + +* Fri Nov 02 2012 Silvan Calarco 195-2mamba +- bump epoch up for udev upgrade +- provide compatibility symlink libudev.so.0 +- move systemd-udevd to udev subpackage and fix compatibility symlink /sbin/udevd +- fix initscript to match new udevd daemon path + +* Tue Oct 23 2012 Automatic Build System 195-1mamba +- automatic version update by autodist + +* Thu Oct 04 2012 Automatic Build System 194-1mamba +- automatic version update by autodist + +* Fri Sep 28 2012 Automatic Build System 193-1mamba +- automatic version update by autodist + +* Wed Sep 26 2012 Automatic Build System 192-1mamba +- automatic version update by autodist + +* Mon Sep 24 2012 Automatic Build System 191-1mamba +- automatic version update by autodist + +* Thu Aug 23 2012 Automatic Build System 189-1mamba +- automatic version update by autodist + +* Tue Aug 14 2012 Automatic Build System 188-1mamba +- automatic version update by autodist + +* Wed Aug 08 2012 Automatic Build System 187-1mamba +- update to 187 + +* Wed Nov 30 2011 Silvan Calarco 37-1mamba +- package created by autospec diff --git a/udev-177-arm-pre-accept4.patch b/udev-177-arm-pre-accept4.patch new file mode 100644 index 0000000..a6e1ec0 --- /dev/null +++ b/udev-177-arm-pre-accept4.patch @@ -0,0 +1,39 @@ +diff -Nru udev-177.orig/src/udev-ctrl.c udev-177/src/udev-ctrl.c +--- udev-177.orig/src/udev-ctrl.c 2012-01-10 01:43:22.125518772 +0100 ++++ udev-177/src/udev-ctrl.c 2012-01-22 16:46:31.339378651 +0100 +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -182,6 +183,7 @@ + struct ucred ucred; + socklen_t slen; + const int on = 1; ++ int flgs; + + conn = calloc(1, sizeof(struct udev_ctrl_connection)); + if (conn == NULL) +@@ -189,13 +191,18 @@ + conn->refcount = 1; + conn->uctrl = uctrl; + +- conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK); ++ conn->sock = accept(uctrl->sock, NULL, NULL); + if (conn->sock < 0) { + if (errno != EINTR) + err(uctrl->udev, "unable to receive ctrl connection: %m\n"); + goto err; + } + ++ /* Since we don't have accept4 */ ++ flgs = fcntl(conn->sock, F_GETFL, NULL); ++ if (flgs >= 0) fcntl(conn->sock, F_SETFL, flgs | O_NONBLOCK); ++ fcntl(conn->sock, F_SETFD, FD_CLOEXEC); ++ + /* check peer credential of connection */ + slen = sizeof(ucred); + if (getsockopt(conn->sock, SOL_SOCKET, SO_PEERCRED, &ucred, &slen) < 0) { diff --git a/udev-MAKEDEV b/udev-MAKEDEV new file mode 100644 index 0000000..7b6c1a0 --- /dev/null +++ b/udev-MAKEDEV @@ -0,0 +1,16 @@ +#!/bin/sh +# +# udev startup devices creation script +# +[ "$UDEV_ROOT" ] || UDEV_ROOT=/dev + +ln -sf /proc/self/fd $UDEV_ROOT +ln -sf /proc/self/fd/0 $UDEV_ROOT/stdin +ln -sf /proc/self/fd/1 $UDEV_ROOT/stdout +ln -sf /proc/self/fd/2 $UDEV_ROOT/stderr +ln -sf /proc/kcore $UDEV_ROOT/core +[ -e $UDEV_ROOT/shm ] || mkdir $UDEV_ROOT/shm +[ -e $UDEV_ROOT/pts ] || mkdir $UDEV_ROOT/pts +[ -e $UDEV_ROOT/console ] || mknod $UDEV_ROOT/console c 5 1 +[ -e $UDEV_ROOT/ppp ] || mknod $UDEV_ROOT/ppp c 108 0 +[ -e $UDEV_ROOT/null ] || mknod $UDEV_ROOT/null c 1 3 diff --git a/udev-blacklist b/udev-blacklist new file mode 100644 index 0000000..4e98391 --- /dev/null +++ b/udev-blacklist @@ -0,0 +1,40 @@ +# This file lists modules which will not be loaded as the result of +# alias expansion, with the purpose of preventing the hotplug subsystem +# to load them. It does not affect autoloading of modules by the kernel. +# This file is provided by the udev package. + +# evbug is a debug tool and should be loaded explicitly +blacklist evbug + +# watchdog drivers should be loaded only if a watchdog daemon is installed +blacklist acquirewdt +blacklist advantechwdt +blacklist alim1535_wdt +blacklist alim7101_wdt +blacklist cpu5wdt +blacklist eurotechwdt +blacklist i6300esb +blacklist ib700wdt +blacklist ibmasr +blacklist iTCO_vendor_support +blacklist iTCO_wdt +blacklist machzwd +blacklist mixcomwd +blacklist pc87413_wdt +blacklist pcwd +blacklist pcwd_pci +blacklist pcwd_usb +blacklist sbc60xxwdt +blacklist sbc8360 +blacklist sc1200wdt +blacklist sc520_wdt +blacklist scx200_wdt +blacklist smsc37b787_wdt +blacklist softdog +blacklist w83627hf_wdt +blacklist w83697hf_wdt +blacklist w83877f_wdt +blacklist w83977f_wdt +blacklist wafer5823wdt +blacklist wdt +blacklist wdt_pci diff --git a/udev-check-cdrom.sh b/udev-check-cdrom.sh new file mode 100644 index 0000000..a3f4d42 --- /dev/null +++ b/udev-check-cdrom.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# check-cdrom -- udev helper script for QiLinux +# Copyright (C) 2005 Davide Madrisan +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License version 2 as published by the +# Free Software Foundation. There is NO warranty; not even for MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. +# +# Report bugs to + +# NOTE : not enough info in /sys/block/, so we use /proc +[ -e /proc/sys/dev/cdrom/info ] || exit 1 + +dev=$1 +what=$2 + +unset vcdrom vwhat + +# NOTE: example of /proc/sys/dev/cdrom/info +# CD-ROM information, Id: cdrom.c 3.20 2003/12/17 +# drive name: hdd hdc +# drive speed: 52 32 +# ... +# Can play audio: 1 1 +# Can write CD-R: 0 1 +# Can write CD-RW: 0 1 +# Can read DVD: 0 1 +# Can write DVD-R: 0 1 +# Can write DVD-RAM: 0 0 +# ... + +/bin/cat /proc/sys/dev/cdrom/info | { +while read line; do + case "$line" in + drive\ name:*) + set ${line##*:} + vcdrom=($@) + + let "found_dev = 0" + for cdrom in ${vcdrom[@]}; do + [ "$cdrom" = "$dev" ] && + { let "found_dev = 1"; break; } + done + [ "$found_dev" = 1 ] || exit 1 + ;; + *\ $what:*) + set ${line##*:} + for cdrom in ${vcdrom[@]}; do + [ "$cdrom" = "$dev" -a "$1" = 1 ] && exit 0 + shift + done + ;; + esac +done + +exit 1 +} diff --git a/udev-ifupdown.rules b/udev-ifupdown.rules new file mode 100644 index 0000000..21537ca --- /dev/null +++ b/udev-ifupdown.rules @@ -0,0 +1,8 @@ +# +# network up/addremove management rules file for udev +# Copyright (c) 2008 by Silvan Calarco +# +ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="*", \ + RUN+="/sbin/ifup $env{INTERFACE} --udev" +ACTION=="remove", SUBSYSTEM=="net", ENV{INTERFACE}=="*", \ + RUN+="/sbin/ifdown $env{INTERFACE}" diff --git a/udev-initscript b/udev-initscript new file mode 100644 index 0000000..04dba79 --- /dev/null +++ b/udev-initscript @@ -0,0 +1,136 @@ +#! /bin/sh +# +# Author: Rolf Eike Beer +# derived from original RedHat udev init script +# based on the SuSE 9.0 template (c) 1995-2002 SuSE Linux AG +# +# /etc/init.d/udev +# and its symbolic link +# /(usr/)sbin/rcudev +# +# System startup script for udev +# +# LSB compatible service control script; see http://www.linuxbase.org/spec/ +# +### BEGIN INIT INFO +# Provides: udev +# Required-Start: +# Required-Stop: +# Default-Start: 1 2 3 5 +# Default-Stop: 0 6 +# Short-Description: manage user-space device nodes in /udev +# Description: Start udev to create the device files for all +# devices already present in system when script is +# called. All other devices files will be automatically +# created when udev is called via /sbin/hotplug. +# Requires at least a kernel 2.6 to work properly. +### END INIT INFO +# +# Note on script names: +# http://www.linuxbase.org/spec/refspecs/LSB_1.2.0/gLSB/scrptnames.html +# A registry has been set up to manage the init script namespace. +# http://www.lanana.org/ +# Please use the names already registered or register one or use a +# vendor prefix. + + +# Check for missing binaries (stale symlinks should not happen) +UDEV_PROG=systemd-udevd +UDEV_BIN=/lib/systemd/$UDEV_PROG +UDEV_STATIC_ARCHIVE=/lib/udev/devices/static.tar.gz +test -x $UDEV_BIN || exit 5 + +# Check for existence of needed config file and read it +UDEV_CONFIG=/etc/udev/udev.conf +test -r $UDEV_CONFIG || exit 6 +. $UDEV_CONFIG + +# Directory where sysfs is mounted +SYSFS_DIR=/sys + +# Source LSB init functions +#. /lib/lsb/init-functions +. /etc/sysconfig/rc +. $rc_functions + +case "$1" in + start) + if [ ! -d $SYSFS_DIR ]; then + log_failure_msg "${0}: SYSFS_DIR \"$SYSFS_DIR\" not found" + exit 1 + fi + if [ ! -d $udev_root ]; then + mkdir $udev_root || exit 4 + fi + echo "" > /proc/sys/kernel/hotplug + + echo -n "Starting udev: " + if [ ! "`grep ' /dev ' /proc/mounts`" ]; then + [ "`grep devtmpfs /proc/filesystems`" ] && \ + mount -n -t devtmpfs udev /dev || \ + mount -n -t tmpfs udev /dev + fi + if [ ! "`grep ' /run ' /proc/mounts`" ]; then + mount -n -t tmpfs tmpfs /run + fi + [ -e /dev/shm ] || { + mkdir /dev/shm /dev/pts + chmod 1777 /dev/shm + } + [ -e $UDEV_STATIC_ARCHIVE ] && { + STATIC_INIT=1 + (cd / + tar xzf $UDEV_STATIC_ARCHIVE) + } || [ -x /lib/udev/devices/MAKEDEV ] && /lib/udev/devices/MAKEDEV + + $UDEV_BIN --daemon &>/dev/null + evaluate_retval + echo + + [ "$STATIC_INIT" ] || { + + echo -n "Plugging devices: " + udevadm trigger + udevadm settle + evaluate_retval + echo + } + ;; + stop) + echo -n "Stopping udev: " + killall $UDEV_PROG + success + echo + ;; + restart|force-reload) + $0 stop && $0 start + exit $? + ;; + reload) + exit 3 + ;; + status) + echo -n "Checking for udev root directory: " + if [ -d $udev_root ]; then + #log_success_msg "found" + echo_success found + echo + else + #log_warning_msg "not found" + warning "not found" + echo + exit 3 + fi + ;; + savedevices) + echo -n "Creating static devices archive: " + (cd / + tar czf $UDEV_STATIC_ARCHIVE /dev) + evaluate_retval + echo + ;; + *) + echo "Usage: $0 {start|stop|status|restart|force-reload|reload|savedevices}" + exit 1 + ;; +esac diff --git a/udev-openmamba.rules b/udev-openmamba.rules new file mode 100644 index 0000000..ae37efa --- /dev/null +++ b/udev-openmamba.rules @@ -0,0 +1,69 @@ +# +# openmamba custom rules for udev +# Copyright (c) 2008 by Silvan Calarco +# + +# if this is a ide cdrom, name it the default name, and create a symlink to cdrom +SUBSYSTEM=="block", KERNEL=="*[!0-9]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT=="cdrom", SYMLINK+="cdrom cdrom-%k" +SUBSYSTEM=="block", KERNEL=="sr[0-9]*", SYMLINK+="cdrom cdrom-%k", GROUP="cdrom" + +# if this is a ide dvd, create a symlink to dvd +SUBSYSTEM=="block", KERNEL=="hd[a-z]", ATTR{removable}=="1", PROGRAM="/lib/udev/check-cdrom.sh %k DVD", SYMLINK+="dvd dvd-%k" + +# if this is a ide dvd, create a symlink to dvd +ATTR{removable}=="1", PROGRAM="/lib/udev/check-cdrom.sh %k DVD", SYMLINK+="dvd dvd-%k" + +# Sound devices +KERNEL=="admmidi", SYMLINK+="sound/admmidi", GROUP="audio" +KERNEL=="admmidi[1-9]", SYMLINK+="sound/admmidi%n", GROUP="audio" +KERNEL=="adsp", SYMLINK+="sound/adsp", GROUP="audio" +KERNEL=="adsp[1-9]", SYMLINK+="sound/adsp%n", GROUP="audio" +KERNEL=="amidi", SYMLINK+="sound/amidi", GROUP="audio" +KERNEL=="amidi[1-9]", SYMLINK+="sound/amidi%n", GROUP="audio" +KERNEL=="amixer", SYMLINK+="sound/amixer", GROUP="audio" +KERNEL=="amixer[1-9]", SYMLINK+="sound/amixer%n", GROUP="audio" + +KERNEL=="audio", SYMLINK+="sound/audio", GROUP="audio" +KERNEL=="audio[1-9]", SYMLINK+="sound/audio%n", GROUP="audio" +KERNEL=="dmmidi", SYMLINK+="sound/dmmidi", GROUP="audio" +KERNEL=="dmmidi[1-9]", SYMLINK+="sound/dmmidi%n", GROUP="audio" +KERNEL=="dsp", SYMLINK+="sound/dsp", GROUP="audio" +KERNEL=="dsp[1-9]", SYMLINK+="sound/dsp%n", GROUP="audio" +KERNEL=="dmfm", SYMLINK+="sound/dmfm", GROUP="audio" +KERNEL=="dmfm[1-9]", SYMLINK+="sound/dmfm%n", GROUP="audio" +KERNEL=="midi", SYMLINK+="sound/midi", GROUP="audio" +KERNEL=="midi[1-9]", SYMLINK+="sound/midi%n", GROUP="audio" +KERNEL=="mixer", SYMLINK+="sound/mixer", GROUP="audio" +KERNEL=="mixer[1-9]", SYMLINK+="sound/mixer%n", GROUP="audio" +KERNEL=="music", SYMLINK+="sound/music", GROUP="audio" +KERNEL=="music[1-9]", SYMLINK+="sound/music%n", GROUP="audio" +KERNEL=="sequencer", SYMLINK+="sound/sequencer", GROUP="audio" +KERNEL=="sequencer[1-9]", SYMLINK+="sound/%k", GROUP="audio" + +#KERNEL=="controlC[0-9]*", SYMLINK+="snd/%k", GROUP="audio" +#KERNEL=="hw[CD0-9]*", SYMLINK+="snd/%k", GROUP="audio" +#KERNEL=="pcm[CD0-9cp]*", SYMLINK+="snd/%k", GROUP="audio" +#KERNEL=="midi[CD0-9]*", SYMLINK+="snd/%k", GROUP="audio" +#KERNEL=="timer", SYMLINK+="snd/%k", GROUP="audio" +#KERNEL=="seq", SYMLINK+="snd/%k", GROUP="audio" + +# IEEE1394 (firewire) devices (must be before raw devices below) +#KERNEL=="raw1394", NAME="%k" + +# USB devices +#KERNEL=="hiddev*", SYMLINK+="usb/%k" +KERNEL=="legousbtower*", SYMLINK+="usb/%k" +KERNEL=="dabusb*", SYMLINK+="usb/%k" + +# CAPI devices +KERNEL=="capi", SYMLINK+="capi20", SYMLINK+="isdn/capi20" +KERNEL=="capi*", SYMLINK+="capi/%n" + +# DRM devices +#SUBSYSTEM=="drm", KERNEL=="card*", SYMLINK+="dri/%k" + +##################################### +# Persistent block device stuff - end +##################################### + +#ACTION=="add", SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'X=%k X=$${X#usbdev} B=$${X%%%%.*} D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c" diff --git a/udev-permissions.rules b/udev-permissions.rules new file mode 100644 index 0000000..96f7540 --- /dev/null +++ b/udev-permissions.rules @@ -0,0 +1,77 @@ +# default permissions for block devices +SUBSYSTEM=="block", GROUP="disk", MODE="0660" +SUBSYSTEM=="block", ATTR{removable}=="1", GROUP="floppy" +SUBSYSTEM=="block", KERNEL=="sr[0-9]*", ATTR{removable}=="1", GROUP="cdrecording", MODE="0664" + +# IDE devices +SUBSYSTEM=="block", KERNEL=="hd[a-z]", ATTR{removable}=="1", \ + PROGRAM="/bin/cat /proc/ide/%k/media", RESULT=="cdrom*", GROUP="cdrecording", MODE="0664" +SUBSYSTEM=="ide", KERNEL=="ht[0-9]*", GROUP="tape" +SUBSYSTEM=="ide", KERNEL=="nht[0-9]*", GROUP="tape" + +# SCSI devices +SUBSYSTEM=="scsi", ATTR{type}=="1", GROUP="tape" +SUBSYSTEM=="scsi", ATTR{type}=="5", GROUP="cdrecording", MODE="0660" +SUBSYSTEM=="scsi", ATTR{type}=="6", GROUP="scanner" + +# USB devices +SUBSYSTEM=="usb", KERNEL=="legousbtower*", MODE="0666" + +# serial devices +SUBSYSTEM=="tty", GROUP="dialout" +SUBSYSTEM=="capi", GROUP="dialout" + +# vc devices (all members of the tty subsystem) +KERNEL=="ptmx", MODE="0666", GROUP="root" +KERNEL=="console", MODE="0600", GROUP="root" +KERNEL=="tty", MODE="0666", GROUP="root" +KERNEL=="tty[0-9]*", GROUP="root" + +# video devices +SUBSYSTEM=="video4linux", GROUP="video" +SUBSYSTEM=="dvb", GROUP="video" +SUBSYSTEM=="graphics", GROUP="video" +SUBSYSTEM=="nvidia", GROUP="video" +SUBSYSTEM=="drm", GROUP="video" + +# misc devices +KERNEL=="random", MODE="0666" +KERNEL=="urandom", MODE="0444" +KERNEL=="mem", MODE="0640", GROUP="kmem" +KERNEL=="kmem", MODE="0640", GROUP="kmem" +KERNEL=="port", MODE="0640", GROUP="kmem" +KERNEL=="full", MODE="0666" +KERNEL=="null", MODE="0666" +KERNEL=="zero", MODE="0666" +KERNEL=="inotify", MODE="0666" +KERNEL=="sgi_fetchop", MODE="0666" +KERNEL=="sonypi", MODE="0666" +KERNEL=="agpgart", GROUP="video" +KERNEL=="nvram", GROUP="nvram" +KERNEL=="rtc", MODE="0660", GROUP="audio" +KERNEL=="hpet", MODE="0660", GROUP="audio" + +KERNEL=="cdemu[0-9]*", GROUP="cdrecording", MODE="0660" +KERNEL=="pktcdvd[0-9]*",GROUP="cdrecording", MODE="0660" +KERNEL=="pktcdvd", MODE="0644" + +# printers and parallel devices +SUBSYSTEM=="printer", GROUP="lp" +SUBSYSTEM=="ppdev", GROUP="lp" +KERNEL=="pt[0-9]*", GROUP="tape" +KERNEL=="pht[0-9]*", GROUP="tape" + +# sound devices +SUBSYSTEM=="sound", GROUP="audio" + +# input devices +KERNEL=="event[0-9]*", MODE="0664", GROUP="video" +KERNEL=="js[0-9]*", MODE="0664" + +# AOE character devices +SUBSYSTEM=="aoe", MODE="0220", GROUP="disk" +SUBSYSTEM=="aoe", KERNEL=="err",MODE="0440" + +# kvm and kqemu devices +KERNEL=="kqemu", MODE="0660", GROUP="kvm" +KERNEL=="kvm" MODE="0660", GROUP="kvm" diff --git a/udev-post-initscript b/udev-post-initscript new file mode 100644 index 0000000..27aaa75 --- /dev/null +++ b/udev-post-initscript @@ -0,0 +1,91 @@ +#!/bin/bash +# +# udev-post Post script for udev, after all filesystems are mounted +# +# Authors: Harald Hoyer +# +# chkconfig: 12345 26 75 +# description: Moves the generated persistent udev rules to /etc/udev/rules.d +# +### BEGIN INIT INFO +# Default-Start: 12345 +# Default-Stop: 0 6 +# Required-Start: $local_fs +# Required-Stop: +# Short-Description: Moves the generated persistent udev rules to /etc/udev/rules.d +# Description: Moves the generated persistent udev rules to /etc/udev/rules.d +# Provides: udev-post +### END INIT INFO + +. /etc/rc.d/init.d/functions +. /etc/sysconfig/udev + +# See how we were called. +case "$1" in + start|reload) + # workaround for bluetoothd not started because it needs dbus running + udevadm trigger --subsystem-match=bluetooth + + STRING=$"Adding udev persistent rules" + + # copy the rules generated before / was mounted read-write + for file in /dev/.udev/tmp-rules--*; do + dest=${file##*tmp-rules--} + # check, if anything is todo + [ "$dest" = '*' ] && exit 0 + echo -n $STRING + cat $file >> /etc/udev/rules.d/$dest + rc=$? + rm -f $file + if [ "$rc" -eq "0" ]; then + success "$STRING" + echo + elif [ "$rc" -eq "1" ]; then + failure "$STRING" + echo + fi + done + + touch /var/lock/subsys/udev-post + exit 0 + ;; + stop) + STRING=$"Generating udev makedev cache file" + MAKEDEV="/sbin/MAKEDEV" + USE_MD5="false" + [ -x /usr/bin/md5sum -a "$UDEV_USE_MAKEDEV_CACHE" == "yes" ] && USE_MD5="true" + if [ "$USE_MD5" == "true" -a -x "$MAKEDEV" ]; then + for i in /etc/udev/makedev.d/*.nodes; do + if [ -f "$i" ]; then + # use a little caching to speedup things + md5=$(/usr/bin/md5sum "$i"|(read a b; echo $a)) + md5file="/var/lib/udev/makedev.d/${md5}.sh" + + if [ ! -f "$md5file" ]; then + echo -n $STRING + ( sed -e 's,#.*,,g' "$i" | \ + xargs $MAKEDEV -x -a -S ) \ + > "$md5file" + rc=$? + if [ "$rc" -eq "0" ]; then + success "$STRING" + echo + elif [ "$rc" -eq "1" ]; then + failure "$STRING" + echo + fi + fi + fi + done + fi + rm -f /var/lock/subsys/udev-post + exit 0 + ;; + status) + exit 3 + ;; + *) + echo $"Usage: $0 {start|stop|reload}" + exit 3 +esac +exit 0 diff --git a/udev-sysconfig b/udev-sysconfig new file mode 100644 index 0000000..9a58d98 --- /dev/null +++ b/udev-sysconfig @@ -0,0 +1,4 @@ +# If set to "yes", generates cache shell files of what MAKEDEV would do. +# May speedup some systems with slow disks. +# EXPERIMENTAL - use at your own risk +UDEV_USE_MAKEDEV_CACHE="no"