diff --git a/0239-coredumpctl-in-case-of-error-free-pattern-after-prin.patch b/0239-coredumpctl-in-case-of-error-free-pattern-after-prin.patch new file mode 100644 index 0000000..6b373bf --- /dev/null +++ b/0239-coredumpctl-in-case-of-error-free-pattern-after-prin.patch @@ -0,0 +1,26 @@ +From a5c54f73b345b191b99cf47c8efe33afc0e4b066 Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Tue, 14 Jan 2014 15:40:16 +0100 +Subject: [PATCH] coredumpctl: in case of error free pattern after print + +--- + src/journal/coredumpctl.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c +index 560a91b..a5997e2 100644 +--- a/src/journal/coredumpctl.c ++++ b/src/journal/coredumpctl.c +@@ -126,10 +126,11 @@ static int add_match(Set *set, const char *match) { + goto fail; + + log_debug("Adding pattern: %s", pattern); +- r = set_consume(set, pattern); ++ r = set_put(set, pattern); + if (r < 0) { + log_error("Failed to add pattern '%s': %s", + pattern, strerror(-r)); ++ free(pattern); + goto fail; + } + diff --git a/0240-shell-completion-remove-load-from-systemctl.patch b/0240-shell-completion-remove-load-from-systemctl.patch new file mode 100644 index 0000000..566e9af --- /dev/null +++ b/0240-shell-completion-remove-load-from-systemctl.patch @@ -0,0 +1,46 @@ +From 4028b4cf18191ca958d2ef6cced1d5087aeea976 Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Wed, 15 Jan 2014 15:31:07 +0100 +Subject: [PATCH] shell-completion: remove load from systemctl + +Conflicts: + shell-completion/bash/systemctl +--- + shell-completion/bash/systemctl | 2 +- + shell-completion/zsh/_systemctl | 3 +-- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl +index eea4b6d..84149e3 100644 +--- a/shell-completion/bash/systemctl ++++ b/shell-completion/bash/systemctl +@@ -141,7 +141,7 @@ _systemctl () { + emergency exit halt hibernate hybrid-sleep kexec list-jobs + list-sockets list-units list-unit-files poweroff reboot rescue + show-environment suspend get-default' +- [NAME]='snapshot load' ++ [NAME]='snapshot' + [FILE]='link' + [TARGETS]='set-default' + ) +diff --git a/shell-completion/zsh/_systemctl b/shell-completion/zsh/_systemctl +index 3959cd5..6d98cb6 100644 +--- a/shell-completion/zsh/_systemctl ++++ b/shell-completion/zsh/_systemctl +@@ -24,7 +24,6 @@ + "status:Show runtime status of one or more units" + "show:Show properties of one or more units/jobs or the manager" + "reset-failed:Reset failed state for all, one, or more units" +- "load:Load one or more units" + "list-unit-files:List installed unit files" + "enable:Enable one or more unit files" + "disable:Disable one or more unit files" +@@ -266,7 +265,7 @@ done + # [STANDALONE]='daemon-reexec daemon-reload default + # emergency exit halt kexec list-jobs list-units + # list-unit-files poweroff reboot rescue show-environment' +-# [NAME]='snapshot load' ++# [NAME]='snapshot' + + _systemctl_caching_policy() + { diff --git a/0241-units-drop-Install-section-from-multi-user.target-an.patch b/0241-units-drop-Install-section-from-multi-user.target-an.patch new file mode 100644 index 0000000..a204197 --- /dev/null +++ b/0241-units-drop-Install-section-from-multi-user.target-an.patch @@ -0,0 +1,38 @@ +From 491712eabdbdb0693a8b04dfee02665094eb7576 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 17 Jan 2014 20:27:35 +0100 +Subject: [PATCH] units: drop [Install] section from multi-user.target and + graphical.target + +They were supposed to make it easy to make the default.target a symlink +to these targets, but this was never advertised and we have a better +command for this now in "systemctl set-default". Since the install +section makes the output of "systemctl list-unit-files" confusing (since +it makes the units appear as "disabled"), let's drop the sections. +--- + units/graphical.target | 3 --- + units/multi-user.target | 3 --- + 2 files changed, 6 deletions(-) + +diff --git a/units/graphical.target b/units/graphical.target +index 65f2521..a2c4532 100644 +--- a/units/graphical.target ++++ b/units/graphical.target +@@ -13,6 +13,3 @@ After=multi-user.target + Conflicts=rescue.target + Wants=display-manager.service + AllowIsolate=yes +- +-[Install] +-Alias=default.target +diff --git a/units/multi-user.target b/units/multi-user.target +index 998e046..0f0e5e9 100644 +--- a/units/multi-user.target ++++ b/units/multi-user.target +@@ -12,6 +12,3 @@ Requires=basic.target + Conflicts=rescue.service rescue.target + After=basic.target rescue.service rescue.target + AllowIsolate=yes +- +-[Install] +-Alias=default.target diff --git a/0242-systemctl-skip-native-unit-file-handling-if-sysv-fil.patch b/0242-systemctl-skip-native-unit-file-handling-if-sysv-fil.patch new file mode 100644 index 0000000..143add8 --- /dev/null +++ b/0242-systemctl-skip-native-unit-file-handling-if-sysv-fil.patch @@ -0,0 +1,27 @@ +From d953cda9e6b3e41f419b63a35632edc8f769a7d0 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 20 Jan 2014 13:43:20 +0100 +Subject: [PATCH] systemctl: skip native unit file handling if sysv file + handling already handled everything + +Issue pointed out by Colin Guthrie. +--- + src/systemctl/systemctl.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c +index bc9808a..da49da7 100644 +--- a/src/systemctl/systemctl.c ++++ b/src/systemctl/systemctl.c +@@ -4436,6 +4436,11 @@ static int enable_unit(DBusConnection *bus, char **args) { + if (r < 0) + return r; + ++ /* If the operation was fully executed by the SysV compat, ++ * let's finish early */ ++ if (strv_isempty(mangled_names)) ++ return 0; ++ + if (!bus || avoid_bus()) { + if (streq(verb, "enable")) { + r = unit_file_enable(arg_scope, arg_runtime, arg_root, mangled_names, arg_force, &changes, &n_changes); diff --git a/0243-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/0243-hwdb-Update-database-of-Bluetooth-company-identifier.patch new file mode 100644 index 0000000..e5ba4d2 --- /dev/null +++ b/0243-hwdb-Update-database-of-Bluetooth-company-identifier.patch @@ -0,0 +1,35 @@ +From abcf860569fc85e7a6eb05606d579b6f2e6de898 Mon Sep 17 00:00:00 2001 +From: Marcel Holtmann +Date: Mon, 20 Jan 2014 17:53:16 -0800 +Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers + +--- + hwdb/20-bluetooth-vendor-product.hwdb | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb +index 192b715..6a9dc50 100644 +--- a/hwdb/20-bluetooth-vendor-product.hwdb ++++ b/hwdb/20-bluetooth-vendor-product.hwdb +@@ -851,3 +851,21 @@ bluetooth:v0119* + + bluetooth:v011A* + ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc. ++ ++bluetooth:v011B* ++ ID_VENDOR_FROM_DATABASE=Aruba Networks ++ ++bluetooth:v011C* ++ ID_VENDOR_FROM_DATABASE=Baidu ++ ++bluetooth:v011D* ++ ID_VENDOR_FROM_DATABASE=Arendi AG ++ ++bluetooth:v011E* ++ ID_VENDOR_FROM_DATABASE=Skoda Auto a.s. ++ ++bluetooth:v011F* ++ ID_VENDOR_FROM_DATABASE=Volkswagon AG ++ ++bluetooth:v0120* ++ ID_VENDOR_FROM_DATABASE=Porsche AG diff --git a/0244-udev-static_node-do-not-exit-rule-after-first-static.patch b/0244-udev-static_node-do-not-exit-rule-after-first-static.patch new file mode 100644 index 0000000..f7f66b6 --- /dev/null +++ b/0244-udev-static_node-do-not-exit-rule-after-first-static.patch @@ -0,0 +1,75 @@ +From 87041721ccfc9472d9c4f229402e342ba6c855b0 Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Wed, 22 Jan 2014 10:47:48 +0100 +Subject: [PATCH] udev: static_node - do not exit rule after first static_node + item + +The nodes usually do not exist, so handle the next item instead of +skipping the entire rule. +--- + src/udev/udev-rules.c | 21 ++++++++++----------- + 1 file changed, 10 insertions(+), 11 deletions(-) + +diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c +index 6f8b127..c981773 100644 +--- a/src/udev/udev-rules.c ++++ b/src/udev/udev-rules.c +@@ -900,6 +900,7 @@ static int rule_add_key(struct rule_tmp *rule_tmp, enum token_type type, + case TK_A_GOTO: + case TK_M_TAG: + case TK_A_TAG: ++ case TK_A_STATIC_NODE: + token->key.value_off = rules_add_string(rule_tmp->rules, value); + break; + case TK_M_IMPORT_BUILTIN: +@@ -942,9 +943,6 @@ static int rule_add_key(struct rule_tmp *rule_tmp, enum token_type type, + case TK_A_MODE_ID: + token->key.mode = *(mode_t *)data; + break; +- case TK_A_STATIC_NODE: +- token->key.value_off = rules_add_string(rule_tmp->rules, value); +- break; + case TK_M_EVENT_TIMEOUT: + token->key.event_timeout = *(int *)data; + break; +@@ -992,7 +990,7 @@ static int rule_add_key(struct rule_tmp *rule_tmp, enum token_type type, + } + + if (attr != NULL) { +- /* check if property/attribut name has substitution chars */ ++ /* check if property/attribute name has substitution chars */ + if (attr[0] == '[') + token->key.attrsubst = SB_SUBSYS; + else if (strchr(attr, '%') != NULL || strchr(attr, '$') != NULL) +@@ -2576,15 +2574,11 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules) + /* we assure, that the permissions tokens are sorted before the static token */ + if (mode == 0 && uid == 0 && gid == 0 && tags == NULL) + goto next; ++ + strscpyl(device_node, sizeof(device_node), "/dev/", rules_str(rules, cur->key.value_off), NULL); +- if (stat(device_node, &stats) != 0) +- goto next; +- if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode)) +- goto next; + ++ /* export the tags to a directory as symlinks, allowing otherwise dead nodes to be tagged */ + if (tags) { +- /* Export the tags to a directory as symlinks, allowing otherwise dead nodes to be tagged */ +- + STRV_FOREACH(t, tags) { + _cleanup_free_ char *unescaped_filename = NULL; + +@@ -2609,7 +2603,12 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules) + + /* don't touch the permissions if only the tags were set */ + if (mode == 0 && uid == 0 && gid == 0) +- goto next; ++ break; ++ ++ if (stat(device_node, &stats) != 0) ++ break; ++ if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode)) ++ break; + + if (mode == 0) { + if (gid > 0) diff --git a/0245-cryptsetup-Support-key-slot-option.patch b/0245-cryptsetup-Support-key-slot-option.patch new file mode 100644 index 0000000..2cb4b61 --- /dev/null +++ b/0245-cryptsetup-Support-key-slot-option.patch @@ -0,0 +1,91 @@ +From 47ac3edbade8ab5f4a205f2c1bad11ec9643b8b6 Mon Sep 17 00:00:00 2001 +From: Christian Seiler +Date: Sun, 26 Jan 2014 12:02:49 +0100 +Subject: [PATCH] cryptsetup: Support key-slot option + +Debian recently introduced the option key-slot to /etc/crypttab to +specify the LUKS key slot to be used for decrypting the device. On +systems where a keyfile is used and the key is not in the first slot, +this can speed up the boot process quite a bit, since cryptsetup does +not need to try all of the slots sequentially. (Unsuccessfully testing +a key slot typically takes up to about 1 second.) + +This patch makes systemd aware of this option. + +Debian bug that introduced the feature: +http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=704470 +--- + man/crypttab.xml | 14 ++++++++++++++ + src/cryptsetup/cryptsetup.c | 13 +++++++++++-- + 2 files changed, 25 insertions(+), 2 deletions(-) + +diff --git a/man/crypttab.xml b/man/crypttab.xml +index 90d8ce9..5f386e5 100644 +--- a/man/crypttab.xml ++++ b/man/crypttab.xml +@@ -164,6 +164,20 @@ + + + ++ key-slot= ++ ++ Specifies the key slot to ++ compare the passphrase or key against. ++ If the key slot does not match the given ++ passphrase or key, but another would, the ++ setup of the device will fail regardless. ++ This implies luks. See ++ cryptsetup8 ++ for possible values. The default is to try ++ all key slots in sequential order. ++ ++ ++ + luks + + Force LUKS mode. When this mode +diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c +index 39f7db7..6a76d21 100644 +--- a/src/cryptsetup/cryptsetup.c ++++ b/src/cryptsetup/cryptsetup.c +@@ -39,6 +39,7 @@ + static const char *opt_type = NULL; /* CRYPT_LUKS1, CRYPT_TCRYPT or CRYPT_PLAIN */ + static char *opt_cipher = NULL; + static unsigned opt_key_size = 0; ++static int opt_key_slot = CRYPT_ANY_SLOT; + static unsigned opt_keyfile_size = 0; + static unsigned opt_keyfile_offset = 0; + static char *opt_hash = NULL; +@@ -87,6 +88,14 @@ static int parse_one_option(const char *option) { + return 0; + } + ++ } else if (startswith(option, "key-slot=")) { ++ ++ opt_type = CRYPT_LUKS1; ++ if (safe_atoi(option+9, &opt_key_slot) < 0) { ++ log_error("key-slot= parse failure, ignoring."); ++ return 0; ++ } ++ + } else if (startswith(option, "tcrypt-keyfile=")) { + + opt_type = CRYPT_TCRYPT; +@@ -432,7 +441,7 @@ static int attach_luks_or_plain(struct crypt_device *cd, + crypt_get_device_name(cd)); + + if (key_file) { +- r = crypt_activate_by_keyfile_offset(cd, name, CRYPT_ANY_SLOT, ++ r = crypt_activate_by_keyfile_offset(cd, name, opt_key_slot, + key_file, opt_keyfile_size, + opt_keyfile_offset, flags); + if (r < 0) { +@@ -446,7 +455,7 @@ static int attach_luks_or_plain(struct crypt_device *cd, + if (pass_volume_key) + r = crypt_activate_by_volume_key(cd, name, *p, opt_key_size, flags); + else +- r = crypt_activate_by_passphrase(cd, name, CRYPT_ANY_SLOT, *p, strlen(*p), flags); ++ r = crypt_activate_by_passphrase(cd, name, opt_key_slot, *p, strlen(*p), flags); + + if (r >= 0) + break; diff --git a/0246-pam_systemd-Ignore-vtnr-when-seat-seat0.patch b/0246-pam_systemd-Ignore-vtnr-when-seat-seat0.patch new file mode 100644 index 0000000..1f7df88 --- /dev/null +++ b/0246-pam_systemd-Ignore-vtnr-when-seat-seat0.patch @@ -0,0 +1,28 @@ +From 2373386db2501528c74e2f547c2c5d27d81be35b Mon Sep 17 00:00:00 2001 +From: Matthew Monaco +Date: Fri, 24 Jan 2014 11:23:01 -0700 +Subject: [PATCH] pam_systemd: Ignore vtnr when seat != seat0 + +logind considers it an error for a seat other than seat0 to have a +non-zero vtnr for CreateSession +--- + src/login/pam-module.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/login/pam-module.c b/src/login/pam-module.c +index 973daf7..7ebb5d2 100644 +--- a/src/login/pam-module.c ++++ b/src/login/pam-module.c +@@ -335,6 +335,12 @@ _public_ PAM_EXTERN int pam_sm_open_session( + get_seat_from_display(display, NULL, &vtnr); + } + ++ if (seat && !streq(seat, "seat0")) { ++ pam_syslog(handle, LOG_DEBUG, ++ "Ignoring vtnr %d for %s which is not seat0", vtnr, seat); ++ vtnr = 0; ++ } ++ + if (!type) + type = !isempty(display) ? "x11" : + !isempty(tty) ? "tty" : "unspecified"; diff --git a/0247-keymap-Add-HP-Chromebook-14-Falco.patch b/0247-keymap-Add-HP-Chromebook-14-Falco.patch new file mode 100644 index 0000000..f3d28f6 --- /dev/null +++ b/0247-keymap-Add-HP-Chromebook-14-Falco.patch @@ -0,0 +1,37 @@ +From 815422d1be5fab4acaa8c1c752342752a0935e3a Mon Sep 17 00:00:00 2001 +From: Martin Pitt +Date: Mon, 27 Jan 2014 09:04:22 +0100 +Subject: [PATCH] keymap: Add HP Chromebook 14 (Falco) + +Thanks to Stefan Nagy . +--- + hwdb/60-keyboard.hwdb | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb +index e3d1f02..c027cbe 100644 +--- a/hwdb/60-keyboard.hwdb ++++ b/hwdb/60-keyboard.hwdb +@@ -417,6 +417,22 @@ keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHDX9494NR:pvr* + KEYBOARD_KEY_d8=!f23 # touchpad off + KEYBOARD_KEY_d9=!f22 # touchpad on + ++# Chromebook 14 ++# Top row keys (between ESC and power button) ++keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnFalco:pvr* ++ KEYBOARD_KEY_3b=back ++ KEYBOARD_KEY_3c=forward ++ KEYBOARD_KEY_3d=refresh ++ KEYBOARD_KEY_3f=switchvideomode ++ KEYBOARD_KEY_40=brightnessdown ++ KEYBOARD_KEY_41=brightnessup ++ KEYBOARD_KEY_42=mute ++ KEYBOARD_KEY_43=volumedown ++ KEYBOARD_KEY_44=volumeup ++ KEYBOARD_KEY_db=search # Same position as caps lock key on most keyboards ++# KEYBOARD_KEY_3e=fullscreen, no defined key sym ++ ++ + ########################################################### + # IBM + ########################################################### diff --git a/0248-keymap-Add-release-quirk-for-Acer-AOA-switchvideomod.patch b/0248-keymap-Add-release-quirk-for-Acer-AOA-switchvideomod.patch new file mode 100644 index 0000000..bef8d26 --- /dev/null +++ b/0248-keymap-Add-release-quirk-for-Acer-AOA-switchvideomod.patch @@ -0,0 +1,24 @@ +From ad001361e54d4e04175acd7f0eca55ffcb5e19ad Mon Sep 17 00:00:00 2001 +From: Martin Pitt +Date: Tue, 28 Jan 2014 18:10:12 +0100 +Subject: [PATCH] keymap: Add release quirk for Acer AOA switchvideomode key + +https://launchpad.net/bugs/1272658 +--- + hwdb/60-keyboard.hwdb | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb +index c027cbe..52d9a2a 100644 +--- a/hwdb/60-keyboard.hwdb ++++ b/hwdb/60-keyboard.hwdb +@@ -118,6 +118,9 @@ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*6593:* + keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*1640:* + KEYBOARD_KEY_ee=screenlock + ++keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAOA*:pvr* ++ KEYBOARD_KEY_a9=!switchvideomode # Fn+F5 ++ + ########################################################### + # Alienware + ########################################################### diff --git a/0249-keymap-Add-Sony-Vaio-VGN-FW250.patch b/0249-keymap-Add-Sony-Vaio-VGN-FW250.patch new file mode 100644 index 0000000..778803c --- /dev/null +++ b/0249-keymap-Add-Sony-Vaio-VGN-FW250.patch @@ -0,0 +1,24 @@ +From cf981a6c17d44d00c385fe8a9ed7b8259533006d Mon Sep 17 00:00:00 2001 +From: Martin Pitt +Date: Tue, 28 Jan 2014 18:14:18 +0100 +Subject: [PATCH] keymap: Add Sony Vaio VGN-FW250 + +https://launchpad.net/bugs/1271163 +--- + hwdb/60-keyboard.hwdb | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb +index 52d9a2a..ea206bb 100644 +--- a/hwdb/60-keyboard.hwdb ++++ b/hwdb/60-keyboard.hwdb +@@ -981,6 +981,9 @@ keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-Z21*:pvr* + KEYBOARD_KEY_17=prog1 + KEYBOARD_KEY_20=media + ++keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-FW250*:pvr* ++ KEYBOARD_KEY_10=suspend # Fn+F12 ++ + keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVPC*:pvr* + KEYBOARD_KEY_05=f21 # Fn+F1 -> KEY_F21 (The actual touchpad toggle) + KEYBOARD_KEY_0d=zoomout # Fn+F9 diff --git a/0250-keymap-Add-Toshiba-EQUIUM.patch b/0250-keymap-Add-Toshiba-EQUIUM.patch new file mode 100644 index 0000000..7feb0c9 --- /dev/null +++ b/0250-keymap-Add-Toshiba-EQUIUM.patch @@ -0,0 +1,22 @@ +From 8b690dd3c8d28ff107a9992e7405126a02ee7ae2 Mon Sep 17 00:00:00 2001 +From: Martin Pitt +Date: Wed, 29 Jan 2014 16:13:22 +0100 +Subject: [PATCH] keymap: Add Toshiba EQUIUM + +Thanks Aleksander Kowalski ! +--- + hwdb/60-keyboard.hwdb | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb +index ea206bb..f9084e4 100644 +--- a/hwdb/60-keyboard.hwdb ++++ b/hwdb/60-keyboard.hwdb +@@ -1089,6 +1089,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnPEGATRON*CORP.:pnSpring*Peak:* + keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*[uU][35]0[05]*:pvr* + keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSATELLITE*[uU][35]0[05]*:pvr* + keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*Pro*[uU]300*:pvr* ++keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnEQUIUM [uU][35]0[05]*:pvr* + keyboard:dmi:bvn*:bvr*:bd*:svnViooo*Corporation:pnPT17:* + keyboard:dmi:bvn*:bvr*:bd*:svnHANNspree:pnSN10E100:* + keyboard:dmi:bvn*:bvr*:bd*:svnGIGABYTE:pni1520M:* diff --git a/0251-tmpfiles-fix-memory-leak-of-exclude_prefixes.patch b/0251-tmpfiles-fix-memory-leak-of-exclude_prefixes.patch new file mode 100644 index 0000000..70e9125 --- /dev/null +++ b/0251-tmpfiles-fix-memory-leak-of-exclude_prefixes.patch @@ -0,0 +1,39 @@ +From 85e9236488cfad07cc0aa4d23610bc25039dda27 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 30 Jan 2014 21:40:27 -0500 +Subject: [PATCH] tmpfiles: fix memory leak of exclude_prefixes + +Missed in 5c795114. +--- + src/tmpfiles/tmpfiles.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c +index 5e49cc8..fb88acd 100644 +--- a/src/tmpfiles/tmpfiles.c ++++ b/src/tmpfiles/tmpfiles.c +@@ -1332,12 +1332,12 @@ static int parse_argv(int argc, char *argv[]) { + break; + + case ARG_PREFIX: +- if (strv_extend(&include_prefixes, optarg) < 0) ++ if (strv_push(&include_prefixes, optarg) < 0) + return log_oom(); + break; + + case ARG_EXCLUDE_PREFIX: +- if (strv_extend(&exclude_prefixes, optarg) < 0) ++ if (strv_push(&exclude_prefixes, optarg) < 0) + return log_oom(); + break; + +@@ -1498,7 +1498,8 @@ finish: + hashmap_free(items); + hashmap_free(globs); + +- strv_free(include_prefixes); ++ free(include_prefixes); ++ free(exclude_prefixes); + + set_free_free(unix_sockets); + diff --git a/0252-analyze-fix-plot-issues-when-using-gummiboot.patch b/0252-analyze-fix-plot-issues-when-using-gummiboot.patch new file mode 100644 index 0000000..719477a --- /dev/null +++ b/0252-analyze-fix-plot-issues-when-using-gummiboot.patch @@ -0,0 +1,34 @@ +From 982c437cfa1dc189fb650e00c6124e00f2c6de68 Mon Sep 17 00:00:00 2001 +From: Thomas Hindoe Paaboel Andersen +Date: Fri, 31 Jan 2014 07:07:20 +0100 +Subject: [PATCH] analyze: fix plot issues when using gummiboot + +It would crash and the legend in the bottom followed the time 0.0. +--- + src/analyze/systemd-analyze.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c +index f4c7f68..317baf9 100644 +--- a/src/analyze/systemd-analyze.c ++++ b/src/analyze/systemd-analyze.c +@@ -540,7 +540,7 @@ static int analyze_plot(DBusConnection *bus) { + name.nodename, name.release, name.version, name.machine); + + svg("\n", 20.0 + (SCALE_X * boot->firmware_time)); +- svg_graph_box(m, -boot->firmware_time, boot->finish_time); ++ svg_graph_box(m, -(double) boot->firmware_time, boot->finish_time); + + if (boot->firmware_time) { + svg_bar("firmware", -(double) boot->firmware_time, -(double) boot->loader_time, y); +@@ -589,7 +589,10 @@ static int analyze_plot(DBusConnection *bus) { + y++; + } + ++ svg("\n"); ++ + /* Legend */ ++ svg("\n"); + y++; + svg_bar("activating", 0, 300000, y); + svg_text(true, 400000, y, "Activating"); diff --git a/0253-udev-add-zram-to-the-list-of-devices-inappropriate-f.patch b/0253-udev-add-zram-to-the-list-of-devices-inappropriate-f.patch new file mode 100644 index 0000000..4e93e33 --- /dev/null +++ b/0253-udev-add-zram-to-the-list-of-devices-inappropriate-f.patch @@ -0,0 +1,26 @@ +From 66065b8d9cd1bb7e488fd84d4f19d34487bf29a7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B3hann=20B=2E=20Gu=C3=B0mundsson?= +Date: Sun, 2 Feb 2014 13:29:19 +0000 +Subject: [PATCH] udev: add zram to the list of devices inappropriate for + symlinks + +udev seems to have a race condition with swapon to see which can open +/dev/zram0 first, causing swapon to fail. Seems to be most noticeable +on arm devices one out of every 7 times or something. +--- + rules/60-persistent-storage.rules | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules +index a4d009a..154ffd9 100644 +--- a/rules/60-persistent-storage.rules ++++ b/rules/60-persistent-storage.rules +@@ -14,7 +14,7 @@ ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_ + SUBSYSTEM!="block", GOTO="persistent_storage_end" + + # skip rules for inappropriate block devices +-KERNEL=="fd*|mtd*|nbd*|gnbd*|btibm*|dm-*|md*", GOTO="persistent_storage_end" ++KERNEL=="fd*|mtd*|nbd*|gnbd*|btibm*|dm-*|md*|zram*", GOTO="persistent_storage_end" + + # ignore partitions that span the entire disk + TEST=="whole_disk", GOTO="persistent_storage_end" diff --git a/0254-bash-completion-fix-completion-of-complete-verbs.patch b/0254-bash-completion-fix-completion-of-complete-verbs.patch new file mode 100644 index 0000000..8033222 --- /dev/null +++ b/0254-bash-completion-fix-completion-of-complete-verbs.patch @@ -0,0 +1,116 @@ +From f00ffd4f0ab82c38125d2292f8f429aa22865dc3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 6 Feb 2014 00:31:22 -0500 +Subject: [PATCH] bash-completion: fix completion of complete verbs + +When doing 'command verb', the arguments for verb would be +proposed, but it is too early. We should complete verb first. + +https://bugs.freedesktop.org/show_bug.cgi?id=74596 + +Conflicts: + shell-completion/bash/busctl + shell-completion/bash/loginctl + shell-completion/bash/systemctl + shell-completion/bash/systemd-analyze +--- + shell-completion/bash/hostnamectl | 2 +- + shell-completion/bash/localectl | 2 +- + shell-completion/bash/loginctl | 2 +- + shell-completion/bash/systemctl | 2 +- + shell-completion/bash/systemd-analyze | 2 +- + shell-completion/bash/timedatectl | 2 +- + shell-completion/bash/udevadm | 2 +- + 7 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/shell-completion/bash/hostnamectl b/shell-completion/bash/hostnamectl +index 38ab134..9c75da9 100644 +--- a/shell-completion/bash/hostnamectl ++++ b/shell-completion/bash/hostnamectl +@@ -41,7 +41,7 @@ _hostnamectl() { + [NAME]='set-hostname' + ) + +- for ((i=0; i <= COMP_CWORD; i++)); do ++ for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break +diff --git a/shell-completion/bash/localectl b/shell-completion/bash/localectl +index bec9e78..84e2a6b 100644 +--- a/shell-completion/bash/localectl ++++ b/shell-completion/bash/localectl +@@ -52,7 +52,7 @@ _localectl() { + [X11]='set-x11-keymap' + ) + +- for ((i=0; i <= COMP_CWORD; i++)); do ++ for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break +diff --git a/shell-completion/bash/loginctl b/shell-completion/bash/loginctl +index 3104b30..26a8696 100644 +--- a/shell-completion/bash/loginctl ++++ b/shell-completion/bash/loginctl +@@ -70,7 +70,7 @@ _loginctl () { + [ATTACH]='attach' + ) + +- for ((i=0; $i <= $COMP_CWORD; i++)); do ++ for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} +diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl +index 84149e3..a5f10b4 100644 +--- a/shell-completion/bash/systemctl ++++ b/shell-completion/bash/systemctl +@@ -146,7 +146,7 @@ _systemctl () { + [TARGETS]='set-default' + ) + +- for ((i=0; $i <= $COMP_CWORD; i++)); do ++ for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} +diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze +index b65466b..6afcd96 100644 +--- a/shell-completion/bash/systemd-analyze ++++ b/shell-completion/bash/systemd-analyze +@@ -39,7 +39,7 @@ _systemd_analyze() { + + _init_completion || return + +- for ((i=0; $i <= $COMP_CWORD; i++)); do ++ for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} +diff --git a/shell-completion/bash/timedatectl b/shell-completion/bash/timedatectl +index c6a6545..1a0acc6 100644 +--- a/shell-completion/bash/timedatectl ++++ b/shell-completion/bash/timedatectl +@@ -52,7 +52,7 @@ _timedatectl() { + [TIME]='set-time' + ) + +- for ((i=0; i <= COMP_CWORD; i++)); do ++ for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break +diff --git a/shell-completion/bash/udevadm b/shell-completion/bash/udevadm +index 8ad8550..7e89189 100644 +--- a/shell-completion/bash/udevadm ++++ b/shell-completion/bash/udevadm +@@ -36,7 +36,7 @@ _udevadm() { + + local verbs=(info trigger settle control monitor hwdb test-builtin test) + +- for ((i=0; i <= COMP_CWORD; i++)); do ++ for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" "${verbs[@]}" && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} diff --git a/0255-shell-completion-fix-completion-of-localectl-set-loc.patch b/0255-shell-completion-fix-completion-of-localectl-set-loc.patch new file mode 100644 index 0000000..93c93c6 --- /dev/null +++ b/0255-shell-completion-fix-completion-of-localectl-set-loc.patch @@ -0,0 +1,81 @@ +From 827591e3b789844ec103338573cf8ed82231c0ad Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 6 Feb 2014 11:59:33 -0500 +Subject: [PATCH] shell-completion: fix completion of localectl set-locale + +https://bugs.freedesktop.org/show_bug.cgi?id=74157 +--- + shell-completion/bash/localectl | 20 ++++++++++++++++++-- + shell-completion/zsh/_localectl | 13 +++++++++---- + 2 files changed, 27 insertions(+), 6 deletions(-) + +diff --git a/shell-completion/bash/localectl b/shell-completion/bash/localectl +index 84e2a6b..c9e22af 100644 +--- a/shell-completion/bash/localectl ++++ b/shell-completion/bash/localectl +@@ -24,8 +24,14 @@ __contains_word () { + done + } + ++__locale_fields=( LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME \ ++ LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER \ ++ LC_NAME LC_ADDRESS LC_TELEPHONE \ ++ LC_MEASUREMENT LC_IDENTIFICATION ) ++# LC_ALL is omitted on purpose ++ + _localectl() { +- local i verb comps ++ local i verb comps locale_vals + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --no-convert --no-pager --no-ask-password + -H --host' +@@ -62,7 +68,17 @@ _localectl() { + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[LOCALES]}; then +- comps=$(command localectl list-locales) ++ if [[ $cur = *=* ]]; then ++ mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) ++ COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "${cur#=}") ) ++ elif [[ $prev = "=" ]]; then ++ mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) ++ COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "$cur") ) ++ else ++ compopt -o nospace ++ COMPREPLY=( $(compgen -W '${__locale_fields[*]}' -S= -- "$cur") ) ++ fi ++ return 0 + elif __contains_word "$verb" ${VERBS[KEYMAPS]}; then + comps=$(command localectl list-keymaps) + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[X11]}; then +diff --git a/shell-completion/zsh/_localectl b/shell-completion/zsh/_localectl +index 3d76bb0..c04f4f3 100644 +--- a/shell-completion/zsh/_localectl ++++ b/shell-completion/zsh/_localectl +@@ -1,17 +1,22 @@ + #compdef localectl + + _localectl_set-locale() { +- local -a _confs _locales ++ local -a _locales locale_fields ++ locale_fields=(LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME \ ++ LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER \ ++ LC_NAME LC_ADDRESS LC_TELEPHONE \ ++ LC_MEASUREMENT LC_IDENTIFICATION) ++ # LC_ALL is omitted on purpose ++ + local expl suf + _locales=( ${(f)"$(_call_program locales "$service" list-locales)"} ) +- _confs=( ${${(f)"$(_call_program confs "locale 2>/dev/null")"}%\=*} ) ++ compset -P1 '*=' + if [[ -prefix 1 *\= ]]; then + local conf=${PREFIX%%\=*} +- compset -P1 '*=' + _wanted locales expl "locales configs" \ + _combination localeconfs confs=$conf locales "$@" - + else +- compadd -S '=' $_confs ++ compadd -S '=' $locale_fields + fi + } + diff --git a/0256-zsh-completions-kernel-install-only-show-existing-ke.patch b/0256-zsh-completions-kernel-install-only-show-existing-ke.patch new file mode 100644 index 0000000..71ee646 --- /dev/null +++ b/0256-zsh-completions-kernel-install-only-show-existing-ke.patch @@ -0,0 +1,24 @@ +From 7f10373aa0b75725edb66917fc31a17c65750a7c Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Thu, 6 Feb 2014 18:15:47 +0100 +Subject: [PATCH] zsh-completions: kernel-install - only show existing kernels + for 'remove' + +When we remove a kernel, we don't remove the modules, so don't look at the modules directory to find installed kernels. +--- + shell-completion/zsh/_kernel-install | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/shell-completion/zsh/_kernel-install b/shell-completion/zsh/_kernel-install +index 0655188..4fdd3a4 100644 +--- a/shell-completion/zsh/_kernel-install ++++ b/shell-completion/zsh/_kernel-install +@@ -12,7 +12,7 @@ _kernels(){ + read _MACHINE_ID < /etc/machine-id + _kernel=( /lib/modules/[0-9]* ) + if [[ "$cmd" == "remove" && -n "$_MACHINE_ID" ]]; then +- _kernel=( /lib/modules/[0-9]* "/boot/$_MACHINE_ID"/[0-9]* ) ++ _kernel=( "/boot/$_MACHINE_ID"/[0-9]* ) + fi + _kernel=( ${_kernel##*/} ) + _describe "installed kernels" _kernel diff --git a/0257-core-fix-crashes-if-locale.conf-contains-invalid-utf.patch b/0257-core-fix-crashes-if-locale.conf-contains-invalid-utf.patch new file mode 100644 index 0000000..6e71a17 --- /dev/null +++ b/0257-core-fix-crashes-if-locale.conf-contains-invalid-utf.patch @@ -0,0 +1,138 @@ +From 43ccd990b8478b5aaf9b1618e0a5c3dd8924a9ee Mon Sep 17 00:00:00 2001 +From: Goffredo Baroncelli +Date: Thu, 6 Feb 2014 19:09:59 +0100 +Subject: [PATCH] core: fix crashes if locale.conf contains invalid utf-8 + string + +In the parse_env_file_push() and load_env_file_push() functions, there +are two assert() call to check if the key or value parameters are utf8 valid. + +If the strings aren't utf8 valid, assert does abort. + +These function are used early by systemd to parse some files. For +example '/etc/locale.conf'. In my case this file contained a not utf8 +sequence, which is bad, but systemd crashed during the boot, which +is even worse! + +The enclosed patch removes the assert and return -EINVAL if the +sequence is invalid. This is possible because the caller of these +function [1] checks the errors. +So the check of an invalid utf8 sequence is still performed, but +systemd doesn't crash anymore and logs the error. + +[1] parse_env_file_internal(), invoked by load_env_file() and +parse_env_file() +--- + src/shared/fileio.c | 77 ++++++++++++++++++++++++++++++----------------------- + 1 file changed, 43 insertions(+), 34 deletions(-) + +diff --git a/src/shared/fileio.c b/src/shared/fileio.c +index 733b320..d28e38a 100644 +--- a/src/shared/fileio.c ++++ b/src/shared/fileio.c +@@ -462,35 +462,39 @@ fail: + + static int parse_env_file_push(const char *filename, unsigned line, + const char *key, char *value, void *userdata) { +- assert(utf8_is_valid(key)); + +- if (value && !utf8_is_valid(value)) ++ const char *k; ++ va_list aq, *ap = userdata; ++ ++ if (!utf8_is_valid(key)) { ++ log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.", ++ filename, line, key); ++ return -EINVAL; ++ } ++ ++ if (value && !utf8_is_valid(value)) { + /* FIXME: filter UTF-8 */ +- log_error("%s:%u: invalid UTF-8 for key %s: '%s', ignoring.", ++ log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.", + filename, line, key, value); +- else { +- const char *k; +- va_list* ap = (va_list*) userdata; +- va_list aq; ++ return -EINVAL; ++ } + +- va_copy(aq, *ap); ++ va_copy(aq, *ap); + +- while ((k = va_arg(aq, const char *))) { +- char **v; ++ while ((k = va_arg(aq, const char *))) { ++ char **v; + +- v = va_arg(aq, char **); ++ v = va_arg(aq, char **); + +- if (streq(key, k)) { +- va_end(aq); +- free(*v); +- *v = value; +- return 1; +- } ++ if (streq(key, k)) { ++ va_end(aq); ++ free(*v); ++ *v = value; ++ return 1; + } +- +- va_end(aq); + } + ++ va_end(aq); + free(value); + return 0; + } +@@ -514,26 +518,31 @@ int parse_env_file( + + static int load_env_file_push(const char *filename, unsigned line, + const char *key, char *value, void *userdata) { +- assert(utf8_is_valid(key)); ++ char ***m = userdata; ++ char *p; ++ int r; + +- if (value && !utf8_is_valid(value)) ++ if (!utf8_is_valid(key)) { ++ log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.", ++ filename, line, key); ++ return -EINVAL; ++ } ++ ++ if (value && !utf8_is_valid(value)) { + /* FIXME: filter UTF-8 */ +- log_error("%s:%u: invalid UTF-8 for key %s: '%s', ignoring.", ++ log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.", + filename, line, key, value); +- else { +- char ***m = userdata; +- char *p; +- int r; ++ return -EINVAL; ++ } + +- p = strjoin(key, "=", strempty(value), NULL); +- if (!p) +- return -ENOMEM; ++ p = strjoin(key, "=", strempty(value), NULL); ++ if (!p) ++ return -ENOMEM; + +- r = strv_push(m, p); +- if (r < 0) { +- free(p); +- return r; +- } ++ r = strv_push(m, p); ++ if (r < 0) { ++ free(p); ++ return r; + } + + free(value); diff --git a/0258-core-do-not-print-invalid-utf-8-in-error-messages.patch b/0258-core-do-not-print-invalid-utf-8-in-error-messages.patch new file mode 100644 index 0000000..eb0a96c --- /dev/null +++ b/0258-core-do-not-print-invalid-utf-8-in-error-messages.patch @@ -0,0 +1,128 @@ +From e8321526823f2b7b945aeb04e5cdb1367e3d5b94 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 17 Jan 2014 21:28:41 -0500 +Subject: [PATCH] core: do not print invalid utf-8 in error messages + +Conflicts: + TODO +--- + src/shared/fileio.c | 11 +++++++---- + src/shared/utf8.c | 26 ++++++++++++++++++++++++++ + src/shared/utf8.h | 3 +++ + src/test/test-utf8.c | 17 +++++++++++++++++ + 4 files changed, 53 insertions(+), 4 deletions(-) + +diff --git a/src/shared/fileio.c b/src/shared/fileio.c +index d28e38a..121cd57 100644 +--- a/src/shared/fileio.c ++++ b/src/shared/fileio.c +@@ -467,15 +467,18 @@ static int parse_env_file_push(const char *filename, unsigned line, + va_list aq, *ap = userdata; + + if (!utf8_is_valid(key)) { +- log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.", +- filename, line, key); ++ _cleanup_free_ char *p = utf8_escape_invalid(key); ++ ++ log_error("%s:%u: invalid UTF-8 in key '%s', ignoring.", ++ filename, line, p); + return -EINVAL; + } + + if (value && !utf8_is_valid(value)) { +- /* FIXME: filter UTF-8 */ ++ _cleanup_free_ char *p = utf8_escape_invalid(value); ++ + log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.", +- filename, line, key, value); ++ filename, line, key, p); + return -EINVAL; + } + +diff --git a/src/shared/utf8.c b/src/shared/utf8.c +index 31120af..2b70d45 100644 +--- a/src/shared/utf8.c ++++ b/src/shared/utf8.c +@@ -172,6 +172,32 @@ const char *utf8_is_valid(const char *str) { + return str; + } + ++char *utf8_escape_invalid(const char *str) { ++ char *p, *s; ++ ++ assert(str); ++ ++ p = s = malloc(strlen(str) * 4 + 1); ++ if (!p) ++ return NULL; ++ ++ while (*str) { ++ int len; ++ ++ len = utf8_encoded_valid_unichar(str); ++ if (len > 0) { ++ s = mempcpy(s, str, len); ++ str += len; ++ } else { ++ s = mempcpy(s, UTF8_REPLACEMENT_CHARACTER, strlen(UTF8_REPLACEMENT_CHARACTER)); ++ str += 1; ++ } ++ } ++ *s = '\0'; ++ ++ return p; ++} ++ + char *ascii_is_valid(const char *str) { + const char *p; + +diff --git a/src/shared/utf8.h b/src/shared/utf8.h +index 96a03ea..f93dfb8 100644 +--- a/src/shared/utf8.h ++++ b/src/shared/utf8.h +@@ -25,8 +25,11 @@ + + #include "macro.h" + ++#define UTF8_REPLACEMENT_CHARACTER "\xef\xbf\xbd" ++ + const char *utf8_is_valid(const char *s) _pure_; + char *ascii_is_valid(const char *s) _pure_; ++char *utf8_escape_invalid(const char *s); + + bool utf8_is_printable(const char* str, size_t length) _pure_; + +diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c +index f0182ee..53c1d47 100644 +--- a/src/test/test-utf8.c ++++ b/src/test/test-utf8.c +@@ -66,12 +66,29 @@ static void test_utf8_encoded_valid_unichar(void) { + + } + ++static void test_utf8_escaping(void) { ++ _cleanup_free_ char *p1, *p2, *p3; ++ ++ p1 = utf8_escape_invalid("goo goo goo"); ++ puts(p1); ++ assert_se(utf8_is_valid(p1)); ++ ++ p2 = utf8_escape_invalid("\341\204\341\204"); ++ puts(p2); ++ assert_se(utf8_is_valid(p2)); ++ ++ p3 = utf8_escape_invalid("\341\204"); ++ puts(p3); ++ assert_se(utf8_is_valid(p3)); ++} ++ + int main(int argc, char *argv[]) { + test_utf8_is_valid(); + test_utf8_is_printable(); + test_ascii_is_valid(); + test_ascii_filter(); + test_utf8_encoded_valid_unichar(); ++ test_utf8_escaping(); + + return 0; + } diff --git a/0259-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch b/0259-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch new file mode 100644 index 0000000..ce0de4f --- /dev/null +++ b/0259-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch @@ -0,0 +1,42 @@ +From caf058da753c7aae6fbf03feb68e689a8d8265c6 Mon Sep 17 00:00:00 2001 +From: Dave Reisner +Date: Sat, 8 Feb 2014 12:54:58 -0500 +Subject: [PATCH] cryptsetup-generator: auto add deps for device as password + +If the password is a device file, we can add Requires/After dependencies +on the device rather than requiring the user to do so. +--- + src/cryptsetup/cryptsetup-generator.c | 20 +++++++++++++++----- + 1 file changed, 15 insertions(+), 5 deletions(-) + +diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c +index e1798a3..00891f1 100644 +--- a/src/cryptsetup/cryptsetup-generator.c ++++ b/src/cryptsetup/cryptsetup-generator.c +@@ -131,11 +131,21 @@ static int create_disk( + streq(password, "/dev/random") || + streq(password, "/dev/hw_random")) + fputs("After=systemd-random-seed.service\n", f); +- else if (!streq(password, "-") && +- !streq(password, "none")) +- fprintf(f, +- "RequiresMountsFor=%s\n", +- password); ++ ++ else if (!streq(password, "-") && !streq(password, "none")) { ++ _cleanup_free_ char *uu = fstab_node_to_udev_node(password); ++ if (uu == NULL) ++ return log_oom(); ++ ++ if (is_device_path(uu)) { ++ _cleanup_free_ char *dd = unit_name_from_path(uu, ".device"); ++ if (dd == NULL) ++ return log_oom(); ++ ++ fprintf(f, "After=%1$s\nRequires=%1$s\n", dd); ++ } else ++ fprintf(f, "RequiresMountsFor=%s\n", password); ++ } + } + + if (is_device_path(u)) diff --git a/0260-man-fix-reference-in-systemd-inhibit-1.patch b/0260-man-fix-reference-in-systemd-inhibit-1.patch new file mode 100644 index 0000000..acafea6 --- /dev/null +++ b/0260-man-fix-reference-in-systemd-inhibit-1.patch @@ -0,0 +1,23 @@ +From 46b93fa99d008403699a74478feac4e9b3f6f6a0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sun, 9 Feb 2014 01:34:20 -0500 +Subject: [PATCH] man: fix reference in systemd-inhibit(1) + +http://bugs.debian.org/738316 +--- + man/systemd-inhibit.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/man/systemd-inhibit.xml b/man/systemd-inhibit.xml +index de2f264..cac0ef6 100644 +--- a/man/systemd-inhibit.xml ++++ b/man/systemd-inhibit.xml +@@ -198,7 +198,7 @@ + See Also + + systemd1, +- systemd-logind.conf5 ++ logind.conf5 + + + diff --git a/0261-man-fix-another-reference-in-systemd-inhibit-1.patch b/0261-man-fix-another-reference-in-systemd-inhibit-1.patch new file mode 100644 index 0000000..17c1e03 --- /dev/null +++ b/0261-man-fix-another-reference-in-systemd-inhibit-1.patch @@ -0,0 +1,23 @@ +From 9bcaa50d2eb1f99fcb7393d52b53b95cdc193d30 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sun, 9 Feb 2014 01:34:20 -0500 +Subject: [PATCH] man: fix another reference in systemd-inhibit(1) + +http://bugs.debian.org/738316 +--- + man/systemd-inhibit.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/man/systemd-inhibit.xml b/man/systemd-inhibit.xml +index cac0ef6..f915fb8 100644 +--- a/man/systemd-inhibit.xml ++++ b/man/systemd-inhibit.xml +@@ -158,7 +158,7 @@ + time elapses, the lock is ignored and + the operation executed. The time limit + may be specified in +- systemd-logind.conf5. Note ++ logind.conf5. Note + that delay is only + available for sleep + and diff --git a/0262-fstab-generator-Create-fsck-root-symlink-with-correc.patch b/0262-fstab-generator-Create-fsck-root-symlink-with-correc.patch new file mode 100644 index 0000000..754805e --- /dev/null +++ b/0262-fstab-generator-Create-fsck-root-symlink-with-correc.patch @@ -0,0 +1,25 @@ +From 9a36f797debf5f7dd240036a15c6942236c3e649 Mon Sep 17 00:00:00 2001 +From: Colin Guthrie +Date: Sun, 9 Feb 2014 12:07:11 +0000 +Subject: [PATCH] fstab-generator: Create fsck-root symlink with correct path + +This was noticed in Brussels at the hackfest. The fstab-generator currently +creates a broken symlink pointing to itself in +/run/systemd/generator/local-fs.target.wants/ for systemd-fsck-root.service +--- + src/fstab-generator/fstab-generator.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c +index 8c4c61c..0d954a2 100644 +--- a/src/fstab-generator/fstab-generator.c ++++ b/src/fstab-generator/fstab-generator.c +@@ -177,7 +177,7 @@ static int add_fsck(FILE *f, const char *what, const char *where, const char *ty + + lnk = strappenda(arg_dest, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service"); + mkdir_parents_label(lnk, 0755); +- if (symlink("systemd-fsck-root.service", lnk) < 0) { ++ if (symlink(SYSTEM_DATA_UNIT_PATH "/systemd-fsck-root.service", lnk) < 0) { + log_error("Failed to create symlink %s: %m", lnk); + return -errno; + } diff --git a/0263-efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch b/0263-efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch new file mode 100644 index 0000000..40ababd --- /dev/null +++ b/0263-efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch @@ -0,0 +1,25 @@ +From fe56ff349838e5dfbc523db1c4d5625f5c69e2a9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= +Date: Tue, 11 Feb 2014 09:54:49 -0300 +Subject: [PATCH] efi: fix Undefined reference efi_loader_get_boot_usec when + EFI support is disabled + +--- + src/shared/boot-timestamps.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/shared/boot-timestamps.c b/src/shared/boot-timestamps.c +index 9449965..d656685 100644 +--- a/src/shared/boot-timestamps.c ++++ b/src/shared/boot-timestamps.c +@@ -40,8 +40,10 @@ int boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_time + + r = acpi_get_boot_usec(&x, &y); + if (r < 0) { ++#ifdef ENABLE_EFI + r = efi_loader_get_boot_usec(&x, &y); + if (r < 0) ++#endif + return r; + } + diff --git a/0264-core-make-StopWhenUnneeded-work-in-conjunction-with-.patch b/0264-core-make-StopWhenUnneeded-work-in-conjunction-with-.patch new file mode 100644 index 0000000..374f00f --- /dev/null +++ b/0264-core-make-StopWhenUnneeded-work-in-conjunction-with-.patch @@ -0,0 +1,41 @@ +From 5c2e6a05a8b4bcb05c88872eec27f848caf30722 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Thu, 13 Feb 2014 02:12:27 +0100 +Subject: [PATCH] core: make StopWhenUnneeded work in conjunction with units + that fail during their start job + +https://bugzilla.redhat.com/show_bug.cgi?id=997031 +--- + src/core/unit.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/src/core/unit.c b/src/core/unit.c +index 6c2c4a0..49833d1 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -1453,7 +1453,9 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su + * sucessfully, since there's no change of state in that case. Which is + * why it is handled in service_set_state() */ + if (UNIT_IS_INACTIVE_OR_FAILED(os) != UNIT_IS_INACTIVE_OR_FAILED(ns)) { +- ExecContext *ec = unit_get_exec_context(u); ++ ExecContext *ec; ++ ++ ec = unit_get_exec_context(u); + if (ec && exec_context_may_touch_console(ec)) { + if (UNIT_IS_INACTIVE_OR_FAILED(ns)) { + m->n_on_console --; +@@ -1549,12 +1551,11 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su + } + + /* stop unneeded units regardless if going down was expected or not */ +- if (UNIT_IS_ACTIVE_OR_ACTIVATING(os) && UNIT_IS_INACTIVE_OR_DEACTIVATING(ns)) ++ if (UNIT_IS_INACTIVE_OR_DEACTIVATING(ns)) + check_unneeded_dependencies(u); + + if (ns != os && ns == UNIT_FAILED) { +- log_notice_unit(u->id, +- "Unit %s entered failed state.", u->id); ++ log_notice_unit(u->id, "Unit %s entered failed state.", u->id); + unit_start_on_failure(u); + } + } diff --git a/0265-man-always-place-programlisting-and-programlisting-i.patch b/0265-man-always-place-programlisting-and-programlisting-i.patch new file mode 100644 index 0000000..be075fe --- /dev/null +++ b/0265-man-always-place-programlisting-and-programlisting-i.patch @@ -0,0 +1,345 @@ +From 8ea4ccf4ef7d3bc4c12ba008d270534257fb88b7 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 14 Feb 2014 15:56:19 +0100 +Subject: [PATCH] man: always place and in a + line with actual sources, so that we don't get spurious newlines in the man + page output + +Conflicts: + man/systemd-socket-proxyd.xml +--- + man/daemon.xml | 3 +-- + man/kernel-install.xml | 8 ++------ + man/nss-myhostname.xml | 12 ++++-------- + man/sd_journal_get_fd.xml | 3 +-- + man/systemctl.xml | 3 +-- + man/systemd-delta.xml | 12 ++++-------- + man/systemd-journal-gatewayd.service.xml | 16 +++++----------- + man/systemd-run.xml | 3 +-- + man/systemd-sleep.conf.xml | 6 ++---- + man/systemd.service.xml | 13 ++++--------- + man/timedatectl.xml | 18 ++++++------------ + man/tmpfiles.d.xml | 7 ++----- + 12 files changed, 33 insertions(+), 71 deletions(-) + +diff --git a/man/daemon.xml b/man/daemon.xml +index 105826a..17d9dd6 100644 +--- a/man/daemon.xml ++++ b/man/daemon.xml +@@ -777,8 +777,7 @@ AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitd + [with_systemdsystemunitdir=$def_systemdsystemunitdir])]) + AS_IF([test "x$with_systemdsystemunitdir" != "xno"], + [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])]) +-AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$with_systemdsystemunitdir" != "xno"]) +- ++AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$with_systemdsystemunitdir" != "xno"]) + + This snippet allows automatic + installation of the unit files on systemd +diff --git a/man/kernel-install.xml b/man/kernel-install.xml +index 929ceef..3612b7d 100644 +--- a/man/kernel-install.xml ++++ b/man/kernel-install.xml +@@ -90,9 +90,7 @@ along with systemd; If not, see . + /usr/lib/kernel/install.d/*.install and + /etc/kernel/install.d/*.install with + the arguments +- +-add KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ +- ++ add KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ + + + The kernel-install plugin 50-depmod.install runs depmod for the KERNEL-VERSION. +@@ -114,9 +112,7 @@ add KERNEL-VERSION /boot/MACHI + + Calls every executable /usr/lib/kernel/install.d/*.install + and /etc/kernel/install.d/*.install with the arguments +- +-remove KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ +- ++ remove KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ + + + kernel-install removes the entire directory +diff --git a/man/nss-myhostname.xml b/man/nss-myhostname.xml +index efbadac..cca3a99 100644 +--- a/man/nss-myhostname.xml ++++ b/man/nss-myhostname.xml +@@ -86,8 +86,7 @@ + + Example + +- +-# /etc/nsswitch.conf ++# /etc/nsswitch.conf + + passwd: compat + group: compat +@@ -101,20 +100,17 @@ services: db files + ethers: db files + rpc: db files + +-netgroup: nis +- ++netgroup: nis + + To test, use glibc's getent tool: + +- +-$ getent ahosts `hostname` ++ $ getent ahosts `hostname` + ::1 STREAM omega + ::1 DGRAM + ::1 RAW + 127.0.0.2 STREAM + 127.0.0.2 DGRAM +-127.0.0.2 RAW +- ++127.0.0.2 RAW + + In this case the local hostname is omega. + +diff --git a/man/sd_journal_get_fd.xml b/man/sd_journal_get_fd.xml +index 4b36f97..df7632f 100644 +--- a/man/sd_journal_get_fd.xml ++++ b/man/sd_journal_get_fd.xml +@@ -330,8 +330,7 @@ int wait_for_changes(sd_journal *j) { + pollfd.events = sd_journal_get_events(j); + poll(&pollfd, 1, msec); + return sd_journal_process(j); +-} +- ++} + + + +diff --git a/man/systemctl.xml b/man/systemctl.xml +index 25b03d8..cde1694 100644 +--- a/man/systemctl.xml ++++ b/man/systemctl.xml +@@ -544,8 +544,7 @@ LISTEN UNIT ACTIVATES + [::]:22 sshd.socket sshd.service + kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service + +-5 sockets listed. +- ++5 sockets listed. + Note: because the addresses might contains spaces, this output + is not suitable for programmatic consumption. + +diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml +index ebaa349..f802aa5 100644 +--- a/man/systemd-delta.xml ++++ b/man/systemd-delta.xml +@@ -204,20 +204,16 @@ + Examples + + To see all local configuration: +- systemd-delta +- ++ systemd-delta + + To see all runtime configuration: +- systemd-delta /run +- ++ systemd-delta /run + + To see all system unit configuration changes: +- systemd-delta systemd/system +- ++ systemd-delta systemd/system + + To see all runtime "drop-in" changes for system units: +- systemd-delta --type=extended /run/systemd/system +- ++ systemd-delta --type=extended /run/systemd/system + + + +diff --git a/man/systemd-journal-gatewayd.service.xml b/man/systemd-journal-gatewayd.service.xml +index 0b6fd70..f639811 100644 +--- a/man/systemd-journal-gatewayd.service.xml ++++ b/man/systemd-journal-gatewayd.service.xml +@@ -154,14 +154,12 @@ along with systemd; If not, see . + Return a JSON structure describing the machine. + + Example: +- +-{ "machine_id" : "8cf7ed9d451ea194b77a9f118f3dc446", ++ { "machine_id" : "8cf7ed9d451ea194b77a9f118f3dc446", + "boot_id" : "3d3c9efaf556496a9b04259ee35df7f7", + "hostname" : "fedora", + "os_pretty_name" : "Fedora 19 (Rawhide)", + "virtualization" : "kvm", +- ...} +- ++ ...} + + + +@@ -295,16 +293,12 @@ along with systemd; If not, see . + in Journal + Export Format: +- +-curl --silent -H'Accept: application/vnd.fdo.journal' \ +- 'http://localhost:19531/entries?boot' +- ++ curl --silent -H'Accept: application/vnd.fdo.journal' \ ++ 'http://localhost:19531/entries?boot' + + + Listen for core dumps: +- +-curl 'http://localhost:19531/entries?follow&MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1' +- ++ curl 'http://localhost:19531/entries?follow&MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1' + + + +diff --git a/man/systemd-run.xml b/man/systemd-run.xml +index 48a0715..97ddf44 100644 +--- a/man/systemd-run.xml ++++ b/man/systemd-run.xml +@@ -209,8 +209,7 @@ Sep 08 07:37:21 bupkis systemd[1]: Starting /usr/bin/env... + Sep 08 07:37:21 bupkis systemd[1]: Started /usr/bin/env. + Sep 08 07:37:21 bupkis env[19948]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin + Sep 08 07:37:21 bupkis env[19948]: LANG=en_US.UTF-8 +-Sep 08 07:37:21 bupkis env[19948]: BOOT_IMAGE=/vmlinuz-3.11.0-0.rc5.git6.2.fc20.x86_64 +- ++Sep 08 07:37:21 bupkis env[19948]: BOOT_IMAGE=/vmlinuz-3.11.0-0.rc5.git6.2.fc20.x86_64 + + + +diff --git a/man/systemd-sleep.conf.xml b/man/systemd-sleep.conf.xml +index dc4b0da..4622205 100644 +--- a/man/systemd-sleep.conf.xml ++++ b/man/systemd-sleep.conf.xml +@@ -160,10 +160,8 @@ along with systemd; If not, see . + Example: to exploit the freeze mode added + in Linux 3.9, one can use systemctl suspend + with +- +-[Sleep] +-SuspendState=freeze +- ++ [Sleep] ++SuspendState=freeze + + + +diff --git a/man/systemd.service.xml b/man/systemd.service.xml +index 4fb21ba..e8bb02c 100644 +--- a/man/systemd.service.xml ++++ b/man/systemd.service.xml +@@ -442,12 +442,9 @@ + be used, they need to be passed + explicitly to a shell implementation + of some kind. Example: +- ExecStart=/bin/sh -c 'dmesg | tac' +- +- ++ ExecStart=/bin/sh -c 'dmesg | tac' + Example: +- ExecStart=/bin/echo one ; /bin/echo "two two" +- ++ ExecStart=/bin/echo one ; /bin/echo "two two" + This will execute + /bin/echo two + times, each time with one argument, +@@ -460,8 +457,7 @@ + + Example: + ExecStart=/bin/echo / >/dev/null & \; \ +-/bin/ls +- ++/bin/ls + This will execute + /bin/echo with five + arguments: /, +@@ -472,8 +468,7 @@ + + Example: + Environment="ONE=one" 'TWO=two two' +-ExecStart=/bin/echo $ONE $TWO ${TWO} +- ++ExecStart=/bin/echo $ONE $TWO ${TWO} + This will execute + /bin/echo with four + arguments: one, +diff --git a/man/timedatectl.xml b/man/timedatectl.xml +index f4975ce..5f95486 100644 +--- a/man/timedatectl.xml ++++ b/man/timedatectl.xml +@@ -245,8 +245,7 @@ + + Examples + Show current settings: +- +-$ timedatectl ++ $ timedatectl + Local time: Fri, 2012-11-02 09:26:46 CET + Universal time: Fri, 2012-11-02 08:26:46 UTC + RTC time: Fri, 2012-11-02 08:26:45 +@@ -262,27 +261,22 @@ NTP synchronized: no + Next DST change: CET → CEST, DST will become active + the clock will jump one hour forward + Sun, 2013-03-31 01:59:59 CET +- Sun, 2013-03-31 03:00:00 CEST +- ++ Sun, 2013-03-31 03:00:00 CEST + + + Enable an NTP daemon (chronyd): +- +-$ timedatectl set-ntp true ++ $ timedatectl set-ntp true + ==== AUTHENTICATING FOR org.freedesktop.timedate1.set-ntp === + Authentication is required to control whether network time synchronization shall be enabled. + Authenticating as: user + Password: ******** +-==== AUTHENTICATION COMPLETE === +- ++==== AUTHENTICATION COMPLETE === + +- +-$ systemctl status chronyd.service ++ $ systemctl status chronyd.service + chronyd.service - NTP client/server + Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled) + Active: active (running) since Fri, 2012-11-02 09:36:25 CET; 5s ago +-... +- ++... + + + +diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml +index 8267ffc..9578c93 100644 +--- a/man/tmpfiles.d.xml ++++ b/man/tmpfiles.d.xml +@@ -109,7 +109,6 @@ + d /run/user 0755 root root 10d - + L /tmp/foobar - - - - /dev/null + +- + + Type + +@@ -277,13 +276,11 @@ L /tmp/foobar - - - - /dev/null + + + For example: +- +-# Make sure these are created by default so that nobody else can ++ # Make sure these are created by default so that nobody else can + d /tmp/.X11-unix 1777 root root 10d + + # Unlink the X11 lock files +-r! /tmp/.X[0-9]*-lock +- ++r! /tmp/.X[0-9]*-lock + The second line in contrast to the first one + would break a running system, and will only be + executed with . diff --git a/0266-Temporary-work-around-for-slow-shutdown-due-to-unter.patch b/0266-Temporary-work-around-for-slow-shutdown-due-to-unter.patch new file mode 100644 index 0000000..0c1036c --- /dev/null +++ b/0266-Temporary-work-around-for-slow-shutdown-due-to-unter.patch @@ -0,0 +1,27 @@ +From 29e00416bbef0e8073373fde25347d139749d949 Mon Sep 17 00:00:00 2001 +From: Colin Guthrie +Date: Mon, 27 Jan 2014 17:54:29 +0000 +Subject: [PATCH] Temporary work around for slow shutdown due to unterminated + user sessions. + +--- + units/user@.service.in | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/units/user@.service.in b/units/user@.service.in +index 3f8b59d..a7e0584 100644 +--- a/units/user@.service.in ++++ b/units/user@.service.in +@@ -14,5 +14,12 @@ User=%I + PAMName=systemd-user + Type=notify + ExecStart=-@rootlibexecdir@/systemd --user ++# Apply same work around as apache's httpd until issues with user session ++# killing is fixed (currently problem is that the kill issued by systemd --user ++# is itself killed by systemd (PID1) before it can work which can lead to slow ++# shutdowns ++# http://thread.gmane.org/gmane.comp.sysutils.systemd.devel/16363 ++ExecStop=/bin/kill -TERM ${MAINPID} ++KillSignal=SIGCONT + Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/dbus/user_bus_socket + Slice=user-%i.slice diff --git a/systemd.spec b/systemd.spec index 657f94d..f66965e 100644 --- a/systemd.spec +++ b/systemd.spec @@ -36,6 +36,8 @@ Source4: listen.conf # Prevent accidental removal of the systemd package Source6: yum-protect-systemd.conf +# Patch series is available as http://kawka.in.waw.pl/git/systemd/shortlog/refs/heads/v208-stable +# GIT_DIR=~/src/systemd/.git git format-patch-ab -M -N --no-signature v208..v208-stable # i=1; for p in 0*patch;do printf "Patch%03d: %s\n" $i $p; ((i++));done Patch001: 0001-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch Patch002: 0002-fix-lingering-references-to-var-lib-backlight-random.patch @@ -275,6 +277,34 @@ Patch235: 0235-gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch Patch236: 0236-journald-do-not-free-space-when-disk-space-runs-low.patch Patch237: 0237-man-add-busctl-1.patch Patch238: 0238-journalctl-flip-to-full-by-default.patch +Patch239: 0239-coredumpctl-in-case-of-error-free-pattern-after-prin.patch +Patch240: 0240-shell-completion-remove-load-from-systemctl.patch +Patch241: 0241-units-drop-Install-section-from-multi-user.target-an.patch +Patch242: 0242-systemctl-skip-native-unit-file-handling-if-sysv-fil.patch +Patch243: 0243-hwdb-Update-database-of-Bluetooth-company-identifier.patch +Patch244: 0244-udev-static_node-do-not-exit-rule-after-first-static.patch +Patch245: 0245-cryptsetup-Support-key-slot-option.patch +Patch246: 0246-pam_systemd-Ignore-vtnr-when-seat-seat0.patch +Patch247: 0247-keymap-Add-HP-Chromebook-14-Falco.patch +Patch248: 0248-keymap-Add-release-quirk-for-Acer-AOA-switchvideomod.patch +Patch249: 0249-keymap-Add-Sony-Vaio-VGN-FW250.patch +Patch250: 0250-keymap-Add-Toshiba-EQUIUM.patch +Patch251: 0251-tmpfiles-fix-memory-leak-of-exclude_prefixes.patch +Patch252: 0252-analyze-fix-plot-issues-when-using-gummiboot.patch +Patch253: 0253-udev-add-zram-to-the-list-of-devices-inappropriate-f.patch +Patch254: 0254-bash-completion-fix-completion-of-complete-verbs.patch +Patch255: 0255-shell-completion-fix-completion-of-localectl-set-loc.patch +Patch256: 0256-zsh-completions-kernel-install-only-show-existing-ke.patch +Patch257: 0257-core-fix-crashes-if-locale.conf-contains-invalid-utf.patch +Patch258: 0258-core-do-not-print-invalid-utf-8-in-error-messages.patch +Patch259: 0259-cryptsetup-generator-auto-add-deps-for-device-as-pas.patch +Patch260: 0260-man-fix-reference-in-systemd-inhibit-1.patch +Patch261: 0261-man-fix-another-reference-in-systemd-inhibit-1.patch +Patch262: 0262-fstab-generator-Create-fsck-root-symlink-with-correc.patch +Patch263: 0263-efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch +Patch264: 0264-core-make-StopWhenUnneeded-work-in-conjunction-with-.patch +Patch265: 0265-man-always-place-programlisting-and-programlisting-i.patch +Patch266: 0266-Temporary-work-around-for-slow-shutdown-due-to-unter.patch # kernel-install patch for grubby, drop if grubby is obsolete Patch1000: kernel-install-grubby.patch @@ -929,6 +959,13 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g %{_datadir}/systemd/gatewayd %changelog +* Sun Feb 16 2014 Zbigniew Jędrzejewski-Szmek - 208-12 +- A different fix for #1023820 taken from Mageia +- Backported fix for #997031 +- Hardward database updates, man pages improvements, a few small memory + leaks, utf-8 correctness and completion fixes +- Support for key-slot option in crypttab + * Sat Jan 25 2014 Ville Skyttä - 208-12 - Own the %%{_prefix}/lib/kernel(/*) and %%{_datadir}/zsh(/*) dirs.