On Fri, Jan 6, 2012 at 11:58 PM, Andrea Adami <andrea.ad...@gmail.com> wrote: > On Fri, Jan 6, 2012 at 11:57 AM, Richard Purdie > <richard.pur...@linuxfoundation.org> wrote: >> On Fri, 2012-01-06 at 02:00 +0100, Andrea Adami wrote: >>> On Fri, Jan 6, 2012 at 12:36 AM, Darren Hart <dvh...@linux.intel.com> wrote: >>> > >>> > >>> > On 01/05/2012 04:30 AM, Richard Purdie wrote: >>> >> On Thu, 2012-01-05 at 01:05 +0100, Andrea Adami wrote: >>> >>> I'd say we have to test for the in-existence of the file instead of >>> >>> blindly touching it. >>> >>> Smthg like >>> >>> >>> >>> if [! -e ${IMAGE_ROOTFS}/init]; then >>> >>> touch ${IMAGE_ROOTFS}/init >>> >>> fi >>> > >>> > Why? Touch creates it if it doesn't exist and updates the modtime if it >>> > does. It doesn't modify the content of the file if it exists. What is >>> > the motivation for testing for it's existence? >>> > >>> touch fails with Permission denied because one package in my rootfs >>> already created the symlink >>> >>> >>> >>> >>> >>> >>> Now, repeating that block for all 4 cpio images is a bit ugly... better >>> >>> ideas? >>> >> >>> >> Make it a shell function we call? I'd also check for >>> >> ${base_sbindir}/init first too? >>> > >>> > Why check for that? So we can link to it instead of creating an empty >>> > file? >>> >>> Nonsense, kernel looks for /init >>> ( >>> http://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt >>> ) >> >> Yes, please ignore my comment about /sbin/init, I'm misremembering >> something. We should deal with the symlink case though. >> >> Cheers, >> >> Richard >> >> >> _______________________________________________ >> Openembedded-core mailing list >> Openembedded-core@lists.openembedded.org >> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > > ok, I think the issue is the behavior of touch when trying to change > the timestamp of a symlink. > > http://fossplanet.com/f13/bug-7122-touch-gnu-coreutils-7-4-no-way-touch-symlink-57418/ > > Using 'touch -h' seems solving the issue and the image is built. > However, the timestamp of the /init symlink now differs from the > timestamp of the binary. > > Regards > > Andrea
Ok, now I think I understand the issue: the /init symlink in rootfs is absolute, being its path is pointing to /usr/bin/kexecboot in our case. Now, until this becomes the real rootfs, the symlink appears broken and that's why adding the -h (do not dereference) fixes the case of existent symlink. Unfortunately it appears touch -h fails if /init is a file and not a symlink (tested now). Afterall, I think it would be easier to add a guard around touch as initially proposed. Just my 2 cents Andrea _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core