diff options
Diffstat (limited to 'install.sh')
-rwxr-xr-x | install.sh | 100 |
1 files changed, 14 insertions, 86 deletions
@@ -7,33 +7,18 @@ usage() echo "Fortran Package Manager Bootstrap Script" echo "" echo "USAGE:" - echo "./install.sh [--help | [--prefix=PREFIX] [--update[=REF]]" - echo " [--no-openmp] [--static] [--haskell] ]" + echo "./install.sh [--help | [--prefix=PREFIX]" echo "" echo " --help Display this help text" echo " --prefix=PREFIX Install binary in 'PREFIX/bin'" echo " Default prefix='\$HOME/.local/bin'" - echo " --update[=REF] Update repository from latest release tag" - echo " or from git reference REF if specified" - echo " --no-openmp Don't build fpm with openmp support" - echo " --static Statically link fpm executable" - echo " (implies --no-openmp)" - echo " --haskell Only install Haskell fpm" echo "" - echo " '--no-openmp' and '--static' do not affect the Haskell fpm" - echo " build." + echo "FC and FFLAGS environment variables can be used to select the" + echo "Fortran compiler and the build flags." echo "" } PREFIX="$HOME/.local" -UPDATE=false -OMP=true -STATIC=false -HASKELL_ONLY=false - -STACK_BIN_PATH="$HOME/.local/bin" -REF=$(git describe --tag --abbrev=0) -RELEASE_FLAGS="--flag -g --flag -fbacktrace --flag -O3" while [ "$1" != "" ]; do PARAM=$(echo "$1" | awk -F= '{print $1}') @@ -46,22 +31,6 @@ while [ "$1" != "" ]; do --prefix) PREFIX=$VALUE ;; - --update) - UPDATE=true - if [ "$VALUE" != "" ]; then - REF=$VALUE - fi - ;; - --no-openmp) - OMP=false - ;; - --static) - STATIC=true - OMP=false - ;; - --haskell) - HASKELL_ONLY=true - ;; *) echo "ERROR: unknown parameter \"$PARAM\"" usage @@ -73,59 +42,18 @@ done set -u # error on use of undefined variable -INSTALL_PATH="$PREFIX/bin" - -if command -v stack 1> /dev/null 2>&1 ; then - echo "Found stack" -else - echo "Haskell stack not found." - echo "Installing Haskell stack" - curl -sSL https://get.haskellstack.org/ | sh - if command -v stack 1> /dev/null 2>&1 ; then - echo "Haskell stack installation successful." - else - echo "ERROR: Haskell stack installation unsuccessful." - exit 1 - fi +SOURCE_URL="https://github.com/fortran-lang/fpm/releases/download/v0.2.0/fpm-0.2.0.f90" +BOOTSTRAP_DIR="build/bootstrap" +if [ -z ${FC+x} ]; then + FC="gfortran" fi - -if [ -x "$INSTALL_PATH/fpm" ]; then - echo "Overwriting existing fpm installation in $INSTALL_PATH" +if [ -z ${FFLAGS+x} ]; then + FFLAGS="-g -fbacktrace -O3" fi -if [ "$UPDATE" = true ]; then - git checkout "$REF" - if [ $? != 0 ]; then - echo "ERROR: Unable to checkout $REF." - exit 1 - fi -fi +mkdir -p $BOOTSTRAP_DIR +curl -LJ $SOURCE_URL > $BOOTSTRAP_DIR/fpm.f90 +$FC $FFLAGS -J $BOOTSTRAP_DIR $BOOTSTRAP_DIR/fpm.f90 -o $BOOTSTRAP_DIR/fpm -cd bootstrap -stack install - -if [ "$STACK_BIN_PATH" != "$INSTALL_PATH" ]; then - mv "$STACK_BIN_PATH/fpm" "$INSTALL_PATH/" -fi - -if [ "$HASKELL_ONLY" = true ]; then - exit -fi - -if [ "$STATIC" = true ]; then - RELEASE_FLAGS="$RELEASE_FLAGS --flag -static" -fi - -if [ "$OMP" = true ]; then - RELEASE_FLAGS="$RELEASE_FLAGS --flag -fopenmp" -fi - -cd ../fpm -"$INSTALL_PATH/fpm" run $RELEASE_FLAGS --runner mv -- "$INSTALL_PATH/" - -if [ -x "$INSTALL_PATH/fpm" ]; then - echo "fpm installed successfully to $INSTALL_PATH" -else - echo "ERROR: fpm installation unsuccessful: fpm not found in $INSTALL_PATH" - exit 1 -fi +$BOOTSTRAP_DIR/fpm install --compiler "$FC" --flag "$FFLAGS" --prefix "$PREFIX" +rm -r $BOOTSTRAP_DIR |