Commit 2514395e authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild

* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild:
  kconfig: fix typo in change count initialization
  kconfig: recenter menuconfig
  kconfig: revert conf behaviour change
  kconfig: fix default value for choice input
  kbuild: fix NULL dereference in scripts/mod/modpost.c
  kbuild: fix mode of checkstack.pl and other files.
  kbuild: rebuild initramfs if content of initramfs changes
  kbuild: properly pass options to hostcc when doing make O=..
  kbuild: modules_install for external modules must not remove existing modules
  kbuild: fix make dir/
  ver_linux: don't print reiser4progs version if none found
  kbuild: mips: fix sed regexp to generate asm-offset.h
  kbuild: fix building single targets with make O=.. single-target
  kbuild: use relative path to -I
  kbuild: fix unneeded rebuilds in drivers/net/chelsio after moving source tree
  kbuild: fix unneeded rebuilds in drivers/media/video after moving source tree
  kbuild: fix garbled text in modules.txt
parents b3967dc5 b5ac4817
...@@ -44,7 +44,7 @@ What is covered within this file is mainly information to authors ...@@ -44,7 +44,7 @@ What is covered within this file is mainly information to authors
of modules. The author of an external modules should supply of modules. The author of an external modules should supply
a makefile that hides most of the complexity so one only has to type a makefile that hides most of the complexity so one only has to type
'make' to build the module. A complete example will be present in 'make' to build the module. A complete example will be present in
chapter ¤. Creating a kbuild file for an external module". chapter 4, "Creating a kbuild file for an external module".
=== 2. How to build external modules === 2. How to build external modules
......
...@@ -18,7 +18,7 @@ define sed-y ...@@ -18,7 +18,7 @@ define sed-y
"/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}" "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"
endef endef
# Override default regexp for specific architectures # Override default regexp for specific architectures
sed-$(CONFIG_MIPS) := "/^@@@/s///p" sed-$(CONFIG_MIPS) := "/^@@@/{s/^@@@//; s/ \#.*\$$//; p;}"
quiet_cmd_offsets = GEN $@ quiet_cmd_offsets = GEN $@
define cmd_offsets define cmd_offsets
......
...@@ -1112,7 +1112,6 @@ modules_install: _emodinst_ _emodinst_post ...@@ -1112,7 +1112,6 @@ modules_install: _emodinst_ _emodinst_post
install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra) install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra)
PHONY += _emodinst_ PHONY += _emodinst_
_emodinst_: _emodinst_:
$(Q)rm -rf $(MODLIB)/$(install-dir)
$(Q)mkdir -p $(MODLIB)/$(install-dir) $(Q)mkdir -p $(MODLIB)/$(install-dir)
$(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst
...@@ -1275,40 +1274,43 @@ kernelversion: ...@@ -1275,40 +1274,43 @@ kernelversion:
# Single targets # Single targets
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# The directory part is taken from first prerequisite, so this # Single targets are compatible with:
# works even with external modules # - build whith mixed source and output
# - build with separate output dir 'make O=...'
# - external modules
#
# target-dir => where to store outputfile
# build-dir => directory in kernel source tree to use
ifeq ($(KBUILD_EXTMOD),)
build-dir = $(patsubst %/,%,$(dir $@))
target-dir = $(dir $@)
else
zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
endif
%.s: %.c prepare scripts FORCE %.s: %.c prepare scripts FORCE
$(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
%.i: %.c prepare scripts FORCE %.i: %.c prepare scripts FORCE
$(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
%.o: %.c prepare scripts FORCE %.o: %.c prepare scripts FORCE
$(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
%.lst: %.c prepare scripts FORCE %.lst: %.c prepare scripts FORCE
$(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
%.s: %.S prepare scripts FORCE %.s: %.S prepare scripts FORCE
$(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
%.o: %.S prepare scripts FORCE %.o: %.S prepare scripts FORCE
$(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
# For external modules we shall include any directory of the target,
# but usual case there is no directory part.
# make M=`pwd` module.o => $(dir $@)=./
# make M=`pwd` foo/module.o => $(dir $@)=foo/
# make M=`pwd` / => $(dir $@)=/
ifeq ($(KBUILD_EXTMOD),)
target-dir = $(@D)
else
zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
target-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
endif
/ %/: scripts prepare FORCE # Modules
/ %/: prepare scripts FORCE
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(target-dir) $(build)=$(build-dir)
%.ko: scripts FORCE %.ko: prepare scripts FORCE
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(target-dir) $(@:.ko=.o) $(build)=$(build-dir) $(@:.ko=.o)
$(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
# FIXME Should go into a make.lib or something # FIXME Should go into a make.lib or something
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# #
CFLAGS_kbd.o := -Idrivers/char CFLAGS_kbd.o := -Idrivers/char
CFLAGS_vreset.o := -I$(srctree)/arch/ppc/boot/include CFLAGS_vreset.o := -Iarch/ppc/boot/include
zlib := infblock.c infcodes.c inffast.c inflate.c inftrees.c infutil.c zlib := infblock.c infcodes.c inffast.c inflate.c inftrees.c infutil.c
......
...@@ -5,4 +5,4 @@ ...@@ -5,4 +5,4 @@
obj-y := math.o obj-y := math.o
EXTRA_AFLAGS := -ansi EXTRA_AFLAGS := -ansi
EXTRA_CFLAGS = -I. -I$(TOPDIR)/include/math-emu -w EXTRA_CFLAGS = -I. -Iinclude/math-emu -w
...@@ -84,4 +84,4 @@ obj-$(CONFIG_USB_IBMCAM) += usbvideo/ ...@@ -84,4 +84,4 @@ obj-$(CONFIG_USB_IBMCAM) += usbvideo/
obj-$(CONFIG_USB_KONICAWC) += usbvideo/ obj-$(CONFIG_USB_KONICAWC) += usbvideo/
obj-$(CONFIG_USB_VICAM) += usbvideo/ obj-$(CONFIG_USB_VICAM) += usbvideo/
EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/dvb-core EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
...@@ -9,4 +9,4 @@ bttv-objs := bttv-driver.o bttv-cards.o bttv-if.o \ ...@@ -9,4 +9,4 @@ bttv-objs := bttv-driver.o bttv-cards.o bttv-if.o \
obj-$(CONFIG_VIDEO_BT848) += bttv.o obj-$(CONFIG_VIDEO_BT848) += bttv.o
EXTRA_CFLAGS += -I$(src)/.. EXTRA_CFLAGS += -I$(src)/..
EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/dvb-core EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
...@@ -3,4 +3,4 @@ cx25840-objs := cx25840-core.o cx25840-audio.o cx25840-firmware.o \ ...@@ -3,4 +3,4 @@ cx25840-objs := cx25840-core.o cx25840-audio.o cx25840-firmware.o \
obj-$(CONFIG_VIDEO_CX25840) += cx25840.o obj-$(CONFIG_VIDEO_CX25840) += cx25840.o
EXTRA_CFLAGS += -I$(src)/.. EXTRA_CFLAGS += -Idrivers/media/video
...@@ -8,9 +8,9 @@ obj-$(CONFIG_VIDEO_CX88_DVB) += cx88-dvb.o ...@@ -8,9 +8,9 @@ obj-$(CONFIG_VIDEO_CX88_DVB) += cx88-dvb.o
obj-$(CONFIG_VIDEO_CX88_ALSA) += cx88-alsa.o obj-$(CONFIG_VIDEO_CX88_ALSA) += cx88-alsa.o
obj-$(CONFIG_VIDEO_CX88_VP3054) += cx88-vp3054-i2c.o obj-$(CONFIG_VIDEO_CX88_VP3054) += cx88-vp3054-i2c.o
EXTRA_CFLAGS += -I$(src)/.. EXTRA_CFLAGS += -Idrivers/media/video
EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/dvb-core EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/frontends EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
extra-cflags-$(CONFIG_VIDEO_BUF_DVB) += -DHAVE_VIDEO_BUF_DVB=1 extra-cflags-$(CONFIG_VIDEO_BUF_DVB) += -DHAVE_VIDEO_BUF_DVB=1
extra-cflags-$(CONFIG_DVB_CX22702) += -DHAVE_CX22702=1 extra-cflags-$(CONFIG_DVB_CX22702) += -DHAVE_CX22702=1
......
...@@ -3,4 +3,4 @@ em28xx-objs := em28xx-video.o em28xx-i2c.o em28xx-cards.o em28xx-core.o \ ...@@ -3,4 +3,4 @@ em28xx-objs := em28xx-video.o em28xx-i2c.o em28xx-cards.o em28xx-core.o \
obj-$(CONFIG_VIDEO_EM28XX) += em28xx.o obj-$(CONFIG_VIDEO_EM28XX) += em28xx.o
EXTRA_CFLAGS += -I$(src)/.. EXTRA_CFLAGS += -Idrivers/media/video
...@@ -11,9 +11,9 @@ obj-$(CONFIG_VIDEO_SAA7134_OSS) += saa7134-oss.o ...@@ -11,9 +11,9 @@ obj-$(CONFIG_VIDEO_SAA7134_OSS) += saa7134-oss.o
obj-$(CONFIG_VIDEO_SAA7134_DVB) += saa7134-dvb.o obj-$(CONFIG_VIDEO_SAA7134_DVB) += saa7134-dvb.o
EXTRA_CFLAGS += -I$(src)/.. EXTRA_CFLAGS += -Idrivers/media/video
EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/dvb-core EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/frontends EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
extra-cflags-$(CONFIG_VIDEO_BUF_DVB) += -DHAVE_VIDEO_BUF_DVB=1 extra-cflags-$(CONFIG_VIDEO_BUF_DVB) += -DHAVE_VIDEO_BUF_DVB=1
extra-cflags-$(CONFIG_DVB_MT352) += -DHAVE_MT352=1 extra-cflags-$(CONFIG_DVB_MT352) += -DHAVE_MT352=1
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
obj-$(CONFIG_CHELSIO_T1) += cxgb.o obj-$(CONFIG_CHELSIO_T1) += cxgb.o
EXTRA_CFLAGS += -I$(TOPDIR)/drivers/net/chelsio $(DEBUG_FLAGS) EXTRA_CFLAGS += -Idrivers/net/chelsio $(DEBUG_FLAGS)
cxgb-objs := cxgb2.o espi.o pm3393.o sge.o subr.o mv88x201x.o cxgb-objs := cxgb2.o espi.o pm3393.o sge.o subr.o mv88x201x.o
......
...@@ -87,6 +87,11 @@ cc-ifversion = $(shell if [ $(call cc-version, $(CC)) $(1) $(2) ]; then \ ...@@ -87,6 +87,11 @@ cc-ifversion = $(shell if [ $(call cc-version, $(CC)) $(1) $(2) ]; then \
# $(Q)$(MAKE) $(build)=dir # $(Q)$(MAKE) $(build)=dir
build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
# Prefix -I with $(srctree) if it is not an absolute path
addtree = $(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1)
# Find all -I options and call addtree
flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
# If quiet is set, only print short version of command # If quiet is set, only print short version of command
cmd = @$(echo-cmd) $(cmd_$(1)) cmd = @$(echo-cmd) $(cmd_$(1))
......
...@@ -99,11 +99,6 @@ __a_flags = $(_a_flags) ...@@ -99,11 +99,6 @@ __a_flags = $(_a_flags)
__cpp_flags = $(_cpp_flags) __cpp_flags = $(_cpp_flags)
else else
# Prefix -I with $(srctree) if it is not an absolute path
addtree = $(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1)
# Find all -I options and call addtree
flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
# -I$(obj) locates generated .h files # -I$(obj) locates generated .h files
# $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files # $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files
# and locates generated .h files # and locates generated .h files
......
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
#!/bin/bash #!/bin/bash
# Copyright (C) Martin Schlemmer <azarah@nosferatu.za.org> # Copyright (C) Martin Schlemmer <azarah@nosferatu.za.org>
# Released under the terms of the GNU GPL # Copyright (c) 2006 Sam Ravnborg <sam@ravnborg.org>
#
# Generate a newline separated list of entries from the file/directory
# supplied as an argument.
#
# If a file/directory is not supplied then generate a small dummy file.
# #
# The output is suitable for gen_init_cpio built from usr/gen_init_cpio.c. # Released under the terms of the GNU GPL
# #
# Generate a cpio packed initramfs. It uses gen_init_cpio to generate
# the cpio archive, and gzip to pack it.
# The script may also be used to generate the inputfile used for gen_init_cpio
# This script assumes that gen_init_cpio is located in usr/ directory
# error out on errors
set -e
usage() {
cat << EOF
Usage:
$0 [-o <file>] [-u <uid>] [-g <gid>] {-d | <cpio_source>} ...
-o <file> Create gzipped initramfs file named <file> using
gen_init_cpio and gzip
-u <uid> User ID to map to user ID 0 (root).
<uid> is only meaningful if <cpio_source>
is a directory.
-g <gid> Group ID to map to group ID 0 (root).
<gid> is only meaningful if <cpio_source>
is a directory.
<cpio_source> File list or directory for cpio archive.
If <cpio_source> is a .cpio file it will be used
as direct input to initramfs.
-d Output the default cpio list.
All options except -o and -l may be repeated and are interpreted
sequentially and immediately. -u and -g states are preserved across
<cpio_source> options so an explicit "-u 0 -g 0" is required
to reset the root/group mapping.
EOF
}
list_default_initramfs() {
# echo usr/kinit/kinit
:
}
default_initramfs() { default_initramfs() {
cat <<-EOF cat <<-EOF >> ${output}
# This is a very simple, default initramfs # This is a very simple, default initramfs
dir /dev 0755 0 0 dir /dev 0755 0 0
nod /dev/console 0600 0 0 c 5 1 nod /dev/console 0600 0 0 c 5 1
dir /root 0700 0 0 dir /root 0700 0 0
# file /kinit usr/kinit/kinit 0755 0 0
# slink /init kinit 0755 0 0
EOF EOF
} }
...@@ -42,18 +75,28 @@ filetype() { ...@@ -42,18 +75,28 @@ filetype() {
return 0 return 0
} }
list_print_mtime() {
:
}
print_mtime() { print_mtime() {
local argv1="$1"
local my_mtime="0" local my_mtime="0"
if [ -e "${argv1}" ]; then if [ -e "$1" ]; then
my_mtime=$(find "${argv1}" -printf "%T@\n" | sort -r | head -n 1) my_mtime=$(find "$1" -printf "%T@\n" | sort -r | head -n 1)
fi fi
echo "# Last modified: ${my_mtime}" echo "# Last modified: ${my_mtime}" >> ${output}
echo echo "" >> ${output}
}
list_parse() {
echo "$1 \\"
} }
# for each file print a line in following format
# <filetype> <name> <path to file> <octal mode> <uid> <gid>
# for links, devices etc the format differs. See gen_init_cpio for details
parse() { parse() {
local location="$1" local location="$1"
local name="${location/${srcdir}//}" local name="${location/${srcdir}//}"
...@@ -99,80 +142,112 @@ parse() { ...@@ -99,80 +142,112 @@ parse() {
;; ;;
esac esac
echo "${str}" echo "${str}" >> ${output}
return 0 return 0
} }
usage() { unknown_option() {
printf "Usage:\n" printf "ERROR: unknown option \"$arg\"\n" >&2
printf "$0 [ [-u <root_uid>] [-g <root_gid>] [-d | <cpio_source>] ] . . .\n" printf "If the filename validly begins with '-', " >&2
printf "\n" printf "then it must be prefixed\n" >&2
printf -- "-u <root_uid> User ID to map to user ID 0 (root).\n" printf "by './' so that it won't be interpreted as an option." >&2
printf " <root_uid> is only meaningful if <cpio_source>\n" printf "\n" >&2
printf " is a directory.\n" usage >&2
printf -- "-g <root_gid> Group ID to map to group ID 0 (root).\n" exit 1
printf " <root_gid> is only meaningful if <cpio_source>\n" }
printf " is a directory.\n"
printf "<cpio_source> File list or directory for cpio archive.\n" list_header() {
printf " If <cpio_source> is not provided then a\n" echo "deps_initramfs := \\"
printf " a default list will be output.\n" }
printf -- "-d Output the default cpio list. If no <cpio_source>\n"
printf " is given then the default cpio list will be output.\n" header() {
printf "\n" printf "\n#####################\n# $1\n" >> ${output}
printf "All options may be repeated and are interpreted sequentially\n" }
printf "and immediately. -u and -g states are preserved across\n"
printf "<cpio_source> options so an explicit \"-u 0 -g 0\" is required\n" # process one directory (incl sub-directories)
printf "to reset the root/group mapping.\n" dir_filelist() {
${dep_list}header "$1"
srcdir=$(echo "$1" | sed -e 's://*:/:g')
dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" 2>/dev/null)
# If $dirlist is only one line, then the directory is empty
if [ "$(echo "${dirlist}" | wc -l)" -gt 1 ]; then
${dep_list}print_mtime "$1"
echo "${dirlist}" | \
while read x; do
${dep_list}parse ${x}
done
fi
} }
build_list() { # if only one file is specified and it is .cpio file then use it direct as fs
printf "\n#####################\n# $cpio_source\n" # if a directory is specified then add all files in given direcotry to fs
# if a regular file is specified assume it is in gen_initramfs format
if [ -f "$cpio_source" ]; then input_file() {
print_mtime "$cpio_source" source="$1"
cat "$cpio_source" if [ -f "$1" ]; then
elif [ -d "$cpio_source" ]; then ${dep_list}header "$1"
srcdir=$(echo "$cpio_source" | sed -e 's://*:/:g') is_cpio="$(echo "$1" | sed 's/^.*\.cpio/cpio/')"
dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" 2>/dev/null) if [ $2 -eq 0 -a ${is_cpio} == "cpio" ]; then
cpio_file=$1
# If $dirlist is only one line, then the directory is empty [ ! -z ${dep_list} ] && echo "$1"
if [ "$(echo "${dirlist}" | wc -l)" -gt 1 ]; then return 0
print_mtime "$cpio_source" fi
if [ -z ${dep_list} ]; then
echo "${dirlist}" | \ print_mtime "$1" >> ${output}
while read x; do cat "$1" >> ${output}
parse ${x}
done
else else
# Failsafe in case directory is empty grep ^file "$1" | cut -d ' ' -f 3
default_initramfs
fi fi
elif [ -d "$1" ]; then
dir_filelist "$1"
else else
echo " $0: Cannot open '$cpio_source'" >&2 echo " ${prog}: Cannot open '$1'" >&2
exit 1 exit 1
fi fi
} }
prog=$0
root_uid=0 root_uid=0
root_gid=0 root_gid=0
dep_list=
cpio_file=
cpio_list=
output="/dev/stdout"
output_file=""
arg="$1"
case "$arg" in
"-l") # files included in initramfs - used by kbuild
dep_list="list_"
shift
;;
"-o") # generate gzipped cpio image named $1
shift
output_file="$1"
cpio_list="$(mktemp ${TMPDIR:-/tmp}/cpiolist.XXXXXX)"
output=${cpio_list}
shift
;;
esac
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
arg="$1" arg="$1"
shift shift
case "$arg" in case "$arg" in
"-u") "-u") # map $1 to uid=0 (root)
root_uid="$1" root_uid="$1"
shift shift
;; ;;
"-g") "-g") # map $1 to gid=0 (root)
root_gid="$1" root_gid="$1"
shift shift
;; ;;
"-d") "-d") # display default initramfs list
default_list="$arg" default_list="$arg"
default_initramfs ${dep_list}default_initramfs
;; ;;
"-h") "-h")
usage usage
...@@ -181,23 +256,27 @@ while [ $# -gt 0 ]; do ...@@ -181,23 +256,27 @@ while [ $# -gt 0 ]; do
*) *)
case "$arg" in case "$arg" in
"-"*) "-"*)
printf "ERROR: unknown option \"$arg\"\n" >&2 unknown_option
printf "If the filename validly begins with '-', then it must be prefixed\n" >&2
printf "by './' so that it won't be interpreted as an option." >&2
printf "\n" >&2
usage >&2
exit 1
;; ;;
*) *) # input file/dir - process it
cpio_source="$arg" input_file "$arg" "$#"
build_list
;; ;;
esac esac
;; ;;
esac esac
done done
# spit out the default cpio list if a source hasn't been specified # If output_file is set we will generate cpio archive and gzip it
[ -z "$cpio_source" -a -z "$default_list" ] && default_initramfs # we are carefull to delete tmp files
if [ ! -z ${output_file} ]; then
if [ -z ${cpio_file} ]; then
cpio_tfile="$(mktemp ${TMPDIR:-/tmp}/cpiofile.XXXXXX)"
usr/gen_init_cpio ${cpio_list} > ${cpio_tfile}
else
cpio_tfile=${cpio_file}
fi
rm ${cpio_list}
cat ${cpio_tfile} | gzip -f -9 - > ${output_file}
[ -z ${cpio_file} ] && rm ${cpio_tfile}
fi
exit 0 exit 0
...@@ -63,20 +63,6 @@ static void check_stdin(void) ...@@ -63,20 +63,6 @@ static void check_stdin(void)
} }
} }
static char *fgets_check_stream(char *s, int size, FILE *stream)
{
char *ret = fgets(s, size, stream);
if (ret == NULL && feof(stream)) {
printf(_("aborted!\n\n"));
printf(_("Console input is closed. "));
printf(_("Run 'make oldconfig' to update configuration.\n\n"));
exit(1);
}
return ret;
}
static void conf_askvalue(struct symbol *sym, const char *def) static void conf_askvalue(struct symbol *sym, const char *def)
{ {
enum symbol_type type = sym_get_type(sym); enum symbol_type type = sym_get_type(sym);
...@@ -114,7 +100,7 @@ static void conf_askvalue(struct symbol *sym, const char *def) ...@@ -114,7 +100,7 @@ static void conf_askvalue(struct symbol *sym, const char *def)
check_stdin(); check_stdin();
case ask_all: case ask_all:
fflush(stdout); fflush(stdout);
fgets_check_stream(line, 128, stdin); fgets(line, 128, stdin);
return; return;
case set_default: case set_default:
printf("%s\n", def); printf("%s\n", def);
...@@ -328,8 +314,7 @@ static int conf_choice(struct menu *menu) ...@@ -328,8 +314,7 @@ static int conf_choice(struct menu *menu)
printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
def_sym = sym_get_choice_value(sym); def_sym = sym_get_choice_value(sym);
cnt = def = 0; cnt = def = 0;
line[0] = '0'; line[0] = 0;
line[1] = 0;
for (child = menu->list; child; child = child->next) { for (child = menu->list; child; child = child->next) {
if (!menu_is_visible(child)) if (!menu_is_visible(child))
continue; continue;
...@@ -370,7 +355,7 @@ static int conf_choice(struct menu *menu) ...@@ -370,7 +355,7 @@ static int conf_choice(struct menu *menu)
check_stdin(); check_stdin();
case ask_all: case ask_all:
fflush(stdout); fflush(stdout);
fgets_check_stream(line, 128, stdin); fgets(line, 128, stdin);
strip(line); strip(line);
if (line[0] == '?') { if (line[0] == '?') {
printf("\n%s\n", menu->sym->help ? printf("\n%s\n", menu->sym->help ?
......
...@@ -325,7 +325,7 @@ int conf_read(const char *name) ...@@ -325,7 +325,7 @@ int conf_read(const char *name)
sym->flags |= e->right.sym->flags & SYMBOL_NEW; sym->flags |= e->right.sym->flags & SYMBOL_NEW;
} }
sym_change_count = conf_warnings && conf_unsaved; sym_change_count = conf_warnings || conf_unsaved;
return 0; return 0;
} }
......
...@@ -58,8 +58,7 @@ ...@@ -58,8 +58,7 @@
#include "dialog.h" #include "dialog.h"
#define ITEM_IDENT 1 /* Indent of menu entries. Fixed for all menus */ static int menu_width, item_x;
static int menu_width;
/* /*
* Print menu item * Print menu item
...@@ -70,7 +69,7 @@ static void do_print_item(WINDOW * win, const char *item, int choice, ...@@ -70,7 +69,7 @@ static void do_print_item(WINDOW * win, const char *item, int choice,
int j; int j;
char *menu_item = malloc(menu_width + 1); char *menu_item = malloc(menu_width + 1);
strncpy(menu_item, item, menu_width - ITEM_IDENT); strncpy(menu_item, item, menu_width - item_x);
menu_item[menu_width] = 0; menu_item[menu_width] = 0;
j = first_alpha(menu_item, "YyNnMmHh"); j = first_alpha(menu_item, "YyNnMmHh");
...@@ -87,13 +86,13 @@ static void do_print_item(WINDOW * win, const char *item, int choice, ...@@ -87,13 +86,13 @@ static void do_print_item(WINDOW * win, const char *item, int choice,
wclrtoeol(win); wclrtoeol(win);
#endif #endif
wattrset(win, selected ? item_selected_attr : item_attr); wattrset(win, selected ? item_selected_attr : item_attr);
mvwaddstr(win, choice, ITEM_IDENT, menu_item); mvwaddstr(win, choice, item_x, menu_item);
if (hotkey) { if (hotkey) {
wattrset(win, selected ? tag_key_selected_attr : tag_key_attr); wattrset(win, selected ? tag_key_selected_attr : tag_key_attr);
mvwaddch(win, choice, ITEM_IDENT + j, menu_item[j]); mvwaddch(win, choice, item_x + j, menu_item[j]);
} }
if (selected) { if (selected) {
wmove(win, choice, ITEM_IDENT + 1); wmove(win, choice, item_x + 1);
} }
free(menu_item); free(menu_item);
wrefresh(win); wrefresh(win);
...@@ -227,6 +226,8 @@ int dialog_menu(const char *title, const char *prompt, int height, int width, ...@@ -227,6 +226,8 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2, draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
menubox_border_attr, menubox_attr); menubox_border_attr, menubox_attr);
item_x = (menu_width - 70) / 2;
/* Set choice to default item */ /* Set choice to default item */
for (i = 0; i < item_no; i++) for (i = 0; i < item_no; i++)
if (strcmp(current, items[i * 2]) == 0) if (strcmp(current, items[i * 2]) == 0)
...@@ -263,10 +264,10 @@ int dialog_menu(const char *title, const char *prompt, int height, int width, ...@@ -263,10 +264,10 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
wnoutrefresh(menu); wnoutrefresh(menu);
print_arrows(dialog, item_no, scroll, print_arrows(dialog, item_no, scroll,
box_y, box_x + ITEM_IDENT + 1, menu_height); box_y, box_x + item_x + 1, menu_height);
print_buttons(dialog, height, width, 0); print_buttons(dialog, height, width, 0);
wmove(menu, choice, ITEM_IDENT + 1); wmove(menu, choice, item_x + 1);
wrefresh(menu); wrefresh(menu);
while (key != ESC) { while (key != ESC) {
...@@ -349,7 +350,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width, ...@@ -349,7 +350,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
print_item(scroll + choice, choice, TRUE); print_item(scroll + choice, choice, TRUE);
print_arrows(dialog, item_no, scroll, print_arrows(dialog, item_no, scroll,
box_y, box_x + ITEM_IDENT + 1, menu_height); box_y, box_x + item_x + 1, menu_height);
wnoutrefresh(dialog); wnoutrefresh(dialog);
wrefresh(menu); wrefresh(menu);
......
...@@ -658,7 +658,7 @@ static void warn_sec_mismatch(const char *modname, const char *fromsec, ...@@ -658,7 +658,7 @@ static void warn_sec_mismatch(const char *modname, const char *fromsec,
warn("%s - Section mismatch: reference to %s:%s from %s " warn("%s - Section mismatch: reference to %s:%s from %s "
"before '%s' (at offset -0x%llx)\n", "before '%s' (at offset -0x%llx)\n",
modname, secname, refsymname, fromsec, modname, secname, refsymname, fromsec,
elf->strtab + before->st_name, elf->strtab + after->st_name,
(long long)r.r_offset); (long long)r.r_offset);
} else { } else {
warn("%s - Section mismatch: reference to %s:%s from %s " warn("%s - Section mismatch: reference to %s:%s from %s "
......
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
...@@ -39,10 +39,10 @@ tune2fs 2>&1 | grep "^tune2fs" | sed 's/,//' | awk \ ...@@ -39,10 +39,10 @@ tune2fs 2>&1 | grep "^tune2fs" | sed 's/,//' | awk \
fsck.jfs -V 2>&1 | grep version | sed 's/,//' | awk \ fsck.jfs -V 2>&1 | grep version | sed 's/,//' | awk \
'NR==1 {print "jfsutils ", $3}' 'NR==1 {print "jfsutils ", $3}'
reiserfsck -V 2>&1 | grep reiserfsck | awk \ reiserfsck -V 2>&1 | grep ^reiserfsck | awk \
'NR==1{print "reiserfsprogs ", $2}' 'NR==1{print "reiserfsprogs ", $2}'
fsck.reiser4 -V 2>&1 | grep fsck.reiser4 | awk \ fsck.reiser4 -V 2>&1 | grep ^fsck.reiser4 | awk \
'NR==1{print "reiser4progs ", $2}' 'NR==1{print "reiser4progs ", $2}'
xfs_db -V 2>&1 | grep version | awk \ xfs_db -V 2>&1 | grep version | awk \
......
#
# kbuild file for usr/ - including initramfs image
#
obj-y := initramfs_data.o klibcdirs:;
hostprogs-y := gen_init_cpio
clean-files := initramfs_data.cpio.gz initramfs_list # Generate builtin.o based on initramfs_data.o
obj-y := initramfs_data.o
# initramfs_data.o contains the initramfs_data.cpio.gz image. # initramfs_data.o contains the initramfs_data.cpio.gz image.
# The image is included using .incbin, a dependency which is not # The image is included using .incbin, a dependency which is not
# tracked automatically. # tracked automatically.
$(obj)/initramfs_data.o: $(obj)/initramfs_data.cpio.gz FORCE $(obj)/initramfs_data.o: $(obj)/initramfs_data.cpio.gz FORCE
ifdef CONFIG_INITRAMFS_ROOT_UID #####
gen_initramfs_args += -u $(CONFIG_INITRAMFS_ROOT_UID) # Generate the initramfs cpio archive
endif
hostprogs-y := gen_init_cpio
ifdef CONFIG_INITRAMFS_ROOT_GID initramfs := $(CONFIG_SHELL) $(srctree)/scripts/gen_initramfs_list.sh
gen_initramfs_args += -g $(CONFIG_INITRAMFS_ROOT_GID) ramfs-input := $(if $(filter-out "",$(CONFIG_INITRAMFS_SOURCE)), \
endif $(CONFIG_INITRAMFS_SOURCE),-d)
ramfs-args := \
# The $(shell echo $(CONFIG_INITRAMFS_SOURCE)) is to remove the $(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
# gratuitous begin and end quotes from the Kconfig string type. $(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID)) \
# Internal, escaped quotes in the Kconfig string will loose the $(ramfs-input)
# escape and become active quotes.
quotefixed_initramfs_source := $(shell echo $(CONFIG_INITRAMFS_SOURCE)) # .initramfs_data.cpio.gz.d is used to identify all files included
# in initramfs and to detect if any files are added/removed.
filechk_initramfs_list = $(CONFIG_SHELL) \ # Removed files are identified by directory timestamp being updated
$(srctree)/scripts/gen_initramfs_list.sh $(gen_initramfs_args) $(quotefixed_initramfs_source) # The dependency list is generated by gen_initramfs.sh -l
ifneq ($(wildcard $(obj)/.initramfs_data.cpio.gz.d),)
$(obj)/initramfs_list: $(obj)/Makefile FORCE include $(obj)/.initramfs_data.cpio.gz.d
$(call filechk,initramfs_list)
quiet_cmd_cpio = CPIO $@
cmd_cpio = ./$< $(obj)/initramfs_list > $@
# Check if the INITRAMFS_SOURCE is a cpio archive
ifneq (,$(findstring .cpio,$(quotefixed_initramfs_source)))
# INITRAMFS_SOURCE has a cpio archive - verify that it's a single file
ifneq (1,$(words $(quotefixed_initramfs_source)))
$(error Only a single file may be specified in CONFIG_INITRAMFS_SOURCE (="$(quotefixed_initramfs_source)") when a cpio archive is directly specified.)
endif
# Now use the cpio archive directly
initramfs_data_cpio = $(quotefixed_initramfs_source)
targets += $(quotefixed_initramfs_source)
else
# INITRAMFS_SOURCE is not a cpio archive - create one
$(obj)/initramfs_data.cpio: $(obj)/gen_init_cpio \
$(initramfs-y) $(obj)/initramfs_list FORCE
$(call if_changed,cpio)
targets += initramfs_data.cpio
initramfs_data_cpio = $(obj)/initramfs_data.cpio
endif endif
quiet_cmd_initfs = GEN $@
$(obj)/initramfs_data.cpio.gz: $(initramfs_data_cpio) FORCE cmd_initfs = $(initramfs) -o $@ $(ramfs-args) $(ramfs-input)
$(call if_changed,gzip)
targets := initramfs_data.cpio.gz
targets += initramfs_data.cpio.gz $(deps_initramfs): klibcdirs
# We rebuild initramfs_data.cpio.gz if:
# 1) Any included file is newer then initramfs_data.cpio.gz
# 2) There are changes in which files are included (added or deleted)
# 3) If gen_init_cpio are newer than initramfs_data.cpio.gz
# 4) arguments to gen_initramfs.sh changes
$(obj)/initramfs_data.cpio.gz: $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
$(Q)$(initramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.gz.d
$(call if_changed,initfs)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment