| #!/usr/bin/env bash |
| |
| # **install_prereqs.sh** |
| |
| # Install system package prerequisites |
| # |
| # install_prereqs.sh [-f] |
| # |
| # -f Force an install run now |
| |
| FORCE_PREREQ=0 |
| |
| while getopts ":f" opt; do |
| case $opt in |
| f) |
| FORCE_PREREQ=1 |
| ;; |
| esac |
| done |
| |
| # If ``TOP_DIR`` is set we're being sourced rather than running stand-alone |
| # or in a sub-shell |
| if [[ -z "$TOP_DIR" ]]; then |
| # Keep track of the DevStack directory |
| TOP_DIR=$(cd $(dirname "$0")/.. && pwd) |
| |
| # Import common functions |
| source $TOP_DIR/functions |
| |
| # Determine what system we are running on. This provides ``os_VENDOR``, |
| # ``os_RELEASE``, ``os_PACKAGE``, ``os_CODENAME`` |
| # and ``DISTRO`` |
| GetDistro |
| |
| # Needed to get ``ENABLED_SERVICES`` |
| source $TOP_DIR/stackrc |
| |
| # Prereq dirs are here |
| FILES=$TOP_DIR/files |
| fi |
| |
| # Minimum wait time |
| PREREQ_RERUN_MARKER=${PREREQ_RERUN_MARKER:-$TOP_DIR/.prereqs} |
| PREREQ_RERUN_HOURS=${PREREQ_RERUN_HOURS:-2} |
| PREREQ_RERUN_SECONDS=$((60*60*$PREREQ_RERUN_HOURS)) |
| |
| NOW=$(date "+%s") |
| LAST_RUN=$(head -1 $PREREQ_RERUN_MARKER 2>/dev/null || echo "0") |
| DELTA=$(($NOW - $LAST_RUN)) |
| if [[ $DELTA -lt $PREREQ_RERUN_SECONDS && -z "$FORCE_PREREQ" ]]; then |
| echo "Re-run time has not expired ($(($PREREQ_RERUN_SECONDS - $DELTA)) seconds remaining) " |
| echo "and FORCE_PREREQ not set; exiting..." |
| return 0 |
| fi |
| |
| # Make sure the proxy config is visible to sub-processes |
| export_proxy_variables |
| |
| |
| # Install Packages |
| # ================ |
| |
| # Install package requirements |
| PACKAGES=$(get_packages general,$ENABLED_SERVICES) |
| PACKAGES="$PACKAGES $(get_plugin_packages)" |
| |
| if is_ubuntu && echo $PACKAGES | grep -q dkms ; then |
| # Ensure headers for the running kernel are installed for any DKMS builds |
| PACKAGES="$PACKAGES linux-headers-$(uname -r)" |
| fi |
| |
| install_package $PACKAGES |
| |
| if [[ -n "$SYSLOG" && "$SYSLOG" != "False" ]]; then |
| if is_ubuntu || is_fedora; then |
| install_package rsyslog-relp |
| elif is_suse; then |
| install_package rsyslog-module-relp |
| else |
| exit_distro_not_supported "rsyslog-relp installation" |
| fi |
| fi |
| |
| |
| # Mark end of run |
| # --------------- |
| |
| date "+%s" >$PREREQ_RERUN_MARKER |
| date >>$PREREQ_RERUN_MARKER |