All of lore.kernel.org
 help / color / mirror / Atom feed
From: ChenQi <Qi.Chen@windriver.com>
To: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Cc: Zhenfeng.Zhao@windriver.com, openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 3/4] populate-volatile.sh: add ROOT_DIR variable to support running at rootfs time
Date: Wed, 20 Feb 2013 13:57:07 +0800	[thread overview]
Message-ID: <512465B3.9010204@windriver.com> (raw)
In-Reply-To: <CAC1BbcRzD2R52+hWOygOnSsDO1-2rJEefuJ1Mk20Zawj1vBwPA@mail.gmail.com>

On 02/19/2013 07:56 PM, Bernhard Reutner-Fischer wrote:
> On 19 February 2013 08:38,  <Qi.Chen@windriver.com> wrote:
>> From: Chen Qi <Qi.Chen@windriver.com>
>>
>> For populate-volatile.sh script to run correctly both at rootfs time and
>> at system boot time, it needs to be aware of which situation it is now in.
>>
>> We use the ROOT_DIR variable to indicate whether it is run at rootfs time or
>> not. ROOT_DIR being "/" indicates that this script is run at system boot time,
>> otherwise, it is run at rootfs time.
>>
>> Also, we ignore failures when running this script at rootfs time.
>> For example, if ${ROOT_DIR}/var/dir1 is symlink to /var/volatile/dir1, it's
>> possible that the link is a dead link. So if we're going to create some file
>> under ${ROOT_DIR}/var/dir1, it will fail. But the failure does no harm,
>> because this script will always run at system boot time to set up the correct
>> files and directories.
>>
>> [YOCTO #3406]
>>
>> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>> ---
>>   .../initscripts-1.0/populate-volatile.sh           |   57 +++++++++++++++-----
>>   1 file changed, 43 insertions(+), 14 deletions(-)
>>
>> diff --git a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
>> index ab3af70..f1f8793 100755
>> --- a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
>> +++ b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
>> @@ -8,10 +8,18 @@
>>   # Short-Description:  Populate the volatile filesystem
>>   ### END INIT INFO
>>
>> -. /etc/default/rcS
>> -
>> -CFGDIR="/etc/default/volatiles"
>> -TMPROOT="/var/tmp"
>> +# Get ROOT_DIR
>> +DIRNAME=`dirname $0`
>> +ROOT_DIR=`echo $DIRNAME | sed -ne 's:etc/.*::p'`
>> +
>> +[ -e ${ROOT_DIR}/etc/default/rcS ] && . ${ROOT_DIR}/etc/default/rcS
>> +# When running populat-volatile.sh at rootfs time, disable cache.
> populate-volatile.sh, missing 'e'
>
> And if you touch that script, please trim all that ugly trailing
> whitespace while at it:
> sed -i -e 's/[[:space:]]*$//g'
> meta/recipes-core/initscripts/initscripts*/populate-volatile.sh
>

Thank you for your careful review :)

Version 2 has been sent out.

Best Regards,
Chen Qi

>> +[ "$ROOT_DIR" != "/" ] && VOLATILE_ENABLE_CACHE=no
>> +# If rootfs is read-only, disable cache.
>> +[ "$ROOTFS_READ_ONLY" = "yes" ] && VOLATILE_ENABLE_CACHE=no
>> +
>> +CFGDIR="${ROOT_DIR}/etc/default/volatiles"
>> +TMPROOT="${ROOT_DIR}/var/tmp"
>>   COREDEF="00_core"
>>
>>   [ "${VERBOSE}" != "no" ] && echo "Populating volatile Filesystems."
>> @@ -27,7 +35,15 @@ create_file() {
>>          [ -e "$1" ] && {
>>                  [ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping."
>>          } || {
>> -               eval $EXEC &
>> +               if [ "$ROOT_DIR" = "/" ]; then
>> +                       eval $EXEC &
>> +               else
>> +                       # Creating some files at rootfs time may fail and should fail,
>> +                       # but these failures should not be logged to make sure the do_rootfs
>> +                       # process doesn't fail. This does no harm, as this script will
>> +                       # run on target to set up the correct files and directories.
>> +                       eval $EXEC > /dev/null 2>&1
> why don't you background here?
>
>> +               fi
>>          }
>>   }
>>
>> @@ -41,7 +57,13 @@ mk_dir() {
>>          [ -e "$1" ] && {
>>                  [ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping."
>>          } || {
>> -               eval $EXEC
>> +               if [ "$ROOT_DIR" = "/" ]; then
>> +                       eval $EXEC
>> +               else
>> +                       # For the same reason with create_file(), failures should
>> +                       # not be logged.
>> +                       eval $EXEC > /dev/null 2>&1
>> +               fi
>>          }
>>   }
>>
>> @@ -53,7 +75,13 @@ link_file() {
>>          [ -e "$2" ] && {
>>                  echo "Cannot create link over existing -${TNAME}-." >&2
>>          } || {
>> -               eval $EXEC &
>> +               if [ "$ROOT_DIR" = "/" ]; then
>> +                       eval $EXEC &
>> +               else
>> +                       # For the same reason with create_file(), failures should
>> +                       # not be logged.
>> +                       eval $EXEC > /dev/null 2>&1
> why don't you background here?
>> +               fi
>>          }
>>   }
>>
>> @@ -71,7 +99,7 @@ check_requirements() {
>>          TMP_DEFINED="${TMPROOT}/tmpdefined.$$"
>>          TMP_COMBINED="${TMPROOT}/tmpcombined.$$"
>>
>> -       cat /etc/passwd | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}"
>> +       cat ${ROOT_DIR}/etc/passwd | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}"
> I would have remove the cat.
>
>>          cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 2 > "${TMP_INTERMED}"
>>          cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}"
>>          NR_DEFINED_USERS="`cat "${TMP_DEFINED}" | wc -l`"
>> @@ -85,7 +113,7 @@ check_requirements() {
>>          }
>>
>>
>> -       cat /etc/group | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}"
>> +       cat ${ROOT_DIR}/etc/group | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}"
> likewise.
>>          cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 3 > "${TMP_INTERMED}"
>>          cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}"
>>
>> @@ -116,6 +144,7 @@ apply_cfgfile() {
>>          cat ${CFGFILE} | grep -v "^#" | \
>>                  while read LINE; do
>>                  eval `echo "$LINE" | sed -n "s/\(.*\)\ \(.*\) \(.*\)\ \(.*\)\ \(.*\)\ \(.*\)/TTYPE=\1 ; TUSER=\2; TGROUP=\3; TMODE=\4; TNAME=\5 TLTARGET=\6/p"`
>> +               TNAME=${ROOT_DIR}/${TNAME}
>>                  [ "${VERBOSE}" != "no" ] && echo "Checking for -${TNAME}-."
>>
>>                  [ "${TTYPE}" = "l" ] && {
>> @@ -168,19 +197,19 @@ do
>>   done
>>   exec 9>&-
>>
>> -if test -e /etc/volatile.cache -a "$VOLATILE_ENABLE_CACHE" = "yes" -a "x$1" != "xupdate" -a "x$clearcache" = "x0"
>> +if test -e ${ROOT_DIR}/etc/volatile.cache -a "$VOLATILE_ENABLE_CACHE" = "yes" -a "x$1" != "xupdate" -a "x$clearcache" = "x0"
>>   then
>> -       sh /etc/volatile.cache
>> +       sh ${ROOT_DIR}/etc/volatile.cache
>>   else
>> -       rm -f /etc/volatile.cache /etc/volatile.cache.build
>> +       rm -f ${ROOT_DIR}/etc/volatile.cache /etc/volatile.cache.build
> why just the first one and not .build too?
>
>>          for file in `ls -1 "${CFGDIR}" | sort`; do
>>                  apply_cfgfile "${CFGDIR}/${file}"
>>          done
>>
>> -       [ -e /etc/volatile.cache.build ] && sync && mv /etc/volatile.cache.build /etc/volatile.cache
>> +       [ -e ${ROOT_DIR}/etc/volatile.cache.build ] && sync && mv /etc/volatile.cache.build /etc/volatile.cache
> hm? Likewise, missing ${ROOT_DIR} ?
>
>>   fi
>>
>> -if test -f /etc/ld.so.cache -a ! -f /var/run/ld.so.cache
>> +if [ "${ROOT_DIR}" = "/" ] && [ -f /etc/ld.so.cache ] && [ ! -f /var/run/ld.so.cache ]
>>   then
>>          ln -s /etc/ld.so.cache /var/run/ld.so.cache
>>   fi
>




  reply	other threads:[~2013-02-20  6:13 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-19  7:38 [PATCH 0/4] Read-only rootfs followup patches Qi.Chen
2013-02-19  7:38 ` [PATCH 1/4] image.bbclass: add a hook funtion to support readonly rootfs Qi.Chen
2013-02-19 11:39   ` Bernhard Reutner-Fischer
2013-02-20  5:56     ` ChenQi
2013-02-19  7:38 ` [PATCH 2/4] core-image.bbclass: support read-only rootfs Qi.Chen
2013-02-19  7:38 ` [PATCH 3/4] populate-volatile.sh: add ROOT_DIR variable to support running at rootfs time Qi.Chen
2013-02-19 11:56   ` Bernhard Reutner-Fischer
2013-02-20  5:57     ` ChenQi [this message]
2013-02-19  7:38 ` [PATCH 4/4] populate-volatile.sh: improve the handling of link config items Qi.Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=512465B3.9010204@windriver.com \
    --to=qi.chen@windriver.com \
    --cc=Zhenfeng.Zhao@windriver.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=rep.dot.nop@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.