Remove udev 173
This commit is contained in:
parent
8116fd9341
commit
726b1bebbc
|
@ -1,58 +0,0 @@
|
|||
{ stdenv, fetchurl, gperf, pkgconfig, glib, acl
|
||||
, libusb, usbutils, pciutils }:
|
||||
|
||||
assert stdenv ? glibc;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "udev-173";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kernel/linux/utils/kernel/hotplug/${name}.tar.bz2";
|
||||
sha256 = "1bxadi4bi11v8ipzj22wknv8hsb0wgdb99bx3w9w33rgl4aq78bh";
|
||||
};
|
||||
|
||||
buildInputs = [ gperf pkgconfig glib acl libusb usbutils ];
|
||||
|
||||
configureFlags =
|
||||
''
|
||||
--with-pci-ids-path=${pciutils}/share/pci.ids
|
||||
--enable-udev_acl --enable-edd
|
||||
--disable-introspection --libexecdir=$(out)/lib/udev
|
||||
--with-firmware-path=/root/test-firmware:/var/run/current-system/firmware
|
||||
'';
|
||||
|
||||
# Workaround for the Linux kernel headers being too old.
|
||||
NIX_CFLAGS_COMPILE = "-DBTN_TRIGGER_HAPPY=0x2c0";
|
||||
|
||||
postInstall =
|
||||
''
|
||||
# The path to rule_generator.functions in write_cd_rules and
|
||||
# write_net_rules is broken. Also, don't store the mutable
|
||||
# persistant rules in /etc/udev/rules.d but in
|
||||
# /var/lib/udev/rules.d.
|
||||
for i in $out/lib/udev/write_cd_rules $out/lib/udev/write_net_rules; do
|
||||
substituteInPlace $i \
|
||||
--replace /lib/udev $out/lib/udev \
|
||||
--replace /etc/udev/rules.d /var/lib/udev/rules.d
|
||||
done
|
||||
|
||||
# Don't set PATH to /bin:/sbin; won't work in NixOS.
|
||||
sed -e '/PATH=/d' -i $out/lib/udev/rule_generator.functions
|
||||
|
||||
ln -sv $out/lib/ConsoleKit $out/etc/ConsoleKit
|
||||
|
||||
rm -frv $out/share/gtk-doc
|
||||
'';
|
||||
|
||||
patches = [ ./custom-rules.patch ] ++
|
||||
[(fetchurl {
|
||||
url = https://bugs.archlinux.org/task/25356?getfile=7281;
|
||||
sha256 = "01xib1pfdbwacgx8dqxgrf67a0mwkpm4kxy9f9v3df93v0m4pmbm";
|
||||
})] ++
|
||||
stdenv.lib.optional stdenv.isArm ./pre-accept4-kernel.patch;
|
||||
|
||||
meta = {
|
||||
homepage = http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html;
|
||||
description = "Udev manages the /dev filesystem";
|
||||
};
|
||||
}
|
|
@ -1,91 +0,0 @@
|
|||
commit c49ec33ba0f1a7f11b188913bb4895360ced67f8
|
||||
Author: Yury G. Kudryashov <urkud.urkud@gmail.com>
|
||||
Date: Tue Aug 16 16:28:56 2011 +0400
|
||||
|
||||
Upstream considers presence of rules_dir=... in udev.conf as a very special case.
|
||||
In particular, they disable /dev/.udev/*. Re-enable it.
|
||||
|
||||
diff --git a/udev/udev-rules.c b/udev/udev-rules.c
|
||||
index 6bf2726..c1ae1f3 100644
|
||||
--- a/udev/udev-rules.c
|
||||
+++ b/udev/udev-rules.c
|
||||
@@ -1812,6 +1812,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
|
||||
struct udev_list file_list;
|
||||
struct udev_list_entry *file_loop;
|
||||
struct token end_token;
|
||||
+ char runpathrules[UTIL_PATH_SIZE];
|
||||
|
||||
rules = calloc(1, sizeof(struct udev_rules));
|
||||
if (rules == NULL)
|
||||
@@ -1854,22 +1855,21 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
|
||||
rules->trie_nodes_cur = 1;
|
||||
|
||||
if (udev_get_rules_path(udev) == NULL) {
|
||||
- char filename[UTIL_PATH_SIZE];
|
||||
|
||||
/* /lib/udev -- default/package rules */
|
||||
add_matching_files(udev, &file_list, LIBEXECDIR "/rules.d", ".rules");
|
||||
|
||||
/* /etc/udev -- system-specific/user/admin rules */
|
||||
add_matching_files(udev, &file_list, SYSCONFDIR "/udev/rules.d", ".rules");
|
||||
-
|
||||
- /* /run/udev -- throw-away/temporary rules */
|
||||
- util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/rules.d", NULL);
|
||||
- add_matching_files(udev, &file_list, filename, ".rules");
|
||||
} else {
|
||||
/* custom rules files location for testing */
|
||||
add_matching_files(udev, &file_list, udev_get_rules_path(udev), ".rules");
|
||||
}
|
||||
|
||||
+ /* /run/udev -- throw-away/temporary rules */
|
||||
+ util_strscpyl(runpathrules, sizeof(runpathrules), udev_get_run_path(udev), "/rules.d", NULL);
|
||||
+ add_matching_files(udev, &file_list, runpathrules, ".rules");
|
||||
+
|
||||
/* add all filenames to the string buffer */
|
||||
udev_list_entry_foreach(file_loop, udev_list_get_entry(&file_list)) {
|
||||
const char *filename = udev_list_entry_get_value(file_loop);
|
||||
diff --git a/udev/udevd.c b/udev/udevd.c
|
||||
index f1a31e7..45d10b6 100644
|
||||
--- a/udev/udevd.c
|
||||
+++ b/udev/udevd.c
|
||||
@@ -1198,6 +1198,8 @@ int main(int argc, char *argv[])
|
||||
struct epoll_event ep_ctrl, ep_inotify, ep_signal, ep_netlink, ep_worker;
|
||||
struct udev_ctrl_connection *ctrl_conn = NULL;
|
||||
int rc = 1;
|
||||
+ char filename[UTIL_PATH_SIZE];
|
||||
+ struct stat statbuf;
|
||||
|
||||
udev = udev_new();
|
||||
if (udev == NULL)
|
||||
@@ -1480,23 +1482,21 @@ int main(int argc, char *argv[])
|
||||
inotify_add_watch(fd_inotify, udev_get_rules_path(udev),
|
||||
IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
|
||||
} else {
|
||||
- char filename[UTIL_PATH_SIZE];
|
||||
- struct stat statbuf;
|
||||
|
||||
inotify_add_watch(fd_inotify, LIBEXECDIR "/rules.d",
|
||||
IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
|
||||
inotify_add_watch(fd_inotify, SYSCONFDIR "/udev/rules.d",
|
||||
IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
|
||||
+ }
|
||||
|
||||
- /* watch dynamic rules directory */
|
||||
- util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/rules.d", NULL);
|
||||
- if (stat(filename, &statbuf) != 0) {
|
||||
- util_create_path(udev, filename);
|
||||
- mkdir(filename, 0755);
|
||||
- }
|
||||
- inotify_add_watch(fd_inotify, filename,
|
||||
- IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
|
||||
+ /* watch dynamic rules directory */
|
||||
+ util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/rules.d", NULL);
|
||||
+ if (stat(filename, &statbuf) != 0) {
|
||||
+ util_create_path(udev, filename);
|
||||
+ mkdir(filename, 0755);
|
||||
}
|
||||
+ inotify_add_watch(fd_inotify, filename,
|
||||
+ IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
|
||||
udev_watch_restore(udev);
|
||||
|
||||
/* block and listen to all signals on signalfd */
|
|
@ -1,43 +0,0 @@
|
|||
From:
|
||||
https://github.com/archlinuxarm/PKGBUILDs/blob/master/core/udev-oxnas/pre-accept4-kernel.patch
|
||||
|
||||
diff -urN a/udev/udev-ctrl.c b/udev/udev-ctrl.c
|
||||
--- a/udev/udev-ctrl.c 2011-10-09 17:10:32.000000000 -0600
|
||||
+++ b/udev/udev-ctrl.c 2011-10-25 15:11:09.000000000 -0600
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
+#include <fcntl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/poll.h>
|
||||
#include <sys/socket.h>
|
||||
@@ -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,19 @@
|
||||
conn->refcount = 1;
|
||||
conn->uctrl = uctrl;
|
||||
|
||||
- conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK);
|
||||
+// 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) {
|
|
@ -6269,7 +6269,6 @@ let
|
|||
});
|
||||
|
||||
udev145 = callPackage ../os-specific/linux/udev/145.nix { };
|
||||
udev173 = callPackage ../os-specific/linux/udev/173.nix { };
|
||||
udev = pkgs.systemd;
|
||||
|
||||
udisks = callPackage ../os-specific/linux/udisks { };
|
||||
|
|
Loading…
Reference in New Issue