diff options
Diffstat (limited to 'scripts/gen_initramfs_list.sh')
| -rw-r--r-- | scripts/gen_initramfs_list.sh | 49 | 
1 files changed, 35 insertions, 14 deletions
diff --git a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh index 5958fffb211..17fa901418a 100644 --- a/scripts/gen_initramfs_list.sh +++ b/scripts/gen_initramfs_list.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh  # Copyright (C) Martin Schlemmer <azarah@nosferatu.za.org>  # Copyright (C) 2006 Sam Ravnborg <sam@ravnborg.org>  # @@ -105,9 +105,9 @@ list_parse() {  # for links, devices etc the format differs. See gen_init_cpio for details  parse() {  	local location="$1" -	local name="${location/${srcdir}//}" +	local name="/${location#${srcdir}}"  	# change '//' into '/' -	name="${name//\/\///}" +	name=$(echo "$name" | sed -e 's://*:/:g')  	local mode="$2"  	local uid="$3"  	local gid="$4" @@ -117,8 +117,8 @@ parse() {  	[ "$root_gid" = "squash" ] && gid=0 || [ "$gid" -eq "$root_gid" ] && gid=0  	local str="${mode} ${uid} ${gid}" -	[ "${ftype}" == "invalid" ] && return 0 -	[ "${location}" == "${srcdir}" ] && return 0 +	[ "${ftype}" = "invalid" ] && return 0 +	[ "${location}" = "${srcdir}" ] && return 0  	case "${ftype}" in  		"file") @@ -192,7 +192,7 @@ input_file() {  	if [ -f "$1" ]; then  		${dep_list}header "$1"  		is_cpio="$(echo "$1" | sed 's/^.*\.cpio\(\..*\)\?/cpio/')" -		if [ $2 -eq 0 -a ${is_cpio} == "cpio" ]; then +		if [ $2 -eq 0 -a ${is_cpio} = "cpio" ]; then  			cpio_file=$1  			echo "$1" | grep -q '^.*\.cpio\..*' && is_cpio_compressed="compressed"  			[ ! -z ${dep_list} ] && echo "$1" @@ -204,7 +204,7 @@ input_file() {  		else  		        echo "$1 \\"  			cat "$1" | while read type dir file perm ; do -				if [ "$type" == "file" ]; then +				if [ "$type" = "file" ]; then  					echo "$file \\";  				fi  			done @@ -226,7 +226,7 @@ cpio_list=  output="/dev/stdout"  output_file=""  is_cpio_compressed= -compr="gzip -9 -f" +compr="gzip -n -9 -f"  arg="$1"  case "$arg" in @@ -240,10 +240,24 @@ case "$arg" in  		output_file="$1"  		cpio_list="$(mktemp ${TMPDIR:-/tmp}/cpiolist.XXXXXX)"  		output=${cpio_list} -		echo "$output_file" | grep -q "\.gz$" && compr="gzip -9 -f" -		echo "$output_file" | grep -q "\.bz2$" && compr="bzip2 -9 -f" -		echo "$output_file" | grep -q "\.lzma$" && compr="lzma -9 -f" -		echo "$output_file" | grep -q "\.lzo$" && compr="lzop -9 -f" +		echo "$output_file" | grep -q "\.gz$" \ +                && [ -x "`which gzip 2> /dev/null`" ] \ +                && compr="gzip -n -9 -f" +		echo "$output_file" | grep -q "\.bz2$" \ +                && [ -x "`which bzip2 2> /dev/null`" ] \ +                && compr="bzip2 -9 -f" +		echo "$output_file" | grep -q "\.lzma$" \ +                && [ -x "`which lzma 2> /dev/null`" ] \ +                && compr="lzma -9 -f" +		echo "$output_file" | grep -q "\.xz$" \ +                && [ -x "`which xz 2> /dev/null`" ] \ +                && compr="xz --check=crc32 --lzma2=dict=1MiB" +		echo "$output_file" | grep -q "\.lzo$" \ +                && [ -x "`which lzop 2> /dev/null`" ] \ +                && compr="lzop -9 -f" +		echo "$output_file" | grep -q "\.lz4$" \ +                && [ -x "`which lz4 2> /dev/null`" ] \ +                && compr="lz4 -l -9 -f"  		echo "$output_file" | grep -q "\.cpio$" && compr="cat"  		shift  		;; @@ -282,11 +296,18 @@ while [ $# -gt 0 ]; do  done  # If output_file is set we will generate cpio archive and compress it -# we are carefull to delete tmp files +# we are careful to delete tmp files  if [ ! -z ${output_file} ]; then  	if [ -z ${cpio_file} ]; then +		timestamp= +		if test -n "$KBUILD_BUILD_TIMESTAMP"; then +			timestamp="$(date -d"$KBUILD_BUILD_TIMESTAMP" +%s || :)" +			if test -n "$timestamp"; then +				timestamp="-t $timestamp" +			fi +		fi  		cpio_tfile="$(mktemp ${TMPDIR:-/tmp}/cpiofile.XXXXXX)" -		usr/gen_init_cpio ${cpio_list} > ${cpio_tfile} +		usr/gen_init_cpio $timestamp ${cpio_list} > ${cpio_tfile}  	else  		cpio_tfile=${cpio_file}  	fi  | 
