diff options
author | P. J. McDermott <pj@pehjota.net> | 2014-08-21 08:04:05 (EDT) |
---|---|---|
committer | P. J. McDermott <pj@pehjota.net> | 2014-08-21 08:05:18 (EDT) |
commit | 54967730c526da075d723354a5de9bc54b9c21f1 (patch) | |
tree | a6be25de9c687259470f64f4295bf0337e87bdaf /lib | |
parent | 816cc2b6c7cac56d6d3d6f55fbc22817637d3157 (diff) |
install: Write status file
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cmd/install.sh | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/cmd/install.sh b/lib/cmd/install.sh index 696f24c..9b90fff 100644 --- a/lib/cmd/install.sh +++ b/lib/cmd/install.sh @@ -160,13 +160,20 @@ cmd_install_fname_cb() cmd_install_get_pkgs() { local chroot="${1}" + local status_fd= local pkg= local fname= local file= + local control= + local field= + local printed= mkdir -p "${chroot}/var/cache/opkg/archives" "${chroot}/tmp/opkg" \ "${chroot}/var/lib/opkg/info" + fopen "${chroot}/var/lib/opkg/status" 'w' + status_fd=${FD} + for pkg in $(cat "${chroot}/.prokit/packages"); do info "$(get_msg 'cmd_install_downloading_pkg')" "${pkg}" fname="$(printf '%s\n' "${cmd_install_fnames}" | \ @@ -195,5 +202,32 @@ cmd_install_get_pkgs() "${chroot}/var/lib/opkg/info/${pkg}.${file##*/}" done rmdir "${chroot}/tmp/opkg/${pkg}" + + # Write status file. + control="${chroot}/var/lib/opkg/info/${pkg}.control" + for field in Package Version Depends Recommends Suggests \ + Provides Replaces Conflicts; do + grep "^${field}: " "${control}" >&${status_fd} + done + printf 'Status: install ok unpacked\n' >&${status_fd} + for field in Essential Architecture; do + grep "^${field}: " "${control}" >&${status_fd} + done + if [ -r "${chroot}/var/lib/opkg/info/${pkg}.conffiles" ]; then + printed=false + while read -r file; do + ${printed} || printf 'Conffiles:\n' \ + >&${status_fd} + printf ' %s %s\n' "${file}" "$(md5sum \ + "${chroot}/${file}" | cut -d' ' -f1)" \ + >&${status_fd} + printed=true + done <"${chroot}/var/lib/opkg/info/${pkg}.conffiles" + fi + printf 'Installed-Time: %s\n\n' "$(date '+%s')" >&${status_fd} + + rm -f "${chroot}/${fname}" done + + fclose ${status_fd} } |