#!/bin/bash shopt -sq extglob # NOTE: this uses a different algorithm # for parsing the package name/version/release # than setup. However, it mostly works... parseName() { REM=${1%%*([^-])} REL=${1##$REM} NEXT=${REM%%-} REM=${NEXT%%*([^-])} VER=${NEXT##$REM} PKG=${REM%%-} } do_postinstall() { while read line ; do case $line in etc/postinstall/*) `/$line` mv /$line /$line.done ;; *) ;; esac done < /etc/setup/${PKG}.lst } # we need /etc/setup/installed.db so that 'cygcheck -c' will work if [ ! -f /etc/setup/installed.db ] ; then echo "INSTALLED.DB 2" > /etc/setup/installed.db fi for fn in $* ; do case $fn in *-src.tar*) echo "I don't do -src packages" ;; *.tar.bz2) parseName ${fn%%.tar.bz2} echo Installing $PKG Version $VER Release $REL bunzip2 -dc $fn | tar -C / -x -v -f - bunzip2 -dc $fn | tar -t -v -f - | gawk '{print $6}' |\ > /etc/setup/${PKG}.lst do_postinstall gzip /etc/setup/${PKG}.lst echo "$PKG $fn 0" >> /etc/setup/installed.db ;; *.tar.gz) parseName ${fn%%.tar.gz} echo Installing $PKG Version $VER Release $REL gunzip -dc $fn | tar -C / -x -v -f - gunzip -dc $fn | tar -t -v -f - | gawk '{print $6}' |\ > /etc/setup/${PKG}.lst.gz do_postinstall gzip /etc/setup/${PKG}.lst echo "$PKG $fn 0" >> /etc/setup/installed.db ;; *) echo bad filespec: $fn ;; esac done echo "It's up to you to sort and eliminate duplicates in" echo "/etc/setup/installed.db"