I have a slight problem with this patch. The new sysroot-relativelinks.py does not obtain the proper access protection bits!? Which results in the following error when packaging the SDK
/home/poky/build/tmp/work/zynq_zc706-poky-linux-gnueabi/rootfs-default/1.0-r0/temp/run.populate_sdk_image.20803: line 496: /home/poky/scripts/sysroot-relativelinks.py: Permission denied [home/poky]: ls -l scripts/sysroot-relativelinks.py -rw-rw-r-- 1 poky poky 959 Sep 12 09:38 scripts/sysroot-relativelinks.py The execution bit is missing!? I can of course apply the execution bit manually, but what may cause the patch to not set the bits properly in my scripts folder for new files? Please advise. Thanks. Hans On Wed, Sep 11, 2013 at 11:42 AM, Richard Purdie <[email protected]> wrote: > In the target sysroot of an SDK we can have target system absolute links > which don't make sense. This adds a script which fixes them up to become > relative > paths instead. > > [YOCTO #5020] > > Signed-off-by: Richard Purdie <[email protected]> > --- > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass > index 4a0946c..f1e62f14 100644 > --- a/meta/classes/image.bbclass > +++ b/meta/classes/image.bbclass > @@ -4,7 +4,7 @@ inherit populate_sdk_base > > TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}" > TOOLCHAIN_TARGET_TASK_ATTEMPTONLY += "${PACKAGE_INSTALL_ATTEMPTONLY}" > -POPULATE_SDK_POST_TARGET_COMMAND += "rootfs_install_complementary > populate_sdk; " > +POPULATE_SDK_POST_TARGET_COMMAND += "rootfs_install_complementary > populate_sdk; rootfs_sysroot_relativelinks; " > > inherit gzipnative > > @@ -617,6 +617,11 @@ rootfs_trim_schemas () { > done > } > > +# Make any absolute links in a sysroot relative > +rootfs_sysroot_relativelinks () { > + sysroot-relativelinks.py ${SDK_OUTPUT}/${SDKTARGETSYSROOT} > +} > + > EXPORT_FUNCTIONS zap_root_password remove_init_link do_rootfs > make_zimage_symlink_relative set_image_autologin rootfs_update_timestamp > rootfs_no_x_startup > > do_fetch[noexec] = "1" > diff --git a/scripts/sysroot-relativelinks.py > b/scripts/sysroot-relativelinks.py > new file mode 100755 > index 0000000..2e13744 > --- /dev/null > +++ b/scripts/sysroot-relativelinks.py > @@ -0,0 +1,31 @@ > +#!/usr/bin/env python > +import sys > +import os > + > +# Take a sysroot directory and turn all the abolute symlinks and turn them > into > +# relative ones such that the sysroot is usable within another system. > + > +if len(sys.argv) != 2: > + print("Usage is " + sys.argv[0] + "<directory>") > + sys.exit(1) > + > +topdir = sys.argv[1] > +topdir = os.path.abspath(topdir) > + > +def handlelink(filep, subdir): > + link = os.readlink(filep) > + if link[0] != "/": > + return > + if link.startswith(topdir): > + return > + #print("Replacing %s with %s for %s" % (link, topdir+link, filep)) > + print("Replacing %s with %s for %s" % (link, > os.path.relpath(topdir+link, subdir), filep)) > + os.unlink(filep) > + os.symlink(os.path.relpath(topdir+link, subdir), filep) > + > +for subdir, dirs, files in os.walk(topdir): > + for f in files: > + filep = os.path.join(subdir, f) > + if os.path.islink(filep): > + #print("Considering %s" % filep) > + handlelink(filep, subdir) > > > > _______________________________________________ > Openembedded-core mailing list > [email protected] > http://lists.openembedded.org/mailman/listinfo/openembedded-core _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
