diff options
author | Adrien Nader <adrien@notk.org> | 2012-11-03 10:30:31 +0100 |
---|---|---|
committer | Adrien Nader <adrien@notk.org> | 2012-11-03 10:30:31 +0100 |
commit | 87457e447a0cc61dbd6672099d1f67d5678bd518 (patch) | |
tree | 96194d55d50ace383b0a0e926fe61b79d1a31aa2 | |
parent | f2efdaf2a94b20801d36a0c21e4e42f32443f235 (diff) |
-rwxr-xr-x | minisbo.sh | 81 |
1 files changed, 68 insertions, 13 deletions
@@ -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 |