#!/bin/sh
+# install a file from a package
+# -f pkgfile
+# -R root of pkg
+# -P prefix to file
+# -S strip prefix
+# -p pkgname
+
pkgroot=/
while getopts :f:v:r:d:a:u:l:p:b:P:R: opt; do
f) pkgfile="$OPTARG" ;;
v) pkgver="$OPTARG" ;;
r) pkgrel="$OPTARG" ;;
- d) description="$OPTARG" ;;
- a) arch="$OPTARG" ;;
- u) url="$OPTARG" ;;
- l) licenses="$OPTARG" ;;
- p) packager="$OPTARG" ;;
- b) builddate="$OPTARG" ;;
P) prefix="$OPTARG" ;;
esac
done
shift $((OPTIND - 1))
die() {
- echo $* 1&>2
+ echo $* 1>&2
exit 1
}
pkgfileinfo() {
- sqlite3 $pkgfile<<EOS
+ zpm shell $pkgfile<<EOS
select $1 from packagefiles
where path='$2'
and package||'-'||version||'-'||release = '$pkg'
set -e
for path in $*; do
- fhash=$(pkgfileinfo hash $path)
- mode=$(pkgfileinfo mode $path)
- owner=$(pkgfileinfo username $path)
- group=$(pkgfileinfo groupname $path)
- ftype=$(pkgfileinfo filetype $path)
+ fhash=$(zpm pkgfileinfo hash $path)
+ mode=$(zpm pkgfileinfo mode $path)
+ owner=$(zpm pkgfileinfo username $path)
+ group=$(zpm pkgfileinfo groupname $path)
+ ftype=$(zpm pkgfileinfo filetype $path)
name=$(basename -- $path)
if [ "$pkgroot" != '/' ]; then
tmppath=$dir/.installing.$name
- cat <<-EOC
+ # can't use install because it's not posix.
+ # probably worth writing a zpm-install, but with
+ # a different name since that wants to be a package install
+ # probably makes the most sense for extract to know how
+ # to do the extract to temp and such, then
+ # you can just add the -S option (secure)
+ #cat <<-EOC
+ set -x
mkdir -p $dir
zpm extract $pkgfile $fhash $tmppath 0
chown $owner:$group $tmppath
chmod $mode $tmppath
- mv $tmppath $dir/$name
- EOC
+ # TODO mv -n non-posix, going to need to have extract do all
+ # of this
+ mv -n $tmppath $dir/$name
+ set +x
+ #EOC
done