All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Fix O= build
@ 2004-10-27 13:08 Matthew Wilcox
  2004-10-27 19:19 ` Sam Ravnborg
  0 siblings, 1 reply; 2+ messages in thread
From: Matthew Wilcox @ 2004-10-27 13:08 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: olh, linux-kernel


Olaf tells me make O= has been broken for a week.  Here's the patch I've
been using to fix it:

diff -urpNX dontdiff linus-2.6/usr/Makefile parisc-2.6/usr/Makefile
--- linus-2.6/usr/Makefile	Thu Oct 21 14:40:04 2004
+++ parisc-2.6/usr/Makefile	Thu Oct 21 15:10:40 2004
@@ -8,7 +8,7 @@ clean-files := initramfs_data.cpio.gz
 # If you want a different list of files in the initramfs_data.cpio
 # then you can either overwrite the cpio_list in this directory
 # or set INITRAMFS_LIST to another filename.
-INITRAMFS_LIST := $(obj)/initramfs_list
+INITRAMFS_LIST := $(srctree)/$(obj)/initramfs_list
 
 # initramfs_data.o contains the initramfs_data.cpio.gz image.
 # The image is included using .incbin, a dependency which is not

-- 
"Next the statesmen will invent cheap lies, putting the blame upon 
the nation that is attacked, and every man will be glad of those
conscience-soothing falsities, and will diligently study them, and refuse
to examine any refutations of them; and thus he will by and by convince 
himself that the war is just, and will thank God for the better sleep 
he enjoys after this process of grotesque self-deception." -- Mark Twain

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] Fix O= build
  2004-10-27 13:08 [PATCH] Fix O= build Matthew Wilcox
@ 2004-10-27 19:19 ` Sam Ravnborg
  0 siblings, 0 replies; 2+ messages in thread
From: Sam Ravnborg @ 2004-10-27 19:19 UTC (permalink / raw)
  To: Matthew Wilcox; +Cc: Linus Torvalds, olh, linux-kernel

On Wed, Oct 27, 2004 at 02:08:06PM +0100, Matthew Wilcox wrote:
> 
> Olaf tells me make O= has been broken for a week.  Here's the patch I've
> been using to fix it:
> 
> diff -urpNX dontdiff linus-2.6/usr/Makefile parisc-2.6/usr/Makefile
> --- linus-2.6/usr/Makefile	Thu Oct 21 14:40:04 2004
> +++ parisc-2.6/usr/Makefile	Thu Oct 21 15:10:40 2004
> @@ -8,7 +8,7 @@ clean-files := initramfs_data.cpio.gz
>  # If you want a different list of files in the initramfs_data.cpio
>  # then you can either overwrite the cpio_list in this directory
>  # or set INITRAMFS_LIST to another filename.
> -INITRAMFS_LIST := $(obj)/initramfs_list
> +INITRAMFS_LIST := $(srctree)/$(obj)/initramfs_list

Good as workaround.
I have the following patch in my tree and I expect it to show up
in linus' tree soon. It's already in latest -mm.

	Sam

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/10/27 00:07:03+02:00 sam@mars.ravnborg.org 
#   kbuild/usr: initramfs list fixed and simplified
#   
#   Moving logic to scripts/gen_initramfs_list.sh make a nice cleanup in
#   usr/Makefile.
#   A new initramfs image will be generated if the initramfs_list file changes.
#   This patch also fixes the bug with make O=..
#   
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# usr/Makefile
#   2004/10/27 00:06:46+02:00 sam@mars.ravnborg.org +9 -20
#   Simplify - logic moved to gen_initramfs_list.sh script
# 
# scripts/gen_initramfs_list.sh
#   2004/10/27 00:06:46+02:00 sam@mars.ravnborg.org +35 -16
#   Moved logic to this file.
#   It now handles both dirs, files and no input given.
#   For invalid input print error and boild out.
# 
# scripts/Makefile.lib
#   2004/10/27 00:06:46+02:00 sam@mars.ravnborg.org +27 -0
#   Added filechk - copy from top level Makefile
# 
# BitKeeper/etc/ignore
#   2004/10/27 00:06:24+02:00 sam@mars.ravnborg.org +1 -0
#   added usr/initramfs_list
# 
# BitKeeper/deleted/.del-initramfs_list~e02c62efaa478389
#   2004/10/27 00:02:17+02:00 sam@mars.ravnborg.org +0 -0
#   Delete: usr/initramfs_list
# 
diff -Nru a/scripts/Makefile.lib b/scripts/Makefile.lib
--- a/scripts/Makefile.lib	2004-10-27 00:07:50 +02:00
+++ b/scripts/Makefile.lib	2004-10-27 00:07:50 +02:00
@@ -232,3 +232,30 @@
 # Usage:
 # $(Q)$(MAKE) $(build)=dir
 build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
+
+# filechk is used to check if the content of a generated file is updated.
+# Sample usage:
+# define filechk_sample
+#	echo $KERNELRELEASE
+# endef
+# version.h : Makefile
+#	$(call filechk,sample)
+# The rule defined shall write to stdout the content of the new file.
+# The existing file will be compared with the new one.
+# - If no file exist it is created
+# - If the content differ the new file is used
+# - If they are equal no change, and no timestamp update
+
+define filechk
+	$(Q)set -e;				\
+	echo '  CHK     $@';			\
+	mkdir -p $(dir $@);			\
+	$(filechk_$(1)) $(2) > $@.tmp;		\
+	if [ -r $@ ] && cmp -s $@ $@.tmp; then	\
+		rm -f $@.tmp;			\
+	else					\
+		echo '  UPD     $@';		\
+		mv -f $@.tmp $@;		\
+	fi
+endef
+
diff -Nru a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh
--- a/scripts/gen_initramfs_list.sh	2004-10-27 00:07:50 +02:00
+++ b/scripts/gen_initramfs_list.sh	2004-10-27 00:07:50 +02:00
@@ -2,25 +2,26 @@
 # Copyright (C) Martin Schlemmer <azarah@nosferatu.za.org>
 # Released under the terms of the GNU GPL
 #
-# A script to generate newline separated entries (to stdout) from a directory's
-# contents suitable for use as a cpio_list for gen_init_cpio.
+# Generate a newline separated list of entries from the file/directory pointed
+# out by the environment variable: CONFIG_INITRAMFS_SOURCE
 #
-# Arguements: $1 -- the source directory
+# If CONFIG_INITRAMFS_SOURCE is non-existing then generate a small dummy file.
+#
+# The output is suitable for gen_init_cpio as found in usr/Makefile.
 #
 # TODO:  Add support for symlinks, sockets and pipes when gen_init_cpio
 #        supports them.
 
-usage() {
-	echo "Usage: $0 initramfs-source-dir"
-	exit 1
+simple_initramfs() {
+	cat <<-EOF
+		# This is a very simple initramfs
+
+		dir /dev 0755 0 0
+		nod /dev/console 0600 0 0 c 5 1
+		dir /root 0700 0 0
+	EOF
 }
 
-srcdir=$(echo "$1" | sed -e 's://*:/:g')
-
-if [ "$#" -gt 1 -o ! -d "${srcdir}" ]; then
-	usage
-fi
-
 filetype() {
 	local argv1="$1"
 
@@ -76,9 +77,27 @@
 	return 0
 }
 
-find "${srcdir}" -printf "%p %m %U %G\n" | \
-while read x; do
-	parse ${x}
-done
+if [ -z $1 ]; then
+	simple_initramfs
+elif [ -f $1 ]; then
+	cat $1
+elif [ -d $1 ]; then
+	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
+		echo "${dirlist}" | \
+		while read x; do
+			parse ${x}
+		done
+	else
+		# Failsafe in case directory is empty
+		simple_initramfs
+	fi
+else
+	echo "  $0: Cannot open '$1' (CONFIG_INITRAMFS_SOURCE)" >&2
+	exit 1
+fi
 
 exit 0
diff -Nru a/usr/Makefile b/usr/Makefile
--- a/usr/Makefile	2004-10-27 00:07:50 +02:00
+++ b/usr/Makefile	2004-10-27 00:07:50 +02:00
@@ -3,7 +3,7 @@
 
 hostprogs-y  := gen_init_cpio
 
-clean-files := initramfs_data.cpio.gz
+clean-files := initramfs_data.cpio.gz initramfs_list
 
 # If you want a different list of files in the initramfs_data.cpio
 # then you can either overwrite the cpio_list in this directory
@@ -23,28 +23,17 @@
 # Commented out for now
 # initramfs-y := $(obj)/root/hello
 
-quiet_cmd_gen_list = GEN_INITRAMFS_LIST $@
-      cmd_gen_list = $(shell \
-        if test -f $(CONFIG_INITRAMFS_SOURCE); then \
-	  if [ $(CONFIG_INITRAMFS_SOURCE) != $@ ]; then \
-	    echo 'cp -f $(CONFIG_INITRAMFS_SOURCE) $@'; \
-	  else \
-	    echo 'echo Using shipped $@'; \
-	  fi; \
-	elif test -d $(CONFIG_INITRAMFS_SOURCE); then \
-	  echo 'scripts/gen_initramfs_list.sh $(CONFIG_INITRAMFS_SOURCE) > $@'; \
-	else \
-	  echo 'echo Using shipped $@'; \
-	fi)
-
-
-$(INITRAMFS_LIST): FORCE
-	$(call cmd,gen_list)
+filechk_initramfs_list = $(CONFIG_SHELL) \
+ $(srctree)/scripts/gen_initramfs_list.sh $(CONFIG_INITRAMFS_SOURCE)
+			   
+$(obj)/initramfs_list: FORCE
+	$(call filechk,initramfs_list)
 
 quiet_cmd_cpio = CPIO    $@
-      cmd_cpio = ./$< $(INITRAMFS_LIST) > $@
+      cmd_cpio = ./$< $(obj)/initramfs_list > $@
 
-$(obj)/initramfs_data.cpio: $(obj)/gen_init_cpio $(initramfs-y) $(INITRAMFS_LIST) FORCE
+$(obj)/initramfs_data.cpio: $(obj)/gen_init_cpio \
+                            $(initramfs-y) $(obj)/initramfs_list FORCE
 	$(call if_changed,cpio)
 
 targets += initramfs_data.cpio
diff -Nru a/usr/initramfs_list b/usr/initramfs_list
--- a/usr/initramfs_list	2004-10-27 00:07:50 +02:00
+++ /dev/null	Wed Dec 31 16:00:00 196900
@@ -1,5 +0,0 @@
-# This is a very simple initramfs - mostly preliminary for future expansion
-
-dir /dev 0755 0 0
-nod /dev/console 0600 0 0 c 5 1
-dir /root 0700 0 0

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-10-27 17:24 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-27 13:08 [PATCH] Fix O= build Matthew Wilcox
2004-10-27 19:19 ` Sam Ravnborg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.