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.
On Fri, Mar 11, 2011 at 4:05 PM, Patrik Ryd <patrik....@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 _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev