diff --git a/scripts/pkg.sh b/scripts/pkg.sh index e22530ae..1d5b4d85 100644 --- a/scripts/pkg.sh +++ b/scripts/pkg.sh @@ -872,7 +872,7 @@ cmd_log_install() for file in $*; do [ "$c_no_log_dirs" = 0 ] || continue mode=$c_mode - [ -L "$file" ] && mode="0777" + [ -L "$file" ] && mode="LINK" attr=" %attr($mode,$c_owner,$c_group)" echo "%dir$attr $file" >> $c_logfile done @@ -893,7 +893,7 @@ cmd_log_install() mode=0644 fi fi - [ -L "$c_target" ] && mode="0777" + [ -L "$c_target" ] && mode="LINK" attr="%attr($mode,$c_owner,$c_group)" if [ -z "$dir" -o "$c_no_log_dirs" != 0 ]; then echo "$dir$attr $cfgfile$c_target" | sed "s/^$c_ignore_prefix//" >> $c_logfile @@ -916,7 +916,7 @@ cmd_log_install() mode=0644 fi fi - [ -L "$file" ] && mode="0777" + [ -L "$file" ] && mode="LINK" attr="%attr($mode,$c_owner,$c_group)" echo "$dir$attr $cfgfile$installed_file" | sed "s/^$c_ignore_prefix//" >> $c_logfile @@ -938,7 +938,7 @@ cmd_milk_install_log() local attr=$1 shift #echo "extracting attribute $attr from \"$@\"" >&2 - echo "$*" | sed "s/.*attr(\([0-9]\+\),\([^,]\+\),\([^,)]\+\)).*/\\$attr/" + echo "$*" | sed "s/.*attr(\(LINK\|[0-9]\+\),\([^,]\+\),\([^,)]\+\)).*/\\$attr/" } milk_install_log_init_postinst() @@ -1027,22 +1027,26 @@ cmd_milk_install_log() # TODO: simplify this case $type in rpm) - cat_log | sed "s% $prefix% %" | grep -ve $filter_devel > $in.$name-run - cat_log | sed "s% $prefix% %" | grep -e $filter_devel > $in.$name-devel + cleanup_line_rpm() { + sed "s% $prefix% %; s/%attr(LINK,[^)]\+)//; s/^\s*//" + } + + cat_log | cleanup_line_rpm | grep -ve $filter_devel > $in.$name-run + cat_log | cleanup_line_rpm | grep -e $filter_devel > $in.$name-devel # TODO: this is unimplemented for debian packages echo $subpackages | grep -q devel || cat $in.$name-devel >> $in.$name-run ;; deb) - filter_path() { + cleanup_line_deb() { sed "s|%config\s*||g; s% $prefix% %; s%//*%/%g; s/.*) *//" } - cat_log | grep -v "%dir" | filter_path | grep -ve $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/inst-root\1\/\2 \1/' > $out/$name-run.install - cat_log | grep -v "%dir" | filter_path | grep -e $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/inst-root\1\/\2 \1/' > $out/$name-devel.install - cat_log | grep "%dir" | filter_path | grep -ve $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/\1\/\2/; s%^/%%' | sort -u > $out/$name-run.dirs - cat_log | grep "%dir" | filter_path | grep -e $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/\1\/\2/; s%^/%%' | sort -u > $out/$name-devel.dirs - cat_log | grep "%config" | filter_path | grep -ve $filter_devel > $out/conffiles.$name-run - cat_log | grep "%config" | filter_path | grep -e $filter_devel > $out/conffiles.$name-devel + cat_log | grep -v "%dir" | cleanup_line_deb | grep -ve $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/inst-root\1\/\2 \1/' > $out/$name-run.install + cat_log | grep -v "%dir" | cleanup_line_deb | grep -e $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/inst-root\1\/\2 \1/' > $out/$name-devel.install + cat_log | grep "%dir" | cleanup_line_deb | grep -ve $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/\1\/\2/; s%^/%%' | sort -u > $out/$name-run.dirs + cat_log | grep "%dir" | cleanup_line_deb | grep -e $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/\1\/\2/; s%^/%%' | sort -u > $out/$name-devel.dirs + cat_log | grep "%config" | cleanup_line_deb | grep -ve $filter_devel > $out/conffiles.$name-run + cat_log | grep "%config" | cleanup_line_deb | grep -e $filter_devel > $out/conffiles.$name-devel for p in run devel; do postinst=$out/$name-$p.postinst @@ -1057,7 +1061,7 @@ cmd_milk_install_log() owner=`milk_install_log_spec_attr 2 "$line"` group=`milk_install_log_spec_attr 3 "$line"` echo "chown $owner:$group $file" >> $postinst - echo "chmod $perm $file" >> $postinst + [ "$perm" = "LINK" ] || echo "chmod $perm $file" >> $postinst done done ;;