pkg.sh: Fix rpmbuild %attr(links) warning

dc945537 (pkg.sh log-install: Log %attr(0777, ...) for links) fixed
packaging symlink for Debian-based distros, but produces a warning on
RPM based distros: Links may not have explicit attributes, so go back
to not specifying them at all for RPM.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2026-02-18 07:27:44 +01:00
commit 78d49edfeb

View file

@ -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
;;