diff --git a/scripts/create-mkdebian.sh b/scripts/create-mkdebian.sh index f9ff073b..a302d945 100644 --- a/scripts/create-mkdebian.sh +++ b/scripts/create-mkdebian.sh @@ -105,7 +105,7 @@ override_dh_auto_install: mkdir -p \`dirname \$INSTALL_LOG\` > \$INSTALL_LOG \\\$(MAKE) ENV_PREFIX=\\\$(ENV_PREFIX) INSTALL_LOG=\\\$(INSTALL_LOG) install - /bin/bash milk-install-log.sh -p \\\$(ENV_PREFIX) -n \\\$(NAME) -t deb \$INSTALL_LOG \\\$(DEB_DIR) + /bin/bash pkg.sh milk-install-log -p \\\$(ENV_PREFIX) -n \\\$(NAME) -t deb \$INSTALL_LOG \\\$(DEB_DIR) dh_installdirs override_dh_shlibdeps: diff --git a/scripts/pkg.sh b/scripts/pkg.sh index e12f5673..e402bb61 100644 --- a/scripts/pkg.sh +++ b/scripts/pkg.sh @@ -652,6 +652,95 @@ cmd_log_install() fi } +cmd_milk_install_log() +{ + milk_install_log_usage() + { + echo "usage: $myname [-h] [-n pkg-name] [-t rpm|deb] [-p remove-prefix] install-log output-dir" + } + + milk_install_log_spec_attr() + { + local attr=$1 + shift + #echo "extracting attribute $attr from \"$@\"" >&2 + echo "$*" | sed "s/.*attr(\([0-9]\+\),\([^,]\+\),\([^,)]\+\)).*/\\$attr/" + } + + milk_install_log_init_postinst() + { + cat <<- EOT > $1 + #!/bin/sh + + EOT + chmod 755 $1 + } + + local type name prefix in out + set -- `getopt ht:p:n: "$@"` + + while [ "$1" != -- ]; do + case $1 in + -h) + usage 0;; + -t) + type="$2"; shift;; + -n) + name="$2"; shift;; + -p) + prefix="$2"; shift;; + *) + milk_install_log_usage 1;; + esac + shift + done + shift + + [ $# != 2 ] && milk_install_log_usage 1 + + in=$1 + out=$2 + + local filter_devel='/include/.*.h$\|devel\|make\|lib.*\.a$\|lib.*\.so$\|.*\.exp$\|.*\.def$\|.*\.lib$' + + # TODO: simplify this + case $type in + rpm) + cat $in | sed "s% $prefix% %//" | grep -ve $filter_devel > $out/files-$name-run + cat $in | sed "s% $prefix% %//" | grep -e $filter_devel > $out/files-$name-devel + ;; + deb) + cat $in | grep -v "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/inst-root\1\/\2 \1/' > $out/$name-run.install + cat $in | grep -v "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -e $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/inst-root\1\/\2 \1/' > $out/$name-devel.install + cat $in | grep "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/\1\/\2/; s%^/%%' | sort -u > $out/$name-run.dirs + cat $in | grep "%dir" | sed "s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -e $filter_devel | sed 's/\(.*\)\/\([^/]\+\) *$/\1\/\2/; s%^/%%' | sort -u > $out/$name-devel.dirs + #cat $in | sed "/%config/ !d; s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel > $out/conffiles + cat $in | sed "/%config/ !d; s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -ve $filter_devel > $out/conffiles.$name-run + cat $in | sed "/%config/ !d; s% $prefix% %; s%//*%/%g; s/.*) *//" | grep -e $filter_devel > $out/conffiles.$name-devel + + for p in run devel; do + postinst=$out/$name-$p.postinst + init_postinst $postinst + cat $out/$name-$p.dirs $out/$name-$p.install | grep . | while read file dir; do + #echo read file \"$file\" >&2 + file=`echo /$file | sed 's/inst-root\///; s%^//*%/%'` + #echo file is now \"$file\" >&2 + #echo grep \"$prefix/*$file$\" $in >&2 + line=`grep $file$ $in` + perm=`milk_install_log_spec_attr 1 "$line"` + 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 + done + done + ;; + *) + milk_install_log_usage 1 + ;; + esac +} + # ---- here we go umask 0022 trap goodbye SIGINT SIGKILL @@ -812,6 +901,9 @@ hash) log-install) eval cmd_log_install "$@" ;; +milk-install-log) + eval cmd_milk_install_log "$@" + ;; *) usage 1 ;;