Add build dependencies for documentation
[ci-management.git] / vagrant / basebuild / bootstrap.sh
index 22c9a28..c8cc874 100644 (file)
-#!/bin/bash -x
+#!/bin/bash
 
 # die on errors
 set -e
 
-# Redirect stdout ( 1> ) and stderr ( 2> ) into named pipes ( >() ) running "tee"
-#exec 1> >(tee -i /tmp/bootstrap-out.log)
-#exec 2> >(tee -i /tmp/bootstrap-err.log)
+# pull in bootstrap functions
+. /vagrant/lib/bootstrap-functions.sh
 
-ubuntu_systems() {
+do_setup
 
-    PACKAGES="" # initialize PACKAGES
-
-    if [ $? == 0 ]
-    then
-        VERSION=$(lsb_release -r | awk '{print $2}')
-        DIST=$(lsb_release -i | awk '{print $3}')
-        CODENAME=$(lsb_release -c | awk '{print $2}')
-    else
-        ISSUE_TXT=$(head -1 /etc/issue)
-        DIST=$(echo "${ISSUE_TXT}" | awk '{print $1}')
-        if [ "$DIST" = "Ubuntu" ]
-        then
-            VERSION=$(echo "${ISSUE_TXT}" | awk '{print $2}' | sed -e 's/^(\d+\.\d+)(\.\d+)?$/\1/')
-        elif [ "$DIST" = "Debian" ]
-        then
-            VERSION=$(echo "${ISSUE_TXT}" | awk '{print $3}')
-        else
-            echo "Unrecognized distribution: ${DIST}"
-        fi
-    fi
-
-    echo "---> Detected [${DIST} v${VERSION} (${CODENAME})]"
+echo "---> Attempting to detect OS"
+# OS selector
+if [ -f /usr/bin/yum ]
+then
+    echo "---> RH type system detected"
+    rh_clean_pkgs
+    rh_update_pkgs
+    rh_install_pkgs
 
+elif [ -f /usr/bin/apt-get ]
+then
+    echo "---> Debian type system detected"
     export DEBIAN_FRONTEND=noninteractive
-    cat <<EOF >> /etc/apt/apt.conf
-APT {
-  Get {
-    Assume-Yes "true";
-    allow-change-held-packages "true";
-    allow-downgrades "true";
-    allow-remove-essential "true";
-  };
-};
-
-Dpkg::Options {
-   "--force-confdef";
-   "--force-confold";
-};
-
-EOF
-
-    # Install plymouth labels and themes to get rid of initrd warnings / errors
-    if [ "$VERSION" = '14.04' ]
-    then
-
-        # openjdk-8-jdk is not available in 14.04 repos by default
-        add-apt-repository ppa:openjdk-r/ppa
-
-        # Install OpenJDK
-        PACKAGES="$PACKAGES openjdk-8-jdk-headless"
-
-        # Install Oracle's jdk version 8
-#        apt-add-repository -y ppa:webupd8team/java
-#        apt-get -qq update
-#        echo "debconf shared/accepted-oracle-license-v1-1 select true
-#              debconf shared/accepted-oracle-license-v1-1 seen true" | sudo debconf-set-selections
-#        PACKAGES="$PACKAGES oracle-java8-installer"
-    else
-        # Install default jdk and plymouth packages
-        PACKAGES="$PACKAGES plymouth-themes plymouth-label default-jdk-headless"
-    fi
-
-
-    echo '---> Updating OS'
-    # Standard update + upgrade dance
-    apt-get -qq update
-    apt-get -qq upgrade
-    apt-get -qq dist-upgrade
-
-    # Fix the silly notion that /bin/sh should point to dash by pointing it to bash
-
-    update-alternatives --install /bin/sh sh /bin/bash 100
-
-    # Install build tools
-    PACKAGES="$PACKAGES build-essential autoconf automake bison libssl-dev ccache libtool git dkms debhelper libganglia1-dev libapr1-dev libconfuse-dev"
 
-    # Install interface manipulation tools, editor, debugger and lsb
-    PACKAGES="$PACKAGES iproute2 bridge-utils vim gdb lsb-release"
+    deb_enable_serial_console
+    deb_aptconf_batchconf
+    deb_sync_minor
+    deb_correct_shell
+    deb_install_pkgs
+    deb_remove_pkgs
+    deb_disable_apt_systemd_daily
+    deb_flush
+    deb_reup_certs
 
-    # Install debian packaging tools
-    PACKAGES="$PACKAGES debhelper dh-systemd dkms"
-
-    # Install latest kernel and uio
-    PACKAGES="$PACKAGES linux-image-extra-virtual"
-
-    # $$$ comment out for the moment
-    # PACKAGES="$PACKAGES maven3"
-
-    # Install virtualenv for test execution
-    PACKAGES="$PACKAGES python-virtualenv python-pip python-dev"
-
-    echo '---> Installing packages'
-    # disable double quoting check
-    # shellcheck disable=SC2086 
-    apt-get -qq install ${PACKAGES}
-    apt-get -qq autoremove
-    apt-get -qq clean
-
-    # update CA certificates
-    echo '---> Forcing CA certificate update'
-    update-ca-certificates -f
-
-    # It is not necessary to load the uio kernel module during the bootstrap phase
-#    modprobe uio_pci_generic
+    # It is not necessary to load uio module during bootstrap phase
+    # deb_probe_modules uio_pci_generic
 
     # Make sure uio loads at boot time
-    echo uio_pci_generic >> /etc/modules
-
-    # Setup for hugepages using sysctl so it persists across reboots
-    sysctl -w vm.nr_hugepages=1024
-
-    mkdir -p /mnt/huge
-    echo "hugetlbfs       /mnt/huge  hugetlbfs       defaults        0 0" >> /etc/fstab
-    mount /mnt/huge
-
-}
+    deb_enable_modules 'uio_pci_generic'
 
-rh_systems() {
-    echo '---> Updating OS'
-    yum clean all -q
-    yum upgrade -q -y
+    deb_enable_hugepages
 
-    echo '---> Installing tools'
-    yum install -q -y @development openssl-devel glibc-static
+    # It is not necessary to mount hugepages during bootstrap phase
+    # deb_mount_hugepages
 
-    # Install jdk and maven
-    yum install -q -y java-1.8.0-openjdk-devel
-
-    # Install python development
-    yum search python34-devel 2>&1 | grep -q 'No matches'
-    if [ $? -eq 0 ]
-    then
-       echo '---> Installing python-devel'
-        yum install -q -y python-devel
-    else
-       echo '---> Installying python34-devel'
-        yum install -q -y python34-devel
-    fi
-
-    echo '---> Configuring EPEL'
-    # Install EPEL
-    yum install -q -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
-
-    # Install components to build Ganglia modules
-    yum install -q -y {apr,libconfuse,ganglia}-devel mock
-}
-
-echo "---> Attempting to detect OS"
-# OS selector
-if [ -f /usr/bin/yum ]
-then
-    OS='RH'
-else
-    OS='UBUNTU'
 fi
 
-case "$OS" in
-    RH)
-        echo "---> RH type system detected"
-        rh_systems
-    ;;
-    UBUNTU)
-        echo "---> Ubuntu system detected"
-        ubuntu_systems
-    ;;
-    *)
-        echo "---> Unknown operating system"
-    ;;
-esac
+do_cleanup
 
 echo "bootstrap process (PID=$$) complete."
 
-#exec 1>&- # close STDOUT
-#exec 2>&- # close STDERR
-
 exit 0