Merge branch 'PR/allow-to-specify-build-config'

This commit is contained in:
Julian Ospald 2018-10-17 10:18:59 +08:00
commit 69e2060073
No known key found for this signature in database
GPG Key ID: 511B62C09D50CD28

23
ghcup
View File

@ -300,6 +300,7 @@ FLAGS:
-h, --help Prints help information -h, --help Prints help information
-f, --force Overwrite already existing installation -f, --force Overwrite already existing installation
-j, --jobs <n> How many jobs for compilation -j, --jobs <n> How many jobs for compilation
-c, --build-config <filepath> Use the given config file as build config
ARGS: ARGS:
<VERSION> E.g. \"8.4.3\" or \"8.6.1\" <VERSION> E.g. \"8.4.3\" or \"8.6.1\"
@ -866,10 +867,12 @@ install_cabal() {
} }
# @FUNCTION: compile_ghc # @FUNCTION: compile_ghc
# @USAGE: <ghcversion> <bootstrap-ghc> # @USAGE: <ghcversion> <bootstrap-ghc> [build.mk]
# @DESCRIPTION: # @DESCRIPTION:
# Compile and installs the given GHC version with the # Compile and installs the given GHC version with the
# specified GHC bootstrap version. # specified GHC bootstrap version.
# Can additionally take a custom file that will be used
# as build configuration.
compile_ghc() { compile_ghc() {
{ [ -z "$1" ] || [ -z "$2" ] ;} && die "Internal error: not enough arguments given to compile_ghc" { [ -z "$1" ] || [ -z "$2" ] ;} && die "Internal error: not enough arguments given to compile_ghc"
@ -879,6 +882,14 @@ compile_ghc() {
download_url="https://downloads.haskell.org/~ghc/${myghcver}/ghc-${myghcver}-src.tar.xz" download_url="https://downloads.haskell.org/~ghc/${myghcver}/ghc-${myghcver}-src.tar.xz"
download_tarball_name=$(basename "${download_url}") download_tarball_name=$(basename "${download_url}")
if [ -n "$3" ] ; then
case "$3" in
/*) build_config=$3 ;;
*) build_config="$(pwd)/$3" ;;
esac
[ -e "${build_config}" ] || die "specified build config \"${build_config}\" file does not exist!"
fi
if ghc_already_installed "${myghcver}" ; then if ghc_already_installed "${myghcver}" ; then
if ${FORCE} ; then if ${FORCE} ; then
echo "GHC already installed in ${inst_location}, overwriting!" echo "GHC already installed in ${inst_location}, overwriting!"
@ -898,8 +909,10 @@ compile_ghc() {
edo tar -xf ghc-*-src.tar.xz edo tar -xf ghc-*-src.tar.xz
edo cd "ghc-${myghcver}" edo cd "ghc-${myghcver}"
if [ -n "${build_config}" ] ; then
edo cat "${build_config}" > mk/build.mk
else
cat <<-EOF > mk/build.mk || die cat <<-EOF > mk/build.mk || die
BuildFlavour = quick
V=0 V=0
BUILD_MAN = NO BUILD_MAN = NO
BUILD_SPHINX_HTML = NO BUILD_SPHINX_HTML = NO
@ -907,6 +920,8 @@ compile_ghc() {
HADDOCK_DOCS = YES HADDOCK_DOCS = YES
GhcWithLlvmCodeGen = YES GhcWithLlvmCodeGen = YES
EOF EOF
fi
edo ./boot edo ./boot
edo ./configure --prefix="${inst_location}" --with-ghc="${bootstrap_ghc}" edo ./configure --prefix="${inst_location}" --with-ghc="${bootstrap_ghc}"
@ -1074,6 +1089,8 @@ while [ $# -gt 0 ] ; do
shift 1;; shift 1;;
-j|--jobs) JOBS=$2 -j|--jobs) JOBS=$2
shift 2;; shift 2;;
-c|--build-config) BUILD_CONFIG=$2
shift 2;;
*) GHC_VER=$1 *) GHC_VER=$1
BOOTSTRAP_GHC=$2 BOOTSTRAP_GHC=$2
break;; break;;
@ -1081,7 +1098,7 @@ while [ $# -gt 0 ] ; do
done done
[ "${GHC_VER}" ] || compile_usage [ "${GHC_VER}" ] || compile_usage
[ "${BOOTSTRAP_GHC}" ] || compile_usage [ "${BOOTSTRAP_GHC}" ] || compile_usage
compile_ghc "${GHC_VER}" "${BOOTSTRAP_GHC}" compile_ghc "${GHC_VER}" "${BOOTSTRAP_GHC}" "${BUILD_CONFIG}"
break;; break;;
*) usage;; *) usage;;
esac esac