commit module-init-tools for openSUSE:Factory
Hello community, here is the log from the commit of package module-init-tools for openSUSE:Factory checked in at Thu Jul 16 17:05:47 CEST 2009. -------- --- module-init-tools/module-init-tools.changes 2009-07-03 12:47:56.000000000 +0200 +++ module-init-tools/module-init-tools.changes 2009-07-15 16:02:22.000000000 +0200 @@ -1,0 +2,19 @@ +Wed Jul 15 14:45:52 CEST 2009 - mmarek@suse.cz + +- modprobe: handle built-in modules + The kernel installs a modules.builtin file listing all builtin + modules. Let depmod generate a modules.builtin.bin file and use + this in modprobe: If a module is not found in modules.dep or + modules.alias, check if the module is builtin and exit silently + in such case. It is done in this order to not slow down the + common case. +- commit 0e72912 + +------------------------------------------------------------------- +Wed Jul 8 15:40:59 CEST 2009 - mmarek@suse.cz + +- depmod: change depfile functions to return int + If a function returns zero, the file won't be generated +- commit 45c29de + +------------------------------------------------------------------- calling whatdependson for head-i586 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ module-init-tools.spec ++++++ --- /var/tmp/diff_new_pack.tsUnlY/_old 2009-07-16 17:05:05.000000000 +0200 +++ /var/tmp/diff_new_pack.tsUnlY/_new 2009-07-16 17:05:05.000000000 +0200 @@ -21,7 +21,7 @@ Name: module-init-tools BuildRequires: zlib-devel Version: 3.9 -Release: 2 +Release: 3 License: GPL v2 or later Group: System/Kernel # for grepping /etc/SUSE-release ++++++ module-init-tools-suse.diff ++++++ --- /var/tmp/diff_new_pack.tsUnlY/_old 2009-07-16 17:05:05.000000000 +0200 +++ /var/tmp/diff_new_pack.tsUnlY/_new 2009-07-16 17:05:05.000000000 +0200 @@ -1,7 +1,7 @@ This patch contains suse-specific changes against upstream commit 351e4381cb67aea9ef6ab03a8655b7a8aebe2ad8 diff --git a/depmod.c b/depmod.c -index 4c8caa0..c683811 100644 +index 4c8caa0..b4e52b4 100644 --- a/depmod.c +++ b/depmod.c @@ -193,7 +193,7 @@ static void load_module_symvers(const char *filename) @@ -24,6 +24,183 @@ add_symbol(sym, strtoull(ver, NULL, 16), NULL); } +@@ -434,7 +436,7 @@ static const char *compress_path(const char *path, const char *basedir) + return path; + } + +-static void output_deps(struct module *modules, ++static int output_deps(struct module *modules, + FILE *out, char *dirname) + { + struct module *i; +@@ -453,12 +455,13 @@ static void output_deps(struct module *modules, + } + fprintf(out, "\n"); + } ++ return 1; + } + + /* warn whenever duplicate module aliases, deps, or symbols are found. */ + int warn_dups = 0; + +-static void output_deps_bin(struct module *modules, ++static int output_deps_bin(struct module *modules, + FILE *out, char *dirname) + { + struct module *i; +@@ -495,6 +498,8 @@ static void output_deps_bin(struct module *modules, + + index_write(index, out); + index_destroy(index); ++ ++ return 1; + } + + +@@ -769,7 +774,7 @@ static struct module *parse_modules(struct module *list) + } + + /* Simply dump hash table. */ +-static void output_symbols(struct module *unused, FILE *out, char *dirname) ++static int output_symbols(struct module *unused, FILE *out, char *dirname) + { + unsigned int i; + +@@ -786,9 +791,10 @@ static void output_symbols(struct module *unused, FILE *out, char *dirname) + } + } + } ++ return 1; + } + +-static void output_symbols_bin(struct module *unused, FILE *out, char *dirname) ++static int output_symbols_bin(struct module *unused, FILE *out, char *dirname) + { + struct index_node *index; + unsigned int i; +@@ -817,9 +823,54 @@ static void output_symbols_bin(struct module *unused, FILE *out, char *dirname) + + index_write(index, out); + index_destroy(index); ++ ++ return 1; + } + +-static void output_aliases(struct module *modules, FILE *out, char *dirname) ++static int output_builtin_bin(struct module *unused, FILE *out, char *dirname) ++{ ++ struct index_node *index; ++ char *textfile, *line; ++ unsigned int linenum; ++ FILE *f; ++ ++ nofail_asprintf(&textfile, "%s/modules.builtin", dirname); ++ if (!(f = fopen(textfile, "r"))) { ++ if (errno != ENOENT) ++ fatal("Could not open '%s': %s\n", ++ textfile, strerror(errno)); ++ free(textfile); ++ return 0; ++ } ++ free(textfile); ++ index = index_create(); ++ ++ while ((line = getline_wrapped(f, &linenum)) != NULL) { ++ char *module = strrchr(line, '/'); ++ ++ if (!*line || *line == '#') { ++ free(line); ++ continue; ++ } ++ module = strrchr(line, '/'); ++ if (module) ++ module++; ++ else ++ module = line; ++ if (ends_in(module, ".ko")) ++ module[strlen(module) - 3] = '\0'; ++ underscores(module); ++ index_insert(index, module, "", 0); ++ free(line); ++ } ++ fclose(f); ++ index_write(index, out); ++ index_destroy(index); ++ ++ return 1; ++} ++ ++static int output_aliases(struct module *modules, FILE *out, char *dirname) + { + struct module *i; + struct elf_file *file; +@@ -849,9 +900,10 @@ static void output_aliases(struct module *modules, FILE *out, char *dirname) + } + strtbl_free(tbl); + } ++ return 1; + } + +-static void output_aliases_bin(struct module *modules, FILE *out, char *dirname) ++static int output_aliases_bin(struct module *modules, FILE *out, char *dirname) + { + struct module *i; + struct elf_file *file; +@@ -901,11 +953,13 @@ static void output_aliases_bin(struct module *modules, FILE *out, char *dirname) + + index_write(index, out); + index_destroy(index); ++ ++ return 1; + } + + struct depfile { + char *name; +- void (*func)(struct module *, FILE *, char *dirname); ++ int (*func)(struct module *, FILE *, char *dirname); + int map_file; + }; + +@@ -923,7 +977,8 @@ static struct depfile depfiles[] = { + { "modules.alias", output_aliases, 0 }, + { "modules.alias.bin", output_aliases_bin, 0 }, + { "modules.symbols", output_symbols, 0 }, +- { "modules.symbols.bin", output_symbols_bin, 0 } ++ { "modules.symbols.bin", output_symbols_bin, 0 }, ++ { "modules.builtin.bin", output_builtin_bin, 0 }, + }; + + /* If we can't figure it out, it's safe to say "true". */ +@@ -1368,6 +1423,7 @@ int main(int argc, char *argv[]) + + for (i = 0; i < sizeof(depfiles)/sizeof(depfiles[0]); i++) { + FILE *out; ++ int res; + struct depfile *d = &depfiles[i]; + char depname[strlen(dirname) + 1 + strlen(d->name) + 1]; + char tmpname[strlen(dirname) + 1 + strlen(d->name) + +@@ -1388,12 +1444,18 @@ int main(int argc, char *argv[]) + if (ends_in(depname, ".bin")) + continue; + } +- d->func(list, out, dirname); +- if (!doing_stdout) { +- fclose(out); ++ res = d->func(list, out, dirname); ++ if (doing_stdout) ++ continue; ++ fclose(out); ++ if (res) { + if (rename(tmpname, depname) < 0) + fatal("Could not rename %s into %s: %s\n", + tmpname, depname, strerror(errno)); ++ } else { ++ if (unlink(tmpname) < 0) ++ warn("Could not delete %s: %s\n", ++ tmpname, strerror(errno)); + } + } + diff --git a/doc/modprobe.conf.sgml b/doc/modprobe.conf.sgml index cacc006..cd94511 100644 --- a/doc/modprobe.conf.sgml @@ -117,7 +294,7 @@ extern void error(const char *fmt, ...); extern void warn(const char *fmt, ...); diff --git a/modprobe.c b/modprobe.c -index 21a3111..648192d 100644 +index 21a3111..efbeaf0 100644 --- a/modprobe.c +++ b/modprobe.c @@ -51,6 +51,9 @@ @@ -165,7 +342,32 @@ struct module_options { struct module_options *next; -@@ -787,6 +808,16 @@ static int parse_config_file(const char *filename, +@@ -537,6 +558,24 @@ static int read_attribute(const char *filename, char *buf, size_t buflen) + return (s == NULL) ? -1 : 1; + } + ++/* is this a built-in module? ++ * 0: no, 1: yes, -1: don't know ++ */ ++static int module_builtin(const char *dirname, const char *modname) ++{ ++ struct index_file *index; ++ char *filename, *value; ++ ++ nofail_asprintf(&filename, "%s/modules.builtin.bin", dirname); ++ index = index_file_open(filename); ++ free(filename); ++ if (!index) ++ return -1; ++ value = index_search(index, modname); ++ free(value); ++ return value ? 1 : 0; ++} ++ + /* Is module in /sys/module? If so, fill in usecount if not NULL. + 0 means no, 1 means yes, -1 means unknown. + */ +@@ -787,6 +826,16 @@ static int parse_config_file(const char *filename, if (streq(tmp, "no")) use_binary_indexes = 0; } @@ -182,7 +384,7 @@ } else grammar(cmd, filename, linenum); -@@ -1144,6 +1175,17 @@ static int insmod(struct list_head *list, +@@ -1144,6 +1193,17 @@ static int insmod(struct list_head *list, strerror(errno)); goto out_unlock; } @@ -200,7 +402,7 @@ if (newname) rename_module(module, mod->modname, newname); if (flags & mit_strip_modversion) -@@ -1309,6 +1351,16 @@ int do_modprobe(char *modname, +@@ -1309,6 +1369,16 @@ int do_modprobe(char *modname, /* Returns the resolved alias, options */ parse_toplevel_config(configname, modname, 0, flags & mit_remove, &modoptions, &commands, &aliases, &blacklist); @@ -217,7 +419,17 @@ /* Read module options from kernel command line */ parse_kcmdline(0, &modoptions); -@@ -1390,6 +1442,8 @@ static struct option options[] = { { "version", 0, NULL, 'V' }, +@@ -1331,6 +1401,9 @@ int do_modprobe(char *modname, + modname, 0, flags & mit_remove, + &modoptions, &commands, + &aliases, &blacklist); ++ /* builtin module? */ ++ if (!aliases && module_builtin(dirname, modname) == 1) ++ return 0; + } + } + +@@ -1390,6 +1463,8 @@ static struct option options[] = { { "version", 0, NULL, 'V' }, { "force-modversion", 0, NULL, 2 }, { "first-time", 0, NULL, 3 }, { "dump-modversions", 0, NULL, 4 }, @@ -226,7 +438,7 @@ { NULL, 0, NULL, 0 } }; int main(int argc, char *argv[]) -@@ -1494,6 +1548,9 @@ int main(int argc, char *argv[]) +@@ -1494,6 +1569,9 @@ int main(int argc, char *argv[]) case 4: dump_modver = 1; break; @@ -236,6 +448,170 @@ default: print_usage(argv[0]); } +diff --git a/tables.c b/tables.c +index 2f44450..c862920 100644 +--- a/tables.c ++++ b/tables.c +@@ -34,7 +34,7 @@ static void output_pci_entry(struct pci_device_id *pci, char *name, FILE *out, + END(pci->class_mask, conv)); + } + +-void output_pci_table(struct module *modules, FILE *out, char *dirname) ++int output_pci_table(struct module *modules, FILE *out, char *dirname) + { + struct module *i; + +@@ -53,6 +53,7 @@ void output_pci_table(struct module *modules, FILE *out, char *dirname) + for (e = t->pci_table; e->vendor; e = (void *)e + t->pci_size) + output_pci_entry(e, shortname, out, i->file->conv); + } ++ return 1; + } + + /* We set driver_info to zero */ +@@ -78,7 +79,7 @@ static void output_usb_entry(struct usb_device_id *usb, char *name, FILE *out, + END(usb->bInterfaceProtocol, conv)); + } + +-void output_usb_table(struct module *modules, FILE *out, char *dirname) ++int output_usb_table(struct module *modules, FILE *out, char *dirname) + { + struct module *i; + +@@ -104,6 +105,7 @@ void output_usb_table(struct module *modules, FILE *out, char *dirname) + e = (void *)e + t->usb_size) + output_usb_entry(e, shortname, out, i->file->conv); + } ++ return 1; + } + + static void output_ieee1394_entry(struct ieee1394_device_id *fw, char *name, +@@ -118,7 +120,7 @@ static void output_ieee1394_entry(struct ieee1394_device_id *fw, char *name, + END(fw->version, conv)); + } + +-void output_ieee1394_table(struct module *modules, FILE *out, char *dirname) ++int output_ieee1394_table(struct module *modules, FILE *out, char *dirname) + { + struct module *i; + +@@ -138,6 +140,7 @@ void output_ieee1394_table(struct module *modules, FILE *out, char *dirname) + fw = (void *) fw + t->ieee1394_size) + output_ieee1394_entry(fw, shortname, out, i->file->conv); + } ++ return 1; + } + + +@@ -151,7 +154,7 @@ static void output_ccw_entry(struct ccw_device_id *ccw, char *name, FILE *out, + END(ccw->dev_type, conv), END(ccw->dev_model, conv)); + } + +-void output_ccw_table(struct module *modules, FILE *out, char *dirname) ++int output_ccw_table(struct module *modules, FILE *out, char *dirname) + { + struct module *i; + +@@ -172,6 +175,7 @@ void output_ccw_table(struct module *modules, FILE *out, char *dirname) + e = (void *) e + t->ccw_size) + output_ccw_entry(e, shortname, out, i->file->conv); + } ++ return 1; + } + + #define ISAPNP_VENDOR(a,b,c) (((((a)-'A'+1)&0x3f)<<2)|\ +@@ -192,7 +196,7 @@ static void put_isapnp_id(FILE *out, const char *id) + fprintf(out, " 0x%04x 0x%04x ", vendor, device); + } + +-void output_isapnp_table(struct module *modules, FILE *out, char *dirname) ++int output_isapnp_table(struct module *modules, FILE *out, char *dirname) + { + struct module *i; + +@@ -238,6 +242,7 @@ void output_isapnp_table(struct module *modules, FILE *out, char *dirname) + } + } + } ++ return 1; + } + + #define MATCH_bustype 1 +@@ -412,7 +417,7 @@ static int output_input_entry_64_old(struct input_device_id_old_64 *input, + return 0; + } + +-void output_input_table(struct module *modules, FILE *out, char *dirname) ++int output_input_table(struct module *modules, FILE *out, char *dirname) + { + struct module *i; + +@@ -468,6 +473,7 @@ void output_input_table(struct module *modules, FILE *out, char *dirname) + } + } + } ++ return 1; + } + + static void output_serio_entry(struct serio_device_id *serio, char *name, FILE *out) +@@ -482,7 +488,7 @@ static void output_serio_entry(struct serio_device_id *serio, char *name, FILE * + } + + +-void output_serio_table(struct module *modules, FILE *out, char *dirname) ++int output_serio_table(struct module *modules, FILE *out, char *dirname) + { + struct module *i; + +@@ -500,6 +506,7 @@ void output_serio_table(struct module *modules, FILE *out, char *dirname) + for (e = t->serio_table; e->type || e->proto; e = (void *)e + t->serio_size) + output_serio_entry(e, shortname, out); + } ++ return 1; + } + + +@@ -542,7 +549,7 @@ static void output_of_entry(struct of_device_id *dev, char *name, FILE *out) + free(compatible); + } + +-void output_of_table(struct module *modules, FILE *out, char *dirname) ++int output_of_table(struct module *modules, FILE *out, char *dirname) + { + struct module *i; + +@@ -560,4 +567,5 @@ void output_of_table(struct module *modules, FILE *out, char *dirname) + e = (void *)e + t->of_size) + output_of_entry(e, shortname, out); + } ++ return 1; + } +diff --git a/tables.h b/tables.h +index 8a1420f..920e8df 100644 +--- a/tables.h ++++ b/tables.h +@@ -175,13 +175,13 @@ struct of_device_id { + + /* Functions provided by tables.c */ + struct module; +-void output_usb_table(struct module *modules, FILE *out, char *dirname); +-void output_ieee1394_table(struct module *modules, FILE *out, char *dirname); +-void output_pci_table(struct module *modules, FILE *out, char *dirname); +-void output_ccw_table(struct module *modules, FILE *out, char *dirname); +-void output_isapnp_table(struct module *modules, FILE *out, char *dirname); +-void output_input_table(struct module *modules, FILE *out, char *dirname); +-void output_serio_table(struct module *modules, FILE *out, char *dirname); +-void output_of_table(struct module *modules, FILE *out, char *dirname); ++int output_usb_table(struct module *modules, FILE *out, char *dirname); ++int output_ieee1394_table(struct module *modules, FILE *out, char *dirname); ++int output_pci_table(struct module *modules, FILE *out, char *dirname); ++int output_ccw_table(struct module *modules, FILE *out, char *dirname); ++int output_isapnp_table(struct module *modules, FILE *out, char *dirname); ++int output_input_table(struct module *modules, FILE *out, char *dirname); ++int output_serio_table(struct module *modules, FILE *out, char *dirname); ++int output_of_table(struct module *modules, FILE *out, char *dirname); + + #endif /* MODINITTOOLS_TABLES_H */ diff --git a/zlibsupport.c b/zlibsupport.c index b159765..0f78524 100644 --- a/zlibsupport.c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de