diff --git a/NEWS b/NEWS index b27d38be770..911df9cabb2 100644 --- a/NEWS +++ b/NEWS @@ -357,6 +357,11 @@ CHANGES WITH 246 in spe: The optional positional argument to "systemctl reboot" is now being deprecated in favor of this option. + * Support for the .include syntax in unit files has been removed. The + concept has been obsolete for 6 years and we started warning about + its pending removal 2 years ago (also see NEWS file below). It's + finally gone now. + CHANGES WITH 245: * A new tool "systemd-repart" has been added, that operates as an diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index cdd7572addb..8c0815488b1 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -226,9 +226,6 @@ foo-.service.d/10-override.conf would override service.d/10-override.conf. - - Note that while systemd offers a flexible dependency system between units it is recommended to use this functionality only sparingly and instead rely on techniques such as bus-based or diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 49fdcaff7e1..517813986b9 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -4864,7 +4864,7 @@ int unit_load_fragment(Unit *u) { r = config_parse(u->id, fragment, f, UNIT_VTABLE(u)->sections, config_item_perf_lookup, load_fragment_gperf_lookup, - CONFIG_PARSE_ALLOW_INCLUDE, + 0, u, NULL); if (r == -ENOEXEC) diff --git a/src/fuzz/fuzz-unit-file.c b/src/fuzz/fuzz-unit-file.c index 34f59a44372..c0661433a31 100644 --- a/src/fuzz/fuzz-unit-file.c +++ b/src/fuzz/fuzz-unit-file.c @@ -74,7 +74,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { name, name, f, UNIT_VTABLE(u)->sections, config_item_perf_lookup, load_fragment_gperf_lookup, - CONFIG_PARSE_ALLOW_INCLUDE, + 0, u, NULL); diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 21226573428..0a59f19e2a6 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -159,7 +159,7 @@ static int parse_line( char *l, void *userdata) { - char *e, *include; + char *e; assert(filename); assert(line > 0); @@ -173,35 +173,6 @@ static int parse_line( if (*l == '\n') return 0; - include = first_word(l, ".include"); - if (include) { - _cleanup_free_ char *fn = NULL; - - /* .includes are a bad idea, we only support them here - * for historical reasons. They create cyclic include - * problems and make it difficult to detect - * configuration file changes with an easy - * stat(). Better approaches, such as .d/ drop-in - * snippets exist. - * - * Support for them should be eventually removed. */ - - if (!(flags & CONFIG_PARSE_ALLOW_INCLUDE)) { - log_syntax(unit, LOG_ERR, filename, line, 0, ".include not allowed here. Ignoring."); - return 0; - } - - log_syntax(unit, LOG_WARNING, filename, line, 0, - ".include directives are deprecated, and support for them will be removed in a future version of systemd. " - "Please use drop-in files instead."); - - fn = file_in_same_dir(filename, strstrip(include)); - if (!fn) - return -ENOMEM; - - return config_parse(unit, fn, NULL, sections, lookup, table, flags, userdata, NULL); - } - if (!utf8_is_valid(l)) return log_syntax_invalid_utf8(unit, LOG_WARNING, filename, line, l); diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h index 6c8c1092ea5..0eaff0c0e0e 100644 --- a/src/shared/conf-parser.h +++ b/src/shared/conf-parser.h @@ -16,8 +16,7 @@ typedef enum ConfigParseFlags { CONFIG_PARSE_RELAXED = 1 << 0, /* Do not warn about unknown non-extension fields */ - CONFIG_PARSE_ALLOW_INCLUDE = 1 << 1, /* Allow the deprecated .include stanza */ - CONFIG_PARSE_WARN = 1 << 2, /* Emit non-debug messages */ + CONFIG_PARSE_WARN = 1 << 1, /* Emit non-debug messages */ } ConfigParseFlags; /* Argument list for parsers of specific configuration settings. */ diff --git a/src/shared/install.c b/src/shared/install.c index 5dd5d2aa9ae..bb2eff73879 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1304,7 +1304,7 @@ static int unit_file_load( "-Target\0" "-Timer\0", config_item_table_lookup, items, - CONFIG_PARSE_ALLOW_INCLUDE, info, + 0, info, NULL); if (r < 0) return log_debug_errno(r, "Failed to parse %s: %m", info->name);