From: "Martin Schlemmer [c]" <azarah@nosferatu.za.org>
To: Andrew Morton <akpm@osdl.org>
Cc: torvalds@osdl.org, Sam Ravnborg <sam@ravnborg.org>,
Linux Kernel Mailing Lists <linux-kernel@vger.kernel.org>
Subject: [PATCH 2.6.9-bk7] Select cpio_list or source directory for initramfs image updates [u]
Date: Sat, 23 Oct 2004 14:06:28 +0200 [thread overview]
Message-ID: <1098533188.668.9.camel@nosferatu.lan> (raw)
In-Reply-To: <200410200849.i9K8n5921516@mail.osdl.org>
[-- Attachment #1.1: Type: text/plain, Size: 7262 bytes --]
Hi,
Here is some updates after talking to Sam Ravnborg. He did not yet come
back to me, I am not sure if I understood 100% what he meant, but hopefully
somebody else will be so kind as to comment.
Here is a shortish changelog:
- Fix an issue reported by Esben Nielsen <simlo@phys.au.dk> (with
suggestion from Sam Ravnborg). Build failed if $O (output dir) was
set. This is done by pre-pending $srctree if the shipped list is
referenced.
- Also fix calling of gen_initramfs_list.sh if $O (output dir) is set
by pre-pending $srctree.
- I also moved initramfs_list to initramfs_list.shipped, to make sure we
always have an 'fall back' list (say you unset CONFIG_INITRAMFS_SOURCE
and deleted your custom intramfs source directory, then building will not
fail).
- Kbuild style cleanups.
- Improved error checking. For example gen_initramfs_list.sh will
output a simple list if the target directory is empty, and we verify
that the shipped initramfs_list is present before touching it.
- Only update the temp initramfs_list if the source list/directory have
changed.
- Cleanup temporary initramfs_list when 'make clean' or 'make mrproper'
is called.
This patch should apply to both 2.6.9-bk7 and 2.6.9-mm1.
(Note that evo does some tab/newline damage)
Signed-off-by: Martin Schlemmer <azarah@nosferatu.za.org>
diff -uprN -X dontdiff linux-2.6.9-bk7.orig/scripts/gen_initramfs_list.sh linux-2.6.9-bk7/scripts/gen_initramfs_list.sh
--- linux-2.6.9-bk7.orig/scripts/gen_initramfs_list.sh 2004-10-23 11:23:49.000000000 +0200
+++ linux-2.6.9-bk7/scripts/gen_initramfs_list.sh 2004-10-23 11:26:52.000000000 +0200
@@ -76,9 +76,23 @@ parse() {
return 0
}
-find "${srcdir}" -printf "%p %m %U %G\n" | \
-while read x; do
- parse ${x}
-done
+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
+ 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
+fi
exit 0
diff -uprN -X dontdiff linux-2.6.9-bk7.orig/usr/Makefile linux-2.6.9-bk7/usr/Makefile
--- linux-2.6.9-bk7.orig/usr/Makefile 2004-10-23 11:23:54.000000000 +0200
+++ linux-2.6.9-bk7/usr/Makefile 2004-10-23 13:56:28.691508824 +0200
@@ -6,9 +6,11 @@ hostprogs-y := gen_init_cpio
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
+# then you can either overwrite initramfs_list.shipped in this directory
+# or set CONFIG_INITRAMFS_SOURCE to another filename or directory.
+initramfs_list := initramfs_list
+
+clean-files += $(initramfs_list)
# initramfs_data.o contains the initramfs_data.cpio.gz image.
# The image is included using .incbin, a dependency which is not
@@ -23,28 +25,75 @@ $(obj)/initramfs_data.o: $(obj)/initramf
# Commented out for now
# initramfs-y := $(obj)/root/hello
-quiet_cmd_gen_list = GEN_INITRAMFS_LIST $@
+# Returns:
+# valid command if everything should be fine
+# 'uptodate' if nothing needs to be done
+# 'missing' if $(srctree)/$(src)/$(initramfs_list).shipped is missing
+quiet_cmd_gen_list = GEN $@
cmd_gen_list = $(shell \
- if test -f $(CONFIG_INITRAMFS_SOURCE); then \
- if [ $(CONFIG_INITRAMFS_SOURCE) != $@ ]; then \
- echo 'cp -f $(CONFIG_INITRAMFS_SOURCE) $@'; \
+ if [ -d $(CONFIG_INITRAMFS_SOURCE) ]; \
+ then \
+ if [ ! -f "$(obj)/$(initramfs_list)" -o \
+ "x`find $(CONFIG_INITRAMFS_SOURCE) -newer "$(obj)/$(initramfs_list)" 2>/dev/null`" != "x" ]; \
+ then \
+ echo '$(CONFIG_SHELL) $(srctree)/scripts/gen_initramfs_list.sh \
+ $(CONFIG_INITRAMFS_SOURCE) > "$(obj)/$(initramfs_list)"'; \
else \
- echo 'echo Using shipped $@'; \
- fi; \
- elif test -d $(CONFIG_INITRAMFS_SOURCE); then \
- echo 'scripts/gen_initramfs_list.sh $(CONFIG_INITRAMFS_SOURCE) > $@'; \
+ echo 'uptodate'; \
+ fi \
else \
- echo 'echo Using shipped $@'; \
+ if [ -f $(CONFIG_INITRAMFS_SOURCE) -a \
+ $(CONFIG_INITRAMFS_SOURCE) != "$(obj)/$(initramfs_list)" ]; \
+ then \
+ if [ ! -f "$(obj)/$(initramfs_list)" -o \
+ $(CONFIG_INITRAMFS_SOURCE) -nt "$(obj)/$(initramfs_list)" ]; \
+ then \
+ echo 'cp -f $(CONFIG_INITRAMFS_SOURCE) "$(obj)/$(initramfs_list)"'; \
+ else \
+ echo 'uptodate'; \
+ fi \
+ else \
+ if [ -f "$(srctree)/$(src)/$(initramfs_list).shipped" ]; \
+ then \
+ if [ ! -f "$(obj)/$(initramfs_list)" -o \
+ "$(srctree)/$(src)/$(initramfs_list).shipped" -nt "$(obj)/$(initramfs_list)" ]; \
+ then \
+ echo 'cp -f "$(srctree)/$(src)/$(initramfs_list).shipped" \
+ "$(obj)/$(initramfs_list)"'; \
+ else \
+ echo 'uptodate'; \
+ fi \
+ else \
+ echo 'missing'; \
+ fi \
+ fi \
fi)
-
-$(INITRAMFS_LIST): FORCE
- $(call cmd,gen_list)
+initramfs_list_state_uptodate :=
+initramfs_list_state_outofdate :=
+initramfs_list_state_missing :=
+
+ifeq ($(cmd_gen_list),uptodate)
+ initramfs_list_state_uptodate := 1
+else
+ ifeq ($(cmd_gen_list),missing)
+ initramfs_list_state_missing := 1
+ else
+ initramfs_list_state_outofdate := 1
+ endif
+endif
+
+$(obj)/$(initramfs_list): FORCE
+ $(if $(nitramfs_list_state_uptodate),, \
+ $(if $(initramfs_list_state_outofdate), $(call cmd,gen_list), \
+ $(if $(initramfs_list_state_missing), \
+ @echo 'File "$(src)/$(initramfs_list).shipped" does not exist'; \
+ /bin/false)))
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 -uprN -X dontdiff linux-2.6.9-bk7.orig/usr/initramfs_list linux-2.6.9-bk7/usr/initramfs_list
--- linux-2.6.9-bk7.orig/usr/initramfs_list 2004-10-23 11:23:54.000000000 +0200
+++ linux-2.6.9-bk7/usr/initramfs_list 1970-01-01 02:00:00.000000000 +0200
@@ -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
diff -uprN -X dontdiff linux-2.6.9-bk7.orig/usr/initramfs_list.shipped linux-2.6.9-bk7/usr/initramfs_list.shipped
--- linux-2.6.9-bk7.orig/usr/initramfs_list.shipped 1970-01-01 02:00:00.000000000 +0200
+++ linux-2.6.9-bk7/usr/initramfs_list.shipped 2004-10-23 11:26:52.000000000 +0200
@@ -0,0 +1,5 @@
+# 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
--
Martin Schlemmer
[-- Attachment #1.2: select-cpio_list-or-source-directory-for-initramfs-image-v5.patch --]
[-- Type: text/x-patch, Size: 7526 bytes --]
diff -uprN -X dontdiff linux-2.6.9-rc4-mm1.orig/drivers/block/Kconfig linux-2.6.9-rc4-mm1/drivers/block/Kconfig
--- linux-2.6.9-rc4-mm1.orig/drivers/block/Kconfig 2004-10-18 21:20:06.885571688 +0200
+++ linux-2.6.9-rc4-mm1/drivers/block/Kconfig 2004-10-17 16:58:35.000000000 +0200
@@ -348,6 +348,32 @@ config BLK_DEV_INITRD
"real" root file system, etc. See <file:Documentation/initrd.txt>
for details.
+config INITRAMFS_SOURCE
+ string "Source directory of cpio_list"
+ default ""
+ help
+ This can be set to either a directory containing files, etc to be
+ included in the initramfs archive, or a file containing newline
+ separated entries.
+
+ If it is a file, it should be in the following format:
+ # a comment
+ file <name> <location> <mode> <uid> <gid>
+ dir <name> <mode> <uid> <gid>
+ nod <name> <mode> <uid> <gid> <dev_type> <maj> <min>
+
+ Where:
+ <name> name of the file/dir/nod in the archive
+ <location> location of the file in the current filesystem
+ <mode> mode/permissions of the file
+ <uid> user id (0=root)
+ <gid> group id (0=root)
+ <dev_type> device type (b=block, c=character)
+ <maj> major number of nod
+ <min> minor number of nod
+
+ If you are not sure, leave it blank.
+
config LBD
bool "Support for Large Block Devices"
depends on X86 || MIPS32 || PPC32 || ARCH_S390_31 || SUPERH
diff -uprN -X dontdiff linux-2.6.9-rc4-mm1.orig/scripts/gen_initramfs_list.sh linux-2.6.9-rc4-mm1/scripts/gen_initramfs_list.sh
--- linux-2.6.9-rc4-mm1.orig/scripts/gen_initramfs_list.sh 1970-01-01 02:00:00.000000000 +0200
+++ linux-2.6.9-rc4-mm1/scripts/gen_initramfs_list.sh 2004-10-18 20:02:09.000000000 +0200
@@ -0,0 +1,98 @@
+#!/bin/bash
+# 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.
+#
+# Arguements: $1 -- the source directory
+#
+# TODO: Add support for symlinks, sockets and pipes when gen_init_cpio
+# supports them.
+
+usage() {
+ echo "Usage: $0 initramfs-source-dir"
+ exit 1
+}
+
+srcdir=$(echo "$1" | sed -e 's://*:/:g')
+
+if [ "$#" -gt 1 -o ! -d "${srcdir}" ]; then
+ usage
+fi
+
+filetype() {
+ local argv1="$1"
+
+ if [ -f "${argv1}" ]; then
+ echo "file"
+ elif [ -d "${argv1}" ]; then
+ echo "dir"
+ elif [ -b "${argv1}" -o -c "${argv1}" ]; then
+ echo "nod"
+ else
+ echo "invalid"
+ fi
+ return 0
+}
+
+parse() {
+ local location="$1"
+ local name="${location/${srcdir}//}"
+ local mode="$2"
+ local uid="$3"
+ local gid="$4"
+ local ftype=$(filetype "${location}")
+ local str="${mode} ${uid} ${gid}"
+
+ [ "${ftype}" == "invalid" ] && return 0
+ [ "${location}" == "${srcdir}" ] && return 0
+
+ case "${ftype}" in
+ "file")
+ str="${ftype} ${name} ${location} ${str}"
+ ;;
+ "nod")
+ local dev_type=
+ local maj=$(LC_ALL=C ls -l "${location}" | \
+ gawk '{sub(/,/, "", $5); print $5}')
+ local min=$(LC_ALL=C ls -l "${location}" | \
+ gawk '{print $6}')
+
+ if [ -b "${location}" ]; then
+ dev_type="b"
+ else
+ dev_type="c"
+ fi
+ str="${ftype} ${name} ${str} ${dev_type} ${maj} ${min}"
+ ;;
+ *)
+ str="${ftype} ${name} ${str}"
+ ;;
+ esac
+
+ echo "${str}"
+
+ return 0
+}
+
+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
+ 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
+fi
+
+exit 0
diff -uprN -X dontdiff linux-2.6.9-rc4-mm1.orig/usr/Makefile linux-2.6.9-rc4-mm1/usr/Makefile
--- linux-2.6.9-rc4-mm1.orig/usr/Makefile 2004-10-18 21:20:06.886571536 +0200
+++ linux-2.6.9-rc4-mm1/usr/Makefile 2004-10-18 21:02:35.722372784 +0200
@@ -6,9 +6,11 @@ hostprogs-y := gen_init_cpio
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
+# then you can either overwrite initramfs_list.shipped in this directory
+# or set CONFIG_INITRAMFS_SOURCE to another filename or directory.
+initramfs_list := initramfs_list
+
+clean-files += $(initramfs_list)
# initramfs_data.o contains the initramfs_data.cpio.gz image.
# The image is included using .incbin, a dependency which is not
@@ -23,10 +25,43 @@ $(obj)/initramfs_data.o: $(obj)/initramf
# Commented out for now
# initramfs-y := $(obj)/root/hello
+# This should only return a command if there was no error
+quiet_cmd_gen_list = GEN $@
+ cmd_gen_list = $(shell \
+ if [ -d $(CONFIG_INITRAMFS_SOURCE) ]; then \
+ tmplist="`find $(CONFIG_INITRAMFS_SOURCE) -newer $@ 2>/dev/null`"; \
+ if [ ! -f $@ -o "x${tmplist}" != x ]; then \
+ echo '$(CONFIG_SHELL) scripts/gen_initramfs_list.sh \
+ $(CONFIG_INITRAMFS_SOURCE) > $@'; \
+ else \
+ echo '/bin/true'; \
+ fi \
+ else \
+ if [ -f $(CONFIG_INITRAMFS_SOURCE) -a $(CONFIG_INITRAMFS_SOURCE) != $@ ]; then \
+ if [ ! -f $@ -o $(CONFIG_INITRAMFS_SOURCE) -nt $@ ]; then \
+ echo 'cp -f $(CONFIG_INITRAMFS_SOURCE) $@'; \
+ else \
+ echo '/bin/true'; \
+ fi \
+ else \
+ if [ -f $(srctree)/$(src)/$(initramfs_list).shipped ]; then \
+ if [ ! -f $@ -o $(srctree)/$(src)/$(initramfs_list).shipped -nt $@ ]; then \
+ echo 'cp -f $(srctree)/$(src)/$(initramfs_list).shipped $@'; \
+ else \
+ echo '/bin/true'; \
+ fi \
+ fi \
+ fi \
+ fi)
+
+$(obj)/$(initramfs_list): FORCE
+ $(if $(cmd_gen_list), $(call cmd,gen_list), \
+ error file "$(src)/$(initramfs_list).shipped" does not exist)
+
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 -uprN -X dontdiff linux-2.6.9-rc4-mm1.orig/usr/initramfs_list linux-2.6.9-rc4-mm1/usr/initramfs_list
--- linux-2.6.9-rc4-mm1.orig/usr/initramfs_list 2004-10-18 21:20:06.974558160 +0200
+++ linux-2.6.9-rc4-mm1/usr/initramfs_list 1970-01-01 02:00:00.000000000 +0200
@@ -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
diff -uprN -X dontdiff linux-2.6.9-rc4-mm1.orig/usr/initramfs_list.shipped linux-2.6.9-rc4-mm1/usr/initramfs_list.shipped
--- linux-2.6.9-rc4-mm1.orig/usr/initramfs_list.shipped 1970-01-01 02:00:00.000000000 +0200
+++ linux-2.6.9-rc4-mm1/usr/initramfs_list.shipped 2004-10-18 21:20:50.866885512 +0200
@@ -0,0 +1,5 @@
+# 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
[-- Attachment #1.3: select-cpio_list-or-source-directory-for-initramfs-image-v7.patch --]
[-- Type: text/x-patch, Size: 5869 bytes --]
diff -uprN -X dontdiff linux-2.6.9-bk7.orig/scripts/gen_initramfs_list.sh linux-2.6.9-bk7/scripts/gen_initramfs_list.sh
--- linux-2.6.9-bk7.orig/scripts/gen_initramfs_list.sh 2004-10-23 11:23:49.000000000 +0200
+++ linux-2.6.9-bk7/scripts/gen_initramfs_list.sh 2004-10-23 11:26:52.000000000 +0200
@@ -76,9 +76,23 @@ parse() {
return 0
}
-find "${srcdir}" -printf "%p %m %U %G\n" | \
-while read x; do
- parse ${x}
-done
+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
+ 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
+fi
exit 0
diff -uprN -X dontdiff linux-2.6.9-bk7.orig/usr/Makefile linux-2.6.9-bk7/usr/Makefile
--- linux-2.6.9-bk7.orig/usr/Makefile 2004-10-23 11:23:54.000000000 +0200
+++ linux-2.6.9-bk7/usr/Makefile 2004-10-23 13:56:28.691508824 +0200
@@ -6,9 +6,11 @@ hostprogs-y := gen_init_cpio
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
+# then you can either overwrite initramfs_list.shipped in this directory
+# or set CONFIG_INITRAMFS_SOURCE to another filename or directory.
+initramfs_list := initramfs_list
+
+clean-files += $(initramfs_list)
# initramfs_data.o contains the initramfs_data.cpio.gz image.
# The image is included using .incbin, a dependency which is not
@@ -23,28 +25,75 @@ $(obj)/initramfs_data.o: $(obj)/initramf
# Commented out for now
# initramfs-y := $(obj)/root/hello
-quiet_cmd_gen_list = GEN_INITRAMFS_LIST $@
+# Returns:
+# valid command if everything should be fine
+# 'uptodate' if nothing needs to be done
+# 'missing' if $(srctree)/$(src)/$(initramfs_list).shipped is missing
+quiet_cmd_gen_list = GEN $@
cmd_gen_list = $(shell \
- if test -f $(CONFIG_INITRAMFS_SOURCE); then \
- if [ $(CONFIG_INITRAMFS_SOURCE) != $@ ]; then \
- echo 'cp -f $(CONFIG_INITRAMFS_SOURCE) $@'; \
+ if [ -d $(CONFIG_INITRAMFS_SOURCE) ]; \
+ then \
+ if [ ! -f "$(obj)/$(initramfs_list)" -o \
+ "x`find $(CONFIG_INITRAMFS_SOURCE) -newer "$(obj)/$(initramfs_list)" 2>/dev/null`" != "x" ]; \
+ then \
+ echo '$(CONFIG_SHELL) $(srctree)/scripts/gen_initramfs_list.sh \
+ $(CONFIG_INITRAMFS_SOURCE) > "$(obj)/$(initramfs_list)"'; \
else \
- echo 'echo Using shipped $@'; \
- fi; \
- elif test -d $(CONFIG_INITRAMFS_SOURCE); then \
- echo 'scripts/gen_initramfs_list.sh $(CONFIG_INITRAMFS_SOURCE) > $@'; \
+ echo 'uptodate'; \
+ fi \
else \
- echo 'echo Using shipped $@'; \
+ if [ -f $(CONFIG_INITRAMFS_SOURCE) -a \
+ $(CONFIG_INITRAMFS_SOURCE) != "$(obj)/$(initramfs_list)" ]; \
+ then \
+ if [ ! -f "$(obj)/$(initramfs_list)" -o \
+ $(CONFIG_INITRAMFS_SOURCE) -nt "$(obj)/$(initramfs_list)" ]; \
+ then \
+ echo 'cp -f $(CONFIG_INITRAMFS_SOURCE) "$(obj)/$(initramfs_list)"'; \
+ else \
+ echo 'uptodate'; \
+ fi \
+ else \
+ if [ -f "$(srctree)/$(src)/$(initramfs_list).shipped" ]; \
+ then \
+ if [ ! -f "$(obj)/$(initramfs_list)" -o \
+ "$(srctree)/$(src)/$(initramfs_list).shipped" -nt "$(obj)/$(initramfs_list)" ]; \
+ then \
+ echo 'cp -f "$(srctree)/$(src)/$(initramfs_list).shipped" \
+ "$(obj)/$(initramfs_list)"'; \
+ else \
+ echo 'uptodate'; \
+ fi \
+ else \
+ echo 'missing'; \
+ fi \
+ fi \
fi)
-
-$(INITRAMFS_LIST): FORCE
- $(call cmd,gen_list)
+initramfs_list_state_uptodate :=
+initramfs_list_state_outofdate :=
+initramfs_list_state_missing :=
+
+ifeq ($(cmd_gen_list),uptodate)
+ initramfs_list_state_uptodate := 1
+else
+ ifeq ($(cmd_gen_list),missing)
+ initramfs_list_state_missing := 1
+ else
+ initramfs_list_state_outofdate := 1
+ endif
+endif
+
+$(obj)/$(initramfs_list): FORCE
+ $(if $(nitramfs_list_state_uptodate),, \
+ $(if $(initramfs_list_state_outofdate), $(call cmd,gen_list), \
+ $(if $(initramfs_list_state_missing), \
+ @echo 'File "$(src)/$(initramfs_list).shipped" does not exist'; \
+ /bin/false)))
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 -uprN -X dontdiff linux-2.6.9-bk7.orig/usr/initramfs_list linux-2.6.9-bk7/usr/initramfs_list
--- linux-2.6.9-bk7.orig/usr/initramfs_list 2004-10-23 11:23:54.000000000 +0200
+++ linux-2.6.9-bk7/usr/initramfs_list 1970-01-01 02:00:00.000000000 +0200
@@ -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
diff -uprN -X dontdiff linux-2.6.9-bk7.orig/usr/initramfs_list.shipped linux-2.6.9-bk7/usr/initramfs_list.shipped
--- linux-2.6.9-bk7.orig/usr/initramfs_list.shipped 1970-01-01 02:00:00.000000000 +0200
+++ linux-2.6.9-bk7/usr/initramfs_list.shipped 2004-10-23 11:26:52.000000000 +0200
@@ -0,0 +1,5 @@
+# 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
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
next parent reply other threads:[~2004-10-23 12:07 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200410200849.i9K8n5921516@mail.osdl.org>
2004-10-23 12:06 ` Martin Schlemmer [c] [this message]
2004-10-24 10:08 ` [PATCH 2.6.9-bk7] Select cpio_list or source directory for initramfs image updates [u] Andrew Morton
2004-10-24 13:59 ` Martin Schlemmer [c]
2004-10-24 22:26 ` Sam Ravnborg
2004-10-26 22:12 ` Sam Ravnborg
2004-10-26 21:07 ` Martin Schlemmer [c]
2004-10-26 23:15 ` Sam Ravnborg
2004-10-26 21:36 ` Martin Schlemmer [c]
2004-10-27 4:09 ` Dave Airlie
2004-10-27 6:21 ` Sam Ravnborg
2004-10-27 4:55 ` timestamps in kernel was " Dave Airlie
2004-10-27 18:44 ` Martin Schlemmer [c]
2004-10-30 23:43 ` Sam Ravnborg
2004-10-31 10:36 ` Martin Schlemmer [c]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1098533188.668.9.camel@nosferatu.lan \
--to=azarah@nosferatu.za.org \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sam@ravnborg.org \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.