aboutsummaryrefslogtreecommitdiff
path: root/install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'install.sh')
-rwxr-xr-xinstall.sh100
1 files changed, 14 insertions, 86 deletions
diff --git a/install.sh b/install.sh
index de2aaa8..7f3908b 100755
--- a/install.sh
+++ b/install.sh
@@ -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