aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-04-11 09:41:02 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-04-11 09:41:02 -0400
commit2514395ef88b46e895726a8d40966cb83de7940c (patch)
tree216c6e194e81bdd9c97697cf162cc9505bde310a
parentb3967dc566bc89df19e9aeb87b2fd483418b02e6 (diff)
parentb5ac4817de3032796c558b0a32062e7392b5ea60 (diff)
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
-rw-r--r--Documentation/kbuild/modules.txt2
-rw-r--r--Kbuild2
-rw-r--r--Makefile54
-rw-r--r--arch/ppc/boot/lib/Makefile2
-rw-r--r--arch/sparc/math-emu/Makefile2
-rw-r--r--drivers/media/video/Makefile2
-rw-r--r--drivers/media/video/bt8xx/Makefile2
-rw-r--r--drivers/media/video/cx25840/Makefile2
-rw-r--r--drivers/media/video/cx88/Makefile6
-rw-r--r--drivers/media/video/em28xx/Makefile2
-rw-r--r--drivers/media/video/saa7134/Makefile6
-rw-r--r--drivers/net/chelsio/Makefile2
-rw-r--r--scripts/Kbuild.include5
-rw-r--r--scripts/Makefile.lib5
-rwxr-xr-x[-rw-r--r--]scripts/bloat-o-meter0
-rwxr-xr-x[-rw-r--r--]scripts/checkstack.pl0
-rw-r--r--scripts/gen_initramfs_list.sh225
-rw-r--r--scripts/kconfig/conf.c21
-rw-r--r--scripts/kconfig/confdata.c2
-rw-r--r--scripts/kconfig/lxdialog/menubox.c19
-rw-r--r--scripts/mod/modpost.c2
-rwxr-xr-x[-rw-r--r--]scripts/namespace.pl0
-rwxr-xr-x[-rw-r--r--]scripts/show_delta0
-rwxr-xr-xscripts/ver_linux4
-rw-r--r--usr/Makefile91
25 files changed, 254 insertions, 204 deletions
diff --git a/Documentation/kbuild/modules.txt b/Documentation/kbuild/modules.txt
index fcccf2432f98..61fc079eb966 100644
--- a/Documentation/kbuild/modules.txt
+++ b/Documentation/kbuild/modules.txt
@@ -44,7 +44,7 @@ What is covered within this file is mainly information to authors
44of modules. The author of an external modules should supply 44of modules. The author of an external modules should supply
45a makefile that hides most of the complexity so one only has to type 45a makefile that hides most of the complexity so one only has to type
46'make' to build the module. A complete example will be present in 46'make' to build the module. A complete example will be present in
47chapter ¤. Creating a kbuild file for an external module". 47chapter 4, "Creating a kbuild file for an external module".
48 48
49 49
50=== 2. How to build external modules 50=== 2. How to build external modules
diff --git a/Kbuild b/Kbuild
index 95d6a00bace0..2d4f95e4b89f 100644
--- a/Kbuild
+++ b/Kbuild
@@ -18,7 +18,7 @@ define sed-y
18 "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}" 18 "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"
19endef 19endef
20# Override default regexp for specific architectures 20# Override default regexp for specific architectures
21sed-$(CONFIG_MIPS) := "/^@@@/s///p" 21sed-$(CONFIG_MIPS) := "/^@@@/{s/^@@@//; s/ \#.*\$$//; p;}"
22 22
23quiet_cmd_offsets = GEN $@ 23quiet_cmd_offsets = GEN $@
24define cmd_offsets 24define cmd_offsets
diff --git a/Makefile b/Makefile
index b4019426fa25..fc8e08c419f0 100644
--- a/Makefile
+++ b/Makefile
@@ -1112,7 +1112,6 @@ modules_install: _emodinst_ _emodinst_post
1112install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra) 1112install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra)
1113PHONY += _emodinst_ 1113PHONY += _emodinst_
1114_emodinst_: 1114_emodinst_:
1115 $(Q)rm -rf $(MODLIB)/$(install-dir)
1116 $(Q)mkdir -p $(MODLIB)/$(install-dir) 1115 $(Q)mkdir -p $(MODLIB)/$(install-dir)
1117 $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst 1116 $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst
1118 1117
@@ -1275,40 +1274,43 @@ kernelversion:
1275 1274
1276# Single targets 1275# Single targets
1277# --------------------------------------------------------------------------- 1276# ---------------------------------------------------------------------------
1278# The directory part is taken from first prerequisite, so this 1277# Single targets are compatible with:
1279# works even with external modules 1278# - build whith mixed source and output
1279# - build with separate output dir 'make O=...'
1280# - external modules
1281#
1282# target-dir => where to store outputfile
1283# build-dir => directory in kernel source tree to use
1284
1285ifeq ($(KBUILD_EXTMOD),)
1286 build-dir = $(patsubst %/,%,$(dir $@))
1287 target-dir = $(dir $@)
1288else
1289 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
1290 build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
1291 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
1292endif
1293
1280%.s: %.c prepare scripts FORCE 1294%.s: %.c prepare scripts FORCE
1281 $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) 1295 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1282%.i: %.c prepare scripts FORCE 1296%.i: %.c prepare scripts FORCE
1283 $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) 1297 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1284%.o: %.c prepare scripts FORCE 1298%.o: %.c prepare scripts FORCE
1285 $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) 1299 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1286%.lst: %.c prepare scripts FORCE 1300%.lst: %.c prepare scripts FORCE
1287 $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) 1301 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1288%.s: %.S prepare scripts FORCE 1302%.s: %.S prepare scripts FORCE
1289 $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) 1303 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1290%.o: %.S prepare scripts FORCE 1304%.o: %.S prepare scripts FORCE
1291 $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@) 1305 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1292
1293# For external modules we shall include any directory of the target,
1294# but usual case there is no directory part.
1295# make M=`pwd` module.o => $(dir $@)=./
1296# make M=`pwd` foo/module.o => $(dir $@)=foo/
1297# make M=`pwd` / => $(dir $@)=/
1298
1299ifeq ($(KBUILD_EXTMOD),)
1300 target-dir = $(@D)
1301else
1302 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
1303 target-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
1304endif
1305 1306
1306/ %/: scripts prepare FORCE 1307# Modules
1308/ %/: prepare scripts FORCE
1307 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1309 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1308 $(build)=$(target-dir) 1310 $(build)=$(build-dir)
1309%.ko: scripts FORCE 1311%.ko: prepare scripts FORCE
1310 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1312 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1311 $(build)=$(target-dir) $(@:.ko=.o) 1313 $(build)=$(build-dir) $(@:.ko=.o)
1312 $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost 1314 $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
1313 1315
1314# FIXME Should go into a make.lib or something 1316# FIXME Should go into a make.lib or something
diff --git a/arch/ppc/boot/lib/Makefile b/arch/ppc/boot/lib/Makefile
index d4077e69086f..80c84d562fa4 100644
--- a/arch/ppc/boot/lib/Makefile
+++ b/arch/ppc/boot/lib/Makefile
@@ -3,7 +3,7 @@
3# 3#
4 4
5CFLAGS_kbd.o := -Idrivers/char 5CFLAGS_kbd.o := -Idrivers/char
6CFLAGS_vreset.o := -I$(srctree)/arch/ppc/boot/include 6CFLAGS_vreset.o := -Iarch/ppc/boot/include
7 7
8zlib := infblock.c infcodes.c inffast.c inflate.c inftrees.c infutil.c 8zlib := infblock.c infcodes.c inffast.c inflate.c inftrees.c infutil.c
9 9
diff --git a/arch/sparc/math-emu/Makefile b/arch/sparc/math-emu/Makefile
index f84a9a6162be..8136987977f4 100644
--- a/arch/sparc/math-emu/Makefile
+++ b/arch/sparc/math-emu/Makefile
@@ -5,4 +5,4 @@
5obj-y := math.o 5obj-y := math.o
6 6
7EXTRA_AFLAGS := -ansi 7EXTRA_AFLAGS := -ansi
8EXTRA_CFLAGS = -I. -I$(TOPDIR)/include/math-emu -w 8EXTRA_CFLAGS = -I. -Iinclude/math-emu -w
diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
index 4092a5e37ffc..b3ea2d63db9b 100644
--- a/drivers/media/video/Makefile
+++ b/drivers/media/video/Makefile
@@ -84,4 +84,4 @@ obj-$(CONFIG_USB_IBMCAM) += usbvideo/
84obj-$(CONFIG_USB_KONICAWC) += usbvideo/ 84obj-$(CONFIG_USB_KONICAWC) += usbvideo/
85obj-$(CONFIG_USB_VICAM) += usbvideo/ 85obj-$(CONFIG_USB_VICAM) += usbvideo/
86 86
87EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/dvb-core 87EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
diff --git a/drivers/media/video/bt8xx/Makefile b/drivers/media/video/bt8xx/Makefile
index 94350f21cdc0..db641a36b197 100644
--- a/drivers/media/video/bt8xx/Makefile
+++ b/drivers/media/video/bt8xx/Makefile
@@ -9,4 +9,4 @@ bttv-objs := bttv-driver.o bttv-cards.o bttv-if.o \
9obj-$(CONFIG_VIDEO_BT848) += bttv.o 9obj-$(CONFIG_VIDEO_BT848) += bttv.o
10 10
11EXTRA_CFLAGS += -I$(src)/.. 11EXTRA_CFLAGS += -I$(src)/..
12EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/dvb-core 12EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
diff --git a/drivers/media/video/cx25840/Makefile b/drivers/media/video/cx25840/Makefile
index 32a896c23d1e..6e8665be8954 100644
--- a/drivers/media/video/cx25840/Makefile
+++ b/drivers/media/video/cx25840/Makefile
@@ -3,4 +3,4 @@ cx25840-objs := cx25840-core.o cx25840-audio.o cx25840-firmware.o \
3 3
4obj-$(CONFIG_VIDEO_CX25840) += cx25840.o 4obj-$(CONFIG_VIDEO_CX25840) += cx25840.o
5 5
6EXTRA_CFLAGS += -I$(src)/.. 6EXTRA_CFLAGS += -Idrivers/media/video
diff --git a/drivers/media/video/cx88/Makefile b/drivers/media/video/cx88/Makefile
index 6482b9aa6a1f..0dcd09b9b727 100644
--- a/drivers/media/video/cx88/Makefile
+++ b/drivers/media/video/cx88/Makefile
@@ -8,9 +8,9 @@ obj-$(CONFIG_VIDEO_CX88_DVB) += cx88-dvb.o
8obj-$(CONFIG_VIDEO_CX88_ALSA) += cx88-alsa.o 8obj-$(CONFIG_VIDEO_CX88_ALSA) += cx88-alsa.o
9obj-$(CONFIG_VIDEO_CX88_VP3054) += cx88-vp3054-i2c.o 9obj-$(CONFIG_VIDEO_CX88_VP3054) += cx88-vp3054-i2c.o
10 10
11EXTRA_CFLAGS += -I$(src)/.. 11EXTRA_CFLAGS += -Idrivers/media/video
12EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/dvb-core 12EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
13EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/frontends 13EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
14 14
15extra-cflags-$(CONFIG_VIDEO_BUF_DVB) += -DHAVE_VIDEO_BUF_DVB=1 15extra-cflags-$(CONFIG_VIDEO_BUF_DVB) += -DHAVE_VIDEO_BUF_DVB=1
16extra-cflags-$(CONFIG_DVB_CX22702) += -DHAVE_CX22702=1 16extra-cflags-$(CONFIG_DVB_CX22702) += -DHAVE_CX22702=1
diff --git a/drivers/media/video/em28xx/Makefile b/drivers/media/video/em28xx/Makefile
index da457a05b0dd..826d0e340753 100644
--- a/drivers/media/video/em28xx/Makefile
+++ b/drivers/media/video/em28xx/Makefile
@@ -3,4 +3,4 @@ em28xx-objs := em28xx-video.o em28xx-i2c.o em28xx-cards.o em28xx-core.o \
3 3
4obj-$(CONFIG_VIDEO_EM28XX) += em28xx.o 4obj-$(CONFIG_VIDEO_EM28XX) += em28xx.o
5 5
6EXTRA_CFLAGS += -I$(src)/.. 6EXTRA_CFLAGS += -Idrivers/media/video
diff --git a/drivers/media/video/saa7134/Makefile b/drivers/media/video/saa7134/Makefile
index 1ba998424bbd..be7b9ee697d6 100644
--- a/drivers/media/video/saa7134/Makefile
+++ b/drivers/media/video/saa7134/Makefile
@@ -11,9 +11,9 @@ obj-$(CONFIG_VIDEO_SAA7134_OSS) += saa7134-oss.o
11 11
12obj-$(CONFIG_VIDEO_SAA7134_DVB) += saa7134-dvb.o 12obj-$(CONFIG_VIDEO_SAA7134_DVB) += saa7134-dvb.o
13 13
14EXTRA_CFLAGS += -I$(src)/.. 14EXTRA_CFLAGS += -Idrivers/media/video
15EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/dvb-core 15EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
16EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/frontends 16EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
17 17
18extra-cflags-$(CONFIG_VIDEO_BUF_DVB) += -DHAVE_VIDEO_BUF_DVB=1 18extra-cflags-$(CONFIG_VIDEO_BUF_DVB) += -DHAVE_VIDEO_BUF_DVB=1
19extra-cflags-$(CONFIG_DVB_MT352) += -DHAVE_MT352=1 19extra-cflags-$(CONFIG_DVB_MT352) += -DHAVE_MT352=1
diff --git a/drivers/net/chelsio/Makefile b/drivers/net/chelsio/Makefile
index 91e927827c43..54c78d94f48b 100644
--- a/drivers/net/chelsio/Makefile
+++ b/drivers/net/chelsio/Makefile
@@ -4,7 +4,7 @@
4 4
5obj-$(CONFIG_CHELSIO_T1) += cxgb.o 5obj-$(CONFIG_CHELSIO_T1) += cxgb.o
6 6
7EXTRA_CFLAGS += -I$(TOPDIR)/drivers/net/chelsio $(DEBUG_FLAGS) 7EXTRA_CFLAGS += -Idrivers/net/chelsio $(DEBUG_FLAGS)
8 8
9 9
10cxgb-objs := cxgb2.o espi.o pm3393.o sge.o subr.o mv88x201x.o 10cxgb-objs := cxgb2.o espi.o pm3393.o sge.o subr.o mv88x201x.o
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index 59620b1554e0..b0d067be7390 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -87,6 +87,11 @@ cc-ifversion = $(shell if [ $(call cc-version, $(CC)) $(1) $(2) ]; then \
87# $(Q)$(MAKE) $(build)=dir 87# $(Q)$(MAKE) $(build)=dir
88build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj 88build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
89 89
90# Prefix -I with $(srctree) if it is not an absolute path
91addtree = $(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1)
92# Find all -I options and call addtree
93flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
94
90# If quiet is set, only print short version of command 95# If quiet is set, only print short version of command
91cmd = @$(echo-cmd) $(cmd_$(1)) 96cmd = @$(echo-cmd) $(cmd_$(1))
92 97
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 550798f57da5..2cb4935e85d1 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -99,11 +99,6 @@ __a_flags = $(_a_flags)
99__cpp_flags = $(_cpp_flags) 99__cpp_flags = $(_cpp_flags)
100else 100else
101 101
102# Prefix -I with $(srctree) if it is not an absolute path
103addtree = $(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1)
104# Find all -I options and call addtree
105flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
106
107# -I$(obj) locates generated .h files 102# -I$(obj) locates generated .h files
108# $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files 103# $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files
109# and locates generated .h files 104# and locates generated .h files
diff --git a/scripts/bloat-o-meter b/scripts/bloat-o-meter
index 75f21d843c1d..75f21d843c1d 100644..100755
--- a/scripts/bloat-o-meter
+++ b/scripts/bloat-o-meter
diff --git a/scripts/checkstack.pl b/scripts/checkstack.pl
index dadfa20ffec0..dadfa20ffec0 100644..100755
--- a/scripts/checkstack.pl
+++ b/scripts/checkstack.pl
diff --git a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh
index 6d411169bfa6..56b3bed1108f 100644
--- a/scripts/gen_initramfs_list.sh
+++ b/scripts/gen_initramfs_list.sh
@@ -1,22 +1,55 @@
1#!/bin/bash 1#!/bin/bash
2# Copyright (C) Martin Schlemmer <azarah@nosferatu.za.org> 2# Copyright (C) Martin Schlemmer <azarah@nosferatu.za.org>
3# Released under the terms of the GNU GPL 3# Copyright (c) 2006 Sam Ravnborg <sam@ravnborg.org>
4#
5# Generate a newline separated list of entries from the file/directory
6# supplied as an argument.
7#
8# If a file/directory is not supplied then generate a small dummy file.
9# 4#
10# The output is suitable for gen_init_cpio built from usr/gen_init_cpio.c. 5# Released under the terms of the GNU GPL
11# 6#
7# Generate a cpio packed initramfs. It uses gen_init_cpio to generate
8# the cpio archive, and gzip to pack it.
9# The script may also be used to generate the inputfile used for gen_init_cpio
10# This script assumes that gen_init_cpio is located in usr/ directory
11
12# error out on errors
13set -e
14
15usage() {
16cat << EOF
17Usage:
18$0 [-o <file>] [-u <uid>] [-g <gid>] {-d | <cpio_source>} ...
19 -o <file> Create gzipped initramfs file named <file> using
20 gen_init_cpio and gzip
21 -u <uid> User ID to map to user ID 0 (root).
22 <uid> is only meaningful if <cpio_source>
23 is a directory.
24 -g <gid> Group ID to map to group ID 0 (root).
25 <gid> is only meaningful if <cpio_source>
26 is a directory.
27 <cpio_source> File list or directory for cpio archive.
28 If <cpio_source> is a .cpio file it will be used
29 as direct input to initramfs.
30 -d Output the default cpio list.
31
32All options except -o and -l may be repeated and are interpreted
33sequentially and immediately. -u and -g states are preserved across
34<cpio_source> options so an explicit "-u 0 -g 0" is required
35to reset the root/group mapping.
36EOF
37}
38
39list_default_initramfs() {
40 # echo usr/kinit/kinit
41 :
42}
12 43
13default_initramfs() { 44default_initramfs() {
14 cat <<-EOF 45 cat <<-EOF >> ${output}
15 # This is a very simple, default initramfs 46 # This is a very simple, default initramfs
16 47
17 dir /dev 0755 0 0 48 dir /dev 0755 0 0
18 nod /dev/console 0600 0 0 c 5 1 49 nod /dev/console 0600 0 0 c 5 1
19 dir /root 0700 0 0 50 dir /root 0700 0 0
51 # file /kinit usr/kinit/kinit 0755 0 0
52 # slink /init kinit 0755 0 0
20 EOF 53 EOF
21} 54}
22 55
@@ -42,18 +75,28 @@ filetype() {
42 return 0 75 return 0
43} 76}
44 77
78list_print_mtime() {
79 :
80}
81
45print_mtime() { 82print_mtime() {
46 local argv1="$1"
47 local my_mtime="0" 83 local my_mtime="0"
48 84
49 if [ -e "${argv1}" ]; then 85 if [ -e "$1" ]; then
50 my_mtime=$(find "${argv1}" -printf "%T@\n" | sort -r | head -n 1) 86 my_mtime=$(find "$1" -printf "%T@\n" | sort -r | head -n 1)
51 fi 87 fi
52 88
53 echo "# Last modified: ${my_mtime}" 89 echo "# Last modified: ${my_mtime}" >> ${output}
54 echo 90 echo "" >> ${output}
91}
92
93list_parse() {
94 echo "$1 \\"
55} 95}
56 96
97# for each file print a line in following format
98# <filetype> <name> <path to file> <octal mode> <uid> <gid>
99# for links, devices etc the format differs. See gen_init_cpio for details
57parse() { 100parse() {
58 local location="$1" 101 local location="$1"
59 local name="${location/${srcdir}//}" 102 local name="${location/${srcdir}//}"
@@ -99,80 +142,112 @@ parse() {
99 ;; 142 ;;
100 esac 143 esac
101 144
102 echo "${str}" 145 echo "${str}" >> ${output}
103 146
104 return 0 147 return 0
105} 148}
106 149
107usage() { 150unknown_option() {
108 printf "Usage:\n" 151 printf "ERROR: unknown option \"$arg\"\n" >&2
109 printf "$0 [ [-u <root_uid>] [-g <root_gid>] [-d | <cpio_source>] ] . . .\n" 152 printf "If the filename validly begins with '-', " >&2
110 printf "\n" 153 printf "then it must be prefixed\n" >&2
111 printf -- "-u <root_uid> User ID to map to user ID 0 (root).\n" 154 printf "by './' so that it won't be interpreted as an option." >&2
112 printf " <root_uid> is only meaningful if <cpio_source>\n" 155 printf "\n" >&2
113 printf " is a directory.\n" 156 usage >&2
114 printf -- "-g <root_gid> Group ID to map to group ID 0 (root).\n" 157 exit 1
115 printf " <root_gid> is only meaningful if <cpio_source>\n" 158}
116 printf " is a directory.\n" 159
117 printf "<cpio_source> File list or directory for cpio archive.\n" 160list_header() {
118 printf " If <cpio_source> is not provided then a\n" 161 echo "deps_initramfs := \\"
119 printf " a default list will be output.\n" 162}
120 printf -- "-d Output the default cpio list. If no <cpio_source>\n" 163
121 printf " is given then the default cpio list will be output.\n" 164header() {
122 printf "\n" 165 printf "\n#####################\n# $1\n" >> ${output}
123 printf "All options may be repeated and are interpreted sequentially\n" 166}
124 printf "and immediately. -u and -g states are preserved across\n" 167
125 printf "<cpio_source> options so an explicit \"-u 0 -g 0\" is required\n" 168# process one directory (incl sub-directories)
126 printf "to reset the root/group mapping.\n" 169dir_filelist() {
170 ${dep_list}header "$1"
171
172 srcdir=$(echo "$1" | sed -e 's://*:/:g')
173 dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" 2>/dev/null)
174
175 # If $dirlist is only one line, then the directory is empty
176 if [ "$(echo "${dirlist}" | wc -l)" -gt 1 ]; then
177 ${dep_list}print_mtime "$1"
178
179 echo "${dirlist}" | \
180 while read x; do
181 ${dep_list}parse ${x}
182 done
183 fi
127} 184}
128 185
129build_list() { 186# if only one file is specified and it is .cpio file then use it direct as fs
130 printf "\n#####################\n# $cpio_source\n" 187# if a directory is specified then add all files in given direcotry to fs
131 188# if a regular file is specified assume it is in gen_initramfs format
132 if [ -f "$cpio_source" ]; then 189input_file() {
133 print_mtime "$cpio_source" 190 source="$1"
134 cat "$cpio_source" 191 if [ -f "$1" ]; then
135 elif [ -d "$cpio_source" ]; then 192 ${dep_list}header "$1"
136 srcdir=$(echo "$cpio_source" | sed -e 's://*:/:g') 193 is_cpio="$(echo "$1" | sed 's/^.*\.cpio/cpio/')"
137 dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" 2>/dev/null) 194 if [ $2 -eq 0 -a ${is_cpio} == "cpio" ]; then
138 195 cpio_file=$1
139 # If $dirlist is only one line, then the directory is empty 196 [ ! -z ${dep_list} ] && echo "$1"
140 if [ "$(echo "${dirlist}" | wc -l)" -gt 1 ]; then 197 return 0
141 print_mtime "$cpio_source" 198 fi
142 199 if [ -z ${dep_list} ]; then
143 echo "${dirlist}" | \ 200 print_mtime "$1" >> ${output}
144 while read x; do 201 cat "$1" >> ${output}
145 parse ${x}
146 done
147 else 202 else
148 # Failsafe in case directory is empty 203 grep ^file "$1" | cut -d ' ' -f 3
149 default_initramfs
150 fi 204 fi
205 elif [ -d "$1" ]; then
206 dir_filelist "$1"
151 else 207 else
152 echo " $0: Cannot open '$cpio_source'" >&2 208 echo " ${prog}: Cannot open '$1'" >&2
153 exit 1 209 exit 1
154 fi 210 fi
155} 211}
156 212
157 213prog=$0
158root_uid=0 214root_uid=0
159root_gid=0 215root_gid=0
216dep_list=
217cpio_file=
218cpio_list=
219output="/dev/stdout"
220output_file=""
160 221
222arg="$1"
223case "$arg" in
224 "-l") # files included in initramfs - used by kbuild
225 dep_list="list_"
226 shift
227 ;;
228 "-o") # generate gzipped cpio image named $1
229 shift
230 output_file="$1"
231 cpio_list="$(mktemp ${TMPDIR:-/tmp}/cpiolist.XXXXXX)"
232 output=${cpio_list}
233 shift
234 ;;
235esac
161while [ $# -gt 0 ]; do 236while [ $# -gt 0 ]; do
162 arg="$1" 237 arg="$1"
163 shift 238 shift
164 case "$arg" in 239 case "$arg" in
165 "-u") 240 "-u") # map $1 to uid=0 (root)
166 root_uid="$1" 241 root_uid="$1"
167 shift 242 shift
168 ;; 243 ;;
169 "-g") 244 "-g") # map $1 to gid=0 (root)
170 root_gid="$1" 245 root_gid="$1"
171 shift 246 shift
172 ;; 247 ;;
173 "-d") 248 "-d") # display default initramfs list
174 default_list="$arg" 249 default_list="$arg"
175 default_initramfs 250 ${dep_list}default_initramfs
176 ;; 251 ;;
177 "-h") 252 "-h")
178 usage 253 usage
@@ -181,23 +256,27 @@ while [ $# -gt 0 ]; do
181 *) 256 *)
182 case "$arg" in 257 case "$arg" in
183 "-"*) 258 "-"*)
184 printf "ERROR: unknown option \"$arg\"\n" >&2 259 unknown_option
185 printf "If the filename validly begins with '-', then it must be prefixed\n" >&2
186 printf "by './' so that it won't be interpreted as an option." >&2
187 printf "\n" >&2
188 usage >&2
189 exit 1
190 ;; 260 ;;
191 *) 261 *) # input file/dir - process it
192 cpio_source="$arg" 262 input_file "$arg" "$#"
193 build_list
194 ;; 263 ;;
195 esac 264 esac
196 ;; 265 ;;
197 esac 266 esac
198done 267done
199 268
200# spit out the default cpio list if a source hasn't been specified 269# If output_file is set we will generate cpio archive and gzip it
201[ -z "$cpio_source" -a -z "$default_list" ] && default_initramfs 270# we are carefull to delete tmp files
202 271if [ ! -z ${output_file} ]; then
272 if [ -z ${cpio_file} ]; then
273 cpio_tfile="$(mktemp ${TMPDIR:-/tmp}/cpiofile.XXXXXX)"
274 usr/gen_init_cpio ${cpio_list} > ${cpio_tfile}
275 else
276 cpio_tfile=${cpio_file}
277 fi
278 rm ${cpio_list}
279 cat ${cpio_tfile} | gzip -f -9 - > ${output_file}
280 [ -z ${cpio_file} ] && rm ${cpio_tfile}
281fi
203exit 0 282exit 0
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index 10eeae53d827..ae5ab981bb1d 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -63,20 +63,6 @@ static void check_stdin(void)
63 } 63 }
64} 64}
65 65
66static char *fgets_check_stream(char *s, int size, FILE *stream)
67{
68 char *ret = fgets(s, size, stream);
69
70 if (ret == NULL && feof(stream)) {
71 printf(_("aborted!\n\n"));
72 printf(_("Console input is closed. "));
73 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
74 exit(1);
75 }
76
77 return ret;
78}
79
80static void conf_askvalue(struct symbol *sym, const char *def) 66static void conf_askvalue(struct symbol *sym, const char *def)
81{ 67{
82 enum symbol_type type = sym_get_type(sym); 68 enum symbol_type type = sym_get_type(sym);
@@ -114,7 +100,7 @@ static void conf_askvalue(struct symbol *sym, const char *def)
114 check_stdin(); 100 check_stdin();
115 case ask_all: 101 case ask_all:
116 fflush(stdout); 102 fflush(stdout);
117 fgets_check_stream(line, 128, stdin); 103 fgets(line, 128, stdin);
118 return; 104 return;
119 case set_default: 105 case set_default:
120 printf("%s\n", def); 106 printf("%s\n", def);
@@ -328,8 +314,7 @@ static int conf_choice(struct menu *menu)
328 printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); 314 printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
329 def_sym = sym_get_choice_value(sym); 315 def_sym = sym_get_choice_value(sym);
330 cnt = def = 0; 316 cnt = def = 0;
331 line[0] = '0'; 317 line[0] = 0;
332 line[1] = 0;
333 for (child = menu->list; child; child = child->next) { 318 for (child = menu->list; child; child = child->next) {
334 if (!menu_is_visible(child)) 319 if (!menu_is_visible(child))
335 continue; 320 continue;
@@ -370,7 +355,7 @@ static int conf_choice(struct menu *menu)
370 check_stdin(); 355 check_stdin();
371 case ask_all: 356 case ask_all:
372 fflush(stdout); 357 fflush(stdout);
373 fgets_check_stream(line, 128, stdin); 358 fgets(line, 128, stdin);
374 strip(line); 359 strip(line);
375 if (line[0] == '?') { 360 if (line[0] == '?') {
376 printf("\n%s\n", menu->sym->help ? 361 printf("\n%s\n", menu->sym->help ?
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 1b8882ddbc74..1b5df589f3ae 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -325,7 +325,7 @@ int conf_read(const char *name)
325 sym->flags |= e->right.sym->flags & SYMBOL_NEW; 325 sym->flags |= e->right.sym->flags & SYMBOL_NEW;
326 } 326 }
327 327
328 sym_change_count = conf_warnings && conf_unsaved; 328 sym_change_count = conf_warnings || conf_unsaved;
329 329
330 return 0; 330 return 0;
331} 331}
diff --git a/scripts/kconfig/lxdialog/menubox.c b/scripts/kconfig/lxdialog/menubox.c
index 09512b544375..bf8052f4fd4a 100644
--- a/scripts/kconfig/lxdialog/menubox.c
+++ b/scripts/kconfig/lxdialog/menubox.c
@@ -58,8 +58,7 @@
58 58
59#include "dialog.h" 59#include "dialog.h"
60 60
61#define ITEM_IDENT 1 /* Indent of menu entries. Fixed for all menus */ 61static int menu_width, item_x;
62static int menu_width;
63 62
64/* 63/*
65 * Print menu item 64 * Print menu item
@@ -70,7 +69,7 @@ static void do_print_item(WINDOW * win, const char *item, int choice,
70 int j; 69 int j;
71 char *menu_item = malloc(menu_width + 1); 70 char *menu_item = malloc(menu_width + 1);
72 71
73 strncpy(menu_item, item, menu_width - ITEM_IDENT); 72 strncpy(menu_item, item, menu_width - item_x);
74 menu_item[menu_width] = 0; 73 menu_item[menu_width] = 0;
75 j = first_alpha(menu_item, "YyNnMmHh"); 74 j = first_alpha(menu_item, "YyNnMmHh");
76 75
@@ -87,13 +86,13 @@ static void do_print_item(WINDOW * win, const char *item, int choice,
87 wclrtoeol(win); 86 wclrtoeol(win);
88#endif 87#endif
89 wattrset(win, selected ? item_selected_attr : item_attr); 88 wattrset(win, selected ? item_selected_attr : item_attr);
90 mvwaddstr(win, choice, ITEM_IDENT, menu_item); 89 mvwaddstr(win, choice, item_x, menu_item);
91 if (hotkey) { 90 if (hotkey) {
92 wattrset(win, selected ? tag_key_selected_attr : tag_key_attr); 91 wattrset(win, selected ? tag_key_selected_attr : tag_key_attr);
93 mvwaddch(win, choice, ITEM_IDENT + j, menu_item[j]); 92 mvwaddch(win, choice, item_x + j, menu_item[j]);
94 } 93 }
95 if (selected) { 94 if (selected) {
96 wmove(win, choice, ITEM_IDENT + 1); 95 wmove(win, choice, item_x + 1);
97 } 96 }
98 free(menu_item); 97 free(menu_item);
99 wrefresh(win); 98 wrefresh(win);
@@ -227,6 +226,8 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
227 draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2, 226 draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
228 menubox_border_attr, menubox_attr); 227 menubox_border_attr, menubox_attr);
229 228
229 item_x = (menu_width - 70) / 2;
230
230 /* Set choice to default item */ 231 /* Set choice to default item */
231 for (i = 0; i < item_no; i++) 232 for (i = 0; i < item_no; i++)
232 if (strcmp(current, items[i * 2]) == 0) 233 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 wnoutrefresh(menu); 264 wnoutrefresh(menu);
264 265
265 print_arrows(dialog, item_no, scroll, 266 print_arrows(dialog, item_no, scroll,
266 box_y, box_x + ITEM_IDENT + 1, menu_height); 267 box_y, box_x + item_x + 1, menu_height);
267 268
268 print_buttons(dialog, height, width, 0); 269 print_buttons(dialog, height, width, 0);
269 wmove(menu, choice, ITEM_IDENT + 1); 270 wmove(menu, choice, item_x + 1);
270 wrefresh(menu); 271 wrefresh(menu);
271 272
272 while (key != ESC) { 273 while (key != ESC) {
@@ -349,7 +350,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
349 print_item(scroll + choice, choice, TRUE); 350 print_item(scroll + choice, choice, TRUE);
350 351
351 print_arrows(dialog, item_no, scroll, 352 print_arrows(dialog, item_no, scroll,
352 box_y, box_x + ITEM_IDENT + 1, menu_height); 353 box_y, box_x + item_x + 1, menu_height);
353 354
354 wnoutrefresh(dialog); 355 wnoutrefresh(dialog);
355 wrefresh(menu); 356 wrefresh(menu);
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 0b92ddff26fd..7e8079a34adf 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -658,7 +658,7 @@ static void warn_sec_mismatch(const char *modname, const char *fromsec,
658 warn("%s - Section mismatch: reference to %s:%s from %s " 658 warn("%s - Section mismatch: reference to %s:%s from %s "
659 "before '%s' (at offset -0x%llx)\n", 659 "before '%s' (at offset -0x%llx)\n",
660 modname, secname, refsymname, fromsec, 660 modname, secname, refsymname, fromsec,
661 elf->strtab + before->st_name, 661 elf->strtab + after->st_name,
662 (long long)r.r_offset); 662 (long long)r.r_offset);
663 } else { 663 } else {
664 warn("%s - Section mismatch: reference to %s:%s from %s " 664 warn("%s - Section mismatch: reference to %s:%s from %s "
diff --git a/scripts/namespace.pl b/scripts/namespace.pl
index f34373853ef8..f34373853ef8 100644..100755
--- a/scripts/namespace.pl
+++ b/scripts/namespace.pl
diff --git a/scripts/show_delta b/scripts/show_delta
index 48a706ab3d0c..48a706ab3d0c 100644..100755
--- a/scripts/show_delta
+++ b/scripts/show_delta
diff --git a/scripts/ver_linux b/scripts/ver_linux
index beb43ef7f761..84999f69773d 100755
--- a/scripts/ver_linux
+++ b/scripts/ver_linux
@@ -39,10 +39,10 @@ tune2fs 2>&1 | grep "^tune2fs" | sed 's/,//' | awk \
39fsck.jfs -V 2>&1 | grep version | sed 's/,//' | awk \ 39fsck.jfs -V 2>&1 | grep version | sed 's/,//' | awk \
40'NR==1 {print "jfsutils ", $3}' 40'NR==1 {print "jfsutils ", $3}'
41 41
42reiserfsck -V 2>&1 | grep reiserfsck | awk \ 42reiserfsck -V 2>&1 | grep ^reiserfsck | awk \
43'NR==1{print "reiserfsprogs ", $2}' 43'NR==1{print "reiserfsprogs ", $2}'
44 44
45fsck.reiser4 -V 2>&1 | grep fsck.reiser4 | awk \ 45fsck.reiser4 -V 2>&1 | grep ^fsck.reiser4 | awk \
46'NR==1{print "reiser4progs ", $2}' 46'NR==1{print "reiser4progs ", $2}'
47 47
48xfs_db -V 2>&1 | grep version | awk \ 48xfs_db -V 2>&1 | grep version | awk \
diff --git a/usr/Makefile b/usr/Makefile
index e2129cb570bb..19d74e6f2685 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -1,65 +1,48 @@
1#
2# kbuild file for usr/ - including initramfs image
3#
1 4
2obj-y := initramfs_data.o 5klibcdirs:;
3
4hostprogs-y := gen_init_cpio
5 6
6clean-files := initramfs_data.cpio.gz initramfs_list 7# Generate builtin.o based on initramfs_data.o
8obj-y := initramfs_data.o
7 9
8# initramfs_data.o contains the initramfs_data.cpio.gz image. 10# initramfs_data.o contains the initramfs_data.cpio.gz image.
9# The image is included using .incbin, a dependency which is not 11# The image is included using .incbin, a dependency which is not
10# tracked automatically. 12# tracked automatically.
11$(obj)/initramfs_data.o: $(obj)/initramfs_data.cpio.gz FORCE 13$(obj)/initramfs_data.o: $(obj)/initramfs_data.cpio.gz FORCE
12 14
13ifdef CONFIG_INITRAMFS_ROOT_UID 15#####
14gen_initramfs_args += -u $(CONFIG_INITRAMFS_ROOT_UID) 16# Generate the initramfs cpio archive
15endif 17
16 18hostprogs-y := gen_init_cpio
17ifdef CONFIG_INITRAMFS_ROOT_GID 19initramfs := $(CONFIG_SHELL) $(srctree)/scripts/gen_initramfs_list.sh
18gen_initramfs_args += -g $(CONFIG_INITRAMFS_ROOT_GID) 20ramfs-input := $(if $(filter-out "",$(CONFIG_INITRAMFS_SOURCE)), \
19endif 21 $(CONFIG_INITRAMFS_SOURCE),-d)
20 22ramfs-args := \
21# The $(shell echo $(CONFIG_INITRAMFS_SOURCE)) is to remove the 23 $(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
22# gratuitous begin and end quotes from the Kconfig string type. 24 $(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID)) \
23# Internal, escaped quotes in the Kconfig string will loose the 25 $(ramfs-input)
24# escape and become active quotes. 26
25quotefixed_initramfs_source := $(shell echo $(CONFIG_INITRAMFS_SOURCE)) 27# .initramfs_data.cpio.gz.d is used to identify all files included
26 28# in initramfs and to detect if any files are added/removed.
27filechk_initramfs_list = $(CONFIG_SHELL) \ 29# Removed files are identified by directory timestamp being updated
28 $(srctree)/scripts/gen_initramfs_list.sh $(gen_initramfs_args) $(quotefixed_initramfs_source) 30# The dependency list is generated by gen_initramfs.sh -l
29 31ifneq ($(wildcard $(obj)/.initramfs_data.cpio.gz.d),)
30$(obj)/initramfs_list: $(obj)/Makefile FORCE 32 include $(obj)/.initramfs_data.cpio.gz.d
31 $(call filechk,initramfs_list)
32
33quiet_cmd_cpio = CPIO $@
34 cmd_cpio = ./$< $(obj)/initramfs_list > $@
35
36
37# Check if the INITRAMFS_SOURCE is a cpio archive
38ifneq (,$(findstring .cpio,$(quotefixed_initramfs_source)))
39
40# INITRAMFS_SOURCE has a cpio archive - verify that it's a single file
41ifneq (1,$(words $(quotefixed_initramfs_source)))
42$(error Only a single file may be specified in CONFIG_INITRAMFS_SOURCE (="$(quotefixed_initramfs_source)") when a cpio archive is directly specified.)
43endif
44# Now use the cpio archive directly
45initramfs_data_cpio = $(quotefixed_initramfs_source)
46targets += $(quotefixed_initramfs_source)
47
48else
49
50# INITRAMFS_SOURCE is not a cpio archive - create one
51$(obj)/initramfs_data.cpio: $(obj)/gen_init_cpio \
52 $(initramfs-y) $(obj)/initramfs_list FORCE
53 $(call if_changed,cpio)
54
55targets += initramfs_data.cpio
56initramfs_data_cpio = $(obj)/initramfs_data.cpio
57
58endif 33endif
59 34
60 35quiet_cmd_initfs = GEN $@
61$(obj)/initramfs_data.cpio.gz: $(initramfs_data_cpio) FORCE 36 cmd_initfs = $(initramfs) -o $@ $(ramfs-args) $(ramfs-input)
62 $(call if_changed,gzip) 37
63 38targets := initramfs_data.cpio.gz
64targets += initramfs_data.cpio.gz 39$(deps_initramfs): klibcdirs
40# We rebuild initramfs_data.cpio.gz if:
41# 1) Any included file is newer then initramfs_data.cpio.gz
42# 2) There are changes in which files are included (added or deleted)
43# 3) If gen_init_cpio are newer than initramfs_data.cpio.gz
44# 4) arguments to gen_initramfs.sh changes
45$(obj)/initramfs_data.cpio.gz: $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
46 $(Q)$(initramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.gz.d
47 $(call if_changed,initfs)
65 48