diff --git a/files/rpms/general b/files/rpms/general index fc3412ba4b..764b602da0 100644 --- a/files/rpms/general +++ b/files/rpms/general @@ -1,14 +1,19 @@ bridge-utils curl +dbus euca2ools # only for testing client +gcc # dist:rhel6 [2] git-core openssh-server openssl +libxml2-devel # dist:rhel6 [2] +libxslt-devel # dist:rhel6 [2] psmisc pylint python-netaddr python-pep8 python-pip +python-prettytable # dist:rhel6 [1] python-unittest2 python-virtualenv screen @@ -16,3 +21,12 @@ tar tcpdump unzip wget + +# [1] : some of installed tools have unversioned dependencies on this, +# but others have versioned (<=0.7). So if a later version (0.7.1) +# gets installed in response to an unversioned dependency, it breaks. +# This pre-installs a compatible 0.6(ish) version from RHEL + +# [2] : RHEL6 rpm versions of python-lxml is old, and has to be +# removed. Several tools rely on it, so we install the dependencies +# pip needs to build it here (see tools/install_prereqs.sh) \ No newline at end of file diff --git a/files/rpms/glance b/files/rpms/glance index 34e3f9ada1..097cf3f7e0 100644 --- a/files/rpms/glance +++ b/files/rpms/glance @@ -1,3 +1,4 @@ +gcc libxml2-devel python-argparse python-devel diff --git a/stack.sh b/stack.sh index e192588c94..d534b87ddb 100755 --- a/stack.sh +++ b/stack.sh @@ -525,7 +525,6 @@ failed() { # an error. It is also useful for following along as the install occurs. set -o xtrace - # Install Packages # ================ @@ -546,6 +545,42 @@ if is_service_enabled q-agt; then install_quantum_agent_packages fi +# +# System-specific preconfigure +# ============================ + +if [[ is_fedora && $DISTRO =~ (rhel6) ]]; then + # An old version (2.0.1) of python-crypto is probably installed on + # a fresh system, via the dependency chain + # cas->python-paramiko->python-crypto (related to anaconda). + # Unfortunately, "pip uninstall pycrypto" will remove the + # .egg-info file for this rpm-installed version, but leave most of + # the actual library files behind in /usr/lib64/python2.6/Crypto. + # When later "pip install pycrypto" happens, the built library + # will be installed over these existing files; the result is a + # useless mess of old, rpm-packaged files and pip-installed files. + # Unsurprisingly, the end result is it doesn't work. Thus we have + # to get rid of it now so that any packages that pip-install + # pycrypto get a "clean slate". + # (note, we have to be careful about other RPM packages specified + # pulling in python-crypto as well. That's why RHEL6 doesn't + # install python-paramiko packages for example...) + uninstall_package python-crypto + + # A similar thing happens for python-lxml (a dependency of + # ipa-client, an auditing thing we don't care about). We have the + # build-dependencies the lxml pip-install will need (gcc, + # libxml2-dev & libxslt-dev) in the "general" rpm lists + uninstall_package python-lxml + + # If the dbus rpm was installed by the devstack rpm dependencies + # then you may hit a bug where the uuid isn't generated because + # the service was never started (PR#598200), causing issues for + # Nova stopping later on complaining that + # '/var/lib/dbus/machine-id' doesn't exist. + sudo service messagebus restart +fi + TRACK_DEPENDS=${TRACK_DEPENDS:-False} # Install python packages into a virtualenv so that we can track them @@ -559,7 +594,6 @@ if [[ $TRACK_DEPENDS = True ]]; then $DEST/.venv/bin/pip freeze > $DEST/requires-pre-pip fi - # Check Out and Install Source # ---------------------------- diff --git a/tools/install_prereqs.sh b/tools/install_prereqs.sh index 7c4386f903..68f11ce35e 100755 --- a/tools/install_prereqs.sh +++ b/tools/install_prereqs.sh @@ -42,7 +42,8 @@ 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); exiting..." + echo "Re-run time has not expired ($(($PREREQ_RERUN_SECONDS - $DELTA)) seconds remaining) " + echo "and FORCE_PREREQ not set; exiting..." return 0 fi