On 15 March 2011 12:28, Alexander Sack <asac@linaro.org> wrote:
would be great to have a more verbose git comment as of why we are
doing this. e.g. what was the problem and what was the solution. also
why do we need to have a copy of mktarball.sh rather than fixing that
one directly.

This patch fixes the permission problem in our root tarball. I think we should try come 
to a conclusion on how we are going to handle the kernel for the different builds first
and then start building the boot tarball instead of our root tarball.

When we use the boot tarball it make sense moving this correction (for the rootfs) into 
the android version of mktarball.sh and contribute it. 


On Fri, Mar 11, 2011 at 4:05 PM, Patrik Ryd <patrik.ryd@linaro.org> wrote:
> Fix for LP #731780.
> ---
>  tasks/mktarball.sh |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  tasks/tarballs.mk  |    4 ++-
>  2 files changed, 63 insertions(+), 1 deletions(-)
>  create mode 100755 tasks/mktarball.sh
>
> diff --git a/tasks/mktarball.sh b/tasks/mktarball.sh
> new file mode 100755
> index 0000000..622ff47
> --- /dev/null
> +++ b/tasks/mktarball.sh
> @@ -0,0 +1,60 @@
> +#!/bin/bash
> +
> +# This is a modified copy of build/tools/mktarball.sh
> +
> +# $1: path to fs_get_stats program
> +# $2: start dir
> +# $3: subdir to tar up (from $2)
> +# $4: target tar name
> +# $5: target tarball name (usually $(3).bz2)
> +
> +if [ $# -ne 5 ]; then
> +    echo "Error: wrong number of arguments in cmd: $0 $* "
> +    exit 1
> +fi
> +
> +fs_get_stats=`readlink -f $1`
> +start_dir=`readlink -f $2`
> +dir_to_tar=$3
> +target_tar=`readlink -f $4`
> +target_tarball=`readlink -f $5`
> +
> +cd $2
> +
> +#tar --no-recursion -cvf ${target_tar} ${dir_to_tar}
> +rm ${target_tar} > /dev/null 2>&1
> +
> +# do dirs first
> +subdirs=`find ${dir_to_tar} -type d -print`
> +files=`find ${dir_to_tar} \! -type d -print`
> +for f in ${subdirs} ${files} ; do
> +    curr_perms=`stat -c 0%a $f`
> +    [ -d "$f" ] && is_dir=1 || is_dir=0
> +    f2=`echo ${f#*/}`
> +    new_info=`${fs_get_stats} ${curr_perms} ${is_dir} ${f2}`
> +    new_uid=`echo ${new_info} | awk '{print $1;}'`
> +    new_gid=`echo ${new_info} | awk '{print $2;}'`
> +    new_perms=`echo ${new_info} | awk '{print $3;}'`
> +#    echo "$f: dir: $is_dir curr: $curr_perms uid: $new_uid gid: $new_gid "\
> +#         "perms: $new_perms"
> +    tar --no-recursion --numeric-owner --owner $new_uid \
> +        --group $new_gid --mode $new_perms -p -rf ${target_tar} ${f}
> +done
> +
> +if [ $? -eq 0 ] ; then
> +    case "${target_tarball}" in
> +    *.bz2 )
> +        bzip2 -c ${target_tar} > ${target_tarball}
> +        ;;
> +    *.gz )
> +        gzip -c ${target_tar} > ${target_tarball}
> +        ;;
> +    esac
> +    success=$?
> +    [ $success -eq 0 ] || rm -f ${target_tarball}
> +    rm -f ${target_tar}
> +    exit $success
> +fi
> +
> +rm -f ${target_tar}
> +exit 1
> diff --git a/tasks/tarballs.mk b/tasks/tarballs.mk
> index e569e98..e6354fc 100644
> --- a/tasks/tarballs.mk
> +++ b/tasks/tarballs.mk
> @@ -2,11 +2,13 @@
>  # Trigger build of tar balls for the linaro boards
>  #
>
> +LINARO_MKTARBALL := device/linaro/common/tasks/mktarball.sh
> +
>  #######
>  ## root tarball
>  define build-roottarball-target
>     $(hide) echo "Target root fs tarball:" $(INSTALLED_ROOTTARBALL_TARGET)
> -    $(hide) $(MKTARBALL) $(FS_GET_STATS) \
> +    $(hide) $(LINARO_MKTARBALL) $(FS_GET_STATS) \
>                  $(PRODUCT_OUT)/root . $(PRIVATE_ROOT_TAR) \
>                  $(INSTALLED_ROOTTARBALL_TARGET)
>  endef
> --
> 1.7.1
>
>
> _______________________________________________
> linaro-dev mailing list
> linaro-dev@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/linaro-dev
>



--

 - Alexander