/sbin/grub is always built and grub.8 is produced automatically
This commit is contained in:
parent
45d89b3d1a
commit
a0ca5d0c06
21 changed files with 697 additions and 92 deletions
26
ChangeLog
26
ChangeLog
|
@ -1,3 +1,29 @@
|
|||
1999-06-23 OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>
|
||||
|
||||
* grub/asmstub.c [__linux__]: Include linux/fs.h for BLKFLSBUF.
|
||||
(grub_stage2): Call sync before and after calling doit.
|
||||
(gurb_stage2) [__linux__]: Invalidate buffer caches by BLKFLSBUF
|
||||
ioctl.
|
||||
* grub/main.c (main): Call sync first. Suggested by Pavel Roskin
|
||||
<pavel_roskin@geocities.com>.
|
||||
|
||||
* configure.in: Curses libraries are always checked.
|
||||
(--enable-sbin-grub): Deleted. Now /sbin/grub is always built.
|
||||
(--enable-maintainer-mode): New option.
|
||||
* grub/Makefile.am (EXTRA_PROGRAMS): Deleted.
|
||||
(sbin_PROGRAMS): Just set to grub.
|
||||
* docs/Makefile.am (man_MANS): New variable.
|
||||
(HELP2MAN): Likewise.
|
||||
(noinst_SCRIPTS): Likewise.
|
||||
(EXTRA_DIST): Add $(man_MANS) and $(noinst_SCRIPTS).
|
||||
[GRUB_MAINT]: Define the rule for the /sbin/grub manual.
|
||||
* docs/help2man: Copied from texinfo-3.12i.
|
||||
(--sector): New option to specify which section a manual belongs
|
||||
to.
|
||||
(opt_sector): New variable.
|
||||
(sector): Likewise.
|
||||
* docs/grub.8: Produced by help2man automatically.
|
||||
|
||||
1999-06-22 OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>
|
||||
|
||||
* shared_src/char_io.c (get_cmdline): Add two missing `break's.
|
||||
|
|
|
@ -70,7 +70,6 @@ VERSION = @VERSION@
|
|||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
install_sh = @install_sh@
|
||||
sbingrub = @sbingrub@
|
||||
|
||||
|
||||
SUBDIRS = grub stage1 stage2 \
|
||||
|
|
13
aclocal.m4
vendored
13
aclocal.m4
vendored
|
@ -230,3 +230,16 @@ else
|
|||
fi
|
||||
AC_SUBST($1)])
|
||||
|
||||
# Define a conditional.
|
||||
|
||||
AC_DEFUN(AM_CONDITIONAL,
|
||||
[AC_SUBST($1_TRUE)
|
||||
AC_SUBST($1_FALSE)
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
$1_FALSE='#'
|
||||
else
|
||||
$1_TRUE='#'
|
||||
$1_FALSE=
|
||||
fi])
|
||||
|
||||
|
|
114
configure
vendored
114
configure
vendored
|
@ -12,7 +12,8 @@ ac_help=
|
|||
ac_default_prefix=/usr/local
|
||||
# Any additions from configure.in:
|
||||
ac_help="$ac_help
|
||||
--enable-sbin-grub build /sbin/grub command-line utility"
|
||||
--enable-maintainer-mode
|
||||
enable the maintainer mode"
|
||||
|
||||
# Initialize some variables set by options.
|
||||
# The variables have the same names as the options, with
|
||||
|
@ -554,7 +555,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
|
|||
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
|
||||
# ./install, which can be erroneously created by make from ./install.sh.
|
||||
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
|
||||
echo "configure:558: checking for a BSD compatible install" >&5
|
||||
echo "configure:559: checking for a BSD compatible install" >&5
|
||||
if test -z "$INSTALL"; then
|
||||
if eval "test \"\${ac_cv_path_install+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
|
@ -611,7 +612,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
|
|||
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
|
||||
|
||||
echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
|
||||
echo "configure:615: checking whether build environment is sane" >&5
|
||||
echo "configure:616: checking whether build environment is sane" >&5
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftestfile
|
||||
|
@ -668,7 +669,7 @@ test "$program_suffix" != NONE &&
|
|||
test "$program_transform_name" = "" && program_transform_name="s,x,x,"
|
||||
|
||||
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
|
||||
echo "configure:672: checking whether ${MAKE-make} sets \${MAKE}" >&5
|
||||
echo "configure:673: checking whether ${MAKE-make} sets \${MAKE}" >&5
|
||||
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
|
||||
if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
|
@ -717,7 +718,7 @@ EOF
|
|||
|
||||
missing_dir=`cd $ac_aux_dir && pwd`
|
||||
echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
|
||||
echo "configure:721: checking for working aclocal" >&5
|
||||
echo "configure:722: checking for working aclocal" >&5
|
||||
# Run test in a subshell; some versions of sh will print an error if
|
||||
# an executable is not found, even if stderr is redirected.
|
||||
# Redirect stdin to placate older versions of autoconf. Sigh.
|
||||
|
@ -730,7 +731,7 @@ else
|
|||
fi
|
||||
|
||||
echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
|
||||
echo "configure:734: checking for working autoconf" >&5
|
||||
echo "configure:735: checking for working autoconf" >&5
|
||||
# Run test in a subshell; some versions of sh will print an error if
|
||||
# an executable is not found, even if stderr is redirected.
|
||||
# Redirect stdin to placate older versions of autoconf. Sigh.
|
||||
|
@ -743,7 +744,7 @@ else
|
|||
fi
|
||||
|
||||
echo $ac_n "checking for working automake""... $ac_c" 1>&6
|
||||
echo "configure:747: checking for working automake" >&5
|
||||
echo "configure:748: checking for working automake" >&5
|
||||
# Run test in a subshell; some versions of sh will print an error if
|
||||
# an executable is not found, even if stderr is redirected.
|
||||
# Redirect stdin to placate older versions of autoconf. Sigh.
|
||||
|
@ -756,7 +757,7 @@ else
|
|||
fi
|
||||
|
||||
echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
|
||||
echo "configure:760: checking for working autoheader" >&5
|
||||
echo "configure:761: checking for working autoheader" >&5
|
||||
# Run test in a subshell; some versions of sh will print an error if
|
||||
# an executable is not found, even if stderr is redirected.
|
||||
# Redirect stdin to placate older versions of autoconf. Sigh.
|
||||
|
@ -769,7 +770,7 @@ else
|
|||
fi
|
||||
|
||||
echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
|
||||
echo "configure:773: checking for working makeinfo" >&5
|
||||
echo "configure:774: checking for working makeinfo" >&5
|
||||
# Run test in a subshell; some versions of sh will print an error if
|
||||
# an executable is not found, even if stderr is redirected.
|
||||
# Redirect stdin to placate older versions of autoconf. Sigh.
|
||||
|
@ -789,7 +790,7 @@ do
|
|||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:793: checking for $ac_word" >&5
|
||||
echo "configure:794: checking for $ac_word" >&5
|
||||
if eval "test \"\${ac_cv_prog_AMTAR+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -829,7 +830,7 @@ fi
|
|||
|
||||
|
||||
echo $ac_n "checking host system type""... $ac_c" 1>&6
|
||||
echo "configure:833: checking host system type" >&5
|
||||
echo "configure:834: checking host system type" >&5
|
||||
if test "x$ac_cv_host" = "x" || (test "x$host" != "xNONE" && test "x$host" != "x$ac_cv_host_alias"); then
|
||||
|
||||
# Make sure we can run config.sub.
|
||||
|
@ -880,22 +881,36 @@ esac
|
|||
#
|
||||
# Options
|
||||
#
|
||||
sbingrub=
|
||||
# Check whether --enable-sbin-grub or --disable-sbin-grub was given.
|
||||
if test "${enable_sbin_grub+set}" = set; then
|
||||
enableval="$enable_sbin_grub"
|
||||
test "x$enableval" = xno || sbingrub=grub
|
||||
|
||||
# Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
|
||||
if test "${enable_maintainer_mode+set}" = set; then
|
||||
enableval="$enable_maintainer_mode"
|
||||
case "x${enableval}" in
|
||||
xyes) maintainermode=yes ;;
|
||||
xno) maintainermode=no ;;
|
||||
*) { echo "configure: error: invalid value ${enableval} for --enable-maintainer-mode" 1>&2; exit 1; } ;;
|
||||
esac
|
||||
else
|
||||
maintainermode=no
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if test "x${maintainermode}" = xyes; then
|
||||
GRUB_MAINT_TRUE=
|
||||
GRUB_MAINT_FALSE='#'
|
||||
else
|
||||
GRUB_MAINT_TRUE='#'
|
||||
GRUB_MAINT_FALSE=
|
||||
fi
|
||||
|
||||
#
|
||||
# Programs
|
||||
#
|
||||
|
||||
|
||||
echo $ac_n "checking build system type""... $ac_c" 1>&6
|
||||
echo "configure:899: checking build system type" >&5
|
||||
echo "configure:914: checking build system type" >&5
|
||||
if test "x$ac_cv_build" = "x" || (test "x$build" != "xNONE" && test "x$build" != "x$ac_cv_build_alias"); then
|
||||
|
||||
# Make sure we can run config.sub.
|
||||
|
@ -942,7 +957,7 @@ fi
|
|||
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
|
||||
set dummy ${ac_tool_prefix}gcc; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:946: checking for $ac_word" >&5
|
||||
echo "configure:961: checking for $ac_word" >&5
|
||||
if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -974,7 +989,7 @@ fi
|
|||
# Extract the first word of "gcc", so it can be a program name with args.
|
||||
set dummy gcc; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:978: checking for $ac_word" >&5
|
||||
echo "configure:993: checking for $ac_word" >&5
|
||||
if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -1004,7 +1019,7 @@ if test -z "$CC"; then
|
|||
# Extract the first word of "cc", so it can be a program name with args.
|
||||
set dummy cc; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1008: checking for $ac_word" >&5
|
||||
echo "configure:1023: checking for $ac_word" >&5
|
||||
if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -1055,7 +1070,7 @@ fi
|
|||
# Extract the first word of "cl", so it can be a program name with args.
|
||||
set dummy cl; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1059: checking for $ac_word" >&5
|
||||
echo "configure:1074: checking for $ac_word" >&5
|
||||
if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -1087,7 +1102,7 @@ fi
|
|||
fi
|
||||
|
||||
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works""... $ac_c" 1>&6
|
||||
echo "configure:1091: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works" >&5
|
||||
echo "configure:1106: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works" >&5
|
||||
|
||||
ac_ext=c
|
||||
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
|
||||
|
@ -1098,12 +1113,12 @@ cross_compiling=$ac_cv_prog_cc_cross
|
|||
|
||||
cat > conftest.$ac_ext << EOF
|
||||
|
||||
#line 1102 "configure"
|
||||
#line 1117 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
main(){return(0);}
|
||||
EOF
|
||||
if { (eval echo configure:1107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:1122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
ac_cv_prog_cc_works=yes
|
||||
# If we can't run a trivial program, we are probably using a cross compiler.
|
||||
if (./conftest; exit) 2>/dev/null; then
|
||||
|
@ -1129,12 +1144,12 @@ if test $ac_cv_prog_cc_works = no; then
|
|||
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
|
||||
fi
|
||||
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
|
||||
echo "configure:1133: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler" >&5
|
||||
echo "configure:1148: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler" >&5
|
||||
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
|
||||
cross_compiling=$ac_cv_prog_cc_cross
|
||||
|
||||
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
|
||||
echo "configure:1138: checking whether we are using GNU C" >&5
|
||||
echo "configure:1153: checking whether we are using GNU C" >&5
|
||||
if eval "test \"\${ac_cv_prog_gcc+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -1143,7 +1158,7 @@ else
|
|||
yes;
|
||||
#endif
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1147: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
|
||||
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1162: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
|
||||
ac_cv_prog_gcc=yes
|
||||
else
|
||||
ac_cv_prog_gcc=no
|
||||
|
@ -1162,7 +1177,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
|
|||
ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS=
|
||||
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
|
||||
echo "configure:1166: checking whether ${CC-cc} accepts -g" >&5
|
||||
echo "configure:1181: checking whether ${CC-cc} accepts -g" >&5
|
||||
if eval "test \"\${ac_cv_prog_cc_g+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -1200,7 +1215,7 @@ CPPFLAGS="$CPPFLAGS -Wall -Wmissing-prototypes -Wunused"
|
|||
# Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
|
||||
set dummy ${ac_tool_prefix}ld; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1204: checking for $ac_word" >&5
|
||||
echo "configure:1219: checking for $ac_word" >&5
|
||||
if eval "test \"\${ac_cv_prog_LD+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -1232,7 +1247,7 @@ fi
|
|||
# Extract the first word of "${ac_tool_prefix}objcopy", so it can be a program name with args.
|
||||
set dummy ${ac_tool_prefix}objcopy; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1236: checking for $ac_word" >&5
|
||||
echo "configure:1251: checking for $ac_word" >&5
|
||||
if eval "test \"\${ac_cv_prog_OBJCOPY+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -1265,7 +1280,7 @@ fi
|
|||
# Defined in acinclude.m4.
|
||||
|
||||
echo $ac_n "checking symbol names produced by ${CC-cc}""... $ac_c" 1>&6
|
||||
echo "configure:1269: checking symbol names produced by ${CC-cc}" >&5
|
||||
echo "configure:1284: checking symbol names produced by ${CC-cc}" >&5
|
||||
if eval "test \"\${grub_cv_asm_ext_c+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -1278,7 +1293,7 @@ func (int *list)
|
|||
}
|
||||
EOF
|
||||
|
||||
if { ac_try='${CC-cc} -S conftest.c'; { (eval echo configure:1282: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.s; then :
|
||||
if { ac_try='${CC-cc} -S conftest.c'; { (eval echo configure:1297: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.s; then :
|
||||
else
|
||||
{ echo "configure: error: ${CC-cc} failed to produce assembly code" 1>&2; exit 1; }
|
||||
fi
|
||||
|
@ -1307,7 +1322,7 @@ EOF
|
|||
|
||||
|
||||
echo $ac_n "checking whether ${OBJCOPY} works for absolute addresses""... $ac_c" 1>&6
|
||||
echo "configure:1311: checking whether ${OBJCOPY} works for absolute addresses" >&5
|
||||
echo "configure:1326: checking whether ${OBJCOPY} works for absolute addresses" >&5
|
||||
if eval "test \"\${grub_cv_prog_objcopy_absolute+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -1319,21 +1334,21 @@ blah (void)
|
|||
}
|
||||
EOF
|
||||
|
||||
if { (eval echo configure:1323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.o; then :
|
||||
if { (eval echo configure:1338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.o; then :
|
||||
else
|
||||
{ echo "configure: error: ${CC-cc} cannot compile C source code" 1>&2; exit 1; }
|
||||
fi
|
||||
grub_cv_prog_objcopy_absolute=yes
|
||||
for link_addr in 2000 8000 7C00; do
|
||||
if { ac_try='${LD-ld} -N -Ttext $link_addr conftest.o -o conftest.exec'; { (eval echo configure:1329: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then :
|
||||
if { ac_try='${LD-ld} -N -Ttext $link_addr conftest.o -o conftest.exec'; { (eval echo configure:1344: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then :
|
||||
else
|
||||
{ echo "configure: error: ${LD-ld} cannot link at address $link_addr" 1>&2; exit 1; }
|
||||
fi
|
||||
if { ac_try='${OBJCOPY-objcopy} -O binary conftest.exec conftest'; { (eval echo configure:1333: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then :
|
||||
if { ac_try='${OBJCOPY-objcopy} -O binary conftest.exec conftest'; { (eval echo configure:1348: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then :
|
||||
else
|
||||
{ echo "configure: error: ${OBJCOPY-objcopy} cannot create binary files" 1>&2; exit 1; }
|
||||
fi
|
||||
if test ! -f conftest.old || { ac_try='cmp -s conftest.old conftest'; { (eval echo configure:1337: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
if test ! -f conftest.old || { ac_try='cmp -s conftest.old conftest'; { (eval echo configure:1352: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
mv -f conftest conftest.old
|
||||
else
|
||||
grub_cv_prog_objcopy_absolute=no
|
||||
|
@ -1350,7 +1365,7 @@ fi
|
|||
|
||||
|
||||
echo $ac_n "checking for .code16 addr32 assembler support""... $ac_c" 1>&6
|
||||
echo "configure:1354: checking for .code16 addr32 assembler support" >&5
|
||||
echo "configure:1369: checking for .code16 addr32 assembler support" >&5
|
||||
if eval "test \"\${grub_cv_asm_addr32+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -1360,7 +1375,7 @@ l1: addr32
|
|||
movb %al, l1
|
||||
EOF
|
||||
|
||||
if { ac_try='${CC-cc} -c conftest.s'; { (eval echo configure:1364: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then
|
||||
if { ac_try='${CC-cc} -c conftest.s'; { (eval echo configure:1379: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then
|
||||
grub_cv_asm_addr32=yes
|
||||
else
|
||||
grub_cv_asm_addr32=no
|
||||
|
@ -1373,10 +1388,9 @@ if test "x$grub_cv_asm_addr32" != xyes; then
|
|||
{ echo "configure: error: GRUB requires GAS .code16 addr32 support; upgrade your binutils" 1>&2; exit 1; }
|
||||
fi
|
||||
|
||||
# Check for curses libraries if we are building /sbin/grub.
|
||||
if test -n "$sbingrub"; then
|
||||
echo $ac_n "checking for getch in -lncurses""... $ac_c" 1>&6
|
||||
echo "configure:1380: checking for getch in -lncurses" >&5
|
||||
# Check for curses libraries.
|
||||
echo $ac_n "checking for getch in -lncurses""... $ac_c" 1>&6
|
||||
echo "configure:1394: checking for getch in -lncurses" >&5
|
||||
ac_lib_var=`echo ncurses'_'getch | sed 'y%./+-%__p_%'`
|
||||
if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
|
@ -1384,7 +1398,7 @@ else
|
|||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-lncurses $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1388 "configure"
|
||||
#line 1402 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
/* We use char because int might match the return type of a gcc2
|
||||
|
@ -1395,7 +1409,7 @@ int main() {
|
|||
getch()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:1413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
|
@ -1418,7 +1432,7 @@ EOF
|
|||
else
|
||||
echo "$ac_t""no" 1>&6
|
||||
echo $ac_n "checking for getch in -lcurses""... $ac_c" 1>&6
|
||||
echo "configure:1422: checking for getch in -lcurses" >&5
|
||||
echo "configure:1436: checking for getch in -lcurses" >&5
|
||||
ac_lib_var=`echo curses'_'getch | sed 'y%./+-%__p_%'`
|
||||
if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
|
@ -1426,7 +1440,7 @@ else
|
|||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-lcurses $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1430 "configure"
|
||||
#line 1444 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
/* We use char because int might match the return type of a gcc2
|
||||
|
@ -1437,7 +1451,7 @@ int main() {
|
|||
getch()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:1455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
|
@ -1463,7 +1477,6 @@ fi
|
|||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# Create rules for our shared sources.
|
||||
SHARED_SRC_RULES=./ssrcrules.mk
|
||||
|
@ -1663,7 +1676,8 @@ s%@host_alias@%$host_alias%g
|
|||
s%@host_cpu@%$host_cpu%g
|
||||
s%@host_vendor@%$host_vendor%g
|
||||
s%@host_os@%$host_os%g
|
||||
s%@sbingrub@%$sbingrub%g
|
||||
s%@GRUB_MAINT_TRUE@%$GRUB_MAINT_TRUE%g
|
||||
s%@GRUB_MAINT_FALSE@%$GRUB_MAINT_FALSE%g
|
||||
s%@build@%$build%g
|
||||
s%@build_alias@%$build_alias%g
|
||||
s%@build_cpu@%$build_cpu%g
|
||||
|
|
21
configure.in
21
configure.in
|
@ -32,11 +32,16 @@ AC_SUBST(host_vendor)
|
|||
#
|
||||
# Options
|
||||
#
|
||||
sbingrub=
|
||||
AC_ARG_ENABLE(sbin-grub,
|
||||
[ --enable-sbin-grub build /sbin/grub command-line utility],
|
||||
[test "x$enableval" = xno || sbingrub=grub])
|
||||
AC_SUBST(sbingrub)
|
||||
|
||||
AC_ARG_ENABLE(maintainer-mode,
|
||||
[ --enable-maintainer-mode
|
||||
enable the maintainer mode],
|
||||
[case "x${enableval}" in
|
||||
xyes) maintainermode=yes ;;
|
||||
xno) maintainermode=no ;;
|
||||
*) AC_MSG_ERROR(invalid value ${enableval} for --enable-maintainer-mode) ;;
|
||||
esac],[maintainermode=no])
|
||||
AM_CONDITIONAL(GRUB_MAINT, test "x${maintainermode}" = xyes)
|
||||
|
||||
#
|
||||
# Programs
|
||||
|
@ -63,13 +68,11 @@ if test "x$grub_cv_asm_addr32" != xyes; then
|
|||
AC_MSG_ERROR([GRUB requires GAS .code16 addr32 support; upgrade your binutils])
|
||||
fi
|
||||
|
||||
# Check for curses libraries if we are building /sbin/grub.
|
||||
if test -n "$sbingrub"; then
|
||||
AC_CHECK_LIB(ncurses, getch, [LIBS="$LIBS -lncurses"
|
||||
# Check for curses libraries.
|
||||
AC_CHECK_LIB(ncurses, getch, [LIBS="$LIBS -lncurses"
|
||||
AC_DEFINE(HAVE_LIBCURSES)],
|
||||
[AC_CHECK_LIB(curses, getch, [LIBS="$LIBS -lcurses"
|
||||
AC_DEFINE(HAVE_LIBCURSES)])])
|
||||
fi
|
||||
|
||||
# Create rules for our shared sources.
|
||||
AC_SUBST_FILE(SHARED_SRC_RULES)dnl
|
||||
|
|
1
debian/Makefile.in
vendored
1
debian/Makefile.in
vendored
|
@ -70,7 +70,6 @@ VERSION = @VERSION@
|
|||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
install_sh = @install_sh@
|
||||
sbingrub = @sbingrub@
|
||||
|
||||
|
||||
EXTRA_DIST = README.debian changelog control copyright rules
|
||||
|
|
|
@ -1,2 +1,12 @@
|
|||
info_TEXINFOS = grub.texi multiboot.texi
|
||||
EXTRA_DIST = menu.lst
|
||||
man_MANS = grub.8
|
||||
HELP2MAN = $(srcdir)/help2man
|
||||
noinst_SCRIPTS = $(HELP2MAN)
|
||||
|
||||
EXTRA_DIST = menu.lst $(man_MANS) $(noinst_SCRIPTS)
|
||||
|
||||
if GRUB_MAINT
|
||||
$(srcdir)/grub.8: ../grub/grub $(HELP2MAN)
|
||||
$(HELP2MAN) --name="the stage2 emulator shell" --section=8 \
|
||||
--output=$@ $<
|
||||
endif
|
||||
|
|
|
@ -70,19 +70,28 @@ VERSION = @VERSION@
|
|||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
install_sh = @install_sh@
|
||||
sbingrub = @sbingrub@
|
||||
|
||||
|
||||
info_TEXINFOS = grub.texi multiboot.texi
|
||||
EXTRA_DIST = menu.lst
|
||||
man_MANS = grub.8
|
||||
HELP2MAN = $(srcdir)/help2man
|
||||
noinst_SCRIPTS = $(HELP2MAN)
|
||||
|
||||
EXTRA_DIST = menu.lst $(man_MANS) $(noinst_SCRIPTS)
|
||||
subdir = docs
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_CLEAN_FILES =
|
||||
SCRIPTS = $(noinst_SCRIPTS)
|
||||
|
||||
DIST_SOURCES =
|
||||
TEXI2DVI = texi2dvi
|
||||
INFO_DEPS = grub.info multiboot.info
|
||||
DVIS = grub.dvi multiboot.dvi
|
||||
TEXINFOS = grub.texi multiboot.texi
|
||||
man8dir = $(mandir)/man8
|
||||
MANS = $(man_MANS)
|
||||
|
||||
NROFF = nroff
|
||||
DIST_COMMON = Makefile.am Makefile.in mdate-sh stamp-vti texinfo.tex \
|
||||
version.texi
|
||||
|
||||
|
@ -252,6 +261,47 @@ maintainer-clean-aminfo:
|
|||
rm -f $$i-[0-9]*; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
install-man8:
|
||||
$(mkinstalldirs) $(DESTDIR)$(man8dir)
|
||||
@list='$(man8_MANS)'; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.8*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
||||
else file=$$i; fi; \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \
|
||||
$(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \
|
||||
done
|
||||
|
||||
uninstall-man8:
|
||||
@list='$(man8_MANS)'; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.8*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \
|
||||
rm -f $(DESTDIR)$(man8dir)/$$inst; \
|
||||
done
|
||||
install-man: $(MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-man8
|
||||
uninstall-man:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
$(MAKE) $(AM_MAKEFLAGS) uninstall-man8
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
|
@ -264,6 +314,7 @@ distdir: $(DISTFILES)
|
|||
distdir=`cd $(distdir) && pwd`; \
|
||||
cd $(top_srcdir) \
|
||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu docs/Makefile
|
||||
$(mkinstalldirs) $(distdir)/$(srcdir)
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
if test -d $$d/$$file; then \
|
||||
|
@ -286,20 +337,20 @@ installcheck: installcheck-am
|
|||
install-exec-am:
|
||||
install-exec: install-exec-am
|
||||
|
||||
install-data-am: install-info-am
|
||||
install-data-am: install-info-am install-man
|
||||
install-data: install-data-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
install: install-am
|
||||
uninstall-am: uninstall-info
|
||||
uninstall-am: uninstall-info uninstall-man
|
||||
uninstall: uninstall-am
|
||||
all-am: Makefile $(INFO_DEPS)
|
||||
all-am: Makefile $(INFO_DEPS) $(SCRIPTS) $(MANS)
|
||||
all-redirect: all-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DESTDIR)$(infodir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(infodir) $(DESTDIR)$(mandir)/man8
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
|
@ -332,14 +383,19 @@ maintainer-clean: maintainer-clean-am
|
|||
|
||||
.PHONY: mostlyclean-vti distclean-vti clean-vti maintainer-clean-vti \
|
||||
install-info-am uninstall-info mostlyclean-aminfo distclean-aminfo \
|
||||
clean-aminfo maintainer-clean-aminfo tags distdir info-am info dvi-am \
|
||||
dvi check check-am installcheck-am installcheck install-exec-am \
|
||||
install-exec install-data-am install-data install-am install \
|
||||
uninstall-am uninstall all-redirect all-am all install-strip \
|
||||
installdirs mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
clean-aminfo maintainer-clean-aminfo install-man8 uninstall-man8 \
|
||||
install-man uninstall-man tags distdir info-am info dvi-am dvi check \
|
||||
check-am installcheck-am installcheck install-exec-am install-exec \
|
||||
install-data-am install-data install-am install uninstall-am uninstall \
|
||||
all-redirect all-am all install-strip installdirs mostlyclean-generic \
|
||||
distclean-generic clean-generic maintainer-clean-generic clean \
|
||||
mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
@GRUB_MAINT_TRUE@$(srcdir)/grub.8: ../grub/grub $(HELP2MAN)
|
||||
@GRUB_MAINT_TRUE@ $(HELP2MAN) --name="the stage2 emulator shell" --section=8 \
|
||||
@GRUB_MAINT_TRUE@ --output=$@ $<
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
|
57
docs/grub.8
Normal file
57
docs/grub.8
Normal file
|
@ -0,0 +1,57 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.010.
|
||||
.TH GRUB "8" "June 2000" "GNU GRUB 0.5.92" "FSF"
|
||||
.SH NAME
|
||||
GRUB \- the stage2 emulator shell
|
||||
.SH SYNOPSIS
|
||||
.B GRUB
|
||||
[\fIOPTION\fR]...
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
Enter the GRand Unified Bootloader command shell.
|
||||
.TP
|
||||
\fB\-\-batch\fR
|
||||
turn on batch mode for non-interactive use
|
||||
.TP
|
||||
\fB\-\-boot\-drive\fR=\fIDRIVE\fR
|
||||
specify stage2 boot_drive [default=0x0]
|
||||
.TP
|
||||
\fB\-\-config\-file\fR=\fIFILE\fR
|
||||
specify stage2 config_file [default=/boot/grub/menu.lst]
|
||||
.TP
|
||||
\fB\-\-help\fR
|
||||
display this message and exit
|
||||
.TP
|
||||
\fB\-\-hold\fR
|
||||
wait until a debugger will attach
|
||||
.TP
|
||||
\fB\-\-install\-partition\fR=\fIPAR\fR
|
||||
specify stage2 install_partition [default=0x20000]
|
||||
.TP
|
||||
\fB\-\-no\-config\-file\fR
|
||||
do not use the config file
|
||||
.TP
|
||||
\fB\-\-no\-curses\fR
|
||||
do not use curses
|
||||
.TP
|
||||
\fB\-\-read\-only\fR
|
||||
do not write anything to devices
|
||||
.TP
|
||||
\fB\-\-verbose\fR
|
||||
print verbose messages
|
||||
.TP
|
||||
\fB\-\-version\fR
|
||||
print version information and exit
|
||||
.SH "REPORTING BUGS"
|
||||
Report bugs to bug-grub@gnu.org
|
||||
.SH "SEE ALSO"
|
||||
The full documentation for
|
||||
.B GRUB
|
||||
is maintained as a Texinfo manual. If the
|
||||
.B info
|
||||
and
|
||||
.B GRUB
|
||||
programs are properly installed at your site, the command
|
||||
.IP
|
||||
.B info GRUB
|
||||
.PP
|
||||
should give you access to the complete manual.
|
|
@ -364,7 +364,7 @@ on the floppy.
|
|||
|
||||
If you install GRUB using this method, it will only have access to the
|
||||
command-line interface, since there is no filesystem in which to find a
|
||||
configuration file (FIXME: ref). If you want to use the menu interface, see
|
||||
configuration file. If you want to use the menu interface, see
|
||||
@ref{Automated install}.
|
||||
|
||||
Under an UNIX-like operating system, such as GNU, use @code{dd} as
|
||||
|
@ -427,7 +427,7 @@ place the @file{stage2} (and if desired, your configuration file called
|
|||
(after booting from the GRUB floppy):
|
||||
|
||||
@example
|
||||
install= (fd0)+1 (hd0) (hd0,2)/boot/grub/stage2 0x8000 p
|
||||
install= (fd0)+1 (hd0) (hd0,1)/boot/grub/stage2 0x8000 p
|
||||
@end example
|
||||
|
||||
This tells GRUB to grab the first sector of the floppy and use it as the
|
||||
|
@ -444,7 +444,7 @@ telling GRUB's stage1 to read from the first hard disk no matter where
|
|||
the stage1 was loaded from:
|
||||
|
||||
@example
|
||||
install= (fd0)+1 d (fd0) (hd0,2)/boot/grub/stage2 0x8000 p
|
||||
install= (fd0)+1 d (fd0) (hd0,1)/boot/grub/stage2 0x8000 p
|
||||
@end example
|
||||
|
||||
The @samp{d} option near the beginning is what sets the @emph{forced}
|
||||
|
@ -452,6 +452,26 @@ loading from the disk where the stage2 was installed from. Also, the
|
|||
@dfn{destination device} is changed to place the finished stage1 on the
|
||||
floppy disk.
|
||||
|
||||
@item
|
||||
@strong{Same as above, but place the stage1.5 in the first cylinder of
|
||||
the hard disk, and load the stage2 via the stage1.5:} Each of Stage 1.5s
|
||||
supports only one filesystem, so choose a stage1.5 that supports the
|
||||
filesystem where stage2 is located. Here it is assumed that the
|
||||
filesystem is ext2fs.
|
||||
|
||||
First, copy @file{e2fs_stage1_5} to the first cylinder after MBR
|
||||
(@pxref{MBR}):
|
||||
|
||||
@example
|
||||
dd if=e2fs_stage1_5/e2fs_stage1_5 of=/dev/hda bs=512 seek=1
|
||||
@end example
|
||||
|
||||
Second, specify the stage2 argument in the block-list format:
|
||||
|
||||
@example
|
||||
install= (fd0)+1 (hd0) (hd0)1+1 0x2000 p (hd0,1)/boot/grub/stage2
|
||||
@end example
|
||||
|
||||
@item
|
||||
@strong{Installing from an @emph{install directory} to the second hard
|
||||
disk:} Here we're loading the stage1 from a file on the first hard disk,
|
||||
|
@ -460,7 +480,7 @@ hard disk, and setting the stage2's @dfn{configuration file} to
|
|||
@file{(hd1,a)/grubdir/configfile}:
|
||||
|
||||
@example
|
||||
install= (hd0,2)/boot/grub/stage1 (hd1) (hd1,a)/boot/grub/stage2 0x8000 p /grubdir/configfile
|
||||
install= (hd0,1)/boot/grub/stage1 (hd1) (hd1,a)/boot/grub/stage2 0x8000 p /grubdir/configfile
|
||||
@end example
|
||||
@end itemize
|
||||
|
||||
|
@ -517,7 +537,7 @@ file, used with exactly the same syntax.
|
|||
@c The list of available keys should be listed in @table, and should be
|
||||
@c explained exactly. Current explanation is obscure.
|
||||
Cursor movement and editing of the text on the line can be done via a
|
||||
subset of the functions available in the BASH (FIXME: ref) shell
|
||||
subset of the functions available in the BASH shell
|
||||
(@kbd{C-f} forward, @kbd{C-b} backward, @kbd{C-a} beginning of line,
|
||||
@kbd{C-e} end of line, @kbd{C-k} delete to end, @kbd{C-u} delete to
|
||||
beginning; the PC left and right arrow keys, @key{HOME}, @key{DEL}, and
|
||||
|
|
397
docs/help2man
Normal file
397
docs/help2man
Normal file
|
@ -0,0 +1,397 @@
|
|||
#!/usr/local/bin/perl -w
|
||||
|
||||
# Generate a short man page from --help and --version output.
|
||||
# Copyright © 1997, 98, 99 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# Written by Brendan O'Dea <bod@compusol.com.au>
|
||||
|
||||
use 5.004;
|
||||
use strict;
|
||||
use Getopt::Long;
|
||||
use POSIX qw(strftime setlocale LC_TIME);
|
||||
|
||||
my $this_program = 'help2man';
|
||||
my $this_version = '1.010';
|
||||
my $version_info = <<EOT;
|
||||
$this_program $this_version
|
||||
|
||||
Copyright (C) 1997, 98, 99 Free Software Foundation, Inc.
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
Written by Brendan O'Dea <bod\@compusol.com.au>
|
||||
EOT
|
||||
|
||||
my $help_info = <<EOT;
|
||||
`$this_program' generates a man page out of `--help' and `--version' output.
|
||||
|
||||
Usage: $this_program [OPTION]... EXECUTABLE
|
||||
|
||||
--name=STRING use `STRING' as the description for the NAME paragraph
|
||||
--include=FILE include material from `FILE'
|
||||
--opt-include=FILE include material from `FILE' if it exists
|
||||
--output=FILE send output to `FILE'
|
||||
--no-info suppress pointer to Texinfo manual
|
||||
--section=SECTION use `SECTION' as the section for the man page
|
||||
--help print this help, then exit
|
||||
--version print $this_program program version number, then exit
|
||||
|
||||
EXECUTABLE should accept `--help' and `version' options.
|
||||
EOT
|
||||
|
||||
my ($include, $opt_name, $opt_include, $opt_output, $opt_no_info,
|
||||
$opt_section);
|
||||
|
||||
# Parse options.
|
||||
GetOptions (
|
||||
'name=s' => \$opt_name,
|
||||
'include=s' => \$include,
|
||||
'opt-include=s' => \$opt_include,
|
||||
'output=s' => \$opt_output,
|
||||
'no-info' => \$opt_no_info,
|
||||
'section=s' => \$opt_section,
|
||||
help => sub { print $help_info; exit },
|
||||
version => sub { print $version_info; exit },
|
||||
) or die $help_info;
|
||||
|
||||
die $help_info unless @ARGV == 1;
|
||||
|
||||
my %include = ();
|
||||
my @include = (); # to retain order
|
||||
|
||||
# Process include file (if given). Format is:
|
||||
#
|
||||
# [section name]
|
||||
# verbatim text
|
||||
|
||||
if ($include or $opt_include)
|
||||
{
|
||||
if (open INC, $include || $opt_include)
|
||||
{
|
||||
my $sect;
|
||||
|
||||
while (<INC>)
|
||||
{
|
||||
if (/^\[([^]]+)\]/)
|
||||
{
|
||||
$sect = uc $1;
|
||||
$sect =~ s/^\s+//;
|
||||
$sect =~ s/\s+$//;
|
||||
next;
|
||||
}
|
||||
|
||||
# Silently ignore anything before the first
|
||||
# section--allows for comments and revision info.
|
||||
next unless $sect;
|
||||
|
||||
push @include, $sect unless $include{$sect};
|
||||
$include{$sect} ||= '';
|
||||
$include{$sect} .= $_;
|
||||
}
|
||||
|
||||
close INC;
|
||||
|
||||
die "$this_program: no valid information found in `$include'\n"
|
||||
unless %include;
|
||||
|
||||
# Compress trailing blank lines.
|
||||
for (keys %include)
|
||||
{
|
||||
$include{$_} =~ s/\n+$//;
|
||||
$include{$_} .= "\n" unless /^NAME$/;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
die "$this_program: can't open `$include' ($!)\n" if $include;
|
||||
}
|
||||
}
|
||||
|
||||
# Turn off localisation of executable's ouput.
|
||||
@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
|
||||
|
||||
# Turn off localisation of date (for strftime)
|
||||
setlocale LC_TIME, 'C';
|
||||
|
||||
# Grab help and version paragraphs from executable
|
||||
my @help = split /\n\n+/, `$ARGV[0] --help 2>/dev/null`
|
||||
or die "$this_program: can't get `--help' info from $ARGV[0]\n";
|
||||
|
||||
my @version = split /\n\n+/, `$ARGV[0] --version 2>/dev/null`
|
||||
or die "$this_program: can't get `--version' info from $ARGV[0]\n";
|
||||
|
||||
my $date = strftime "%B %Y", localtime;
|
||||
(my $program = $ARGV[0]) =~ s!.*/!!;
|
||||
my $package = $program;
|
||||
my $version;
|
||||
|
||||
# Set the section to 1 by default.
|
||||
my $section = 1;
|
||||
$section = $opt_section if $opt_section;
|
||||
|
||||
if ($opt_output)
|
||||
{
|
||||
unlink $opt_output
|
||||
or die "$this_program: can't unlink $opt_output ($!)\n"
|
||||
if -e $opt_output;
|
||||
|
||||
open STDOUT, ">$opt_output"
|
||||
or die "$this_program: can't create $opt_output ($!)\n";
|
||||
}
|
||||
|
||||
# The first line of the --version information is assumed to be in one
|
||||
# of the following formats:
|
||||
#
|
||||
# <version>
|
||||
# <program> <version>
|
||||
# {GNU,Free} <program> <version>
|
||||
# <program> ({GNU,Free} <package>) <version>
|
||||
# <program> - {GNU,Free} <package> <version>
|
||||
#
|
||||
# and seperated from any copyright/author details by a blank line.
|
||||
|
||||
$_ = shift @version;
|
||||
|
||||
if (/^(\S+)\s+\(((?:GNU|Free)\s+[^)]+)\)\s+(.*)/ or
|
||||
/^(\S+)\s+-\s*((?:GNU|Free)\s+\S+)\s+(.*)/)
|
||||
{
|
||||
$program = $1;
|
||||
$package = $2;
|
||||
$version = $3;
|
||||
}
|
||||
elsif (/^((?:GNU|Free)\s+)?(\S+)\s+(.*)/)
|
||||
{
|
||||
$program = $2;
|
||||
$package = $1 ? "$1$2" : $2;
|
||||
$version = $3;
|
||||
}
|
||||
else
|
||||
{
|
||||
$version = $_;
|
||||
}
|
||||
|
||||
$program =~ s!.*/!!;
|
||||
|
||||
# no info for `info' itself
|
||||
$opt_no_info = 1 if $program eq 'info';
|
||||
|
||||
# --name overrides --include contents
|
||||
$include{NAME} = "$program \\- $opt_name" if $opt_name;
|
||||
|
||||
# Default (useless) NAME paragraph
|
||||
$include{NAME} ||= "$program \\- manual page for $program $version";
|
||||
|
||||
# Man pages traditionally have the page title in caps.
|
||||
my $PROGRAM = uc $program;
|
||||
|
||||
# Header.
|
||||
print <<EOT;
|
||||
.\\" DO NOT MODIFY THIS FILE! It was generated by $this_program $this_version.
|
||||
.TH $PROGRAM "$section" "$date" "$package $version" "FSF"
|
||||
.SH NAME
|
||||
$include{NAME}
|
||||
EOT
|
||||
|
||||
my $accumulate = 1;
|
||||
my @description = ();
|
||||
|
||||
sub convert_option;
|
||||
|
||||
# Output converted --help information.
|
||||
for (@help)
|
||||
{
|
||||
chomp;
|
||||
|
||||
if (s/^Usage:\s+\S+\s+(.*)\n?//)
|
||||
{
|
||||
# Turn the usage clause into a synopsis.
|
||||
my $synopsis = '';
|
||||
|
||||
do {
|
||||
my $syn = $1;
|
||||
$syn =~ s/(([][]|\.\.+)+)/\\fR$1\\fI/g;
|
||||
$syn =~ s/^/\\fI/ unless $syn =~ s/^\\fR//;
|
||||
$syn .= '\fR';
|
||||
$syn =~ s/\\fI(\s*)\\fR/$1/g;
|
||||
|
||||
$synopsis .= ".br\n" unless $accumulate;
|
||||
$synopsis .= ".B $program\n";
|
||||
$synopsis .= "$syn\n";
|
||||
$accumulate = 0;
|
||||
} while s/^(?:Usage|\s*or):\s+\S+\s+(.*)\n?//;
|
||||
|
||||
# Include file overrides SYNOPSIS.
|
||||
print ".SH SYNOPSIS\n", $include{SYNOPSIS} || $synopsis;
|
||||
|
||||
# Dump any accumulated description text.
|
||||
print ".SH DESCRIPTION\n";
|
||||
print @description;
|
||||
|
||||
# Add additional description text from include file.
|
||||
if ($include{DESCRIPTION})
|
||||
{
|
||||
print ".PP\n" unless $include{DESCRIPTION} =~ /^\..P/;
|
||||
print $include{DESCRIPTION};
|
||||
}
|
||||
|
||||
next unless $_;
|
||||
}
|
||||
|
||||
# Accumulate text if the synopsis has not been produced yet.
|
||||
if ($accumulate)
|
||||
{
|
||||
push @description, ".PP\n" if @description;
|
||||
push @description, "$_\n";
|
||||
next;
|
||||
}
|
||||
|
||||
# Convert some standard paragraph names
|
||||
if (s/^(Options|Examples):\s*\n//)
|
||||
{
|
||||
print qq(.SH \U$1\n);
|
||||
next unless length;
|
||||
}
|
||||
|
||||
# Catch bug report text.
|
||||
if (/^Report bugs |^Email bug reports to /)
|
||||
{
|
||||
print qq(.SH "REPORTING BUGS"\n$_\n);
|
||||
next;
|
||||
}
|
||||
|
||||
# Special case for tar 1.12: --label=NAME\nPATTERN.
|
||||
s{(\n[ \t]*)(-V,[ \t]+--label=NAME.*)\n[ \t]+PATTERN[ \t]+}
|
||||
{$1$2$1\\&...=PATTERN };
|
||||
|
||||
# Convert options.
|
||||
s/((?:^|,)\s+)(-[][\w=-]+|\\&\S+)/$1 . convert_option $2/mge;
|
||||
|
||||
# Option subsections have second line indented.
|
||||
print qq(.SS "$1"\n) if s/^(\S.*)\n(\s)/$2/;
|
||||
|
||||
my $ind = 0;
|
||||
for (split /\n/)
|
||||
{
|
||||
# indented paragraph
|
||||
if (/^\s/)
|
||||
{
|
||||
# Join continued lines when indented to the same point as
|
||||
# text following at least two spaces on the previous line.
|
||||
if ($ind > 0 and /^ {$ind}\S/)
|
||||
{
|
||||
s/^\s+//;
|
||||
print "$_\n" if $_;
|
||||
}
|
||||
else
|
||||
{
|
||||
# use the words(s) before two or more spaces for the
|
||||
# tag
|
||||
s/^(\s+)//;
|
||||
$ind = length $1;
|
||||
|
||||
if (s/(\s\s+)/\n/)
|
||||
{
|
||||
$ind += (length $1) + index $_, "\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$ind = 0;
|
||||
}
|
||||
|
||||
print ".TP\n$_\n" if $_;
|
||||
}
|
||||
}
|
||||
# Anything else.
|
||||
else
|
||||
{
|
||||
print ".PP\n" unless $ind < 0;
|
||||
print "$_\n";
|
||||
$ind = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Print any include items other than the ones we have already dealt
|
||||
# with.
|
||||
for (@include)
|
||||
{
|
||||
print qq(.SH "$_"\n$include{$_})
|
||||
unless /^(NAME|SYNOPSIS|DESCRIPTION|SEE ALSO)$/;
|
||||
}
|
||||
|
||||
# Refer to the real documentation.
|
||||
if ($include{'SEE ALSO'} or !$opt_no_info)
|
||||
{
|
||||
print qq(.SH "SEE ALSO"\n);
|
||||
print $include{'SEE ALSO'}, ".PP\n" if $include{'SEE ALSO'};
|
||||
|
||||
print <<EOT unless $opt_no_info;
|
||||
The full documentation for
|
||||
.B $program
|
||||
is maintained as a Texinfo manual. If the
|
||||
.B info
|
||||
and
|
||||
.B $program
|
||||
programs are properly installed at your site, the command
|
||||
.IP
|
||||
.B info $program
|
||||
.PP
|
||||
should give you access to the complete manual.
|
||||
EOT
|
||||
}
|
||||
|
||||
# Output converted --version information.
|
||||
for (@version)
|
||||
{
|
||||
chomp;
|
||||
|
||||
# Join hyphenated lines.
|
||||
s/([A-Za-z])-\n */$1/g;
|
||||
|
||||
# Convert copyright symbol or (c) to nroff character.
|
||||
s/Copyright\s+(?:\xa9|\([Cc]\))/Copyright \\(co/g;
|
||||
|
||||
# Insert appropriate headings for copyright and author.
|
||||
if (/^Copyright\s\\/) { print ".SH COPYRIGHT\n" }
|
||||
elsif (/^Written\s+by/) { print ".SH AUTHOR\n" }
|
||||
else { print ".PP\n"; }
|
||||
|
||||
# Insert line breaks before additional copyright messages and the
|
||||
# disclaimer.
|
||||
s/(.)\n(Copyright\s|This is free software)/$1\n.br\n$2/g;
|
||||
|
||||
print "$_\n";
|
||||
}
|
||||
|
||||
exit;
|
||||
|
||||
# Convert option dashes to \- to stop nroff from hyphenating 'em, and
|
||||
# embolden. Option arguments get italicised.
|
||||
sub convert_option
|
||||
{
|
||||
my $option = '\fB' . shift;
|
||||
|
||||
$option =~ s/-/\\-/g;
|
||||
unless ($option =~ s/\[=(.*)\]$/\\fR[=\\fI$1\\fR]/)
|
||||
{
|
||||
$option =~ s/=(.)/\\fR=\\fI$1/;
|
||||
$option =~ s/ (.)/ \\fI$1/;
|
||||
$option .= '\fR';
|
||||
}
|
||||
|
||||
$option;
|
||||
}
|
|
@ -68,7 +68,6 @@ VERSION = @VERSION@
|
|||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
install_sh = @install_sh@
|
||||
sbingrub = @sbingrub@
|
||||
|
||||
# Stage 1.5 can be installed into the first cylinder after MBR, so the
|
||||
# limit is (63 - 1) * 512 = 31744.
|
||||
|
|
|
@ -68,7 +68,6 @@ VERSION = @VERSION@
|
|||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
install_sh = @install_sh@
|
||||
sbingrub = @sbingrub@
|
||||
|
||||
# Stage 1.5 can be installed into the first cylinder after MBR, so the
|
||||
# limit is (63 - 1) * 512 = 31744.
|
||||
|
|
|
@ -68,7 +68,6 @@ VERSION = @VERSION@
|
|||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
install_sh = @install_sh@
|
||||
sbingrub = @sbingrub@
|
||||
|
||||
|
||||
IMPORTANT_SIZE_LIMIT = 7168
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
EXTRA_PROGRAMS = grub
|
||||
sbin_PROGRAMS = $(sbingrub)
|
||||
sbin_PROGRAMS = grub
|
||||
CLEANFILES = $(EXTRA_PROGRAMS)
|
||||
|
||||
COMPILE = $(CC) -DGRUB_UTIL=1 -fwritable-strings $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
|
||||
|
|
|
@ -70,11 +70,9 @@ VERSION = @VERSION@
|
|||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
install_sh = @install_sh@
|
||||
sbingrub = @sbingrub@
|
||||
|
||||
|
||||
EXTRA_PROGRAMS = grub
|
||||
sbin_PROGRAMS = $(sbingrub)
|
||||
sbin_PROGRAMS = grub
|
||||
CLEANFILES = $(EXTRA_PROGRAMS)
|
||||
|
||||
COMPILE = $(CC) -DGRUB_UTIL=1 -fwritable-strings $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
|
||||
|
|
|
@ -39,13 +39,14 @@ int grub_stage2 (void);
|
|||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifdef __linux__
|
||||
# include <sys/ioctl.h> /* ioctl */
|
||||
# include <linux/hdreg.h> /* HDIO_GETGEO */
|
||||
/* FIXME: only include if libc doesn't have large file support. */
|
||||
# include <unistd.h>
|
||||
# include <linux/unistd.h> /* _llseek */
|
||||
# include <linux/fs.h> /* BLKFLSBUF */
|
||||
#endif /* __linux__ */
|
||||
|
||||
/* Simulated memory sizes. */
|
||||
|
@ -223,10 +224,16 @@ grub_stage2 (void)
|
|||
}
|
||||
#endif
|
||||
|
||||
/* Make sure that actual writing is done. */
|
||||
sync ();
|
||||
|
||||
/* Set our stack, and go for it. */
|
||||
simstack = (char *) PROTSTACKINIT;
|
||||
doit ();
|
||||
|
||||
/* I don't know if this is necessary really. */
|
||||
sync ();
|
||||
|
||||
#ifdef HAVE_LIBCURSES
|
||||
if (use_curses)
|
||||
endwin ();
|
||||
|
@ -235,7 +242,14 @@ grub_stage2 (void)
|
|||
/* Close off the file descriptors we used. */
|
||||
for (i = 0; i < NUM_DISKS; i ++)
|
||||
if (disks[i].flags != -1)
|
||||
close (disks[i].flags);
|
||||
{
|
||||
#ifdef __linux__
|
||||
/* In Linux, invalidate the buffer cache. In other OSes, reboot
|
||||
is one of the solutions... */
|
||||
ioctl (disks[i].flags, BLKFLSBUF, 0);
|
||||
#endif
|
||||
close (disks[i].flags);
|
||||
}
|
||||
|
||||
/* Release memory. */
|
||||
for (i = 0; i < NUM_DISKS; i++)
|
||||
|
|
|
@ -107,6 +107,12 @@ main (int argc, char **argv)
|
|||
{
|
||||
int c;
|
||||
int hold = 0;
|
||||
|
||||
/* First of all, call sync so that all in-core data is scheduled to be
|
||||
actually written to disks. This is very important because GRUB does
|
||||
not use ordinary stdio interface but raw devices. */
|
||||
sync ();
|
||||
|
||||
program_name = argv[0];
|
||||
default_boot_drive = boot_drive;
|
||||
default_install_partition = install_partition;
|
||||
|
|
|
@ -70,7 +70,6 @@ VERSION = @VERSION@
|
|||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
install_sh = @install_sh@
|
||||
sbingrub = @sbingrub@
|
||||
|
||||
|
||||
noinst_HEADERS = apic.h defs.h dir.h disk_inode.h disk_inode_ffs.h \
|
||||
|
|
|
@ -68,7 +68,6 @@ VERSION = @VERSION@
|
|||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
install_sh = @install_sh@
|
||||
sbingrub = @sbingrub@
|
||||
|
||||
|
||||
pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
|
||||
|
|
|
@ -68,7 +68,6 @@ VERSION = @VERSION@
|
|||
host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
install_sh = @install_sh@
|
||||
sbingrub = @sbingrub@
|
||||
|
||||
|
||||
pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue