diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index afa2ab0..3d9df19 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -41,7 +41,7 @@ variables: CABAL_DIR: "$CI_PROJECT_DIR/cabal" .linux:armv7: - image: "arm32v7/fedora" + image: "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb10:$DOCKER_REV" tags: - armv7-linux variables: @@ -50,7 +50,7 @@ variables: CABAL_DIR: "$CI_PROJECT_DIR/cabal" .linux:aarch64: - image: "arm64v8/fedora" + image: "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV" tags: - aarch64-linux variables: @@ -124,14 +124,14 @@ variables: - .test_ghcup_version - .linux:armv7 before_script: - - ./.gitlab/before_script/linux/install_deps_manual.sh + - ./.gitlab/before_script/linux/install_deps.sh .test_ghcup_version:aarch64: extends: - .test_ghcup_version - .linux:aarch64 before_script: - - ./.gitlab/before_script/linux/install_deps_manual.sh + - ./.gitlab/before_script/linux/install_deps.sh .test_ghcup_version:darwin: extends: @@ -374,7 +374,7 @@ release:linux:armv7: - .linux:armv7 - .release_ghcup before_script: - - ./.gitlab/before_script/linux/install_deps_manual.sh + - ./.gitlab/before_script/linux/install_deps.sh variables: ARTIFACT: "armv7-linux-ghcup" GHC_VERSION: "8.10.4" @@ -387,7 +387,7 @@ release:linux:aarch64: - .linux:aarch64 - .release_ghcup before_script: - - ./.gitlab/before_script/linux/install_deps_manual.sh + - ./.gitlab/before_script/linux/install_deps.sh variables: ARTIFACT: "aarch64-linux-ghcup" GHC_VERSION: "8.10.4" diff --git a/.gitlab/before_script/linux/install_deps.sh b/.gitlab/before_script/linux/install_deps.sh index ed7e5c0..062b1a5 100755 --- a/.gitlab/before_script/linux/install_deps.sh +++ b/.gitlab/before_script/linux/install_deps.sh @@ -7,13 +7,60 @@ set -eux mkdir -p "${TMPDIR}" sudo apt-get update -y -sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget +sudo apt-get install -y libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https -curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup > ./ghcup-bin -chmod +x ghcup-bin +case "${ARCH}" in + ARM*) + case "${ARCH}" in + "ARM") + ghc_url=https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-armv7-deb10-linux.tar.xz + cabal_url=home.smart-cactus.org/~ben/cabal-install-${CABAL_VERSION}-armv7-linux-bootstrapped.tar.xz + ;; + "ARM64") + ghc_url=https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-aarch64-deb10-linux.tar.xz + cabal_url=https://downloads.haskell.org/~cabal/cabal-install-${CABAL_VERSION}/cabal-install-${CABAL_VERSION}-aarch64-ubuntu-18.04.tar.xz + ;; + *) + exit 1 ;; + esac -./ghcup-bin upgrade -i -f -./ghcup-bin install ${GHC_VERSION} -./ghcup-bin set ${GHC_VERSION} -./ghcup-bin install-cabal ${CABAL_VERSION} + mkdir -p "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin + + curl -O "${ghc_url}" + tar -xf ghc-*.tar.* + cd ghc-${GHC_VERSION} + ./configure --prefix="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/ghc/${GHC_VERSION} + make install + for i in "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/ghc/${GHC_VERSION}/bin/*-${GHC_VERSION} ; do + ln -s "${i}" "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/${i##*/} + done + for x in "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/*-${GHC_VERSION} ; do + ln -s ${x##*/} ${x%-${GHC_VERSION}} + done + cd .. + rm -rf ghc-${GHC_VERSION} ghc-*.tar.* + unset x i + + mkdir cabal-install + cd cabal-install + curl -O "${cabal_url}" + tar -xf cabal-install-* + mv cabal "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/cabal + cd .. + rm -rf cabal-install + + ;; + *) + url=https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup + + curl -sSfL "${url}" > ./ghcup-bin + chmod +x ghcup-bin + + ./ghcup-bin upgrade -i -f + ./ghcup-bin install ${GHC_VERSION} + ./ghcup-bin set ${GHC_VERSION} + ./ghcup-bin install-cabal ${CABAL_VERSION} + + ;; +esac diff --git a/.gitlab/before_script/linux/install_deps_manual.sh b/.gitlab/before_script/linux/install_deps_manual.sh deleted file mode 100755 index 11ad1eb..0000000 --- a/.gitlab/before_script/linux/install_deps_manual.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/sh - -set -eux - -. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env" - -mkdir -p "${TMPDIR}" - -ednf() { - case "${ARCH}" in - "ARM") - sudo dnf -y --forcearch armv7hl "$@" - ;; - "ARM64") - sudo dnf -y --forcearch aarch64 "$@" - ;; - *) exit 1 ;; - esac -} - -ednf update -ednf install gcc gcc-c++ gmp gmp-devel make ncurses ncurses-devel xz xz-devel perl zlib zlib-devel openssl-devel openssl-libs openssl libffi libffi-devel lbzip2 lbzip2-utils bzip2-devel -if [ "${ARCH}" = "ARM64" ] ; then - ednf install numactl numactl-libs numactl-devel -fi -ednf install bash wget curl git tar -ednf install llvm9.0 llvm9.0-devel llvm9.0-libs llvm9.0-static - -case "${ARCH}" in - "ARM") - ghc_url=https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-armv7-deb10-linux.tar.xz - cabal_url=home.smart-cactus.org/~ben/cabal-install-${CABAL_VERSION}-armv7-linux-bootstrapped.tar.xz - ;; - "ARM64") - ghc_url=https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-aarch64-deb10-linux.tar.xz - cabal_url=https://downloads.haskell.org/~cabal/cabal-install-${CABAL_VERSION}/cabal-install-${CABAL_VERSION}-aarch64-ubuntu-18.04.tar.xz - ;; - *) exit 1 ;; -esac - -mkdir -p "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin - -curl -O "${ghc_url}" -tar -xf ghc-*.tar.* -cd ghc-${GHC_VERSION} -./configure --prefix="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/ghc/${GHC_VERSION} -make install -for i in "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/ghc/${GHC_VERSION}/bin/*-${GHC_VERSION} ; do - ln -s "${i}" "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/${i##*/} -done -for x in "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/*-${GHC_VERSION} ; do - ln -s ${x##*/} ${x%-${GHC_VERSION}} -done -cd .. -rm -rf ghc-${GHC_VERSION} ghc-*.tar.* -unset x i - -mkdir cabal-install -cd cabal-install -curl -O "${cabal_url}" -tar -xf cabal-install-* -mv cabal "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/cabal -cd .. -rm -rf cabal-install diff --git a/.gitlab/ghcup_env b/.gitlab/ghcup_env index 0d99880..99d3409 100644 --- a/.gitlab/ghcup_env +++ b/.gitlab/ghcup_env @@ -4,6 +4,6 @@ if [ "${OS}" = "WINDOWS" ] ; then export TMPDIR="$CI_PROJECT_DIR/tmp" else export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR" - export PATH="$CI_PROJECT_DIR/.ghcup/bin:$CI_PROJECT_DIR/.local/bin:$PATH" + export PATH="$CI_PROJECT_DIR/.ghcup/bin:$CI_PROJECT_DIR/.local/bin:/opt/llvm/bin:$PATH" export TMPDIR="$CI_PROJECT_DIR/tmp" fi