1048 and 1050 update Install Guide (#1051)

closes #1048 and closes #1050

Update java version, check/update dependencies and various other improvements.
This commit is contained in:
Scott Fennell 2020-09-02 15:37:50 -05:00 committed by GitHub
parent 37801c0565
commit c8e90dde81
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 78 additions and 260 deletions

View File

@ -62,7 +62,7 @@ jobs:
clang-devel clang-devel
gcc gcc
gcc-c++ gcc-c++
java-1.8.0-openjdk-devel java-11-openjdk-devel
libxml2-devel libxml2-devel
llvm-devel llvm-devel
llvm-static llvm-static
@ -79,7 +79,7 @@ jobs:
#-------- Ubuntu Only Dependencies ---------------- #-------- Ubuntu Only Dependencies ----------------
- cfg: { os: ubuntu } - cfg: { os: ubuntu }
os_deps: >- os_deps: >-
openjdk-8-jdk openjdk-11-jdk
#-------- Debian OS Only Dependencies ---------------- #-------- Debian OS Only Dependencies ----------------
- cfg: { os: debian } - cfg: { os: debian }
os_deps: >- os_deps: >-
@ -185,7 +185,7 @@ jobs:
ncurses-devel.i686 zlib-devel.i686 python-libs.i686 ncurses-devel.i686 zlib-devel.i686 python-libs.i686
expat-2.1.0-10.el7_3.i686 glibc-devel-2.17-196.el7.i686 expat-2.1.0-10.el7_3.i686 glibc-devel-2.17-196.el7.i686
glibc.i686 glibc-devel.i686 udunits2 udunits2-devel gtest-devel.i686 glibc.i686 glibc-devel.i686 udunits2 udunits2-devel gtest-devel.i686
java-1.8.0-openjdk java-1.8.0-openjdk-devel expat-devel.i686 java-11-openjdk java-11-openjdk-devel expat-devel.i686
which gcc-gfortran git wget gsl-devel gtest-devel gsl-devel.i686 which gcc-gfortran git wget gsl-devel gtest-devel gsl-devel.i686
maven udunits2 udunits2-devel maven udunits2 udunits2-devel
- name: Symlink python - name: Symlink python

View File

@ -13,7 +13,7 @@ Trick requires various free third party utilities in order to function. All the
| [clang]/[llvm] | 3.4.2+ | C/C++ Compiler | Utilized by the interface code generator. | | [clang]/[llvm] | 3.4.2+ | C/C++ Compiler | Utilized by the interface code generator. |
| [python] | 2.7+ | Programming Language | Lets the user interact with a simulation. | | [python] | 2.7+ | Programming Language | Lets the user interact with a simulation. |
| [perl] | 5.6+ | Programming Language | Allows executable scripts in the bin directory to run. | | [perl] | 5.6+ | Programming Language | Allows executable scripts in the bin directory to run. |
| [java] | 1.8+ | Programming Language | Necessary for Trick GUIs. | | [java] | 11+ | Programming Language | Necessary for Trick GUIs. |
| [swig] | 2.0+ | Language Interfacing | Connects the python input processor with Trick's C code. | | [swig] | 2.0+ | Language Interfacing | Connects the python input processor with Trick's C code. |
| [make] | 3.78+ | Build Automation | Automates the building and cleaning of Trick. | | [make] | 3.78+ | Build Automation | Automates the building and cleaning of Trick. |
| [openmotif] | 2.2.0+ | GUI Toolkit | Covers Trick GUIs not made with Java. | | [openmotif] | 2.2.0+ | GUI Toolkit | Covers Trick GUIs not made with Java. |
@ -35,20 +35,11 @@ Trick requires various free third party utilities in order to function. All the
## Notes ## Notes
### Clang/LLVM compiler and libraries ### Clang/LLVM compiler and libraries
Clang/LLVM can be installed and located manually should your package manager fail to acquire it. You can tell Trick where to find Clang/LLVM with the "--with-llvm" configuration option specified [below](TODO). Clang/LLVM can be installed and located manually should your package manager fail to acquire it. You can tell Trick where to find Clang/LLVM with the "--with-llvm" configuration option specified [below](TODO).
### 32-bit Mode
If you intend to build Trick in 32-bit mode, you will need 32-bit versions of the libraries in the above table. If a 32-bit version of udunits is not available through your package manager, you can build it from [source](ftp://ftp.unidata.ucar.edu/pub/udunits/udunits-2.2.25.tar.gz):
```bash
tar xfvz udunits-2.2.25.tar.gz
cd udunits-2.2.25
export CFLAGS="-m32"
./configure --prefix=/usr
make
make install
```
### Java ### Java
Trick needs the javac compiler included in the Java Development Kit (JDK). Trick will work with either the Oracle JDK or OpenJDK, but we prefer the Oracle JDK located [here](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). Trick needs the javac compiler included in the Java Development Kit (JDK). Trick will work with either the Oracle JDK or OpenJDK.
**Installing both the Oracle JDK and OpenJDK may lead to problems and confusion.** Both use the alternatives program to tell the system which *java* to use, but the OpenJDK packages are inconsistent in their alternatives priority settings and result in unintuitive installation results.
**Installing both the Oracle JDK and OpenJDK may lead to problems and confusion.**
# Operating Systems # Operating Systems
Trick runs on GNU/Linux and MacOSX, though any System V/POSIX compatible UNIX workstation should accept the Trick software with very little source code porting. Below are instructions for installing the prerequisites on popular operating systems here at NASA. Trick runs on GNU/Linux and MacOSX, though any System V/POSIX compatible UNIX workstation should accept the Trick software with very little source code porting. Below are instructions for installing the prerequisites on popular operating systems here at NASA.
@ -58,12 +49,11 @@ Trick runs on GNU/Linux and MacOSX, though any System V/POSIX compatible UNIX wo
|[RedHat Enterprise Linux (RHEL) 8](#redhat8)| |[RedHat Enterprise Linux (RHEL) 8](#redhat8)|
|[CentOS 8](#redhat8)| |[CentOS 8](#redhat8)|
|[RedHat Enterprise Linux (RHEL) 7](#redhat7)| |[RedHat Enterprise Linux (RHEL) 7](#redhat7)|
|[RedHat Enterprise Linux (RHEL) 6](#redhat6)| |[CentOS 7](#redhat7)|
|[Fedora 32, 30, 28, 24](#fedora)| |[Fedora](#fedora)|
|[Ubuntu 16.04/15.10](#ubuntu16.04)| |[Ubuntu](#ubuntu)|
|[Ubuntu 15.04](#ubuntu15.04)| |[MacOS](#macos)|
|[MacOSX 10.12/10.11](#macosx)| |[Windows 10 (Linux Subsystem Only)](#windows10)|
|[Windows 10.0.15063 (Creators Update)](#windows10)|
--- ---
<a name="redhat8"></a> <a name="redhat8"></a>
@ -73,26 +63,16 @@ Trick requires the clang/llvm compiler to compile and link the Trick Interface C
```bash ```bash
yum install epel-release dnf install epel-release
yum update dnf update
dnf install -y bison clang flex git llvm make maven swig cmake clang-devel \
gcc gcc-c++ java-11-openjdk-devel libxml2-devel llvm-devel llvm-static \
ncurses-devel openmotif openmotif-devel perl perl-Digest-MD5 udunits2 \
udunits2-devel which zlib-devel gtest-devel libX11-devel libXt-devel \
python3-devel diffutils
``` ```
```bash
yum install bison clang clang-devel cmake flex gcc gcc-c++ git \
libX11-devel libxml2-devel libXt-devel llvm llvm-devel llvm-static \
make maven ncurses-devel openmotif openmotif-devel perl \
perl-Digest-MD5 python3-devel swig udunits2 udunits2-devel which zlib-devel
```
The javac compiler must be installed. The javac compiler is included with the Java Development Kit (JDK). Trick will work with either the Oracle JDK or OpenJDK, but we prefer the Oracle JDK.
At the time of this writing (March 2015) the Oracle JDK 1.8 is available from the [Oracle download site](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html).
Alternatively OpenJDK is available through yum
```bash
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
```
Trick makes use of several optional packages if they are present on the system. These include using the HDF5 package for logging, the GSL packages for random number generation, and google test (gtest) for Trick's unit testing. These are available from the EPEL repository. In order to access gtest-devel in the epel repository you need to enable the dnf option PowerTools Trick makes use of several optional packages if they are present on the system. These include using the HDF5 package for logging, the GSL packages for random number generation, and google test (gtest) for Trick's unit testing. These are available from the EPEL repository. In order to access gtest-devel in the epel repository you need to enable the dnf option PowerTools
@ -101,35 +81,28 @@ yum install -y 'dnf-command(config-manager)'
yum config-manager --enable PowerTools yum config-manager --enable PowerTools
yum install hdf5-devel gsl-devel gtest-devel yum install hdf5-devel gsl-devel gtest-devel
``` ```
proceed to [Install Trick](#install) section of the install guide
--- ---
<a name="redhat7"></a> <a name="redhat7"></a>
### RedHat Enterprise Linux (RHEL) 7 ### RedHat Enterprise Linux (RHEL) 7, CentOS 7
Trick requires the clang/llvm compiler to compile and link the Trick Interface Code Generator. clang/llvm is available through the [Extra Packages for Enterprise Linux](https://fedoraproject.org/wiki/EPEL) repository. Download and install the 'epel-release' package. Trick requires the clang/llvm compiler to compile and link the Trick Interface Code Generator. clang/llvm is available through the [Extra Packages for Enterprise Linux](https://fedoraproject.org/wiki/EPEL) repository. Download and install the 'epel-release' package.
```bash ```bash
# From the EPEL repository # install epel-release
yum install llvm llvm-devel llvm-static clang clang-devel Run yum -y install epel-release && yum -y update
``` ```
Trick also requires development packages from the base and epel repositories Trick also requires development packages from the base and epel repositories
```bash ```bash
# From the base repository yum install -y bison clang flex git llvm make maven swig cmake clang-devel \
yum install bison flex gcc gcc-c++ libxml2-devel make ncurses-devel \ gcc gcc-c++ java-11-openjdk-devel libxml2-devel llvm-devel llvm-static \
openmotif openmotif-devel python-devel perl perl-Digest-MD5 swig maven zlib-devel ncurses-devel openmotif openmotif-devel perl perl-Digest-MD5 udunits2 \
#UDUnits is required and is in the EPEL repository udunits2-devel which zlib-devel gtest-devel libX11-devel libXt-devel python-devel
yum install udunits2 udunits2-devel
```
The javac compiler must be installed. The javac compiler is included with the Java Development Kit (JDK). Trick will work with either the Oracle JDK or OpenJDK, but we prefer the Oracle JDK.
At the time of this writing (March 2015) the Oracle JDK 1.8 is available from the [Oracle download site](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html).
Alternatively OpenJDK is available through yum
```bash
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
``` ```
Trick makes use of several optional packages if they are present on the system. These include using the HDF5 package for logging, the GSL packages for random number generation, and google test (gtest) for Trick's unit testing. These are available from the EPEL repository Trick makes use of several optional packages if they are present on the system. These include using the HDF5 package for logging, the GSL packages for random number generation, and google test (gtest) for Trick's unit testing. These are available from the EPEL repository
@ -138,68 +111,19 @@ Trick makes use of several optional packages if they are present on the system.
yum install hdf5-devel gsl-devel gtest-devel yum install hdf5-devel gsl-devel gtest-devel
``` ```
--- proceed to [Install Trick](#install) section of the install guide
<a name="redhat6"></a>
### RedHat Enterprise Linux (RHEL) 6
Trick requires gcc version 4.8+ to compile. gcc 4.9 is available through RHEL's [Software Collections](https://access.redhat.com/documentation/en/red-hat-software-collections/) capability. To install the software collections, the software collections reposotory needs to be added as a yum repository and the scl-utils package needs to be optionally installed. The instructions below are specific to Scientific Linux 6, an RHEL derivative. Repository location will be different for the official RHEL 6 and CentOS.
```bash
wget http://ftp.scientificlinux.org/linux/scientific/6x/external_products/softwarecollections/yum-conf-softwarecollections-2.0-1.el6.noarch.rpm
rpm -ivh yum-conf-softwarecollections-2.0-1.el6.noarch.rpm
# From the software collections repository
yum install devtoolset-3-gcc-c++
```
Trick requires the clang/llvm compiler to compile and link the Trick Interface Code Generator. clang/llvm is available through the [Extra Packages for Enterprise Linux](https://fedoraproject.org/wiki/EPEL) repository. Download and install the 'epel-release' package.
```bash
# From the EPEL repository
yum install llvm llvm-devel llvm-static clang clang-devel
```
Trick also requires development packages from the base and epel repositories
```bash
# From the base repository
yum install bison flex gcc gcc-c++ libxml2-devel make \
openmotif openmotif-devel python-devel perl swig maven zlib-devel
#UDUnits is required and is in the EPEL repository
yum install udunits2 udunits2-devel
```
The javac compiler must be installed. The javac compiler is included with the Java Development Kit (JDK). Trick will work with either the Oracle JDK or OpenJDK, but we prefer the Oracle JDK.
At the time of this writing (March 2015) the Oracle JDK 1.8 is available from the [Oracle download site](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html).
Alternatively OpenJDK is available through yum
```bash
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
```
Trick makes use of several optional packages if they are present on the system. These include using the HDF5 package for logging, the GSL packages for random number generation, and google test (gtest) for Trick's unit testing. These are available from the EPEL repository
```bash
yum install hdf5-devel gsl-devel gtest-devel
```
--- ---
<a name="fedora"></a> <a name="fedora"></a>
### Fedora 31, 30, 28, 24 ### Fedora
Trick requires development packages from the base repositories. Trick requires development packages from the base repositories.
```bash ```bash
dnf install bison flex gcc gcc-c++ libxml2-devel make openmotif \ dnf install -y bison clang flex git llvm make maven swig cmake clang-devel \
openmotif-devel python-devel perl swig maven zlib-devel llvm llvm-devel \ gcc gcc-c++ java-11-openjdk-devel libxml2-devel llvm-devel llvm-static \
llvm-static clang clang-devel perl-Text-Balanced perl-Digest-MD5 \ ncurses-devel openmotif openmotif-devel perl perl-Digest-MD5 udunits2 udunits2-devel \
udunits2 udunits2-devel ncurses-devel which zlib-devel gtest-devel perl-Text-Balanced python-devel diffutils
```
Be sure to install the Oracle JDK. Alternatively, install OpenJDK with this command:
```bash
dnf install java-1.8.0-openjdk-devel
``` ```
Trick makes use of several optional packages if they are present on the system. These include using the HDF5 package for logging, the GSL packages for random number generation, and google test (gtest) for Trick's unit testing. These are available from the EPEL repository Trick makes use of several optional packages if they are present on the system. These include using the HDF5 package for logging, the GSL packages for random number generation, and google test (gtest) for Trick's unit testing. These are available from the EPEL repository
@ -207,36 +131,29 @@ Trick makes use of several optional packages if they are present on the system.
```bash ```bash
dnf install hdf5-devel gsl-devel gtest-devel dnf install hdf5-devel gsl-devel gtest-devel
``` ```
<a name="ubuntu"></a>
proceed to [Install Trick](#install) section of the install guide
--- ---
<a name="ubuntu16.04"></a> ### Ubuntu
All packages required for Trick may be installed through apt-get. If your package manager cannot find these packages, try searching for alternatives, or your Ubuntu version may be too old.
### Ubuntu 18.04/16.04/15.10
All packages required for Trick may be installed through apt-get.
```bash ```bash
sudo apt-get install bison curl flex g++ libx11-dev libxml2-dev libxt-dev \ #update apt
libmotif-common libmotif-dev make openjdk-8-jdk python2.7-dev swig maven \ apt-get update
zlib1g-dev llvm llvm-dev clang libclang-dev libudunits2-dev
# install packages
apt-get install -y bison clang flex git llvm make maven swig cmake \
curl g++ libx11-dev libxml2-dev libxt-dev libmotif-common libmotif-dev \
python2.7-dev zlib1g-dev llvm-dev libclang-dev libudunits2-dev \
libgtest-dev openjdk-11-jdk
``` ```
proceed to [Install Trick](#install) section of the install guide
<a name="macos"></a>
--- ---
<a name="ubuntu15.04"></a> ### MacOS Catelina/Mojave
### Ubuntu 15.04
Follow the 16.04 instructions above.
Trick requires the clang/llvm compiler to compile and link the Trick Interface Code Generator. The instructions below install clang 3.6.
```bash
sudo apt-get install clang-3.6 llvm-3.6 llvm-3.6-dev
```
---
<a name="macosx"></a>
### MacOSX 10.14
1. Install XCode from the App Store. 1. Install XCode from the App Store.
@ -248,7 +165,12 @@ xcode-select --install
3. Install system header files into /usr/include 3. Install system header files into /usr/include
```bash ```bash
### Catalina Only
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.15.pkg -target /
### Mojave Only
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target / sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
``` ```
4. Install Homebrew, MacOSX's unofficial package manager. 4. Install Homebrew, MacOSX's unofficial package manager.
@ -282,85 +204,20 @@ Openmotif may install dependent packages that conflict with other installations,
brew install --ignore-dependencies openmotif brew install --ignore-dependencies openmotif
``` ```
--- proceed to [Install Trick](#install) section of the install guide
<a name="macosx"></a>
### MacOSX 10.13/10.12/10.11
1. Install XCode from the App Store.
2. Download and install Command Line Tools for MacOSX by opening a terminal and running the following command.
```bash
xcode-select --install
```
3. Install Homebrew, MacOSX's unofficial package manager.
```bash
# bash
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
or
```csh
# csh
curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install | ruby
```
4. Install cask to get java and xquartz.
```bash
# brew install caskroom may not be required anymore
# brew install caskroom/cask/brew-cask
brew cask install java xquartz
```
5. Finally, install the remaining dependencies.
```bash
brew install llvm swig maven udunits openmotif
```
Openmotif may install dependent packages that conflict with other installations, fontconfig and freetype. Use the following command to skip installing these packages if you encounter conflicts.
```bash
brew install --ignore-dependencies openmotif
```
To configure Trick with an older llvm (No longer needed now that llvm 6 works with Xcode 9.2).
```bash
brew install llvm@5
./configure --with-llvm=/usr/local/opt/llvm@5
```
---
<a name="windows10"></a> <a name="windows10"></a>
### Windows 10 (Linux Subsystem Only)
### Windows 10 version 1803 and 1709 1. Set up the Windows Subsystem for Linux by following the Microsoft Install Guide:
(link current as of September 2020)
https://docs.microsoft.com/en-us/windows/wsl/install-win10
1. Install Ubuntu 18.04 in the Windows Linux Subsystem following these [instructions.](https://msdn.microsoft.com/en-us/commandline/wsl/install_guide). 2. Install the Ubuntu dependencies from above on the WSL: [Ubuntu](#ubuntu)
2. Open a bash shell and install the following packages 3. Install an X-windows server like [Xming.](https://sourceforge.net/projects/xming/?source=typ_redirect)
```bash 4. Ensure hostname resolves to an address.
sudo apt-get update
sudo apt install bison curl flex g++ libx11-dev libxml2-dev \
libxt-dev libxtst6 libxi6 libmotif-common libmotif-dev make python2.7-dev \
swig maven zlib1g-dev llvm-6.0-dev llvm clang libclang-dev libudunits2-dev
```
*Note This will install about 150 dependent packages on a new machine.
3. Install Java JDK 11 through the ppa repository
```bash
sudo apt-add-repository ppa:linuxuprising/java
sudo apt update
sudo apt install oracle-java10-installer
```
4. Install an X-windows server like [Xming.](https://sourceforge.net/projects/xming/?source=typ_redirect)
5. Ensure hostname resolves to an address.
```bash ```bash
# Get name of machine # Get name of machine
hostname hostname
@ -372,51 +229,9 @@ ifconfig
sudo <edit_cmd> /etc/hosts sudo <edit_cmd> /etc/hosts
``` ```
6. You may have to change the sslVersion that git uses. proceed to [Install Trick](#install) section of the install guide
```bash
# Edit ${HOME}/.gitconfig
<edit_cmd> ${HOME}/.gitconfig
```
Add the following text to ${HOME}/.gitconfig
```
[httpd]
sslVersion = tlsv1.2
```
### Windows 10 Version 1703 OS build 15063 (Creators Update)
1. Set up the Ubuntu Linux Subsystem following these [instructions.](https://msdn.microsoft.com/en-us/commandline/wsl/install_guide)
2. Open a bash shell and install the following packages.with
```bash
sudo apt install bison curl flex g++ libx11-dev libxml2-dev \
libxt-dev libmotif-common libmotif-dev make python2.7-dev \
swig maven zlib1g-dev llvm llvm-dev clang libclang-dev libudunits2-dev
```
3. Install Java JDK 8 through the ppa repository
```bash
sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt install oracle-java8-installer
```
4. Install an X-windows server like [Xming.](https://sourceforge.net/projects/xming/?source=typ_redirect)
5. Ensure hostname resolves to an address.
```bash
# Get name of machine
hostname
# Get IP of name
hostname -i
# If hostname -i returns an error find IP address
ifconfig
# Add an entry to /etc/hosts to associate IP address to hostname "numeric.ip.address hostname"
sudo <edit_cmd> /etc/hosts
```
<a name="install"></a>
# Install Trick # Install Trick
## 1.) Clone Trick ## 1.) Clone Trick
@ -449,15 +264,6 @@ Now that Trick has been configured and a makefile has been generated, we can run
make make
``` ```
### Install Trick
You can also install Trick on your machine by running *sudo make install* after you compile Trick.
```bash
sudo make install
```
You will need super user privileges in order to copy files directly to the default **/usr/local** directory. This install directory can be modified with the configuration script.
## 4.) Optionally Update Your Environment ## 4.) Optionally Update Your Environment
Gone are the days when you needed to set several environment variables to use Trick. Trick can now be used completely environmentlessly*. You no longer need to set `TRICK_HOME` and friends. Gone are the days when you needed to set several environment variables to use Trick. Trick can now be used completely environmentlessly*. You no longer need to set `TRICK_HOME` and friends.
@ -471,3 +277,15 @@ Finally, although setting `TRICK_CFLAGS` and `TRICK_CXXFLAGS` is not necessary,
*The exception to this is if you're building in 32-bit mode, in which case the `TRICK_FORCE_32BIT` environment variable must be set to `1` before you build Trick or any simulation. *The exception to this is if you're building in 32-bit mode, in which case the `TRICK_FORCE_32BIT` environment variable must be set to `1` before you build Trick or any simulation.
[Continue to Building A Simulation](../building_a_simulation/Building-a-Simulation) [Continue to Building A Simulation](../building_a_simulation/Building-a-Simulation)
## Notes
### 32-bit Mode
If you intend to build Trick in 32-bit mode, you will need 32-bit versions of the libraries in the above table. If a 32-bit version of udunits is not available through your package manager, you can build it from [source](ftp://ftp.unidata.ucar.edu/pub/udunits/udunits-2.2.25.tar.gz):
```bash
tar xfvz udunits-2.2.25.tar.gz
cd udunits-2.2.25
export CFLAGS="-m32"
./configure --prefix=/usr
make
make install
```