Messages in this thread Patches in this message | | | Subject | Re: 2.6.9-rc4-mm1: initramfs build fix [u] | From | "Martin Schlemmer [c]" <> | Date | Sun, 17 Oct 2004 19:29:07 +0200 |
| |
On Sun, 2004-10-17 at 18:15 +0200, Martin Waitz wrote: > hi :) > > CONFIG_INITRAMFS_SOURCE may be empty which confuses 'test'. > So we have to quote it properly. > > Signed-off-by: Martin Waitz <tali@admingilde.org> > > Index: linux-2.6/usr/Makefile > =================================================================== > --- linux-2.6.orig/usr/Makefile 2004-10-17 16:06:58.430886734 +0200 > +++ linux-2.6/usr/Makefile 2004-10-17 16:07:56.185444167 +0200 > @@ -25,14 +25,14 @@ > > 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) $@'; \ > + 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) > $@'; \ > + elif test -d "$(CONFIG_INITRAMFS_SOURCE)"; then \ > + echo 'scripts/gen_initramfs_list.sh "$(CONFIG_INITRAMFS_SOURCE)" > $@'; \ > else \ > echo 'echo Using shipped $@'; \ > fi) >
kbuild will always (exceptions?) set any string value to "" if empty, or ask again for a value if just 'CONFIG_FOO=' is in .config, and as 'test -f ""' returns 1, this should not be an issue.
I can however see that it might be an good idea to do quoting there, so here is an updated select-cpio_list-or-source-directory-for-initramfs-image.patch (the third one - and hopefully last - today, Andrew).
Signed-off-by: Martin Schlemmer <azarah@nosferatu.za.org>
diff -urpN 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-17 17:00:13.424934520 +0200 +++ linux-2.6.9-rc4-mm1/drivers/block/Kconfig 2004-10-17 16:58:35.451828696 +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 -urpN 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-17 16:58:28.939818672 +0200 @@ -0,0 +1,84 @@ +#!/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 +} + +find "${srcdir}" -printf "%p %m %U %G\n" | \ +while read x; do + parse ${x} +done + +exit 0 diff -urpN 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-17 17:00:13.433933152 +0200 +++ linux-2.6.9-rc4-mm1/usr/Makefile 2004-10-17 16:59:56.040577344 +0200 @@ -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 := $(obj)/initramfs_list # initramfs_data.o contains the initramfs_data.cpio.gz image. # The image is included using .incbin, a dependency which is not @@ -23,6 +23,23 @@ $(obj)/initramfs_data.o: $(obj)/initramf # 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 'cp -f "$(srctree)/$(INITRAMFS_LIST).shipped" $@'; \ + fi; \ + elif test -d "$(CONFIG_INITRAMFS_SOURCE)"; then \ + echo 'scripts/gen_initramfs_list.sh "$(CONFIG_INITRAMFS_SOURCE)" > $@'; \ + else \ + echo 'cp -f "$(srctree)/$(INITRAMFS_LIST).shipped" $@'; \ + fi) + +$(INITRAMFS_LIST): FORCE + $(call cmd,gen_list) + quiet_cmd_cpio = CPIO $@ cmd_cpio = ./$< $(INITRAMFS_LIST) > $@ diff -urpN 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-17 16:48:14.262263864 +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 -urpN 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-17 16:28:57.667093056 +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
diff -urpN 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-17 17:00:13.424934520 +0200 +++ linux-2.6.9-rc4-mm1/drivers/block/Kconfig 2004-10-17 16:58:35.451828696 +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 -urpN 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-17 16:58:28.939818672 +0200 @@ -0,0 +1,84 @@ +#!/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 +} + +find "${srcdir}" -printf "%p %m %U %G\n" | \ +while read x; do + parse ${x} +done + +exit 0 diff -urpN 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-17 17:00:13.433933152 +0200 +++ linux-2.6.9-rc4-mm1/usr/Makefile 2004-10-17 16:59:56.040577344 +0200 @@ -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 := $(obj)/initramfs_list # initramfs_data.o contains the initramfs_data.cpio.gz image. # The image is included using .incbin, a dependency which is not @@ -23,6 +23,23 @@ $(obj)/initramfs_data.o: $(obj)/initramf # 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 'cp -f "$(srctree)/$(INITRAMFS_LIST).shipped" $@'; \ + fi; \ + elif test -d "$(CONFIG_INITRAMFS_SOURCE)"; then \ + echo 'scripts/gen_initramfs_list.sh "$(CONFIG_INITRAMFS_SOURCE)" > $@'; \ + else \ + echo 'cp -f "$(srctree)/$(INITRAMFS_LIST).shipped" $@'; \ + fi) + +$(INITRAMFS_LIST): FORCE + $(call cmd,gen_list) + quiet_cmd_cpio = CPIO $@ cmd_cpio = ./$< $(INITRAMFS_LIST) > $@ diff -urpN 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-17 16:48:14.262263864 +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 -urpN 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-17 16:28:57.667093056 +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[unhandled content-type:application/pgp-signature] | |