From ce08110e2b021361b0bf4d7c42454be1d154c5ea Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sun, 21 Oct 2018 20:23:32 +0000 Subject: [PATCH] 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 --- scripts/pkg.sh | 59 +++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/scripts/pkg.sh b/scripts/pkg.sh index 2936f787..27f14ee8 100644 --- a/scripts/pkg.sh +++ b/scripts/pkg.sh @@ -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 + attr=" %attr($c_mode,$c_owner,$c_group)" + [ -L "$file" ] && attr="" + echo "%dir$attr $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 - 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 }