pkg.sh log-install: Fix handling of links

- Links are installed with file attributes
  - Sometimes links are wrongly logged as directories

Fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2018-10-21 20:23:32 +00:00
commit ce08110e2b

View file

@ -808,38 +808,16 @@ cmd_log_install()
exit 0
}
local file mode installd_file cfgfile dir
local file mode installd_file cfgfile dir attr
if [ "$c_mode_dir" = true ]; then
for file in $*; do
[ "$c_no_log_dirs" = 0 ] || continue
echo "%dir %attr($c_mode,$c_owner,$c_group) $file" >> $c_logfile
done
else
if [ -d "$c_target" ]; then
for file in $c_source; do
installed_file="$c_target/`basename $file`"
cfgfile=""
local mode
if [ "$c_mode" ]; then
mode=$c_mode
cfgfile=`cfgfile_macro "$installed_file"`
else
if [ -d "$file" ]; then
[ "$c_no_log_dirs" = 0 ] || continue
dir="%dir "
mode=0755
else
cfgfile=`cfgfile_macro "$installed_file"`
dir=""
mode=0644
fi
fi
local attr="%attr($mode,$c_owner,$c_group)"
[ -l $file ] && attr=""
echo "$dir$attr $cfgfile$installed_file" |
sed "s/^$c_ignore_prefix//" >> $c_logfile
attr=" %attr($c_mode,$c_owner,$c_group)"
[ -L "$file" ] && attr=""
echo "%dir$attr $file" >> $c_logfile
done
else
if [ -f "$c_target" -o -L "$c_target" ]; then
installed_file="$c_target"
cfgfile=""
if [ "$c_mode" ]; then
@ -855,11 +833,34 @@ cmd_log_install()
mode=0644
fi
fi
local attr="%attr($mode,$c_owner,$c_group)"
[ -l $file ] && attr=""
attr="%attr($mode,$c_owner,$c_group)"
[ -L "$c_target" ] && attr=""
if [ -z "$dir" -o "$c_no_log_dirs" != 0 ]; then
echo "$dir$attr $cfgfile$c_target" | sed "s/^$c_ignore_prefix//" >> $c_logfile
fi
elif [ -d "$c_target" ]; then
for file in $c_source; do
installed_file="$c_target/`basename $file`"
cfgfile=""
if [ "$c_mode" ]; then
mode=$c_mode
cfgfile=`cfgfile_macro "$installed_file"`
else
if [ -d "$file" ]; then
[ "$c_no_log_dirs" = 0 ] || continue
dir="%dir "
mode=0755
else
cfgfile=`cfgfile_macro "$installed_file"`
dir=""
mode=0644
fi
fi
attr="%attr($mode,$c_owner,$c_group)"
[ -L "$file" ] && attr=""
echo "$dir$attr $cfgfile$installed_file" |
sed "s/^$c_ignore_prefix//" >> $c_logfile
done
fi
fi
}