From: Jian Liu <jian....@windriver.com> For the program patch with version before 2.6, backup files for nonexisting files are created with mode 0. During making tarball for these files, this will cause permission error.
Signed-off-by: Hongxu Jia <hongxu....@windriver.com> Signed-off-by: Jian Liu <jian....@windriver.com> --- meta/classes/archiver.bbclass | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass index 7b5274d..f5cdb77 100644 --- a/meta/classes/archiver.bbclass +++ b/meta/classes/archiver.bbclass @@ -224,7 +224,7 @@ def create_tarball(d, srcdir, suffix, ar_outdir, pf=None): """ create the tarball from srcdir """ - import tarfile + import tarfile, subprocess, errno bb.utils.mkdirhier(ar_outdir) if pf: @@ -239,7 +239,21 @@ def create_tarball(d, srcdir, suffix, ar_outdir, pf=None): os.chdir(dirname) bb.note('Creating %s' % tarname) tar = tarfile.open(tarname, 'w:gz') - tar.add(basename) + # For patch before 2.6 backup files for + # nonexisting files are created with mode 0. + # Change the permission of backup files. + # In future, this can be deleted if patch-2.6 and above + # is used widely. + try: + tar.add(basename) + except IOError as exc: + if exc.errno == errno.EACCES: + # Make sure the probable back up patches have read permission + subprocess.call('chmod a+r -R %s/.pc* >/dev/null 2>&1 | true' % + basename, shell=True) + tar.add(basename) + else: + raise IOError("I/O error({0}): {1}".format(exc.errno, exc.strerror)) tar.close() # creating .diff.gz between source.orig and source -- 1.9.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core