All of lore.kernel.org
 help / color / mirror / Atom feed
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@vger.kernel.org
Subject: Re: [PATCH 2.6.9-bk7] Select cpio_list or source directory for initramfs image updates [u]
Date: Sun, 24 Oct 2004 15:59:22 +0200	[thread overview]
Message-ID: <1098626362.12420.3.camel@nosferatu.lan> (raw)
In-Reply-To: <20041024030844.18f2fedd.akpm@osdl.org>


[-- Attachment #1.1: Type: text/plain, Size: 2048 bytes --]

On Sun, 2004-10-24 at 03:08 -0700, Andrew Morton wrote:
> "Martin Schlemmer [c]" <azarah@nosferatu.za.org> wrote:
> >
> > 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.
> 
> hmm.  You have a patch in the email body and two slightly different patches
> as attachments.  All bases covered ;)
> 
> I'll stick
> "select-cpio_list-or-source-directory-for-initramfs-image-v7.patch" into
> -mm but would prefer that this patch come in via Sam's tree please.
> 

No comment =)  v7 should be fine, but it have one typo that wont affect
anything, so here is v8.  I have tested with O= set, and all fail
conditions I could think of, and it seems all right.


Thanks,

-- 
Martin Schlemmer


[-- Attachment #1.2: select-cpio_list-or-source-directory-for-initramfs-image-v8.patch --]
[-- Type: text/x-patch, Size: 5870 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 $(initramfs_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 --]

  reply	other threads:[~2004-10-24 14:00 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 ` [PATCH 2.6.9-bk7] Select cpio_list or source directory for initramfs image updates [u] Martin Schlemmer [c]
2004-10-24 10:08   ` Andrew Morton
2004-10-24 13:59     ` Martin Schlemmer [c] [this message]
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=1098626362.12420.3.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.