Accepting request 173533 from Base:System
- Fix handle-etc-HOSTNAME.patch to properly set hostname at startup when using /etc/HOSTNAME. (forwarded request 173532 from fcrozat) OBS-URL: https://build.opensuse.org/request/show/173533 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/systemd?expand=0&rev=136
This commit is contained in:
parent
a699b1ca34
commit
a0eb8a1c64
@ -1,129 +0,0 @@
|
|||||||
From: Robert Milasan <rmilasan@suse.com>
|
|
||||||
Date: Thu, 11 Apr 2013 15:39:39 +0200
|
|
||||||
Subject: Reinstate TIMEOUT handling
|
|
||||||
|
|
||||||
Without treating events with timeouts specially some drivers would
|
|
||||||
cause a 30 seconds stall on boot: .
|
|
||||||
|
|
||||||
I also received reports of some drivers not working at all, even
|
|
||||||
after the timeout.
|
|
||||||
|
|
||||||
We will remove this patch when more drivers have been fixed in
|
|
||||||
the kernel (3.4?).
|
|
||||||
|
|
||||||
This reverts 43d5c5f03645c4b842659f9b5bd0ae465e885e92 and
|
|
||||||
57c6f8ae5f52a6e8ffc66a54966346f733dded39.
|
|
||||||
---
|
|
||||||
src/libudev/libudev-device.c | 19 +++++++++++++++++++
|
|
||||||
src/libudev/libudev-private.h | 1 +
|
|
||||||
src/udev/udevd.c | 13 ++++++++++---
|
|
||||||
3 files changed, 30 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c
|
|
||||||
index 6bb2e41..4fdd242 100644
|
|
||||||
--- a/src/libudev/libudev-device.c
|
|
||||||
+++ b/src/libudev/libudev-device.c
|
|
||||||
@@ -78,6 +78,7 @@ struct udev_device {
|
|
||||||
struct udev_list tags_list;
|
|
||||||
unsigned long long int seqnum;
|
|
||||||
usec_t usec_initialized;
|
|
||||||
+ int timeout;
|
|
||||||
int devlink_priority;
|
|
||||||
int refcount;
|
|
||||||
dev_t devnum;
|
|
||||||
@@ -172,6 +173,21 @@ static int udev_device_set_devnum(struct udev_device *udev_device, dev_t devnum)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+int udev_device_get_timeout(struct udev_device *udev_device)
|
|
||||||
+{
|
|
||||||
+ return udev_device->timeout;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int udev_device_set_timeout(struct udev_device *udev_device, int timeout)
|
|
||||||
+{
|
|
||||||
+ char num[32];
|
|
||||||
+
|
|
||||||
+ udev_device->timeout = timeout;
|
|
||||||
+ snprintf(num, sizeof(num), "%u", timeout);
|
|
||||||
+ udev_device_add_property(udev_device, "TIMEOUT", num);
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
const char *udev_device_get_devpath_old(struct udev_device *udev_device)
|
|
||||||
{
|
|
||||||
return udev_device->devpath_old;
|
|
||||||
@@ -462,6 +478,8 @@ void udev_device_add_property_from_string_parse(struct udev_device *udev_device,
|
|
||||||
udev_device_set_devpath_old(udev_device, &property[12]);
|
|
||||||
} else if (startswith(property, "SEQNUM=")) {
|
|
||||||
udev_device_set_seqnum(udev_device, strtoull(&property[7], NULL, 10));
|
|
||||||
+ } else if (startswith(property, "TIMEOUT=")) {
|
|
||||||
+ udev_device_set_timeout(udev_device, strtoull(&property[8], NULL, 10));
|
|
||||||
} else if (startswith(property, "IFINDEX=")) {
|
|
||||||
udev_device_set_ifindex(udev_device, strtoull(&property[8], NULL, 10));
|
|
||||||
} else if (startswith(property, "DEVMODE=")) {
|
|
||||||
@@ -653,6 +671,7 @@ struct udev_device *udev_device_new(struct udev *udev)
|
|
||||||
udev_list_init(udev, &udev_device->sysattr_value_list, true);
|
|
||||||
udev_list_init(udev, &udev_device->sysattr_list, false);
|
|
||||||
udev_list_init(udev, &udev_device->tags_list, true);
|
|
||||||
+ udev_device->timeout = -1;
|
|
||||||
udev_device->watch_handle = -1;
|
|
||||||
/* copy global properties */
|
|
||||||
udev_list_entry_foreach(list_entry, udev_get_properties_list_entry(udev))
|
|
||||||
diff --git a/src/libudev/libudev-private.h b/src/libudev/libudev-private.h
|
|
||||||
index 54c51ac..d2124ea 100644
|
|
||||||
--- a/src/libudev/libudev-private.h
|
|
||||||
+++ b/src/libudev/libudev-private.h
|
|
||||||
@@ -77,6 +77,7 @@ const char *udev_device_get_id_filename(struct udev_device *udev_device);
|
|
||||||
void udev_device_set_is_initialized(struct udev_device *udev_device);
|
|
||||||
int udev_device_add_tag(struct udev_device *udev_device, const char *tag);
|
|
||||||
void udev_device_cleanup_tags_list(struct udev_device *udev_device);
|
|
||||||
+int udev_device_get_timeout(struct udev_device *udev_device);
|
|
||||||
usec_t udev_device_get_usec_initialized(struct udev_device *udev_device);
|
|
||||||
void udev_device_set_usec_initialized(struct udev_device *udev_device, usec_t usec_initialized);
|
|
||||||
int udev_device_get_devlink_priority(struct udev_device *udev_device);
|
|
||||||
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
|
||||||
index 7d13b4f..9be1931 100644
|
|
||||||
--- a/src/udev/udevd.c
|
|
||||||
+++ b/src/udev/udevd.c
|
|
||||||
@@ -391,7 +391,7 @@ out:
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void event_run(struct event *event)
|
|
||||||
+static void event_run(struct event *event, bool force)
|
|
||||||
{
|
|
||||||
struct udev_list_node *loop;
|
|
||||||
|
|
||||||
@@ -417,7 +417,7 @@ static void event_run(struct event *event)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (children >= children_max) {
|
|
||||||
+ if (!force && children >= children_max) {
|
|
||||||
if (children_max > 1)
|
|
||||||
log_debug("maximum number (%i) of children reached\n", children);
|
|
||||||
return;
|
|
||||||
@@ -455,6 +455,13 @@ static int event_queue_insert(struct udev_device *dev)
|
|
||||||
|
|
||||||
event->state = EVENT_QUEUED;
|
|
||||||
udev_list_node_append(&event->node, &event_list);
|
|
||||||
+
|
|
||||||
+ /* run all events with a timeout set immediately */
|
|
||||||
+ if (udev_device_get_timeout(dev) > 0) {
|
|
||||||
+ event_run(event, true);
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -566,7 +573,7 @@ static void event_queue_start(struct udev *udev)
|
|
||||||
if (is_devpath_busy(event))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- event_run(event);
|
|
||||||
+ event_run(event, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -7,11 +7,11 @@ udevd race for netlink events (bnc#774646)
|
|||||||
src/udev/udevd.c | 2 ++
|
src/udev/udevd.c | 2 ++
|
||||||
1 file changed, 2 insertions(+)
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
Index: systemd-202/src/udev/udevd.c
|
||||||
index 9be1931..d0c4c72 100644
|
===================================================================
|
||||||
--- a/src/udev/udevd.c
|
--- systemd-202.orig/src/udev/udevd.c
|
||||||
+++ b/src/udev/udevd.c
|
+++ systemd-202/src/udev/udevd.c
|
||||||
@@ -1414,6 +1414,8 @@ int main(int argc, char *argv[])
|
@@ -1407,6 +1407,8 @@ int main(int argc, char *argv[])
|
||||||
dev = udev_monitor_receive_device(monitor);
|
dev = udev_monitor_receive_device(monitor);
|
||||||
if (dev != NULL) {
|
if (dev != NULL) {
|
||||||
udev_device_set_usec_initialized(dev, now(CLOCK_MONOTONIC));
|
udev_device_set_usec_initialized(dev, now(CLOCK_MONOTONIC));
|
@ -7,11 +7,11 @@ fix modules.devname path, it isn't in /usr.
|
|||||||
src/udev/udevd.c | 2 +-
|
src/udev/udevd.c | 2 +-
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
Index: systemd-202/src/udev/udevd.c
|
||||||
index d0c4c72..599cd3b 100644
|
===================================================================
|
||||||
--- a/src/udev/udevd.c
|
--- systemd-202.orig/src/udev/udevd.c
|
||||||
+++ b/src/udev/udevd.c
|
+++ systemd-202/src/udev/udevd.c
|
||||||
@@ -831,7 +831,7 @@ static void static_dev_create_from_modules(struct udev *udev)
|
@@ -824,7 +824,7 @@ static void static_dev_create_from_modul
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -1,22 +0,0 @@
|
|||||||
From: Robert Milasan <rmilasan@suse.com>
|
|
||||||
Date: Tue, 7 Aug 2012 08:34:49 +0000
|
|
||||||
Subject: udev fix sg autoload regression
|
|
||||||
|
|
||||||
Fix regression in udev where sg driver is no longer loaded for disc
|
|
||||||
events. Will need a non-udev solution for 12.3 (bnc#761109).
|
|
||||||
---
|
|
||||||
rules/80-drivers.rules | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/rules/80-drivers.rules b/rules/80-drivers.rules
|
|
||||||
index 50523e4..b863532 100644
|
|
||||||
--- a/rules/80-drivers.rules
|
|
||||||
+++ b/rules/80-drivers.rules
|
|
||||||
@@ -7,6 +7,7 @@ SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN{builtin}="kmod load tifm_sd"
|
|
||||||
SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN{builtin}="kmod load tifm_ms"
|
|
||||||
SUBSYSTEM=="memstick", RUN{builtin}="kmod load ms_block mspro_block"
|
|
||||||
SUBSYSTEM=="i2o", RUN{builtin}="kmod load i2o_block"
|
|
||||||
+SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", IMPORT{builtin}="kmod load sg"
|
|
||||||
SUBSYSTEM=="module", KERNEL=="parport_pc", RUN{builtin}="kmod load ppdev"
|
|
||||||
KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", RUN{builtin}="kmod load sm_ftl"
|
|
||||||
|
|
@ -1,421 +0,0 @@
|
|||||||
From: Robert Milasan <rmilasan@suse.com>
|
|
||||||
Date: Wed, 20 Mar 2013 10:14:59 +0000
|
|
||||||
Subject: re-add persistent net
|
|
||||||
|
|
||||||
udev: re-add persistent network rules (bnc#809843).
|
|
||||||
---
|
|
||||||
Makefile.am | 10 +-
|
|
||||||
.../75-persistent-net-generator.rules | 102 +++++++++++++++
|
|
||||||
src/udev/rule_generator/rule_generator.functions | 113 ++++++++++++++++
|
|
||||||
src/udev/rule_generator/write_net_rules | 145 +++++++++++++++++++++
|
|
||||||
4 files changed, 369 insertions(+), 1 deletion(-)
|
|
||||||
create mode 100644 src/udev/rule_generator/75-persistent-net-generator.rules
|
|
||||||
create mode 100644 src/udev/rule_generator/rule_generator.functions
|
|
||||||
create mode 100644 src/udev/rule_generator/write_net_rules
|
|
||||||
|
|
||||||
diff --git a/Makefile.am b/Makefile.am
|
|
||||||
index 10609f3..f5e4159 100644
|
|
||||||
--- a/Makefile.am
|
|
||||||
+++ b/Makefile.am
|
|
||||||
@@ -2287,6 +2287,14 @@ EXTRA_DIST += \
|
|
||||||
src/gudev/seed-example.js
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
+dist_udevhome_SCRIPTS = \
|
|
||||||
+ src/udev/rule_generator/rule_generator.functions \
|
|
||||||
+ src/udev/rule_generator/write_net_rules
|
|
||||||
+
|
|
||||||
+dist_udevrules_DATA += \
|
|
||||||
+ src/udev/rule_generator/75-persistent-net-generator.rules
|
|
||||||
+
|
|
||||||
+# ------------------------------------------------------------------------------
|
|
||||||
if ENABLE_KEYMAP
|
|
||||||
keymap_SOURCES = \
|
|
||||||
src/udev/keymap/keymap.c
|
|
||||||
@@ -2314,7 +2322,7 @@ dist_udevrules_DATA += \
|
|
||||||
src/udev/keymap/95-keymap.rules \
|
|
||||||
src/udev/keymap/95-keyboard-force-release.rules
|
|
||||||
|
|
||||||
-dist_udevhome_SCRIPTS = \
|
|
||||||
+dist_udevhome_SCRIPTS += \
|
|
||||||
src/udev/keymap/findkeyboards \
|
|
||||||
src/udev/keymap/keyboard-force-release.sh
|
|
||||||
|
|
||||||
diff --git a/src/udev/rule_generator/75-persistent-net-generator.rules b/src/udev/rule_generator/75-persistent-net-generator.rules
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..4f80573
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/udev/rule_generator/75-persistent-net-generator.rules
|
|
||||||
@@ -0,0 +1,102 @@
|
|
||||||
+# 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"
|
|
||||||
+
|
|
||||||
+# 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"
|
|
||||||
diff --git a/src/udev/rule_generator/rule_generator.functions b/src/udev/rule_generator/rule_generator.functions
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..087bc34
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/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@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)
|
|
||||||
+}
|
|
||||||
diff --git a/src/udev/rule_generator/write_net_rules b/src/udev/rule_generator/write_net_rules
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..fad1cc5
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/udev/rule_generator/write_net_rules
|
|
||||||
@@ -0,0 +1,145 @@
|
|
||||||
+#!/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@Linux.IT>
|
|
||||||
+# Copyright (C) 2007 Kay Sievers <kay.sievers@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'
|
|
||||||
+
|
|
||||||
+if [ -e /usr/lib/udev/rule_generator.functions ]; then
|
|
||||||
+ . /usr/lib/udev/rule_generator.functions
|
|
||||||
+else
|
|
||||||
+ . /lib/udev/rule_generator.functions
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+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
|
|
@ -4,8 +4,43 @@ Subject: handle /etc/HOSTNAME
|
|||||||
|
|
||||||
(bnc#803653)
|
(bnc#803653)
|
||||||
---
|
---
|
||||||
|
src/core/hostname-setup.c | 22 +++++++++++++++++-----
|
||||||
src/hostname/hostnamed.c | 12 +++++++++++-
|
src/hostname/hostnamed.c | 12 +++++++++++-
|
||||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
2 files changed, 28 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/core/hostname-setup.c b/src/core/hostname-setup.c
|
||||||
|
index ac508af..15d206c 100644
|
||||||
|
--- a/src/core/hostname-setup.c
|
||||||
|
+++ b/src/core/hostname-setup.c
|
||||||
|
@@ -61,12 +61,24 @@ int hostname_setup(void) {
|
||||||
|
|
||||||
|
r = read_and_strip_hostname("/etc/hostname", &b);
|
||||||
|
if (r < 0) {
|
||||||
|
- if (r == -ENOENT)
|
||||||
|
- enoent = true;
|
||||||
|
- else
|
||||||
|
+ if (r == -ENOENT) {
|
||||||
|
+ /* use SUSE fallback */
|
||||||
|
+ r = read_and_strip_hostname("/etc/HOSTNAME", &b);
|
||||||
|
+ if (r < 0) {
|
||||||
|
+ if (r == -ENOENT)
|
||||||
|
+ enoent = true;
|
||||||
|
+ else
|
||||||
|
+ log_warning("Failed to read configured hostname: %s", strerror(-r));
|
||||||
|
+ hn = NULL;
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ hn = b;
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
log_warning("Failed to read configured hostname: %s", strerror(-r));
|
||||||
|
-
|
||||||
|
- hn = NULL;
|
||||||
|
+ hn = NULL;
|
||||||
|
+ }
|
||||||
|
} else
|
||||||
|
hn = b;
|
||||||
|
|
||||||
diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
|
diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
|
||||||
index c7f454c..cfbd706 100644
|
index c7f454c..cfbd706 100644
|
||||||
|
@ -1,3 +1,30 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Apr 26 16:37:28 CEST 2013 - fcrozat@suse.com
|
||||||
|
|
||||||
|
- Fix handle-etc-HOSTNAME.patch to properly set hostname at startup
|
||||||
|
when using /etc/HOSTNAME.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Apr 25 08:19:30 UTC 2013 - rmilasan@suse.com
|
||||||
|
|
||||||
|
- Rename remaning udev patches (clean-up).
|
||||||
|
- Generate %{_libexecdir}/modules-load.d/sg.conf so we load sg module at
|
||||||
|
boot time not from udev (bnc#761109).
|
||||||
|
- Drop unused patches:
|
||||||
|
1001-Reinstate-TIMEOUT-handling.patch
|
||||||
|
1005-udev-fix-sg-autoload-regression.patch
|
||||||
|
1026-re-add-persistent-net.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Apr 23 14:58:47 CEST 2013 - fcrozat@suse.com
|
||||||
|
|
||||||
|
- Use drop-in file to fix bnc#804158.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Apr 23 12:44:16 UTC 2013 - coolo@suse.com
|
||||||
|
|
||||||
|
- add some more conflicts to make bootstrap work
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Apr 22 09:48:22 UTC 2013 - fcrozat@suse.com
|
Mon Apr 22 09:48:22 UTC 2013 - fcrozat@suse.com
|
||||||
|
|
||||||
|
@ -81,6 +81,7 @@ BuildRequires: pkgconfig(usbutils) >= 0.82
|
|||||||
%if 0%{?bootstrap}
|
%if 0%{?bootstrap}
|
||||||
Requires: this-is-only-for-build-envs
|
Requires: this-is-only-for-build-envs
|
||||||
Conflicts: systemd
|
Conflicts: systemd
|
||||||
|
Conflicts: kiwi
|
||||||
%else
|
%else
|
||||||
# the buildignore is important for bootstrapping
|
# the buildignore is important for bootstrapping
|
||||||
#!BuildIgnore: udev
|
#!BuildIgnore: udev
|
||||||
@ -169,24 +170,18 @@ Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch
|
|||||||
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
|
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
|
||||||
|
|
||||||
# udev patches
|
# udev patches
|
||||||
# PATCH-FIX-OPENSUSE 1001-Reinstate-TIMEOUT-handling.patch
|
# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch
|
||||||
Patch1001: 1001-Reinstate-TIMEOUT-handling.patch
|
Patch1001: 1001-re-enable-by_path-links-for-ata-devices.patch
|
||||||
# PATCH-FIX-OPENSUSE 1002-re-enable-by_path-links-for-ata-devices.patch
|
# PATCH-FIX-OPENSUSE 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
||||||
Patch1002: 1002-re-enable-by_path-links-for-ata-devices.patch
|
Patch1002: 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
||||||
# PATCH-FIX-OPENSUSE 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
# PATCH-FIX-OPENSUSE 1003-udev-netlink-null-rules.patch
|
||||||
Patch1003: 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
Patch1003: 1003-udev-netlink-null-rules.patch
|
||||||
# PATCH-FIX-OPENSUSE 1004-udev-netlink-null-rules.patch
|
# PATCH-FIX-OPENSUSE 1004-fix-devname-prefix.patch fcrozat@suse.com -- fix modules.devname path, it isn't in /usr
|
||||||
Patch1004: 1004-udev-netlink-null-rules.patch
|
Patch1004: 1004-fix-devname-prefix.patch
|
||||||
# PATCH-FIX-OPENSUSE 1005-udev-fix-sg-autoload-regression.patch
|
# PATCH-FIX-OPENSUSE 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
||||||
Patch1005: 1005-udev-fix-sg-autoload-regression.patch
|
Patch1005: 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
||||||
# PATCH-FIX-OPENSUSE 1007-fix-devname-prefix.patch fcrozat@suse.com -- fix modules.devname path, it isn't in /usr
|
# PATCH-FIX-OPENSUSE 1006-udev-always-rename-network.patch
|
||||||
Patch1007: 1007-fix-devname-prefix.patch
|
Patch1006: 1006-udev-always-rename-network.patch
|
||||||
# PATCH-FIX-OPENSUSE 1021-create-default-links-for-primary-cd_dvd-drive.patch
|
|
||||||
Patch1021: 1021-create-default-links-for-primary-cd_dvd-drive.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1026-re-add-persistent-net.patch
|
|
||||||
Patch1026: 1026-re-add-persistent-net.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1027-udev-always-rename-network.patch
|
|
||||||
Patch1027: 1027-udev-always-rename-network.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Systemd is a system and service manager, compatible with SysV and LSB
|
Systemd is a system and service manager, compatible with SysV and LSB
|
||||||
@ -205,6 +200,9 @@ Summary: Development headers for systemd
|
|||||||
License: LGPL-2.1+
|
License: LGPL-2.1+
|
||||||
Group: Development/Libraries/C and C++
|
Group: Development/Libraries/C and C++
|
||||||
Requires: %{name} = %{version}
|
Requires: %{name} = %{version}
|
||||||
|
%if 0%{?bootstrap}
|
||||||
|
Conflicts: systemd-devel
|
||||||
|
%endif
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
Development headers and auxiliary files for developing applications for systemd.
|
Development headers and auxiliary files for developing applications for systemd.
|
||||||
@ -237,7 +235,7 @@ Conflicts: ConsoleKit < 0.4.1
|
|||||||
Requires: filesystem
|
Requires: filesystem
|
||||||
%if 0%{?bootstrap}
|
%if 0%{?bootstrap}
|
||||||
Provides: udev = %{version}
|
Provides: udev = %{version}
|
||||||
Conflicts: libudev%{udev_major} = %{version}
|
Conflicts: libudev%{udev_major}
|
||||||
Conflicts: udev
|
Conflicts: udev
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
@ -257,6 +255,7 @@ Group: System/Libraries
|
|||||||
Requires: %{udevpkgname} >= %{version}-%{release}
|
Requires: %{udevpkgname} >= %{version}-%{release}
|
||||||
%if 0%{?bootstrap}
|
%if 0%{?bootstrap}
|
||||||
Conflicts: libudev%{udev_major}
|
Conflicts: libudev%{udev_major}
|
||||||
|
Conflicts: kiwi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%description -n lib%{udevpkgname}%{udev_major}
|
%description -n lib%{udevpkgname}%{udev_major}
|
||||||
@ -365,10 +364,7 @@ cp %{SOURCE7} m4/
|
|||||||
%patch1003 -p1
|
%patch1003 -p1
|
||||||
%patch1004 -p1
|
%patch1004 -p1
|
||||||
%patch1005 -p1
|
%patch1005 -p1
|
||||||
%patch1007 -p1
|
%patch1006 -p1
|
||||||
%patch1021 -p1
|
|
||||||
%patch1026 -p1
|
|
||||||
%patch1027 -p1
|
|
||||||
|
|
||||||
#systemd
|
#systemd
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
@ -507,6 +503,13 @@ ln -s systemd-random-seed-load.service %{buildroot}/%{_prefix}/lib/systemd/syste
|
|||||||
# don't mount /tmp as tmpfs for now
|
# don't mount /tmp as tmpfs for now
|
||||||
rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount
|
rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount
|
||||||
|
|
||||||
|
# create %{_libexecdir}/modules-load.d
|
||||||
|
mkdir -p %{buildroot}%{_libexecdir}/modules-load.d
|
||||||
|
cat << EOF > %{buildroot}%{_libexecdir}/modules-load.d/sg.conf
|
||||||
|
# load sg module at boot time
|
||||||
|
sg
|
||||||
|
EOF
|
||||||
|
|
||||||
# To avoid making life hard for Factory developers, don't package the
|
# To avoid making life hard for Factory developers, don't package the
|
||||||
# kernel.core_pattern setting until systemd-coredump is a part of an actual
|
# kernel.core_pattern setting until systemd-coredump is a part of an actual
|
||||||
# systemd release and it's made clear how to get the core dumps out of the
|
# systemd release and it's made clear how to get the core dumps out of the
|
||||||
@ -549,10 +552,13 @@ mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-sleep/
|
|||||||
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/default.target.wants
|
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/default.target.wants
|
||||||
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/dbus.target.wants
|
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/dbus.target.wants
|
||||||
|
|
||||||
src="%buildroot/%_libexecdir/systemd/system/getty@.service"
|
# create drop-in to prevent tty1 to be cleared (bnc#804158)
|
||||||
dst="${src/@/@tty1}"
|
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/getty@tty1.service.d/
|
||||||
cp "$src" "$dst"
|
echo << EOF > %{buildroot}%{_prefix}/lib/systemd/system/getty@tty1.service.d/noclear.conf
|
||||||
perl -i -pe 's{^# the VT is cleared.*}{}i;s{(^TTYVTDisallocate=.*)}{}' "$dst"
|
[Service]
|
||||||
|
# ensure tty1 isn't cleared (bnc#804158)
|
||||||
|
TTYVTDisallocate=no
|
||||||
|
EOF
|
||||||
|
|
||||||
%fdupes -s %{buildroot}%{_mandir}
|
%fdupes -s %{buildroot}%{_mandir}
|
||||||
|
|
||||||
@ -716,7 +722,7 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
# rm -rf %{buildroot}
|
rm -rf %{buildroot}
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
@ -787,6 +793,8 @@ fi
|
|||||||
%dir %{_prefix}/lib/systemd/system-sleep/
|
%dir %{_prefix}/lib/systemd/system-sleep/
|
||||||
%dir %{_prefix}/lib/systemd/system/default.target.wants
|
%dir %{_prefix}/lib/systemd/system/default.target.wants
|
||||||
%dir %{_prefix}/lib/systemd/system/dbus.target.wants
|
%dir %{_prefix}/lib/systemd/system/dbus.target.wants
|
||||||
|
%dir %{_prefix}/lib/systemd/system/getty@tty1.service.d
|
||||||
|
%{_prefix}/lib/systemd/system/getty@tty1.service.d/noclear.conf
|
||||||
%if ! 0%{?bootstrap}
|
%if ! 0%{?bootstrap}
|
||||||
%{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator
|
%{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator
|
||||||
%endif
|
%endif
|
||||||
@ -799,6 +807,7 @@ fi
|
|||||||
|
|
||||||
%dir %{_libexecdir}/modules-load.d
|
%dir %{_libexecdir}/modules-load.d
|
||||||
%dir %{_sysconfdir}/modules-load.d
|
%dir %{_sysconfdir}/modules-load.d
|
||||||
|
%{_libexecdir}/modules-load.d/sg.conf
|
||||||
|
|
||||||
%dir %{_libexecdir}/tmpfiles.d
|
%dir %{_libexecdir}/tmpfiles.d
|
||||||
%dir %{_sysconfdir}/tmpfiles.d
|
%dir %{_sysconfdir}/tmpfiles.d
|
||||||
@ -942,8 +951,6 @@ fi
|
|||||||
%{_prefix}/lib/udev/scsi_id
|
%{_prefix}/lib/udev/scsi_id
|
||||||
%{_prefix}/lib/udev/v4l_id
|
%{_prefix}/lib/udev/v4l_id
|
||||||
%{_prefix}/lib/udev/write_dev_root_rule
|
%{_prefix}/lib/udev/write_dev_root_rule
|
||||||
%{_prefix}/lib/udev/write_net_rules
|
|
||||||
%{_prefix}/lib/udev/rule_generator.functions
|
|
||||||
%dir %{_prefix}/lib/udev/keymaps
|
%dir %{_prefix}/lib/udev/keymaps
|
||||||
%{_prefix}/lib/udev/keymaps/*
|
%{_prefix}/lib/udev/keymaps/*
|
||||||
%{_prefix}/lib/udev/keyboard-force-release.sh
|
%{_prefix}/lib/udev/keyboard-force-release.sh
|
||||||
|
@ -1,3 +1,30 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Apr 26 16:37:28 CEST 2013 - fcrozat@suse.com
|
||||||
|
|
||||||
|
- Fix handle-etc-HOSTNAME.patch to properly set hostname at startup
|
||||||
|
when using /etc/HOSTNAME.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Apr 25 08:19:30 UTC 2013 - rmilasan@suse.com
|
||||||
|
|
||||||
|
- Rename remaning udev patches (clean-up).
|
||||||
|
- Generate %{_libexecdir}/modules-load.d/sg.conf so we load sg module at
|
||||||
|
boot time not from udev (bnc#761109).
|
||||||
|
- Drop unused patches:
|
||||||
|
1001-Reinstate-TIMEOUT-handling.patch
|
||||||
|
1005-udev-fix-sg-autoload-regression.patch
|
||||||
|
1026-re-add-persistent-net.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Apr 23 14:58:47 CEST 2013 - fcrozat@suse.com
|
||||||
|
|
||||||
|
- Use drop-in file to fix bnc#804158.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Apr 23 12:44:16 UTC 2013 - coolo@suse.com
|
||||||
|
|
||||||
|
- add some more conflicts to make bootstrap work
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Apr 22 09:48:22 UTC 2013 - fcrozat@suse.com
|
Mon Apr 22 09:48:22 UTC 2013 - fcrozat@suse.com
|
||||||
|
|
||||||
|
67
systemd.spec
67
systemd.spec
@ -76,6 +76,7 @@ BuildRequires: pkgconfig(usbutils) >= 0.82
|
|||||||
%if 0%{?bootstrap}
|
%if 0%{?bootstrap}
|
||||||
Requires: this-is-only-for-build-envs
|
Requires: this-is-only-for-build-envs
|
||||||
Conflicts: systemd
|
Conflicts: systemd
|
||||||
|
Conflicts: kiwi
|
||||||
%else
|
%else
|
||||||
# the buildignore is important for bootstrapping
|
# the buildignore is important for bootstrapping
|
||||||
#!BuildIgnore: udev
|
#!BuildIgnore: udev
|
||||||
@ -164,24 +165,18 @@ Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch
|
|||||||
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
|
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
|
||||||
|
|
||||||
# udev patches
|
# udev patches
|
||||||
# PATCH-FIX-OPENSUSE 1001-Reinstate-TIMEOUT-handling.patch
|
# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch
|
||||||
Patch1001: 1001-Reinstate-TIMEOUT-handling.patch
|
Patch1001: 1001-re-enable-by_path-links-for-ata-devices.patch
|
||||||
# PATCH-FIX-OPENSUSE 1002-re-enable-by_path-links-for-ata-devices.patch
|
# PATCH-FIX-OPENSUSE 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
||||||
Patch1002: 1002-re-enable-by_path-links-for-ata-devices.patch
|
Patch1002: 1002-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
||||||
# PATCH-FIX-OPENSUSE 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
# PATCH-FIX-OPENSUSE 1003-udev-netlink-null-rules.patch
|
||||||
Patch1003: 1003-rules-create-by-id-scsi-links-for-ATA-devices.patch
|
Patch1003: 1003-udev-netlink-null-rules.patch
|
||||||
# PATCH-FIX-OPENSUSE 1004-udev-netlink-null-rules.patch
|
# PATCH-FIX-OPENSUSE 1004-fix-devname-prefix.patch fcrozat@suse.com -- fix modules.devname path, it isn't in /usr
|
||||||
Patch1004: 1004-udev-netlink-null-rules.patch
|
Patch1004: 1004-fix-devname-prefix.patch
|
||||||
# PATCH-FIX-OPENSUSE 1005-udev-fix-sg-autoload-regression.patch
|
# PATCH-FIX-OPENSUSE 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
||||||
Patch1005: 1005-udev-fix-sg-autoload-regression.patch
|
Patch1005: 1005-create-default-links-for-primary-cd_dvd-drive.patch
|
||||||
# PATCH-FIX-OPENSUSE 1007-fix-devname-prefix.patch fcrozat@suse.com -- fix modules.devname path, it isn't in /usr
|
# PATCH-FIX-OPENSUSE 1006-udev-always-rename-network.patch
|
||||||
Patch1007: 1007-fix-devname-prefix.patch
|
Patch1006: 1006-udev-always-rename-network.patch
|
||||||
# PATCH-FIX-OPENSUSE 1021-create-default-links-for-primary-cd_dvd-drive.patch
|
|
||||||
Patch1021: 1021-create-default-links-for-primary-cd_dvd-drive.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1026-re-add-persistent-net.patch
|
|
||||||
Patch1026: 1026-re-add-persistent-net.patch
|
|
||||||
# PATCH-FIX-OPENSUSE 1027-udev-always-rename-network.patch
|
|
||||||
Patch1027: 1027-udev-always-rename-network.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Systemd is a system and service manager, compatible with SysV and LSB
|
Systemd is a system and service manager, compatible with SysV and LSB
|
||||||
@ -200,6 +195,9 @@ Summary: Development headers for systemd
|
|||||||
License: LGPL-2.1+
|
License: LGPL-2.1+
|
||||||
Group: Development/Libraries/C and C++
|
Group: Development/Libraries/C and C++
|
||||||
Requires: %{name} = %{version}
|
Requires: %{name} = %{version}
|
||||||
|
%if 0%{?bootstrap}
|
||||||
|
Conflicts: systemd-devel
|
||||||
|
%endif
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
Development headers and auxiliary files for developing applications for systemd.
|
Development headers and auxiliary files for developing applications for systemd.
|
||||||
@ -232,7 +230,7 @@ Conflicts: ConsoleKit < 0.4.1
|
|||||||
Requires: filesystem
|
Requires: filesystem
|
||||||
%if 0%{?bootstrap}
|
%if 0%{?bootstrap}
|
||||||
Provides: udev = %{version}
|
Provides: udev = %{version}
|
||||||
Conflicts: libudev%{udev_major} = %{version}
|
Conflicts: libudev%{udev_major}
|
||||||
Conflicts: udev
|
Conflicts: udev
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
@ -252,6 +250,7 @@ Group: System/Libraries
|
|||||||
Requires: %{udevpkgname} >= %{version}-%{release}
|
Requires: %{udevpkgname} >= %{version}-%{release}
|
||||||
%if 0%{?bootstrap}
|
%if 0%{?bootstrap}
|
||||||
Conflicts: libudev%{udev_major}
|
Conflicts: libudev%{udev_major}
|
||||||
|
Conflicts: kiwi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%description -n lib%{udevpkgname}%{udev_major}
|
%description -n lib%{udevpkgname}%{udev_major}
|
||||||
@ -360,10 +359,7 @@ cp %{SOURCE7} m4/
|
|||||||
%patch1003 -p1
|
%patch1003 -p1
|
||||||
%patch1004 -p1
|
%patch1004 -p1
|
||||||
%patch1005 -p1
|
%patch1005 -p1
|
||||||
%patch1007 -p1
|
%patch1006 -p1
|
||||||
%patch1021 -p1
|
|
||||||
%patch1026 -p1
|
|
||||||
%patch1027 -p1
|
|
||||||
|
|
||||||
#systemd
|
#systemd
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
@ -502,6 +498,13 @@ ln -s systemd-random-seed-load.service %{buildroot}/%{_prefix}/lib/systemd/syste
|
|||||||
# don't mount /tmp as tmpfs for now
|
# don't mount /tmp as tmpfs for now
|
||||||
rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount
|
rm %{buildroot}/%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount
|
||||||
|
|
||||||
|
# create %{_libexecdir}/modules-load.d
|
||||||
|
mkdir -p %{buildroot}%{_libexecdir}/modules-load.d
|
||||||
|
cat << EOF > %{buildroot}%{_libexecdir}/modules-load.d/sg.conf
|
||||||
|
# load sg module at boot time
|
||||||
|
sg
|
||||||
|
EOF
|
||||||
|
|
||||||
# To avoid making life hard for Factory developers, don't package the
|
# To avoid making life hard for Factory developers, don't package the
|
||||||
# kernel.core_pattern setting until systemd-coredump is a part of an actual
|
# kernel.core_pattern setting until systemd-coredump is a part of an actual
|
||||||
# systemd release and it's made clear how to get the core dumps out of the
|
# systemd release and it's made clear how to get the core dumps out of the
|
||||||
@ -544,10 +547,13 @@ mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-sleep/
|
|||||||
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/default.target.wants
|
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/default.target.wants
|
||||||
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/dbus.target.wants
|
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/dbus.target.wants
|
||||||
|
|
||||||
src="%buildroot/%_libexecdir/systemd/system/getty@.service"
|
# create drop-in to prevent tty1 to be cleared (bnc#804158)
|
||||||
dst="${src/@/@tty1}"
|
mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/getty@tty1.service.d/
|
||||||
cp "$src" "$dst"
|
echo << EOF > %{buildroot}%{_prefix}/lib/systemd/system/getty@tty1.service.d/noclear.conf
|
||||||
perl -i -pe 's{^# the VT is cleared.*}{}i;s{(^TTYVTDisallocate=.*)}{}' "$dst"
|
[Service]
|
||||||
|
# ensure tty1 isn't cleared (bnc#804158)
|
||||||
|
TTYVTDisallocate=no
|
||||||
|
EOF
|
||||||
|
|
||||||
%fdupes -s %{buildroot}%{_mandir}
|
%fdupes -s %{buildroot}%{_mandir}
|
||||||
|
|
||||||
@ -711,7 +717,7 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
# rm -rf %{buildroot}
|
rm -rf %{buildroot}
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
@ -782,6 +788,8 @@ fi
|
|||||||
%dir %{_prefix}/lib/systemd/system-sleep/
|
%dir %{_prefix}/lib/systemd/system-sleep/
|
||||||
%dir %{_prefix}/lib/systemd/system/default.target.wants
|
%dir %{_prefix}/lib/systemd/system/default.target.wants
|
||||||
%dir %{_prefix}/lib/systemd/system/dbus.target.wants
|
%dir %{_prefix}/lib/systemd/system/dbus.target.wants
|
||||||
|
%dir %{_prefix}/lib/systemd/system/getty@tty1.service.d
|
||||||
|
%{_prefix}/lib/systemd/system/getty@tty1.service.d/noclear.conf
|
||||||
%if ! 0%{?bootstrap}
|
%if ! 0%{?bootstrap}
|
||||||
%{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator
|
%{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator
|
||||||
%endif
|
%endif
|
||||||
@ -794,6 +802,7 @@ fi
|
|||||||
|
|
||||||
%dir %{_libexecdir}/modules-load.d
|
%dir %{_libexecdir}/modules-load.d
|
||||||
%dir %{_sysconfdir}/modules-load.d
|
%dir %{_sysconfdir}/modules-load.d
|
||||||
|
%{_libexecdir}/modules-load.d/sg.conf
|
||||||
|
|
||||||
%dir %{_libexecdir}/tmpfiles.d
|
%dir %{_libexecdir}/tmpfiles.d
|
||||||
%dir %{_sysconfdir}/tmpfiles.d
|
%dir %{_sysconfdir}/tmpfiles.d
|
||||||
@ -937,8 +946,6 @@ fi
|
|||||||
%{_prefix}/lib/udev/scsi_id
|
%{_prefix}/lib/udev/scsi_id
|
||||||
%{_prefix}/lib/udev/v4l_id
|
%{_prefix}/lib/udev/v4l_id
|
||||||
%{_prefix}/lib/udev/write_dev_root_rule
|
%{_prefix}/lib/udev/write_dev_root_rule
|
||||||
%{_prefix}/lib/udev/write_net_rules
|
|
||||||
%{_prefix}/lib/udev/rule_generator.functions
|
|
||||||
%dir %{_prefix}/lib/udev/keymaps
|
%dir %{_prefix}/lib/udev/keymaps
|
||||||
%{_prefix}/lib/udev/keymaps/*
|
%{_prefix}/lib/udev/keymaps/*
|
||||||
%{_prefix}/lib/udev/keyboard-force-release.sh
|
%{_prefix}/lib/udev/keyboard-force-release.sh
|
||||||
|
Loading…
Reference in New Issue
Block a user