mirror of
https://github.com/outbackdingo/scratchpkg.git
synced 2026-02-05 08:28:00 +00:00
910 lines
21 KiB
Bash
Executable File
910 lines
21 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
export LC_ALL=C
|
|
|
|
. /usr/share/scratchpkg/functions || exit 1
|
|
|
|
showinfo() {
|
|
|
|
echo
|
|
echo " SCRATCHPKG CONFIG"
|
|
echo " -------------------------"
|
|
echo
|
|
echo "CFLAGS=$CFLAGS"
|
|
echo "CXXFLAGS=$CXXFLAGS"
|
|
echo "MAKEFLAGS=$MAKEFLAGS"
|
|
echo
|
|
echo "CONF_FILE=$CONF_FILE"
|
|
echo "BUILD_SCRIPT=$BUILD_SCRIPT"
|
|
echo
|
|
echo "ROOT_DIR=$ROOT_DIR"
|
|
echo "INDEX_DIR=$INDEX_DIR"
|
|
echo
|
|
echo "PACKAGE_DIR=$PACKAGE_DIR"
|
|
echo "SOURCE_DIR=$SOURCE_DIR"
|
|
echo "WORK_DIR=$WORK_DIR"
|
|
echo "BACKUP_DIR=$BACKUP_DIR"
|
|
echo "REJECTED_DIR=$REJECTED_DIR"
|
|
echo "LOG_DIR=$LOG_DIR"
|
|
echo "HOOK_DIR=$HOOK_DIR"
|
|
echo
|
|
echo "NO_EXTRACT=$NO_EXTRACT"
|
|
echo
|
|
echo "OPTIONS=${OPTIONS[@]}"
|
|
echo "PURGE_FILES=${PURGE_FILES[@]}"
|
|
echo "DOC_DIRS=${DOC_DIRS[@]}"
|
|
echo "MAN_DIRS=${MAN_DIRS[@]}"
|
|
|
|
}
|
|
|
|
listinstalled() {
|
|
for installed in $(ls $INDEX_DIR); do
|
|
getinstalledname $installed
|
|
installedpkg+=($installedname)
|
|
done
|
|
|
|
echo ${installedpkg[@]} | tr ' ' '\n'
|
|
msg "Total installed package(s): ${#installedpkg[@]}"
|
|
}
|
|
|
|
listorphan() {
|
|
|
|
for all_installed in $(ls ${INDEX_DIR}); do
|
|
dep=$(cat $INDEX_DIR/$all_installed/.pkginfo | grep ^depends | cut -d " " -f3-)
|
|
for deps in ${dep[@]}; do
|
|
ALL_DEP+=($deps)
|
|
done
|
|
done
|
|
|
|
for all in $(ls $INDEX_DIR); do
|
|
ORPHAN=yes
|
|
getinstalledname $all
|
|
for depended in ${ALL_DEP[@]}; do
|
|
if [ $depended = $all ]; then
|
|
ORPHAN=no
|
|
break
|
|
fi
|
|
done
|
|
if [ "$ORPHAN" = yes ]; then
|
|
ORPHAN_PKG+=($installedname)
|
|
fi
|
|
done
|
|
|
|
echo ${ORPHAN_PKG[@]} | tr ' ' '\n'
|
|
msg "Total orphan package(s): ${#ORPHAN_PKG[@]}"
|
|
}
|
|
|
|
searchpkg() {
|
|
|
|
for port in ${PORT_REPO[@]}; do
|
|
if [ -d $port ]; then
|
|
OUTPUT=()
|
|
pushd $port
|
|
OUTPUT=$(grep -R "# description" | grep -i "$SEARCH_PKG" | grep "$BUILD_SCRIPT" | cut -d '/' -f1)
|
|
popd
|
|
if [ "$OUTPUT" ]; then
|
|
found=yes
|
|
for out in ${OUTPUT[@]}; do
|
|
if [ -f $port/$out/$BUILD_SCRIPT ]; then
|
|
pushd $port/$out
|
|
getpkginfo
|
|
popd
|
|
if [ ! -z "$name" ] && [ ! -z "$version" ] && [ ! -z "$release" ]; then
|
|
portname=$(basename $port)
|
|
search_result="${color_blue}($portname)${color_reset} ${color_purple}$name${color_reset} ${color_cyan}$version-$release${color_reset}"
|
|
if [ -d $INDEX_DIR/$name ]; then
|
|
getinstalledname $name
|
|
if [ "$name-$version-$release" = "$installedname" ]; then
|
|
msg3 "$search_result ${color_green}[installed]${color_reset}"
|
|
msg4 "$description"
|
|
else
|
|
msg3 "$search_result ${color_yellow}[installed $iversion-$irelease]${color_reset}"
|
|
msg4 "$description"
|
|
fi
|
|
else
|
|
msg3 "$search_result"
|
|
msg4 "$description"
|
|
fi
|
|
unset description
|
|
fi
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
done
|
|
if [ "$found" != "yes" ]; then
|
|
msg "No matching package found."
|
|
fi
|
|
}
|
|
|
|
checkowner() {
|
|
|
|
for installed in $(ls $INDEX_DIR); do
|
|
for output in $(cat $INDEX_DIR/$installed/.files | grep $OWNER_FILE_NAME); do
|
|
echo -e "${color_cyan}$installed${color_reset} => ${color_purple}$output${color_reset}"
|
|
done
|
|
done
|
|
|
|
}
|
|
|
|
showtree() {
|
|
|
|
if [ ! -d $INDEX_DIR/$TREE_PORT_NAME ]; then
|
|
msg "Package ${color_red}$TREE_PORT_NAME${color_reset} not installed."
|
|
else
|
|
while IFS=' ' read -r line; do
|
|
echo "$line"
|
|
done < <(cat $INDEX_DIR/$TREE_PORT_NAME/.files)
|
|
fi
|
|
|
|
}
|
|
|
|
checkintegrity() {
|
|
|
|
pushd $ROOT_DIR
|
|
for installed in $(ls $INDEX_DIR); do
|
|
while IFS=' ' read -r line; do
|
|
if [ ! -e "$line" ]; then
|
|
msg "${color_yellow}$installed${color_reset} is missing: ${color_purple}/$line${color_reset}"
|
|
MISSING_FILE=yes
|
|
fi
|
|
done < <(cat $INDEX_DIR/$installed/.files)
|
|
done
|
|
popd
|
|
|
|
[ "$UID" != "0" ] && msg "${color_yellow}(check integrity is recommended run as root user or using sudo)${color_reset}"
|
|
[ ! "$MISSING_FILE" ] && msg "Your system file is consistent with package tree."
|
|
|
|
}
|
|
|
|
showpackageinfo() {
|
|
|
|
if [ ! -f $PACKAGE_INFO ]; then
|
|
msg "${color_red}$PACKAGE_INFO${color_reset} not exist."
|
|
exit 1
|
|
else
|
|
if [ $(tar -tf "$PACKAGE_INFO" | grep -x ".pkginfo") ]; then
|
|
getpkginfofrompkg $PACKAGE_INFO
|
|
echo -e "${color_green}info:${color_reset}"
|
|
[ "$name" ] && echo "name = $name"
|
|
[ "$version" ] && echo "version = $version"
|
|
[ "$release" ] && echo "release = $release"
|
|
[ "$description" ] && echo "description = $description"
|
|
[ "$backup" ] && for b in ${backup[@]}; do echo "backup = $b"; done
|
|
[ "$conflict" ] && for c in ${conflict[@]}; do echo "conflict = $c"; done
|
|
[ "$depends" ] && for d in ${depends[@]}; do echo "depends = $d"; done
|
|
[ "$makedepends" ] && for md in ${makedepends[@]}; do echo "makedepends = $md"; done
|
|
echo ""
|
|
if [ $(tar -tf "$PACKAGE_INFO" | grep -x ".pkgreadme") ]; then
|
|
echo -e "${color_green}readme:${color_reset}"
|
|
tar -xf $PACKAGE_INFO .pkgreadme -O
|
|
echo ""
|
|
echo ""
|
|
fi
|
|
if [ $(tar -tf "$PACKAGE_INFO" | grep -x ".pkginstall") ]; then
|
|
echo -e "${color_green}pkginstall files:${color_reset}"
|
|
tar -xf $PACKAGE_INFO .pkginstall -O
|
|
echo ""
|
|
fi
|
|
else
|
|
msg "${color_yellow}$PACKAGE_INFO${color_reset} is not package created by scratchpkg."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
}
|
|
|
|
showdepends() {
|
|
|
|
for portdepends in ${PORT_REPO[@]}; do
|
|
if [ -f $portdepends/$PACKAGE_DEPENDS/$BUILD_SCRIPT ]; then
|
|
pushd $portdepends/$PACKAGE_DEPENDS
|
|
getpkginfo
|
|
popd
|
|
break
|
|
fi
|
|
done
|
|
if [ -z $name ]; then
|
|
msgerr "Port ${color_red}$PACKAGE_DEPENDS${color_reset} not exist."
|
|
exit 1
|
|
fi
|
|
|
|
for dep in ${depends[@]}; do
|
|
if [ -d $INDEX_DIR/$dep ]; then
|
|
msg2 "$dep ${color_green}[installed]${color_reset}"
|
|
else
|
|
PORT_EXIST=no
|
|
for port in ${PORT_REPO[@]}; do
|
|
if [ -f $port/$dep/$BUILD_SCRIPT ]; then
|
|
PORT_EXIST=yes
|
|
break
|
|
fi
|
|
done
|
|
case $PORT_EXIST in
|
|
yes) msg2 "$dep" ;;
|
|
no) msg2 "$dep ${color_red}[port not exist]${color_reset}" ;;
|
|
esac
|
|
fi
|
|
done
|
|
|
|
for mdep in ${makedepends[@]}; do
|
|
if [ -d $INDEX_DIR/$mdep ]; then
|
|
msg2 "$mdep ${color_cyan}(make)${color_reset} ${color_green}[installed]${color_reset}"
|
|
else
|
|
PORT_EXIST=no
|
|
for port in ${PORT_REPO[@]}; do
|
|
if [ -f $port/$mdep/$BUILD_SCRIPT ]; then
|
|
PORT_EXIST=yes
|
|
break
|
|
fi
|
|
done
|
|
case $PORT_EXIST in
|
|
yes) msg2 "$mdep ${color_cyan}(make)${color_reset}" ;;
|
|
no) msg2 "$mdep ${color_cyan}(make)${color_reset} ${color_red}[port not exist]${color_reset}" ;;
|
|
esac
|
|
fi
|
|
done
|
|
}
|
|
|
|
showupdate() {
|
|
|
|
for package_name in $(ls $INDEX_DIR); do
|
|
for port in ${PORT_REPO[@]}; do
|
|
if [ -f $port/$package_name/$BUILD_SCRIPT ]; then
|
|
. $port/$package_name/$BUILD_SCRIPT
|
|
getinstalledname $name
|
|
if [ "$name-$version-$release" != "$installedname" ]; then
|
|
msg "$name ${color_red}$iversion-$irelease${color_reset} => ${color_green}$version-$release${color_reset}"
|
|
OUTDATE=yes
|
|
fi
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
|
|
[ ! "$OUTDATE" ] && msg "All package is up to date."
|
|
}
|
|
|
|
showdependent() {
|
|
|
|
if [ ! -d $INDEX_DIR/$PACKAGE_DEPENDENT ]; then
|
|
msg "Package ${color_red}$PACKAGE_DEPENDENT${color_reset} not installed."
|
|
exit 1
|
|
else
|
|
for all_installed in $(ls $INDEX_DIR); do
|
|
depend=$(cat $INDEX_DIR/$all_installed/.pkginfo | grep ^depends | cut -d " " -f3-)
|
|
for dep in ${depend[@]}; do
|
|
if [ $dep = $PACKAGE_DEPENDENT ]; then
|
|
msg2 "$all_installed"
|
|
fi
|
|
done
|
|
makedepend=$(cat $INDEX_DIR/$all_installed/.pkginfo | grep ^makedepends | cut -d " " -f3-)
|
|
for mdep in ${makedepend[@]}; do
|
|
if [ $mdep = $PACKAGE_DEPENDENT ]; then
|
|
msg2 "$all_installed ${color_cyan}(make)${color_reset}"
|
|
fi
|
|
done
|
|
done
|
|
fi
|
|
}
|
|
|
|
showglobaldependent() {
|
|
|
|
for port in ${PORT_REPO[@]}; do
|
|
if [ -d $port ]; then
|
|
for all in $(ls $port); do
|
|
if [ -f $port/$all/$BUILD_SCRIPT ]; then
|
|
depend=$(cat $port/$all/$BUILD_SCRIPT | grep ^'# depends' | tr -d ':' | cut -d " " -f3-)
|
|
for dep in ${depend[@]}; do
|
|
if [ $dep = $GLOBAL_PACKAGE_DEPENDENT ]; then
|
|
if [ -d $INDEX_DIR/$all ]; then
|
|
msg2 "$all ${color_green}[installed]${color_reset}"
|
|
else
|
|
msg2 "$all"
|
|
fi
|
|
fi
|
|
done
|
|
makedepend=$(cat $port/$all/$BUILD_SCRIPT | grep ^'# makedepends' | tr -d ':' | cut -d " " -f3-)
|
|
for mdep in ${makedepend[@]}; do
|
|
if [ $mdep = $GLOBAL_PACKAGE_DEPENDENT ]; then
|
|
if [ -d $INDEX_DIR/$all ]; then
|
|
msg2 "$all ${color_cyan}(make)${color_reset} ${color_green}[installed]${color_reset}"
|
|
else
|
|
msg2 "$all ${color_cyan}(make)${color_reset}"
|
|
fi
|
|
fi
|
|
done
|
|
fi
|
|
done
|
|
fi
|
|
done
|
|
}
|
|
|
|
catport() {
|
|
|
|
for cat in ${PORT_REPO[@]}; do
|
|
if [ -d $cat ]; then
|
|
if [ -f $cat/$CAT_PORT/$BUILD_SCRIPT ]; then
|
|
cat $cat/$CAT_PORT/$BUILD_SCRIPT
|
|
break
|
|
fi
|
|
fi
|
|
done
|
|
|
|
}
|
|
|
|
showportpath() {
|
|
|
|
for path in ${PORT_REPO[@]}; do
|
|
if [ -d $cat ]; then
|
|
if [ -d $path/$PORT_PATH ]; then
|
|
msg "$path/$PORT_PATH"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
}
|
|
|
|
getpkgcache() {
|
|
|
|
for list in $(ls "$PACKAGE_DIR"); do
|
|
[ -f "$PACKAGE_DIR"/$list ] && ALL_PACKAGES+=($list)
|
|
done
|
|
|
|
for list in $(ls "$SOURCE_DIR"); do
|
|
[ -f "$SOURCE_DIR"/$list ] && ALL_SOURCES+=($list)
|
|
done
|
|
|
|
for repo in ${PORT_REPO[@]}; do
|
|
for port in $(ls $repo); do
|
|
if [ -f $repo/$port/$BUILD_SCRIPT ]; then
|
|
. $repo/$port/$BUILD_SCRIPT
|
|
PORT_PACKAGES+=($name-$version-$release.spkg.txz)
|
|
if [ ! -z $source ]; then
|
|
for src in ${source[@]}; do
|
|
if [ $(echo $src | grep -E "(ftp|http|https)://") ]; then
|
|
if [ $(echo $src | grep -E "::(ftp|http|https)://") ]; then
|
|
sourcename="$(echo $src | awk -F '::' '{print $1}')"
|
|
else
|
|
sourcename="$(echo $src | rev | cut -d / -f 1 | rev)"
|
|
fi
|
|
SOURCE_NAMES+=($sourcename)
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
done
|
|
done
|
|
|
|
for i in ${PORT_PACKAGES[@]}; do
|
|
for pkg in ${!ALL_PACKAGES[@]}; do
|
|
if [ "${ALL_PACKAGES[pkg]}" = "$i" ]; then
|
|
unset 'ALL_PACKAGES[pkg]'
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
|
|
for a in ${SOURCE_NAMES[@]}; do
|
|
for src in ${!ALL_SOURCES[@]}; do
|
|
if [ "${ALL_SOURCES[src]}" = "$a" ]; then
|
|
unset 'ALL_SOURCES[src]'
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
}
|
|
|
|
pkgcache() {
|
|
|
|
getpkgcache
|
|
|
|
if [ ${#ALL_PACKAGES[@]} -gt 0 ]; then
|
|
ALL_PACKAGES_SIZE=$(pushd "$PACKAGE_DIR" && du -ch ${ALL_PACKAGES[@]} | grep total | awk '{print $1}' && popd)
|
|
else
|
|
ALL_PACKAGES_SIZE=0M
|
|
fi
|
|
|
|
if [ ${#ALL_SOURCES[@]} -gt 0 ]; then
|
|
ALL_SOURCES_SIZE=$(pushd "$SOURCE_DIR" && du -ch ${ALL_SOURCES[@]} | grep total | awk '{print $1}' && popd)
|
|
else
|
|
ALL_SOURCES_SIZE=0M
|
|
fi
|
|
|
|
msg "${color_cyan}Package cache ($ALL_PACKAGES_SIZE):${color_reset}"
|
|
[ ${#ALL_PACKAGES[@]} -gt 0 ] && (echo ${ALL_PACKAGES[@]} | tr ' ' '\n') || echo "(none)"
|
|
|
|
echo ""
|
|
msg "${color_cyan}Source cache ($ALL_SOURCES_SIZE):${color_reset}"
|
|
[ ${#ALL_SOURCES[@]} -gt 0 ] && (echo ${ALL_SOURCES[@]} | tr ' ' '\n') || echo "(none)"
|
|
|
|
}
|
|
|
|
clearpkgcache() {
|
|
|
|
needroot "Removing package & source cache"
|
|
|
|
getpkgcache
|
|
|
|
if [ ${#ALL_PACKAGES[@]} -gt 0 ]; then
|
|
for pkg in ${ALL_PACKAGES[@]}; do
|
|
rm -v $PACKAGE_DIR/$pkg
|
|
done
|
|
fi
|
|
|
|
if [ ${#ALL_SOURCES[@]} -gt 0 ]; then
|
|
for src in ${ALL_SOURCES[@]}; do
|
|
rm -v $SOURCE_DIR/$src
|
|
done
|
|
fi
|
|
|
|
}
|
|
|
|
updports() {
|
|
|
|
checktool httpup
|
|
|
|
needroot "Updating ports"
|
|
|
|
for repo in ${PORT_REPO[@]}; do
|
|
portname=$(basename $(echo $repo))
|
|
if [ -f /etc/ports/$portname.httpup ]; then
|
|
. /etc/ports/$portname.httpup
|
|
httpup sync $URL $repo
|
|
fi
|
|
done
|
|
|
|
}
|
|
|
|
duplicateports() {
|
|
|
|
dup=$(find ${PORT_REPO[@]} -type d -print | egrep -xv "($(echo ${PORT_REPO[@]} | tr ' ' '|'))" | \
|
|
rev | cut -d '/' -f1 | rev | sort | uniq -d)
|
|
|
|
if [ "$dup" ]; then
|
|
for dp in $dup; do
|
|
for repo in ${PORT_REPO[@]}; do
|
|
reponame=$(basename $repo)
|
|
[ -d $repo/$dp ] && echo "$repo/$dp"
|
|
done
|
|
done
|
|
else
|
|
msg "No duplicate ports found."
|
|
fi
|
|
|
|
}
|
|
|
|
interrupted() {
|
|
exit 1
|
|
}
|
|
|
|
pushtoport() {
|
|
|
|
for port in ${PORT_REPO[@]}; do
|
|
if [ -f $port/$PORTNAME/$BUILD_SCRIPT ]; then
|
|
PORT_EXIST=yes
|
|
pushd $port/$PORTNAME
|
|
INSTALL_PKG="$INSTALL_PKG" \
|
|
UPGRADE_PKG="$UPGRADE_PKG" \
|
|
REINSTALL_PKG="$REINSTALL_PKG" \
|
|
IGNORE_DEP="$IGNORE_DEP" \
|
|
IGNORE_CONFLICT="$IGNORE_CONFLICT" \
|
|
VERBOSE_INSTALL="$VERBOSE_INSTALL" \
|
|
FORCE_REBUILD="$FORCE_REBUILD" \
|
|
IGNORE_MDSUM="$IGNORE_MDSUM" \
|
|
UPDATE_MDSUM="$UPDATE_MDSUM" \
|
|
DOWNLOAD_ONLY="$DOWNLOAD_ONLY" \
|
|
EXTRACT_ONLY="$EXTRACT_ONLY" \
|
|
KEEP_WORK="$KEEP_WORK" \
|
|
REDOWNLOAD_SOURCE="$REDOWNLOAD_SOURCE" \
|
|
SOURCE_PKG="$SOURCE_PKG" \
|
|
OUTPUT_PKG="$OUTPUT_PKG" \
|
|
NO_COLOR="$NO_COLOR" \
|
|
buildpkg || exit 1
|
|
popd
|
|
break
|
|
fi
|
|
done
|
|
|
|
[ ! "$PORT_EXIST" ] && msgerr "Port ${color_red}$PORTNAME${color_reset} not found."
|
|
}
|
|
|
|
showhelp() {
|
|
|
|
echo "Usage:"
|
|
echo " $(basename $0) [ <options> <arguments> ]"
|
|
echo
|
|
echo "Options:"
|
|
echo " -i, --install install package"
|
|
echo " -u, --upgrade upgrade package"
|
|
echo " -r, --reinstall reinstall package"
|
|
echo " -id, --ignore-dependency skip dependency check"
|
|
echo " -ic, --ignore-conflict skip file/package conflict check"
|
|
echo " -fr, --force-rebuild rebuild package"
|
|
echo " -sd, --source-dir set directory path for sources"
|
|
echo " -o, --output set directory path for compiled package"
|
|
echo " -v, --verbose verbose process"
|
|
echo " -im, --ignore-mdsum skip md5sum check for sources"
|
|
echo " -um, --update-mdsum update md5sum file for port"
|
|
echo " -do, --download-only download sources only"
|
|
echo " -eo, --extract-only extract sources only"
|
|
echo " -kw, --keep-work keep working directory"
|
|
echo " -rd, --redownload re-download sources"
|
|
echo " --no-preinstall don't run pre-install script"
|
|
echo " --no-postinstall don't run post-install script"
|
|
echo " --no-backup skip backup when upgrading package"
|
|
echo " -dup,--duplicate-ports list duplicate ports"
|
|
echo " -l, --list-installed show list installed packages"
|
|
echo " -lo, --list-orphan show list orphaned packages installed"
|
|
echo " -ci, --check-integrity check integrity between package's index and files in system"
|
|
echo " -cu, --check-update check for package update"
|
|
echo " --cache show old package and source caches"
|
|
echo " --clear-cache remove all old package and source caches"
|
|
echo " -up, --update-ports update port's repository"
|
|
echo " --info show $(basename $0)pkg info (setting)"
|
|
echo " -c, --cat-port cat port's buildscript ($BUILD_SCRIPT)"
|
|
echo " -dp, --dependent show package's dependent (check through package index)"
|
|
echo " -gdp,--global-dependent show package's dependent (check through port's repository)"
|
|
echo " -d, --depends show package's depends"
|
|
echo " -pi, --package-info show package's info"
|
|
echo " -co, --check-owner show file's owner"
|
|
echo " -p, --package set package name to build/install"
|
|
echo " -st, --show-tree show list files of installed package"
|
|
echo " -s, --search search for packages in port's repository"
|
|
echo " -t, --create-template create port's template for package"
|
|
echo " --path show ports directory path"
|
|
echo " --no-color disable colour for output"
|
|
echo " -h, --help show this help message"
|
|
echo
|
|
echo "Example:"
|
|
echo " $(basename $0) -p firefox -id -kw -i build, keep working dir, ignore missing dependency"
|
|
echo " and then install firefox"
|
|
echo
|
|
echo " $(basename $0) -r -fr -im -p firefox rebuild, skip md5sum check for sources and then"
|
|
echo " reinstall firefox"
|
|
|
|
}
|
|
|
|
parse_options() {
|
|
|
|
while [ "$1" ]; do
|
|
case $1 in
|
|
-i|--install)
|
|
INSTALL_PKG=yes
|
|
;;
|
|
-u|--upgrade)
|
|
UPGRADE_PKG=yes
|
|
;;
|
|
-r|--reinstall)
|
|
REINSTALL_PKG=yes
|
|
;;
|
|
-id|--ignore-dependency)
|
|
IGNORE_DEP=yes
|
|
;;
|
|
-ic|--ignore-conflict)
|
|
IGNORE_CONFLICT=yes
|
|
;;
|
|
--no-preinstall)
|
|
NO_PREINSTALL=yes
|
|
;;
|
|
--no-postinstall)
|
|
NO_POSTINSTALL=yes
|
|
;;
|
|
-fr|--force-rebuild)
|
|
FORCE_REBUILD=yes
|
|
;;
|
|
-v|--verbose)
|
|
VERBOSE_INSTALL=yes
|
|
;;
|
|
-im|--ignore-mdsum)
|
|
IGNORE_MDSUM=yes
|
|
;;
|
|
-um|--update-mdsum)
|
|
UPDATE_MDSUM=yes
|
|
;;
|
|
-do|--download-only)
|
|
DOWNLOAD_ONLY=yes
|
|
;;
|
|
-eo|--extract-only)
|
|
EXTRACT_ONLY=yes
|
|
;;
|
|
-kw|--keep-work)
|
|
KEEP_WORK=yes
|
|
;;
|
|
-rd|--redownload)
|
|
REDOWNLOAD_SOURCE=yes
|
|
;;
|
|
--no-backup)
|
|
NO_BACKUP=yes
|
|
;;
|
|
-dup|--duplicate-ports)
|
|
DUPLICATE_PORTS=yes
|
|
;;
|
|
-l|--list-installed)
|
|
LIST_INSTALLED=yes
|
|
;;
|
|
-lo|--list-orphan)
|
|
LIST_ORPHAN=yes
|
|
;;
|
|
-ci|--check-integrity)
|
|
CHECK_INTEGRITY=yes
|
|
;;
|
|
-cu|--check-update)
|
|
CHECK_UPDATE=yes
|
|
;;
|
|
--no-color)
|
|
NO_COLOR=yes
|
|
;;
|
|
--cache)
|
|
PKG_CACHE=yes
|
|
;;
|
|
--clear-cache)
|
|
CLEAR_PKG_CACHE=yes
|
|
;;
|
|
-up|--update-ports)
|
|
UPD_PORTS=yes
|
|
;;
|
|
-h|--help)
|
|
SHOW_HELP=yes
|
|
;;
|
|
--info)
|
|
SHOW_INFO=yes
|
|
;;
|
|
-c|--cat-port)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (package to show its port script)"
|
|
exit 1
|
|
fi
|
|
CAT_PORT="$2"
|
|
shift
|
|
;;
|
|
-dp|--dependent)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (package to show its dependent)"
|
|
exit 1
|
|
fi
|
|
PACKAGE_DEPENDENT="$2"
|
|
shift
|
|
;;
|
|
-gdp|--global-dependent)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (package to show its dependent)"
|
|
exit 1
|
|
fi
|
|
GLOBAL_PACKAGE_DEPENDENT="$2"
|
|
shift
|
|
;;
|
|
-d|--depends)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (package name to show its depends)"
|
|
exit 1
|
|
fi
|
|
PACKAGE_DEPENDS="$2"
|
|
shift
|
|
;;
|
|
-pi|--package-info)
|
|
if [ ! "$2" ] || [ ! "$(echo $2 | grep '.spkg.txz')" ]; then
|
|
msg "Option '$1' require an argument (package '*.spkg.txz' to show its info)."
|
|
exit 1
|
|
fi
|
|
PACKAGE_INFO="$2"
|
|
shift
|
|
;;
|
|
-co|--check-owner)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (file name to show its owner)."
|
|
exit 1
|
|
fi
|
|
OWNER_FILE_NAME="$2"
|
|
shift
|
|
;;
|
|
-st|--show-tree)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (package name to show tree)."
|
|
exit 1
|
|
fi
|
|
TREE_PORT_NAME="$2"
|
|
shift
|
|
;;
|
|
-s|--search)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (package name to search)."
|
|
exit 1
|
|
fi
|
|
SEARCH_PKG="$2"
|
|
shift
|
|
;;
|
|
-p|--package)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (package name to install/build)."
|
|
exit 1
|
|
fi
|
|
PORTNAME="$2"
|
|
shift
|
|
;;
|
|
-t|--create-template)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (port name to create template)."
|
|
exit 1
|
|
fi
|
|
TEMPLATE_NAME="$2"
|
|
shift
|
|
;;
|
|
--path)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (package name to show its path)"
|
|
exit 1
|
|
fi
|
|
PORT_PATH="$2"
|
|
shift
|
|
;;
|
|
-sd|--source-dir)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (source path for package)."
|
|
exit 1
|
|
fi
|
|
SOURCE_PKG="$2"
|
|
shift
|
|
;;
|
|
-o|--output)
|
|
if [ ! "$2" ]; then
|
|
msg "Option '$1' require an argument (output path for compiled package)."
|
|
exit 1
|
|
fi
|
|
OUTPUT_PKG="$2"
|
|
shift
|
|
;;
|
|
*)
|
|
msg "Option invalid!"
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
}
|
|
|
|
main() {
|
|
|
|
parse_options "$@"
|
|
|
|
### DISABLE COLOR ###
|
|
if [ "$NO_COLOR" ]; then
|
|
nocolor
|
|
fi
|
|
|
|
### SHOW SCRATCHPKG INFO ###
|
|
if [ "$SHOW_INFO" ]; then
|
|
showinfo
|
|
exit 0
|
|
fi
|
|
|
|
### SHOW SCRATCHPKG HELP ###
|
|
if [ "$SHOW_HELP" ]; then
|
|
showhelp
|
|
exit 0
|
|
fi
|
|
|
|
### SHOW SCRATCHPKG INFO ###
|
|
if [ "$DUPLICATE_PORTS" ]; then
|
|
duplicateports
|
|
exit 0
|
|
fi
|
|
|
|
checkdirexist "$INDEX_DIR"
|
|
|
|
### UPDATE PORTS ###
|
|
if [ $UPD_PORTS ]; then
|
|
updports
|
|
exit 0
|
|
fi
|
|
|
|
### LIST PACKAGES & SOURCE CACHE ###
|
|
if [ $PKG_CACHE ]; then
|
|
pkgcache
|
|
exit 0
|
|
fi
|
|
|
|
### DELETE PACKAGES & SOURCE CACHE ###
|
|
if [ $CLEAR_PKG_CACHE ]; then
|
|
clearpkgcache
|
|
exit 0
|
|
fi
|
|
|
|
### SHOW PORT PATH ###
|
|
if [ $PORT_PATH ]; then
|
|
showportpath
|
|
exit 0
|
|
fi
|
|
|
|
### CAT PORT ###
|
|
if [ $CAT_PORT ]; then
|
|
catport
|
|
exit 0
|
|
fi
|
|
|
|
### CREATE PORT TEMPLATE ###
|
|
if [ $TEMPLATE_NAME ]; then
|
|
createtemplate
|
|
exit 0
|
|
fi
|
|
|
|
### SHOW DEPENDENT (search through only installed package) ###
|
|
if [ $PACKAGE_DEPENDENT ]; then
|
|
showdependent
|
|
exit 0
|
|
fi
|
|
|
|
### SHOW GLOBAL DEPENDENT (search through ports repo) ###
|
|
if [ $GLOBAL_PACKAGE_DEPENDENT ]; then
|
|
showglobaldependent
|
|
exit 0
|
|
fi
|
|
|
|
### SHOW DEPENDS OF A PACKAGE ###
|
|
if [ $PACKAGE_DEPENDS ]; then
|
|
showdepends
|
|
exit 0
|
|
fi
|
|
|
|
### CHECK_UPDATE ###
|
|
if [ $CHECK_UPDATE ]; then
|
|
showupdate
|
|
exit 0
|
|
fi
|
|
|
|
### SHOW INFO OF A PACKAGE ###
|
|
if [ $PACKAGE_INFO ]; then
|
|
showpackageinfo
|
|
exit 0
|
|
fi
|
|
|
|
### LIST INSTALLED ###
|
|
if [ $LIST_INSTALLED ]; then
|
|
listinstalled
|
|
exit 0
|
|
fi
|
|
|
|
### LIST ORPHAN ###
|
|
if [ $LIST_ORPHAN ]; then
|
|
listorphan
|
|
exit 0
|
|
fi
|
|
|
|
### SEARCH PACKAGE ###
|
|
if [ $SEARCH_PKG ]; then
|
|
searchpkg
|
|
exit 0
|
|
fi
|
|
|
|
### CHECK PACKAGE OWNER OF A FILE ###
|
|
if [ $OWNER_FILE_NAME ]; then
|
|
checkowner
|
|
exit 0
|
|
fi
|
|
|
|
### SHOW TREE OF A INSTALLED PACKAGE ###
|
|
if [ $TREE_PORT_NAME ]; then
|
|
showtree
|
|
exit 0
|
|
fi
|
|
|
|
### CHECK INTEGRITY ###
|
|
if [ $CHECK_INTEGRITY ]; then
|
|
checkintegrity
|
|
exit 0
|
|
fi
|
|
|
|
### BUILD PACKAGE ###
|
|
if [ $PORTNAME ]; then
|
|
pushtoport
|
|
exit 0
|
|
fi
|
|
|
|
exit 0
|
|
}
|
|
|
|
trap "interrupted" SIGHUP SIGINT SIGQUIT SIGTERM
|
|
|
|
main "$@"
|