[arch-projects] [mkinitcpio][PATCH 06/10] use bsdcpio to create images

Tom Gundersen teg at jklm.no
Mon Jun 6 15:13:50 EDT 2011


On Mon, Jun 6, 2011 at 5:30 PM, Dave Reisner <d at falconindy.com> wrote:
> This is a departure from using gen_init_cpio, which proved to be a huge
> bottleneck in performance. Tests for existance change from being a call
> to grep, to a simple shell test.
>
> In the process, we have to modify the behavior of the -s option, and we
> lose the -a option.
>
> Signed-off-by: Dave Reisner <d at falconindy.com>

Ack. Comments inline.

-t

> @@ -93,28 +93,23 @@ add_full_dir ()
>
>  add_dir ()
>  {
> -    #skip root directory and "." for relative directories... i.e. /foo/bar/./blah
> -    if [ -n "${1}" -a "${1}" != "/" -a "${1}" != "." ]; then
> -        if ! grep -q "dir ${1} " "${FILELIST}"; then
> -            add_dir $(get_dirname "${1}")
> -            msg "  adding  dir ${1}"
> -            echo "dir ${1} 755 0 0" >> "${FILELIST}"
> -        fi
> +    if [[ ! -e "$TMPDIR/root/$1" ]]; then
> +        msg "  adding  dir ${1}"
> +        command install -dm755 "$TMPDIR/root/$1"
>     fi
>  }
>
> -# what the hell does this do?

Maybe an replacement comment to explain?

>  add_symlink ()
>  {
>     local fil dest dir
> -    if [ -h ${1} ]; then
> +    if [[ -h $1 ]]; then
>         fil="${1##$BASEDIR}"
>         dest="${2##$BASEDIR}"
>         add_dir $(get_dirname "${dest}")
>         add_dir $(get_dirname "${fil}")
> -        if ! grep -q "slink ${fil} " "${FILELIST}"; then
> +        if [[ ! -e "$TMPDIR/root/$dest" ]]; then
>             msg "  adding link ${fil} -> ${dest}"
> -            echo "slink ${fil} ${dest} $(stat -c '%a' ${1}) 0 0" >> "${FILELIST}"
> +            ln -s "$dest" "$TMPDIR/root/$fil"
>         fi
>     fi
>     #fail quietly

> @@ -49,7 +48,7 @@ usage ()
>     echo "${APPNAME}: usage"
>     echo "  -c CONFIG        Use CONFIG file. default: /etc/mkinitcpio.conf"
>     echo "  -k KERNELVERSION Use KERNELVERSION. default: $(uname -r)"
> -    echo "  -s NAME          Save filelist. default: no"
> +    echo "  -s               Save build directory. default: no"
>     echo "  -b BASEDIR       Use BASEDIR. default: /"
>     echo "  -g IMAGE         Generate a cpio image as IMAGE. default: no"
>     echo "  -a NAME          Append to an existing filelist. default: no"

This should be deleted too, no?


More information about the arch-projects mailing list