summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrien Nader <adrien@notk.org>2012-11-03 10:30:31 +0100
committerAdrien Nader <adrien@notk.org>2012-11-03 10:30:31 +0100
commit87457e447a0cc61dbd6672099d1f67d5678bd518 (patch)
tree96194d55d50ace383b0a0e926fe61b79d1a31aa2
parentf2efdaf2a94b20801d36a0c21e4e42f32443f235 (diff)
Second commit.HEADmaster
-rwxr-xr-xminisbo.sh81
1 files changed, 68 insertions, 13 deletions
diff --git a/minisbo.sh b/minisbo.sh
index 8791e66..3f3efbf 100755
--- a/minisbo.sh
+++ b/minisbo.sh
@@ -49,13 +49,17 @@ add_deps() {
tsort_input() {
for pkg in $*; do
PKG_NAME="$(basename "${pkg}")"
- for require in $(requires "${pkg}"); do
- if [ "%README%" = "${require}" ]; then
- echo "Read the README for $(basename ${pkg})!" 1>&2
- else
+ REQUIRES="$(requires "${pkg}")"
+ if [ -n "${REQUIRES}" ]; then
+ for require in ${REQUIRES}; do
+ if [ "%README%" = "${require}" ]; then
+ echo "Read the README for $(basename ${pkg})!" 1>&2
+ fi
echo "${PKG_NAME} ${require}"
- fi
- done
+ done
+ else
+ echo "${PKG_NAME} ${PKG_NAME}"
+ fi
done
}
@@ -65,6 +69,48 @@ installed_packages() {
| tr '\n' ' ' | sed 's/ $//'
}
+install_packages() {
+ for package_path in $*; do
+ package="$(basename "${package_path}")"
+ echo -e "Installing ${package}."
+ cd "${package_path}"
+ ( . "./${package}.info"
+ echo "${DOWNLOAD}" | xargs wget -c
+ export VERSION="${VERSION}"
+ bash "${package}.SlackBuild" 2>&1 | tee "/tmp/SBo/${package}.log"
+ upgradepkg --install-new --reinstall /tmp/${package}-${VERSION}*_SBo.t?z*)
+ done
+}
+
+version_of_installed_package() {
+ find '/var/log/packages/' -name "${1}-[0-9]*-*-*_SBo" -printf '%f\n' \
+ | rev | cut -f3 -d- | rev \
+ || true
+}
+
+version_of_uninstalled_package() {
+ PKG_PATH="$(find_packages "${1}")"
+ package="$(basename "${PKG_PATH}")"
+ ( . "${PKG_PATH}/${package}.info"
+ echo "${VERSION}")
+}
+
+print_package_list() {
+ for package in $*; do
+ installed="$(version_of_installed_package "${package}")"
+ uninstalled="$(version_of_uninstalled_package "${package}")"
+ if [ -n "${installed}" ]; then
+ if [ "${installed}" != "${uninstalled}" ]; then
+ echo -e "${package}: ${installed} -> ${uninstalled}"
+ else
+ echo -e "${package} (up-to-date)"
+ fi
+ else
+ echo -e "${package}: ${uninstalled} "
+ fi
+ done
+}
+
if [ "$#" -lt 1 ]; then
echo "No action mode given, aborting."
exit 1
@@ -73,8 +119,8 @@ fi
MODE="${1}"
case "${MODE}" in
- upgrade) PACKAGES="$(installed_packages)" ;;
- install)
+ upgrade*) PACKAGES="$(installed_packages)" ;;
+ install*)
if [ "$#" -le 1 ]; then
echo "Install: no package list given, aborting."
exit 1
@@ -85,12 +131,21 @@ case "${MODE}" in
*) echo "Wrong action mode given, aborting."; exit 1 ;;
esac
-PACKAGES_DEPS="$(add_deps "$(find_packages "${PACKAGES}")")"
+PACKAGES="$(find_packages "${PACKAGES}")"
-echo -e "Found $(echo ${PACKAGES_DEPS} | wc -l) packages.\n"
+if echo "${MODE}" | grep -v -q auto; then
+ PACKAGES_DEPS="$(add_deps "${PACKAGES}")"
-PACKAGES_DEPS_SORTED="$(tsort_input "${PACKAGES_DEPS}" | tsort - | tac)"
+ echo -e "Found $(echo -e ${PACKAGES_DEPS} | tr ' ' '\n' | wc -l) package(s)."
+ echo ""
-echo "\nOrdered package list for $(echo ${PACKAGES} | sed 's/ /, /g'):"
-echo "${PACKAGES_DEPS_SORTED}"
+ PACKAGES_DEPS_SORTED="$(tsort_input "${PACKAGES_DEPS}" | tsort - | tac)"
+
+ echo -e "Ordered package list:"
+ print_package_list ${PACKAGES_DEPS_SORTED}
+else
+ if [ "${MODE}" = "install-auto" ]; then
+ install_packages ${PACKAGES}
+ fi
+fi