# Linux ## Clone Arkouda Repository Download, clone, or fork the [arkouda repo](https://github.com/Bears-R-Us/arkouda). We encourage developers to fork the repo if they expect to make any changes to arkouda. They can then their fork and add the Bears-R-Us repo as a remote: ```bash git clone https://github.com/YOUR_FORK/arkouda.git cd arkouda git remote add upstream https://github.com/Bears-R-Us/arkouda.git ``` For users who aren't intending to make any changes, cloning the arkouda repo should be enough ```bash git clone https://github.com/Bears-R-Us/arkouda.git ``` Further instructions assume that the current directory is the top-level directory of the arkouda repo. ## Python Environment - Anaconda (Linux) As is the case with the MacOS install, it is highly recommended to [install Anaconda](https://docs.anaconda.com/anaconda/install/linux/) to provide a Python environment and manage Python dependencies: ```bash # Go to https://repo.anaconda.com/archive/ to find the link for the latest version that's correct for your machine. # The one below is for version 2023.09 and for an x86 linux wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh sh Anaconda3-2023.09-0-Linux-x86_64.sh source ~/.bashrc # User conda env conda env create -f arkouda-env.yml conda activate arkouda # Developer conda env conda env create -f arkouda-env-dev.yml conda activate arkouda-dev # Install the Arkouda Client Package and add it to your PYTHONPATH. # For this to work properly you need to change directories to where arkouda lives pip install -e . --no-deps export PYTHONPATH="${PYTHONPATH}:${PWD}" ``` ## Chapel Installation The first step is follow the instructions found [here](https://chapel-lang.org/docs/usingchapel/prereqs.html) to install the Chapel Prerequisites. For convenience, the steps to install Chapel from source are detailed below. If you need more information, please visit the [Chapel Quickstart Guide](https://chapel-lang.org/docs/usingchapel/QUICKSTART.html). The Ubuntu and RHEL Chapel installations are different for installing Chapel dependencies, particularly regarding older RHEL distro versions. Specifically, the gcc compiler on RHEL distros such as CentOS 7 do not support building Chapel. Consequently, a newer version of the gcc compiler must be installed via the [devtoolset-9-gcc-c++](https://centos.pkgs.org/7/centos-sclo-rh-x86_64/devtoolset-9-gcc-c++-9.1.1-2.6.el7.x86_64.rpm.html) package. In addition, the CentOS [Software Collections packager](https://wiki.centos.org/AdditionalResources/Repositories/SCL) must be installed to enable the newer version of gcc to be leveraged for building Chapel. ### Install Chapel (Ubuntu) ```bash # Download latest Chapel release, explode archive, and navigate to source root directory wget https://github.com/chapel-lang/chapel/releases/download/2.1.0/chapel-2.1.0.tar.gz tar xvf chapel-2.1.0.tar.gz cd chapel-2.1.0/ # Set CHPL_HOME export CHPL_HOME=$PWD # Add chpl to PATH source $CHPL_HOME/util/setchplenv.bash # Set remaining env variables and execute make # It is recommended to add these variables to a ~/.chplconfig or your ~/.bashrc file to prevent having # to export them again export CHPL_RE2=bundled export CHPL_LLVM=bundled export CHPL_GMP=bundled export CHPL_COMM=none # Build Chapel cd $CHPL_HOME make -j 8 # you can bump this up 16 if you have enough memory # Build chpldoc to enable generation of Arkouda docs make chpldoc # Optionally add the Chapel executable (chpl) to the PATH for all users: /etc/environment export PATH=$CHPL_HOME/bin/linux64-x86_64/:$PATH ``` ### Install Chapel (RHEL) For all RHEL distros, Chapel dependencies are installed as follows: ```bash yum update -y && yum install gcc gcc-c++ m4 perl python3 python3-devel \ make gawk git cmake llvm-devel clang clang-devel curl-devel -y ``` For older RHEL distros with incompatible gcc compiler versions, the following dependencies must be installed: ```bash yum install devtoolset-9-gcc-c++-9.1.1-2.6.el7.x86_64 centos-release-scl -y ``` The RHEL Chapel build instructions are the same for all distros with the exception of older distros such as CentOS 7; for these, the newer gcc compiler must first be enabled: ```bash source /opt/rh/devtoolset-9/enable ``` The minimum cmake version is 3.13.4, which is not supported in older RHEL versions; in these cases, cmake must be downloaded, installed, and linked as follows: ```bash # Export version number of cmake binary to be installed export CM_VERSION=3.13.4 # Download cmake wget https://github.com/Kitware/CMake/releases/download/v$CM_VERSION/cmake-$CM_VERSION-Linux-x86_64.sh # Install cmake sh /opt/cmake-$CM_VERSION-Linux-x86_64.sh --skip-license --include-subdir # Link cmake version export PATH=./cmake-$CM_VERSION-Linux-x86_64/bin:$PATH ``` `cmake` can also be installed using conda or pip ```bash conda install cmake>=3.13.4 pip install cmake>=3.13.4 ``` The remaining RHEL Chapel download and build instructions follow those detailed above for Ubuntu Linux. ## Next Steps We've installed Arkouda and its dependencies and built chapel with reasonable default environment variables. There are also several external tools we recommend to install for consistancy across developers. The instructions are at [EXTERNAL_TOOLS.md](EXTERNAL_TOOLS.md). Now you are ready to build the server! Follow the build instructions at [BUILD.md](BUILD.md). We've set up chapel to run locally, to simulate running on a distributed machine follow the instructions at [GASNet Development](https://bears-r-us.github.io/arkouda/developer/GASNET.html).