staging: fix staging of empty directories and add localstatedir

If a program creates an empty directory during its build it's probably for a
good reason, so if it exists it seems sensible to stage it.
Some programs require localstatedir to operate so we should be sure to stage
it.

Signed-off-by: Joshua Lock <josh@linux.intel.com>
This commit is contained in:
Joshua Lock 2010-06-25 13:56:04 +01:00
parent 63e6ba8567
commit f23aa92f08
1 changed files with 10 additions and 2 deletions

View File

@ -13,10 +13,17 @@ packagedstaging_fastpath () {
sysroot_stage_dir() { sysroot_stage_dir() {
src="$1" src="$1"
dest="$2" dest="$2"
# This will remove empty directories so we can ignore them # if the src doesn't exist don't do anything
if [ ! -d "$src" ]; then
return
fi
# We only want to stage the contents of $src if it's non-empty so first rmdir $src
# then if it still exists (rmdir on non-empty dir fails) we can copy its contents
rmdir "$src" 2> /dev/null || true rmdir "$src" 2> /dev/null || true
# However we always want to stage a $src itself, even if it's empty
mkdir -p "$dest"
if [ -d "$src" ]; then if [ -d "$src" ]; then
mkdir -p "$dest"
cp -fpPR "$src"/* "$dest" cp -fpPR "$src"/* "$dest"
fi fi
} }
@ -52,6 +59,7 @@ sysroot_stage_dirs() {
sysroot_stage_dir $from${base_sbindir} $to${STAGING_DIR_HOST}${base_sbindir} sysroot_stage_dir $from${base_sbindir} $to${STAGING_DIR_HOST}${base_sbindir}
sysroot_stage_dir $from${libexecdir} $to${STAGING_DIR_HOST}${libexecdir} sysroot_stage_dir $from${libexecdir} $to${STAGING_DIR_HOST}${libexecdir}
sysroot_stage_dir $from${sysconfdir} $to${STAGING_DIR_HOST}${sysconfdir} sysroot_stage_dir $from${sysconfdir} $to${STAGING_DIR_HOST}${sysconfdir}
sysroot_stage_dir $from${localstatedir} $to${STAGING_DIR_HOST}${localstatedir}
fi fi
if [ -d $from${libdir} ] if [ -d $from${libdir} ]
then then