| # lib/stackforge | 
 | # | 
 | # Functions to install stackforge libraries that we depend on so | 
 | # that we can try their git versions during devstack gate. | 
 | # | 
 | # This is appropriate for python libraries that release to pypi and are | 
 | # expected to be used beyond OpenStack like, but are requirements | 
 | # for core services in global-requirements. | 
 | # | 
 | #     * wsme | 
 | #     * pecan | 
 | # | 
 | # This is not appropriate for stackforge projects which are early stage | 
 | # OpenStack tools | 
 |  | 
 | # Dependencies: | 
 | # ``functions`` file | 
 |  | 
 | # ``stack.sh`` calls the entry points in this order: | 
 | # | 
 | # install_stackforge | 
 |  | 
 | # Save trace setting | 
 | XTRACE=$(set +o | grep xtrace) | 
 | set +o xtrace | 
 |  | 
 |  | 
 | # Defaults | 
 | # -------- | 
 | WSME_DIR=$DEST/wsme | 
 | PECAN_DIR=$DEST/pecan | 
 |  | 
 | # Entry Points | 
 | # ------------ | 
 |  | 
 | # install_stackforge() - Collect source and prepare | 
 | function install_stackforge { | 
 |     # TODO(sdague): remove this once we get to Icehouse, this just makes | 
 |     # for a smoother transition of existing users. | 
 |     cleanup_stackforge | 
 |  | 
 |     git_clone $WSME_REPO $WSME_DIR $WSME_BRANCH | 
 |     setup_package $WSME_DIR | 
 |  | 
 |     git_clone $PECAN_REPO $PECAN_DIR $PECAN_BRANCH | 
 |     setup_package $PECAN_DIR | 
 | } | 
 |  | 
 | # cleanup_stackforge() - purge possibly old versions of stackforge libraries | 
 | function cleanup_stackforge { | 
 |     # this means we've got an old version installed, lets get rid of it | 
 |     # otherwise python hates itself | 
 |     for lib in wsme pecan; do | 
 |         if ! python -c "import $lib" 2>/dev/null; then | 
 |             echo "Found old $lib... removing to ensure consistency" | 
 |             local PIP_CMD=$(get_pip_command) | 
 |             pip_install $lib | 
 |             sudo $PIP_CMD uninstall -y $lib | 
 |         fi | 
 |     done | 
 | } | 
 |  | 
 | # Restore xtrace | 
 | $XTRACE | 
 |  | 
 | # Local variables: | 
 | # mode: shell-script | 
 | # End: |