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
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.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
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
On Tue, Mar 15, 2011 at 2:35 PM, Patrik Ryd patrik.ryd@linaro.org wrote:
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.
I agree. Let's get our boottarball/kernel story sorted out this week.
I would like to see us being able to repo sync our various kernels and use the android platform build system to build the kernel + the boottarballs. In this way we can reuse our build service more or less without modifications.
Anyway, until that happens, feel free to push this patch!