Skip to contentSkip to conversation

rootfs_rpm: Escape the backtick to ensure the ls runs on the target

PATCH In review Saul Wold 2 participants 3 messages Jan 29, 2013 – Jan 30, 2013

lore
Share & tools
lore

Saul Wold

author
#0 lore raw

PATCH 1/1 rootfs_rpm: Escape the backtick to ensure the ls runs on the target

This change ensures that the ls /etc/rpm-postinsts runs in the target at first boot time, rather than at the creation time of the script on the host.

This was causing the following error in the rootfs log:

+ install -d /srv/ssd/sgw/machines/fri2/tmp/work/fri2-poky-linux/core-image-minimal/1.0-r0/rootfs//etc/rcS.d
+ i=
+ ls /etc/rpm-postinsts/
ls: cannot access /etc/rpm-postinsts/: No such file or directory

---
 meta/classes/rootfs_rpm.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/classes/rootfs_rpm.bbclass +1 -1
index accd7d9..119bf92 100644
@@ -108,7 +108,7 @@ fakeroot rootfs_rpm_do_rootfs () {
 	i=\$i
 	cat > ${IMAGE_ROOTFS}${sysconfdir}/rcS.d/S${POSTINSTALL_INITPOSITION}run-postinsts << EOF
 #!/bin/sh
-for i in `ls /etc/rpm-postinsts/`; do
+for i in \`ls /etc/rpm-postinsts/\`; do
 	i=/etc/rpm-postinsts/$i
 	echo "Running postinst $i..."
 	if [ -f $i ] && $i; then
Signature · 1 line
1.8.0.2
#1 lore raw

meta/classes/rootfs_rpm.bbclass fakeroot rootfs_rpm_do_rootfs () { · line 113

Quoted 8 lines · Saul Wold

This change ensures that the ls /etc/rpm-postinsts runs in the target at first boot time, rather than at the creation time of the script on the host.
...

meta/classes/rootfs_rpm.bbclass +1 -1
-for i in `ls /etc/rpm-postinsts/`; do
+for i in \`ls /etc/rpm-postinsts/\`; do
 	i=/etc/rpm-postinsts/$i
 	echo "Running postinst $i..."

are you really sure, this is enough? $i gets probably expanded too. A better way than to escape all and everything is to quote the EOF marker.

E.g. compare

i=abc

cat << "EOF"
echo $i
EOF

cat << EOF
echo $i
EOF

Enrico

author
#2 lore raw
Quoted 14 lines · Enrico Scholz

meta/classes/rootfs_rpm.bbclass fakeroot rootfs_rpm_do_rootfs () { · line 113

Quoted 8 lines · Saul Wold

This change ensures that the ls /etc/rpm-postinsts runs in the target at first boot time, rather than at the creation time of the script on the host.
...

meta/classes/rootfs_rpm.bbclass +1 -1
-for i in `ls /etc/rpm-postinsts/`; do
+for i in \`ls /etc/rpm-postinsts/\`; do
  	i=/etc/rpm-postinsts/$i
  	echo "Running postinst $i..."

are you really sure, this is enough? $i gets probably expanded too. A better way than to escape all and everything is to quote the EOF marker.

Yes, I verified the out put in the S98run-postinsts script that is on disk and it's correct.

There a line above that sets i=\$i so the expansion occurs back to $i!

Sau!

Quoted 21 lines

E.g. compare

i=abc

cat << "EOF"
echo $i
EOF

cat << EOF
echo $i
EOF

Enrico

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core