Skip to content

Commit

Permalink
Install RabbitMQ from conda on arm64
Browse files Browse the repository at this point in the history
  • Loading branch information
danielhollas committed Jul 19, 2024
1 parent e6fab3c commit 90fa979
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 50 deletions.
2 changes: 1 addition & 1 deletion build.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"default": "15"
},
"RMQ_VERSION": {
"default": "3.9.13"
"default": "3.13.2"
},
"AIIDA_VERSION": {
"default": "2.5.1"
Expand Down
34 changes: 5 additions & 29 deletions stack/base-with-services/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,44 +6,20 @@ LABEL maintainer="AiiDAlab Team <[email protected]>"
USER root
WORKDIR /opt/

ARG AIIDA_VERSION
ARG PGSQL_VERSION
ARG RMQ_VERSION
ARG TARGETARCH

# Location of the Postgresql DB
# This variable is automatically picked up by initdb and pg_ctl
# WARNING: If you change this, you have to change it in full-stack as well!
ENV PGDATA=/home/${NB_USER}/.postgresql

# Install RabbitMQ and PostgreSQL in a dedicated conda environment.
#
# RabbitMQ is currently not available on conda-forge for arm64, see:
# https://github.com/conda-forge/rabbitmq-server-feedstock/issues/67If
# Instead we need install erlang via apt and RabbitMQ as a "Generic Unix Build", see:
# https://www.rabbitmq.com/install-generic-unix.html
# Note that this version must be compatible with system's erlang version.
# Currently installed Erlang version is 23.3, so the latest supported RMQ version is 3.9.21
# https://www.rabbitmq.com/docs/which-erlang#old-timers
# Note that system erlang from arm64 is already installed in the base image,
# together with other APT dependencies to save build time.
RUN if [ "$TARGETARCH" = "amd64" ]; then \
mamba create -p /opt/conda/envs/aiida-core-services --yes \
postgresql=${PGSQL_VERSION} \
rabbitmq-server=${RMQ_VERSION} && \
mamba clean --all -f -y && \
fix-permissions "${CONDA_DIR}"; \
elif [ "$TARGETARCH" = "arm64" ]; then \
mamba create -p /opt/conda/envs/aiida-core-services --yes \
postgresql=${PGSQL_VERSION} && \
mamba clean --all -f -y && \
wget -c https://github.com/rabbitmq/rabbitmq-server/releases/download/v${RMQ_VERSION}/rabbitmq-server-generic-unix-${RMQ_VERSION}.tar.xz && \
tar -xf rabbitmq-server-generic-unix-${RMQ_VERSION}.tar.xz && \
rm rabbitmq-server-generic-unix-${RMQ_VERSION}.tar.xz && \
mv rabbitmq_server-${RMQ_VERSION} /opt/conda/envs/aiida-core-services/rabbitmq_server && \
ln -sf /opt/conda/envs/aiida-core-services/rabbitmq_server/sbin/* /opt/conda/envs/aiida-core-services/bin/ && \
fix-permissions "${CONDA_DIR}"; \
fi
RUN mamba create -p /opt/conda/envs/aiida-core-services --yes \
postgresql=${PGSQL_VERSION} \
rabbitmq-server=${RMQ_VERSION} && \
mamba clean --all -f -y && \
fix-permissions "${CONDA_DIR}"

# Configure AiiDA profile.
COPY config-quick-setup.yaml .
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,4 @@ set -emx
# Fix issue where the erlang cookie permissions are corrupted.
chmod 400 "/home/${NB_USER}/.erlang.cookie" || echo "erlang cookie not created yet."

# NOTE: In arm64 build, rabbitmq is not installed via conda,
# but the following incantation still works since
# rabbitmq-server is available globally.
mamba run -n aiida-core-services rabbitmq-server -detached
11 changes: 3 additions & 8 deletions stack/base-with-services/configure_rabbitmq.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
#!/bin/bash
set -emx

RMQ_ETC_DIR_ARM64="/opt/conda/envs/aiida-core-services/rabbitmq_server/etc/rabbitmq"
RMQ_ETC_DIR_AMD64="/opt/conda/envs/aiida-core-services/etc/rabbitmq"
if [[ -d $RMQ_ETC_DIR_ARM64 ]]; then
RMQ_ETC_DIR="$RMQ_ETC_DIR_ARM64"
elif [[ -d $RMQ_ETC_DIR_AMD64 ]]; then
RMQ_ETC_DIR="$RMQ_ETC_DIR_AMD64"
else
echo "ERROR: Could not find RabbitMQ etc directory"
RMQ_ETC_DIR="/opt/conda/envs/aiida-core-services/etc/rabbitmq"
if [[ ! -d $RMQ_ETC_DIR ]]; then
echo "ERROR: directory '$RMQ_ETC_DIR' does not exist!"
exit 1
fi

Expand Down
5 changes: 1 addition & 4 deletions stack/base/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,9 @@ USER root
# povray: rendering engine used in aiidalab-widgets-base
ENV EXTRA_APT_PACKAGES "curl povray rsync build-essential"

# For ARM64 we need to install erlang as it is not available on conda-forge
# (this is needed later as rabbitmq dependency in base-with-services image,
# but we install it here so that we don't have to invoke apt multiple times.
ARG TARGETARCH
RUN if [ "$TARGETARCH" = "arm64" ]; then \
EXTRA_APT_PACKAGES="erlang libhdf5-serial-dev pkg-config ${EXTRA_APT_PACKAGES}"; \
EXTRA_APT_PACKAGES="libhdf5-serial-dev pkg-config ${EXTRA_APT_PACKAGES}"; \
fi;\
apt-get update --yes && \
apt-get install --yes --no-install-recommends ${EXTRA_APT_PACKAGES} && \
Expand Down
5 changes: 0 additions & 5 deletions stack/lab/before-notebook.d/60_prepare-aiidalab.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,6 @@ set -x
# Environment.
export SHELL=/bin/bash

# Fix https://github.com/aiidalab/aiidalab-docker-stack/issues/225
if [ -L /home/${NB_USER}/${NB_USER} ]; then
rm /home/${NB_USER}/${NB_USER}
fi

# Check whether this is likely the first time we run this script.
[[ -z $(ls -A "/home/${NB_USER}/apps/") ]] && INITIAL_SETUP=1 || INITIAL_SETUP=0

Expand Down

0 comments on commit 90fa979

Please sign in to comment.