Skip to content

Commit

Permalink
Merge pull request #2375 from craig8/bugfix/2374_pin_erlang
Browse files Browse the repository at this point in the history
Bugfix/2374 pin erlang
  • Loading branch information
craig8 authored Jun 15, 2020
2 parents e53365e + 5fe00aa commit ef2ab01
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 31 deletions.
16 changes: 5 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ You can deactivate the environment at any time by running `deactivate`.

For RabbitMQ based VOLTTRON, some of the RabbitMQ specific software packages have to be installed.

###### On Debian based systems (other than Raspbian) and CentOS 6/7
###### On Debian based systems and CentOS 6/7

If you are running an Debian or CentOS system, you can install the RabbitMQ dependencies by running the rabbit
dependencies script, passing in the OS name and appropriate distribution as parameters. The following are supported:
Expand All @@ -85,20 +85,14 @@ If you are running an Debian or CentOS system, you can install the RabbitMQ depe

- `debian stretch` (for Debian Stretch)

Example command:
- `debian buster` (for Debian Buster)

```sh
./scripts/rabbit_dependencies.sh debian xenial
```
- `raspbian buster` (for Raspbian/Raspberry Pi OS buster)

###### On Raspbian buster

To get the rabbmq dependencies, install the system rabbitmq-server package, and disable the system daemon with the following commands:
Example command:

```sh
sudo apt-get install rabbitmq-server
sudo systemctl stop rabbitmq-server
sudo systemctl disable rabbitmq-server
./scripts/rabbit_dependencies.sh debian xenial
```

###### Alternatively
Expand Down
2 changes: 1 addition & 1 deletion bootstrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ def update(operation, verbose=None, upgrade=False, offline=False, optional_requi
# We must install wheel first to eliminate a bunch of scary looking
# errors at first install.
# TODO Look towards fixing the packaging so that it works with 0.31
pip('install', ['wheel~=0.30'], verbose, True, offline=offline)
pip('install', ['wheel==0.30'], verbose, True, offline=offline)

# Build option_requirements separately to pass install options
build_option = '--build-option' if wheeling else '--install-option'
Expand Down
67 changes: 48 additions & 19 deletions scripts/rabbit_dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ Valid centos versions: 6, 7, 8

function install_on_centos {

if [ "$DIST" == "6" ]; then
if [[ "$DIST" == "6" ]]; then
erlang_url='https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/6'
elif [ "$DIST" == "7" ]; then
elif [[ "$DIST" == "7" ]]; then
erlang_url='https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7'
elif [ "$DIST" == "8" ]; then
elif [[ "$DIST" == "8" ]]; then
erlang_url='https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/8'
else
printf "Invalid centos version. 6, 7, and 8 are the only compatible versions\n"
Expand All @@ -45,60 +45,89 @@ gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1"

if [ ! -f "/etc/yum.repos.d/rabbitmq-erlang.repo" ]; then
echo "$repo" | $prefix tee -a /etc/yum.repos.d/rabbitmq-erlang.repo
if [[ ! -f "/etc/yum.repos.d/rabbitmq-erlang.repo" ]]; then
echo "$repo" | ${prefix} tee -a /etc/yum.repos.d/rabbitmq-erlang.repo
exit_on_error
else
echo "\nrepo file /etc/yum.repos.d/rabbitmq-erlang.repo already exists\n"
fi
$prefix yum install erlang
${prefix} yum install erlang
exit_on_error
}

function install_on_debian {
FOUND=0
for item in ${list[@]}; do
if [ "$DIST" == "$item" ]; then
if [[ "$DIST" == "$item" ]]; then
FOUND=1
break
fi
done

if [ "$FOUND" != "1" ]; then
if [[ "$FOUND" != "1" ]]; then
echo "Invalid distribution found"
print_usage
fi

echo "installing ERLANG"
$prefix apt-get install apt-transport-https libwxbase3.0-0v5 libwxgtk3.0-0v5 libsctp1 build-essential python-dev openssl libssl-dev libevent-dev git
$prefix apt-get purge -yf erlang*
${prefix} apt-get install apt-transport-https libwxbase3.0-0v5 libwxgtk3.0-0v5 libsctp1 build-essential python-dev openssl libssl-dev libevent-dev git
${prefix} apt-get purge -yf erlang*
# Add the signing key
wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | sudo apt-key add -

if [ ! -f "/etc/apt/sources.list.d/erlang.solutions.list" ]; then
if [[ ! -f "/etc/apt/sources.list.d/erlang.solutions.list" ]]; then
echo "deb https://packages.erlang-solutions.com/ubuntu $DIST contrib" | sudo tee /etc/apt/sources.list.d/erlang.solutions.list
fi

$prefix apt-get update
$prefix apt-get install -yf
$prefix apt-get install -y erlang-base erlang-diameter erlang-eldap erlang-ssl erlang-crypto erlang-asn1 erlang-public-key
$prefix apt-get install -y erlang-nox
version=${erlang_package_version}
${prefix} apt-get update
${prefix} apt-get install -yf
${prefix} apt-get install -y "erlang-asn1=$version" \
"erlang-base=$version" \
"erlang-crypto=$version" \
"erlang-diameter=$version" \
"erlang-edoc=$version" \
"erlang-eldap=$version" \
"erlang-erl-docgen=$version" \
"erlang-eunit=$version" \
"erlang-ic=$version" \
"erlang-inets=$version" \
"erlang-inviso=$version" \
"erlang-mnesia=$version" \
"erlang-odbc=$version" \
"erlang-os-mon=$version" \
"erlang-parsetools=$version" \
"erlang-percept=$version" \
"erlang-public-key=$version" \
"erlang-runtime-tools=$version" \
"erlang-snmp=$version" \
"erlang-ssh=$version" \
"erlang-ssl=$version" \
"erlang-syntax-tools=$version" \
"erlang-tools=$version" \
"erlang-xmerl=$version"

${prefix} apt-get install -y "erlang-nox=$version"
}

os_name="$1"
DIST="$2"
user=`whoami`
if [ $user == 'root' ]; then
if [[ ${user} == 'root' ]]; then
prefix=""
else
prefix="sudo"
fi

$prefix pwd > /dev/null
${prefix} pwd > /dev/null

if [ "$os_name" == "debian" ]; then
if [[ "$os_name" == "debian" ]]; then
erlang_package_version="1:22.1.8.1-1"
install_on_debian
elif [ "$os_name" == "centos" ]; then
elif [[ "$os_name" == "raspbian" ]]; then
erlang_package_version="1:21.2.6+dfsg-1"
install_on_debian
elif [[ "$os_name" == "centos" ]]; then
install_on_centos
else
printf "For operating system/distributions not supported by this script, please install Erlang manually with the \
Expand Down

0 comments on commit ef2ab01

Please sign in to comment.