As suggested by Marco, I adapted the framework to generate grub_init_all
/ grub_fini_all functions from grub-emu to also be used on grub-probe and
grub-setup.
Any comments on the patch?
--
Robert Millan
My spam trap is [EMAIL PROTECTED] Note: this address is only intended
for spam harvesters. Writing to it will get you added to my black list.
2007-06-27 Robert Millan <[EMAIL PROTECTED]>
* geninitheader.sh: Process file specified in first parameter rather
than hardcoding grub_modules_init.lst.
* geninit.sh: Likewise. Also, construct header name dynamicaly rather
than hardcoding grub_modules_init.h.
* conf/common.rmk: Rename grub_modules_init.[ch] files associated with
grub-emu to grub_emu_init.[ch]. Add rules to build analogous
grub_probe_init.[ch] and grub_setup_init.[ch].
* conf/powerpc-ieee1275.rmk (grub_emu_DEPENDENCIES): Replace
grub_modules_init.h with grub_emu_init.h.
(grub_probe_*): Add new grub_probe_init.[ch] files.
* conf/i386-efi.rmk: Likewise.
* conf/i386-pc.rmk: Likewise.
(grub_setup_*): Add new grub_setup_init.[ch] files.
* util/grub-emu.c: Replace grub_modules_init.h with grub_emu_init.h.
* util/grub-probe.c: Include grub_probe_init.h. Use grub_init_all()
to initialize modules rather than a list of hardcoded functions.
* util/i386/pc/grub-setup.c: Include grub_setup_init.h. Use
grub_init_all() to initialize modules rather than a list of hardcoded
functions.
diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/conf/common.rmk grub2-1.95+20070626/conf/common.rmk
--- grub2-1.95+20070626.old/conf/common.rmk 2007-05-20 11:10:06.000000000 +0200
+++ grub2-1.95+20070626/conf/common.rmk 2007-06-27 21:49:57.000000000 +0200
@@ -6,18 +6,44 @@
DISTCLEANFILES += grub_script.tab.c grub_script.tab.h
# For grub-emu.
-grub_modules_init.lst: geninit.sh $(filter-out grub_emu_init.c,$(grub_emu_SOURCES))
+grub_emu_init.lst: geninit.sh $(filter-out grub_emu_init.c,$(grub_emu_SOURCES))
rm -f $@; grep GRUB_MOD_INIT $(filter %.c,$^) /dev/null > $@
-DISTCLEANFILES += grub_modules_init.lst
+DISTCLEANFILES += grub_emu_init.lst
-grub_modules_init.h: $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) geninitheader.sh grub_modules_init.lst
- rm -f $@; sh $(srcdir)/geninitheader.sh > $@
-DISTCLEANFILES += grub_modules_init.h
+grub_emu_init.h: grub_emu_init.lst $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) geninitheader.sh
+ rm -f $@; sh $(srcdir)/geninitheader.sh $< > $@
+DISTCLEANFILES += grub_emu_init.h
-grub_emu_init.c: $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) geninit.sh grub_modules_init.lst grub_modules_init.h
- rm -f $@; sh $(srcdir)/geninit.sh $(filter %.c,$^) > $@
+grub_emu_init.c: grub_emu_init.lst $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) geninit.sh grub_emu_init.h
+ rm -f $@; sh $(srcdir)/geninit.sh $< $(filter %.c,$^) > $@
DISTCLEANFILES += grub_emu_init.c
+# For grub-probe.
+grub_probe_init.lst: geninit.sh $(filter-out grub_probe_init.c,$(grub_probe_SOURCES))
+ rm -f $@; grep GRUB_MOD_INIT $(filter %.c,$^) /dev/null > $@
+DISTCLEANFILES += grub_probe_init.lst
+
+grub_probe_init.h: grub_probe_init.lst $(filter-out grub_probe_init.c,$(grub_probe_SOURCES)) geninitheader.sh
+ rm -f $@; sh $(srcdir)/geninitheader.sh $< > $@
+DISTCLEANFILES += grub_probe_init.h
+
+grub_probe_init.c: grub_probe_init.lst $(filter-out grub_probe_init.c,$(grub_probe_SOURCES)) geninit.sh grub_probe_init.h
+ rm -f $@; sh $(srcdir)/geninit.sh $< $(filter %.c,$^) > $@
+DISTCLEANFILES += grub_probe_init.c
+
+# For grub-setup.
+grub_setup_init.lst: geninit.sh $(filter-out grub_setup_init.c,$(grub_setup_SOURCES))
+ rm -f $@; grep GRUB_MOD_INIT $(filter %.c,$^) /dev/null > $@
+DISTCLEANFILES += grub_setup_init.lst
+
+grub_setup_init.h: grub_setup_init.lst $(filter-out grub_setup_init.c,$(grub_setup_SOURCES)) geninitheader.sh
+ rm -f $@; sh $(srcdir)/geninitheader.sh $< > $@
+DISTCLEANFILES += grub_setup_init.h
+
+grub_setup_init.c: grub_setup_init.lst $(filter-out grub_setup_init.c,$(grub_setup_SOURCES)) geninit.sh grub_setup_init.h
+ rm -f $@; sh $(srcdir)/geninit.sh $< $(filter %.c,$^) > $@
+DISTCLEANFILES += grub_setup_init.c
+
# For update-grub
update-grub: util/update-grub.in config.status
./config.status --file=$@:$<
diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/conf/i386-efi.rmk grub2-1.95+20070626/conf/i386-efi.rmk
--- grub2-1.95+20070626.old/conf/i386-efi.rmk 2007-06-26 08:54:53.000000000 +0200
+++ grub2-1.95+20070626/conf/i386-efi.rmk 2007-06-27 21:36:59.000000000 +0200
@@ -27,6 +27,7 @@
grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c
# For grub-probe.
+grub_probe_DEPENDENCIES = grub_probe_init.h
grub_probe_SOURCES = util/grub-probe.c \
util/biosdisk.c util/misc.c util/getroot.c \
kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \
@@ -34,11 +35,11 @@
partmap/pc.c partmap/apple.c partmap/gpt.c \
fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c kern/fs.c \
kern/env.c fs/fshelp.c fs/xfs.c fs/affs.c fs/sfs.c fs/hfsplus.c \
- disk/lvm.c disk/raid.c
+ disk/lvm.c disk/raid.c grub_probe_init.c
# For grub-emu.
grub_emu_DEPENDENCIES = grub_script.tab.c grub_script.tab.h \
- grub_modules_init.h
+ grub_emu_init.h
grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c \
commands/configfile.c commands/help.c \
commands/terminal.c commands/ls.c commands/test.c \
diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/conf/i386-pc.rmk grub2-1.95+20070626/conf/i386-pc.rmk
--- grub2-1.95+20070626.old/conf/i386-pc.rmk 2007-06-26 08:54:53.000000000 +0200
+++ grub2-1.95+20070626/conf/i386-pc.rmk 2007-06-27 21:36:52.000000000 +0200
@@ -62,18 +62,20 @@
grub_mkimage_LDFLAGS = $(LIBLZO)
# For grub-setup.
+grub_setup_DEPENDENCIES = grub_setup_init.h
grub_setup_SOURCES = util/i386/pc/grub-setup.c util/biosdisk.c \
util/misc.c util/getroot.c kern/device.c kern/disk.c \
kern/err.c kern/misc.c fs/fat.c fs/ext2.c fs/xfs.c fs/affs.c \
fs/sfs.c kern/parser.c kern/partition.c partmap/pc.c \
partmap/gpt.c fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c \
fs/hfsplus.c kern/file.c kern/fs.c kern/env.c fs/fshelp.c \
- util/raid.c util/lvm.c
+ util/raid.c util/lvm.c grub_setup_init.c
# For grub-mkdevicemap.
grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c
# For grub-probe.
+grub_probe_DEPENDENCIES = grub_probe_init.h
grub_probe_SOURCES = util/grub-probe.c \
util/biosdisk.c util/misc.c util/getroot.c \
kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \
@@ -81,11 +83,11 @@
partmap/pc.c partmap/apple.c partmap/gpt.c \
fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c kern/fs.c \
kern/env.c fs/fshelp.c fs/xfs.c fs/affs.c fs/sfs.c fs/hfsplus.c \
- disk/lvm.c disk/raid.c
+ disk/lvm.c disk/raid.c grub_probe_init.c
# For grub-emu.
grub_emu_DEPENDENCIES = grub_script.tab.c grub_script.tab.h \
- grub_modules_init.h
+ grub_emu_init.h
grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c \
commands/configfile.c commands/echo.c commands/help.c \
commands/terminal.c commands/ls.c commands/test.c \
diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/conf/powerpc-ieee1275.rmk grub2-1.95+20070626/conf/powerpc-ieee1275.rmk
--- grub2-1.95+20070626.old/conf/powerpc-ieee1275.rmk 2007-06-26 08:54:53.000000000 +0200
+++ grub2-1.95+20070626/conf/powerpc-ieee1275.rmk 2007-06-27 21:36:39.000000000 +0200
@@ -39,6 +39,7 @@
grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c
# For grub-probe.
+grub_probe_DEPENDENCIES = grub_probe_init.h
grub_probe_SOURCES = util/grub-probe.c \
util/biosdisk.c util/misc.c util/getroot.c \
kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \
@@ -46,11 +47,11 @@
partmap/pc.c partmap/apple.c partmap/gpt.c \
fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c kern/fs.c \
kern/env.c fs/fshelp.c fs/xfs.c fs/affs.c fs/sfs.c fs/hfsplus.c \
- disk/lvm.c disk/raid.c
+ disk/lvm.c disk/raid.c grub_probe_init.c
# For grub-emu
grub_emu_DEPENDENCIES = grub_script.tab.c grub_script.tab.h \
- grub_modules_init.h
+ grub_emu_init.h
grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c \
commands/configfile.c commands/help.c \
commands/search.c commands/terminal.c commands/test.c \
diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/geninitheader.sh grub2-1.95+20070626/geninitheader.sh
--- grub2-1.95+20070626.old/geninitheader.sh 2005-11-13 16:47:08.000000000 +0100
+++ grub2-1.95+20070626/geninitheader.sh 2007-06-27 21:52:55.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
#
-# Copyright (C) 2005 Free Software Foundation, Inc.
+# Copyright (C) 2005, 2007 Free Software Foundation, Inc.
#
# This gensymlist.sh is free software; the author
# gives unlimited permission to copy and/or distribute it,
@@ -11,11 +11,14 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+lst="$1"
+shift
+
cat <<EOF
/* This file is automatically generated by gensymlist.sh. DO NOT EDIT! */
/*
* GRUB -- GRand Unified Bootloader
- * Copyright (C) 2005 Free Software Foundation, Inc.
+ * Copyright (C) 2005, 2007 Free Software Foundation, Inc.
*
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -39,5 +42,5 @@
void grub_fini_all (void);
EOF
-cat grub_modules_init.lst | grep -v '^#' | sed -n '/GRUB_MOD_INIT *([a-zA-Z0-9_]*)/{s/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/void grub_\1_init (void);/;p;}'
-cat grub_modules_init.lst | grep -v '^#' | sed -n '/GRUB_MOD_INIT *([a-zA-Z0-9_]*)/{s/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/void grub_\1_fini (void);/;p;}'
+grep -v '^#' "${lst}" | sed -n '/GRUB_MOD_INIT *([a-zA-Z0-9_]*)/{s/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/void grub_\1_init (void);/;p;}'
+grep -v '^#' "${lst}" | sed -n '/GRUB_MOD_INIT *([a-zA-Z0-9_]*)/{s/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/void grub_\1_fini (void);/;p;}'
diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/geninit.sh grub2-1.95+20070626/geninit.sh
--- grub2-1.95+20070626.old/geninit.sh 2005-12-25 18:04:32.000000000 +0100
+++ grub2-1.95+20070626/geninit.sh 2007-06-27 21:52:44.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
#
-# Copyright (C) 2002, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2005, 2007 Free Software Foundation, Inc.
#
# This gensymlist.sh is free software; the author
# gives unlimited permission to copy and/or distribute it,
@@ -11,11 +11,16 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+lst="$1"
+shift
+
+header=`echo "${lst}" | sed -e "s/\.lst$/.h/g"`
+
cat <<EOF
/* This file is automatically generated by geninit.sh. DO NOT EDIT! */
/*
* GRUB -- GRand Unified Bootloader
- * Copyright (C) 2002, 2005 Free Software Foundation, Inc.
+ * Copyright (C) 2002, 2005, 2007 Free Software Foundation, Inc.
*
* GRUB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -32,7 +37,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#include <grub_modules_init.h>
+#include <$header>
EOF
@@ -47,7 +52,7 @@
if echo $@ | grep $file >/dev/null; then
echo $line | sed -e 's/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/ grub_\1_init ();/'
fi
-done < grub_modules_init.lst
+done < ${lst}
cat <<EOF
}
@@ -64,7 +69,7 @@
if echo $@ | grep $file >/dev/null; then
echo $line | sed -e 's/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/ grub_\1_fini ();/'
fi
-done < grub_modules_init.lst
+done < ${lst}
cat <<EOF
}
diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/util/grub-emu.c grub2-1.95+20070626/util/grub-emu.c
--- grub2-1.95+20070626.old/util/grub-emu.c 2007-06-13 18:53:54.000000000 +0200
+++ grub2-1.95+20070626/util/grub-emu.c 2007-06-27 21:39:35.000000000 +0200
@@ -38,7 +38,7 @@
#include <grub/env.h>
#include <grub/partition.h>
-#include <grub_modules_init.h>
+#include <grub_emu_init.h>
/* Used for going back to the main function. */
jmp_buf main_env;
diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/util/grub-probe.c grub2-1.95+20070626/util/grub-probe.c
--- grub2-1.95+20070626.old/util/grub-probe.c 2007-06-26 08:54:53.000000000 +0200
+++ grub2-1.95+20070626/util/grub-probe.c 2007-06-27 22:01:06.000000000 +0200
@@ -30,6 +30,8 @@
#include <grub/util/getroot.h>
#include <grub/term.h>
+#include <grub_probe_init.h>
+
#include <stdio.h>
#include <unistd.h>
#include <string.h>
@@ -244,36 +246,15 @@
/* Initialize the emulated biosdisk driver. */
grub_util_biosdisk_init (dev_map ? : DEFAULT_DEVICE_MAP);
- grub_pc_partition_map_init ();
- grub_gpt_partition_map_init ();
- grub_apple_partition_map_init ();
- grub_raid_init ();
- grub_lvm_init ();
-
- /* Initialize filesystems. */
- grub_fat_init ();
- grub_ext2_init ();
- grub_ufs_init ();
- grub_minix_init ();
- grub_jfs_init ();
- grub_xfs_init ();
+
+ /* Initialize all modules. */
+ grub_init_all ();
/* Do it. */
probe (path);
/* Free resources. */
- grub_ext2_fini ();
- grub_fat_fini ();
- grub_ufs_fini ();
- grub_minix_fini ();
- grub_jfs_fini ();
- grub_xfs_fini ();
-
- grub_lvm_fini ();
- grub_raid_fini ();
- grub_gpt_partition_map_fini ();
- grub_apple_partition_map_fini ();
- grub_pc_partition_map_fini ();
+ grub_fini_all ();
grub_util_biosdisk_fini ();
free (dev_map);
diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/util/i386/pc/grub-setup.c grub2-1.95+20070626/util/i386/pc/grub-setup.c
--- grub2-1.95+20070626.old/util/i386/pc/grub-setup.c 2007-06-13 18:53:54.000000000 +0200
+++ grub2-1.95+20070626/util/i386/pc/grub-setup.c 2007-06-27 22:01:20.000000000 +0200
@@ -35,6 +35,8 @@
#include <grub/util/raid.h>
#include <grub/util/lvm.h>
+#include <grub_setup_init.h>
+
#include <stdio.h>
#include <unistd.h>
#include <string.h>
@@ -653,9 +655,10 @@
/* Initialize the emulated biosdisk driver. */
grub_util_biosdisk_init (dev_map ? : DEFAULT_DEVICE_MAP);
- grub_pc_partition_map_init ();
- grub_gpt_partition_map_init ();
+ /* Initialize all modules. */
+ grub_init_all ();
+
dest_dev = get_device_name (argv[optind]);
if (! dest_dev)
{
@@ -673,14 +676,6 @@
prefix = grub_get_prefix (dir ? : DEFAULT_DIRECTORY);
- /* Initialize filesystems. */
- grub_fat_init ();
- grub_ext2_init ();
- grub_ufs_init ();
- grub_minix_init ();
- grub_hfs_init ();
- grub_jfs_init ();
-
if (root_dev)
{
char *tmp = get_device_name (root_dev);
@@ -749,15 +744,7 @@
root_dev, dest_dev, must_embed);
/* Free resources. */
- grub_ext2_fini ();
- grub_fat_fini ();
- grub_ufs_fini ();
- grub_minix_fini ();
- grub_hfs_fini ();
- grub_jfs_fini ();
-
- grub_gpt_partition_map_fini ();
- grub_pc_partition_map_fini ();
+ grub_fini_all ();
grub_util_biosdisk_fini ();
free (boot_file);
_______________________________________________
Grub-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel