lkml.org 
[lkml]   [2004]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] Fix O= build
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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 14:07    [W:0.035 / U:0.064 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site