Support pkg sub-groups in pkgusr-cmd-pkg/pkgusr-file-pkg
[pkgusr] / usr / lib / pkgusr / update-pkg-project
1 #!/bin/bash
2
3 # Updates the timestamp and contents in a package's .project
4 # if $1 is null, update pkgusr's pkg
5
6 pkg="$1"
7
8 if [ -z "${pkg}" ]; then
9     pkg=$(whoami)
10 fi
11
12 pkgdir=/usr/src/${pkg}
13 pkgawk=/usr/lib/pkgusr/pkgdeps.awk
14
15 upd_pkg_deps()
16 {
17     for file in $(forall_direntries_from $pkg -type f -executable -readable); do
18         if readelf -d $file &>/dev/null && ldd $file &>/dev/null; then
19             (readelf -d $file ; ldd $file ) |
20             awk -f ${pkgawk} | xargs stat --printf "%U:%G\n"
21         fi
22     done|sort -u|tr -s '\n' ' '
23 }
24
25 # Update deps and date
26 TIMESTAMP=$(date +%c)
27 DEPS=$(upd_pkg_deps)
28 DEPS=${DEPS% }                  # trailing whitespace begone!
29 sed -i -e "s/\(Last_Updated: \).*$/\1${TIMESTAMP}/" \
30     -e s/"\(Deps: \).*$"/"\1${DEPS}"/ ${pkgdir}/.project
31
32 # Clear out old file list
33 awk '/^CONTENTS:/ { print; exit; } {print}' \
34     ${pkgdir}/.project > ${pkgdir}/.projtmp
35 echo "--------" >> ${pkgdir}/.projtmp
36
37 # Add up to date file list
38 list_package ${pkg} >> ${pkgdir}/.projtmp
39 mv ${pkgdir}/.projtmp ${pkgdir}/.project
40
41 # If we're root, chown the .project file
42 [[ $(id -u) -eq 0 ]] && chown -v ${pkg}:${pkg} ${pkgdir}/.project
43 exit 0