mirror of
https://github.com/outbackdingo/scratchpkg.git
synced 2026-02-05 08:28:00 +00:00
fix
This commit is contained in:
29
pkgbuild
29
pkgbuild
@@ -60,26 +60,33 @@ generatemdsum() {
|
||||
}
|
||||
|
||||
checkmdsum() {
|
||||
TMPCHECKSUM=$WORK_DIR/checksums.$$
|
||||
TMPCHECKSUM=$WORK_DIR/checksumstmp.$$
|
||||
ORICHECKSUM=$WORK_DIR/checksumsori.$$
|
||||
DIFCHECKSUM=$WORK_DIR/checksumsdiff.$$
|
||||
|
||||
if [ ! -f .checksums ]; then
|
||||
msg "Generating .checksums..."
|
||||
generatemdsum > .checksums
|
||||
else
|
||||
msg "Checking checksums..."
|
||||
generatemdsum > $TMPCHECKSUM
|
||||
mismatch=$(diff -w -t -U 0 .checksums $TMPCHECKSUM | sed '/^---/d;/^+++/d;/^@@/d' | awk '{print $2}' | uniq)
|
||||
generatemdsum > "$TMPCHECKSUM"
|
||||
sort -k2 .checksums > "$ORICHECKSUM"
|
||||
diff -w -t -U 0 "$ORICHECKSUM" "$TMPCHECKSUM" > "$DIFCHECKSUM"
|
||||
fi
|
||||
|
||||
rm -f $TMPCHECKSUM
|
||||
[ -s "$DIFCHECKSUM" ] && {
|
||||
mismatch=1
|
||||
cat "$DIFCHECKSUM" \
|
||||
| sed '/---/d' \
|
||||
| sed '/+++/d' \
|
||||
| sed '/@@/d' \
|
||||
| sed 's/^-/ -> missing: /' \
|
||||
| sed 's/^+/ -> new : /'
|
||||
}
|
||||
|
||||
if [ "$mismatch" ]; then
|
||||
msgerr "md5sum mismatch:"
|
||||
for m in $mismatch; do
|
||||
msg2 $m
|
||||
done
|
||||
abort 1
|
||||
fi
|
||||
rm -f "$TMPCHECKSUM" "$DIFCHECKSUM" "$ORICHECKSUM"
|
||||
|
||||
[ "$mismatch" = 1 ] && abort 1
|
||||
}
|
||||
|
||||
download_src() {
|
||||
|
||||
237
pkgquery
Executable file
237
pkgquery
Executable file
@@ -0,0 +1,237 @@
|
||||
#!/bin/sh
|
||||
|
||||
msg() {
|
||||
echo "==> $1"
|
||||
}
|
||||
|
||||
msgerr() {
|
||||
msg "ERROR: $@"
|
||||
}
|
||||
|
||||
msgwarn() {
|
||||
msg "WARNING: $@"
|
||||
}
|
||||
|
||||
msginst() {
|
||||
echo "[i] $1"
|
||||
}
|
||||
|
||||
msgmiss() {
|
||||
echo "[m] $1"
|
||||
}
|
||||
|
||||
msgnoinst() {
|
||||
echo "[ ] $1"
|
||||
}
|
||||
|
||||
needarg() {
|
||||
[ "$*" ] || {
|
||||
msgerr "This operation required an arguments!"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
isinstalled() {
|
||||
if [ -s "$INDEX_DIR/$1/.pkginfo" ] && [ "$(grep $1 $INDEX_DIR/$1/.pkginfo)" ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
allinstalled() {
|
||||
grep ^name "$INDEX_DIR"/*/.pkginfo | awk '{print $3}'
|
||||
}
|
||||
|
||||
getdepends() {
|
||||
ppath=$(getportpath $1) || return 0
|
||||
grep "^# depends[[:blank:]]*:" $ppath/$BUILD_SCRIPT \
|
||||
| sed 's/^# depends[[:blank:]]*:[[:blank:]]*//' \
|
||||
| tr ' ' '\n' \
|
||||
| awk '!a[$0]++' \
|
||||
| sed 's/,//'
|
||||
}
|
||||
|
||||
getportpath() {
|
||||
for repo in $REPO; do
|
||||
if [ -f $repo/$1/$BUILD_SCRIPT ]; then
|
||||
dirname $repo/$1/$BUILD_SCRIPT
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
pkg_dependent() {
|
||||
needarg $@
|
||||
for repo in $REPO; do
|
||||
if [ -d $repo ]; then
|
||||
for all in $repo/*/$BUILD_SCRIPT; do
|
||||
[ -f $all ] || continue
|
||||
depend=$(grep "^# depends[[:blank:]]*:" $all | sed 's/^# depends[[:blank:]]*:[[:blank:]]*//' | tr ' ' '\n' | awk '!a[$0]++')
|
||||
for dep in ${depend[@]}; do
|
||||
if [ $dep = $1 ]; then
|
||||
GDP=yes
|
||||
pname=$(dirname $all)
|
||||
pname=${pname##*/}
|
||||
if isinstalled $pname; then
|
||||
msginst "$pname"
|
||||
else
|
||||
msgnoinst "$pname"
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
[ "$GDP" ] && return 0 || return 1
|
||||
}
|
||||
|
||||
pkg_orphan() {
|
||||
tmpallpkg="/tmp/.pkgquery_allpkg.$$"
|
||||
tmpalldep="/tmp/.pkgquery_alldep.$$"
|
||||
for pkg in $(allinstalled); do
|
||||
echo $pkg >> $tmpallpkg
|
||||
dep="$dep $(getdepends $pkg)"
|
||||
done
|
||||
echo $dep | tr ' ' '\n' | sort | uniq > "$tmpalldep"
|
||||
grep -xvF -f "$tmpalldep" "$tmpallpkg"
|
||||
rm "$tmpalldep" "$tmpallpkg"
|
||||
}
|
||||
|
||||
pkg_info() {
|
||||
needarg $@
|
||||
ppath=$(getportpath $1) || return 1
|
||||
|
||||
. $ppath/$BUILD_SCRIPT
|
||||
desc=$(grep "^# description[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# description[[:blank:]]*:[[:blank:]]*//')
|
||||
url=$(grep "^# homepage[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# homepage[[:blank:]]*:[[:blank:]]*//')
|
||||
maint=$(grep "^# maintainer[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# maintainer[[:blank:]]*:[[:blank:]]*//')
|
||||
deps=$(getdepends $1 | tr '\n' ' ')
|
||||
|
||||
echo -e "Name: $1"
|
||||
echo -e "Path: $ppath"
|
||||
echo -e "Version: $version"
|
||||
echo -e "Release: $release"
|
||||
echo -e "Description: $desc"
|
||||
echo -e "Homepage: $url"
|
||||
echo -e "Maintainer: $maint"
|
||||
echo -e "Dependencies: $deps"
|
||||
}
|
||||
|
||||
pkg_depends() {
|
||||
needarg $@
|
||||
if getportpath "$1" >/dev/null; then
|
||||
depends=$(getdepends $1)
|
||||
else
|
||||
msgerr "Port '$1' not exist."
|
||||
return 1
|
||||
fi
|
||||
|
||||
for dep in $depends; do
|
||||
if isinstalled $dep; then
|
||||
msginst "$dep"
|
||||
elif getportpath $dep >/dev/null; then
|
||||
msgnoinst "$dep"
|
||||
else
|
||||
msgmiss "$dep"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
pkg_path() {
|
||||
needarg $@
|
||||
if PPATH=$(getportpath "$1"); then
|
||||
echo "$PPATH"
|
||||
else
|
||||
msgerr "Port '$1' not exist."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_provide() {
|
||||
needarg $@
|
||||
arg=$(echo $1 | sed "s/^\///")
|
||||
grep -R "$arg" $INDEX_DIR/*/.files \
|
||||
| sed "s:$INDEX_DIR/::" \
|
||||
| sed "s:/.files::" \
|
||||
| tr : " " \
|
||||
| column -t
|
||||
}
|
||||
|
||||
pkg_readme() {
|
||||
needarg $@
|
||||
if PPATH=$(getportpath "$1"); then
|
||||
if [ -f "$PPATH/readme" ]; then
|
||||
cat "$PPATH/readme"
|
||||
else
|
||||
msgerr "Port '$1' does not have readme."
|
||||
fi
|
||||
else
|
||||
msgerr "Port '$1' not exist."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
scratch_info() {
|
||||
needarg $@
|
||||
ppath=$(getportpath $pkg) || return 1
|
||||
|
||||
. $ppath/$BUILD_SCRIPT
|
||||
desc=$(grep "^# description[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# description[[:blank:]]*:[[:blank:]]*//')
|
||||
url=$(grep "^# homepage[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# homepage[[:blank:]]*:[[:blank:]]*//')
|
||||
maint=$(grep "^# maintainer[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# maintainer[[:blank:]]*:[[:blank:]]*//')
|
||||
deps=$(get_depends $pkg | tr '\n' ' ')
|
||||
|
||||
echo -e "Name: $pkg"
|
||||
echo -e "Path: $ppath"
|
||||
echo -e "Version: $version"
|
||||
echo -e "Release: $release"
|
||||
echo -e "Description: $desc"
|
||||
echo -e "Homepage: $url"
|
||||
echo -e "Maintainer: $maint"
|
||||
echo -e "Dependencies: $deps"
|
||||
}
|
||||
|
||||
pkg_files() {
|
||||
needarg $@
|
||||
if isinstalled $1; then
|
||||
cat "$INDEX_DIR/$1/.files"
|
||||
else
|
||||
msg "Package '$1' not installed."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_cat() {
|
||||
needarg $@
|
||||
if PPATH=$(getportpath "$1"); then
|
||||
cat "$PPATH/$BUILD_SCRIPT"
|
||||
else
|
||||
msgerr "Port '$1' not exist."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
BUILD_SCRIPT="spkgbuild"
|
||||
INDEX_DIR="$ROOT_DIR/var/lib/scratchpkg/index"
|
||||
REPO_FILE="/etc/scratchpkg.repo"
|
||||
|
||||
if [ -f "$REPO_FILE" ]; then
|
||||
for repodir in $(grep -Ev '^(#|$)' "$REPO_FILE" | awk '{print $1}'); do
|
||||
REPO="$REPO $repodir"
|
||||
done
|
||||
fi
|
||||
|
||||
OP=$1
|
||||
shift
|
||||
|
||||
if [ $(type -t pkg_$OP) ]; then
|
||||
pkg_$OP $@
|
||||
else
|
||||
pkg_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit $?
|
||||
Reference in New Issue
Block a user