Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a3867484cc | |||
| 2fdf896fbd | |||
| 251c82ee9f | |||
| c2186bb33c | |||
| 1a9d43ea1a | |||
| 9de324d3c3 | |||
| b53acfe61f | |||
|
|
c92f71471d | ||
| 2a79c669a5 | |||
| 9b2d326c38 | |||
| 2bfca3760c | |||
| 0f7f5347d8 | |||
| 80703d7b29 | |||
| 942685f396 | |||
| 02744ff4a0 | |||
| c74409b9a5 | |||
| 1c32dbc88a | |||
| ab17270761 | |||
| d0538a50e0 | |||
| 318ac21e41 | |||
| 3e9bb7c369 | |||
| 2c64cd0f02 | |||
| 59e6b65249 | |||
| 91ef2c7666 |
28
.cirrus.yml
28
.cirrus.yml
@@ -1,28 +0,0 @@
|
|||||||
freebsd_instance:
|
|
||||||
image_family: freebsd-13-2
|
|
||||||
|
|
||||||
build_task:
|
|
||||||
name: build
|
|
||||||
env:
|
|
||||||
GHC_VER: 9.4.8
|
|
||||||
CABAL_VER: 3.10.2.0
|
|
||||||
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
|
||||||
ARCH: 64
|
|
||||||
RUNNER_OS: FreeBSD
|
|
||||||
DISTRO: na
|
|
||||||
GITHUB_WORKSPACE: ${CIRRUS_WORKING_DIR}
|
|
||||||
JSON_VERSION: "0.0.7"
|
|
||||||
CIRRUS_CLONE_SUBMODULES: true
|
|
||||||
AWS_ACCESS_KEY_ID: ENCRYPTED[6ed6287e2dd78ab5f84b22232c5245834ab042bd8ba443883aaf4b4d1ecc0481add1fdfad5ae6f6a8cfb418e6f19b2fc]
|
|
||||||
AWS_SECRET_ACCESS_KEY: ENCRYPTED[16f3cda2954c7cee99444e6788eb5997382aa4ce1477e7523fef2586077541f43b5c816156961fc6b4677259679875a7]
|
|
||||||
S3_HOST: ENCRYPTED[ce961780a33159f7d1d8046956b5ac6ebc3bfc8149428e5f538576cda51d9f3d0c35b79cdd1e325793639ff6e31f889d]
|
|
||||||
install_script:
|
|
||||||
- sed -i.bak -e 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
|
|
||||||
- pkg install -y ghc hs-cabal-install git bash misc/compat10x misc/compat11x misc/compat12x gmake llvm14
|
|
||||||
script:
|
|
||||||
- tzsetup Etc/GMT
|
|
||||||
- adjkerntz -a
|
|
||||||
- bash .github/scripts/build.sh
|
|
||||||
- bash .github/scripts/test.sh
|
|
||||||
binaries_artifacts:
|
|
||||||
path: "out/*"
|
|
||||||
4
.github/scripts/env.sh
vendored
4
.github/scripts/env.sh
vendored
@@ -9,6 +9,10 @@ fi
|
|||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
export TZ=Asia/Singapore
|
export TZ=Asia/Singapore
|
||||||
|
|
||||||
|
if [ "${RUNNER_OS}" = "freebsd" ] ; then
|
||||||
|
export RUNNER_OS=FreeBSD
|
||||||
|
fi
|
||||||
|
|
||||||
export OS="$RUNNER_OS"
|
export OS="$RUNNER_OS"
|
||||||
export PATH="$HOME/.local/bin:$PATH"
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/cross.yaml
vendored
2
.github/workflows/cross.yaml
vendored
@@ -19,7 +19,7 @@ env:
|
|||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build linux binary
|
name: Build linux binary
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, maerwald]
|
||||||
env:
|
env:
|
||||||
CABAL_VER: 3.10.1.0
|
CABAL_VER: 3.10.1.0
|
||||||
JSON_VERSION: "0.0.7"
|
JSON_VERSION: "0.0.7"
|
||||||
|
|||||||
2
.github/workflows/docker.yaml
vendored
2
.github/workflows/docker.yaml
vendored
@@ -57,6 +57,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: docker://arm64v8/ubuntu:focal
|
- uses: docker://arm64v8/ubuntu:focal
|
||||||
name: Cleanup (aarch64 linux)
|
name: Cleanup (aarch64 linux)
|
||||||
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
||||||
|
|
||||||
@@ -93,6 +94,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: docker://arm64v8/ubuntu:focal
|
- uses: docker://arm64v8/ubuntu:focal
|
||||||
name: Cleanup (aarch64 linux)
|
name: Cleanup (aarch64 linux)
|
||||||
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
||||||
|
|
||||||
|
|||||||
83
.github/workflows/release.yaml
vendored
83
.github/workflows/release.yaml
vendored
@@ -103,11 +103,6 @@ jobs:
|
|||||||
GHC_VER: 9.4.8
|
GHC_VER: 9.4.8
|
||||||
ARCH: ARM64
|
ARCH: ARM64
|
||||||
steps:
|
steps:
|
||||||
- uses: docker://arm64v8/debian:10
|
|
||||||
name: Cleanup (aarch64 linux)
|
|
||||||
with:
|
|
||||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
|
||||||
|
|
||||||
- name: git config
|
- name: git config
|
||||||
run: |
|
run: |
|
||||||
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
|
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
|
||||||
@@ -246,6 +241,42 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
./out/*
|
./out/*
|
||||||
|
|
||||||
|
build-freebsd:
|
||||||
|
name: Build binary (FreeBSD)
|
||||||
|
runs-on: [self-hosted, FreeBSD, X64]
|
||||||
|
env:
|
||||||
|
CABAL_VER: 3.10.2.0
|
||||||
|
MACOSX_DEPLOYMENT_TARGET: 10.13
|
||||||
|
JSON_VERSION: "0.0.8"
|
||||||
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
S3_HOST: ${{ secrets.S3_HOST }}
|
||||||
|
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
||||||
|
GHC_VER: 9.4.8
|
||||||
|
ARCH: 64
|
||||||
|
DISTRO: na
|
||||||
|
RUNNER_OS: FreeBSD
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: 'true'
|
||||||
|
|
||||||
|
- name: Run build
|
||||||
|
run: |
|
||||||
|
sed -i.bak -e 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
|
||||||
|
pkg install -y ghc hs-cabal-install git bash misc/compat10x misc/compat11x misc/compat12x gmake llvm14 libiconv
|
||||||
|
tzsetup Etc/GMT
|
||||||
|
adjkerntz -a
|
||||||
|
bash .github/scripts/build.sh
|
||||||
|
- if: always()
|
||||||
|
name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: artifacts
|
||||||
|
path: |
|
||||||
|
./out/*
|
||||||
|
|
||||||
test-linux:
|
test-linux:
|
||||||
name: Test linux
|
name: Test linux
|
||||||
needs: "build-linux"
|
needs: "build-linux"
|
||||||
@@ -346,11 +377,6 @@ jobs:
|
|||||||
DISTRO: Ubuntu
|
DISTRO: Ubuntu
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: docker://arm64v8/debian:10
|
|
||||||
name: Cleanup (aarch64 linux)
|
|
||||||
with:
|
|
||||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
@@ -467,6 +493,41 @@ jobs:
|
|||||||
name: testfiles
|
name: testfiles
|
||||||
path: |
|
path: |
|
||||||
./test/ghcup-test/golden/unix/GHCupInfo*json
|
./test/ghcup-test/golden/unix/GHCupInfo*json
|
||||||
|
test-freebsd:
|
||||||
|
name: Test FreeBSD
|
||||||
|
needs: "build-freebsd"
|
||||||
|
runs-on: [self-hosted, FreeBSD, X64]
|
||||||
|
env:
|
||||||
|
CABAL_VER: 3.10.2.0
|
||||||
|
MACOSX_DEPLOYMENT_TARGET: 10.13
|
||||||
|
JSON_VERSION: "0.0.8"
|
||||||
|
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
||||||
|
GHC_VER: 9.4.8
|
||||||
|
ARCH: 64
|
||||||
|
DISTRO: na
|
||||||
|
RUNNER_OS: FreeBSD
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: 'true'
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: artifacts
|
||||||
|
path: ./out
|
||||||
|
|
||||||
|
- name: Run test
|
||||||
|
run: |
|
||||||
|
bash .github/scripts/test.sh
|
||||||
|
|
||||||
|
- if: failure()
|
||||||
|
name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: testfiles
|
||||||
|
path: |
|
||||||
|
./test/ghcup-test/golden/unix/GHCupInfo*json
|
||||||
hls:
|
hls:
|
||||||
name: hls
|
name: hls
|
||||||
needs: build-linux
|
needs: build-linux
|
||||||
@@ -500,7 +561,7 @@ jobs:
|
|||||||
|
|
||||||
release:
|
release:
|
||||||
name: release
|
name: release
|
||||||
needs: ["test-linux", "test-arm", "test-macwin", "hls"]
|
needs: ["test-linux", "test-arm", "test-macwin", "test-freebsd", "hls"]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: startsWith(github.ref, 'refs/tags/v')
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
689
.gitlab-ci.yml
689
.gitlab-ci.yml
@@ -1,689 +0,0 @@
|
|||||||
stages:
|
|
||||||
- checks
|
|
||||||
- quick-test
|
|
||||||
- test
|
|
||||||
- expensive-test
|
|
||||||
- release
|
|
||||||
|
|
||||||
variables:
|
|
||||||
GIT_SSL_NO_VERIFY: "1"
|
|
||||||
|
|
||||||
# Commit of ghc/ci-images repository from which to pull Docker images
|
|
||||||
DOCKER_REV: 8d0224e6b2a08157649651e69302380b2bd24e11
|
|
||||||
|
|
||||||
# Sequential version number of all cached things.
|
|
||||||
# Bump to invalidate GitLab CI cache.
|
|
||||||
CACHE_REV: 1
|
|
||||||
|
|
||||||
GIT_SUBMODULE_STRATEGY: recursive
|
|
||||||
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
# CI Step
|
|
||||||
############################################################
|
|
||||||
|
|
||||||
.debian:
|
|
||||||
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV"
|
|
||||||
tags:
|
|
||||||
- x86_64-linux
|
|
||||||
variables:
|
|
||||||
OS: "LINUX"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
CROSS: ""
|
|
||||||
|
|
||||||
.alpine:64bit:
|
|
||||||
image: "alpine:3.12"
|
|
||||||
tags:
|
|
||||||
- x86_64-linux
|
|
||||||
variables:
|
|
||||||
OS: "LINUX"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.alpine:32bit:
|
|
||||||
image: "i386/alpine:3.12"
|
|
||||||
tags:
|
|
||||||
- x86_64-linux
|
|
||||||
variables:
|
|
||||||
OS: "LINUX"
|
|
||||||
ARCH: "32"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.linux:armv7:
|
|
||||||
image: "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb10:$DOCKER_REV"
|
|
||||||
tags:
|
|
||||||
- armv7-linux
|
|
||||||
variables:
|
|
||||||
OS: "LINUX"
|
|
||||||
ARCH: "ARM"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
retry: 2
|
|
||||||
|
|
||||||
.linux:aarch64:
|
|
||||||
image: "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV"
|
|
||||||
tags:
|
|
||||||
- aarch64-linux
|
|
||||||
variables:
|
|
||||||
OS: "LINUX"
|
|
||||||
ARCH: "ARM64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.darwin:
|
|
||||||
tags:
|
|
||||||
- x86_64-darwin
|
|
||||||
variables:
|
|
||||||
OS: "DARWIN"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.darwin:aarch64:
|
|
||||||
tags:
|
|
||||||
- aarch64-darwin-m1
|
|
||||||
variables:
|
|
||||||
OS: "DARWIN"
|
|
||||||
ARCH: "ARM64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.freebsd13:
|
|
||||||
tags:
|
|
||||||
- x86_64-freebsd13
|
|
||||||
variables:
|
|
||||||
OS: "FREEBSD"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.freebsd12:
|
|
||||||
tags:
|
|
||||||
- x86_64-freebsd12
|
|
||||||
variables:
|
|
||||||
OS: "FREEBSD"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
|
|
||||||
.windows:
|
|
||||||
tags:
|
|
||||||
- new-x86_64-windows
|
|
||||||
variables:
|
|
||||||
OS: "WINDOWS"
|
|
||||||
ARCH: "64"
|
|
||||||
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
||||||
retry: 2
|
|
||||||
|
|
||||||
.root_cleanup:
|
|
||||||
after_script:
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:
|
|
||||||
script:
|
|
||||||
- bash ./.gitlab/script/ghcup_version.sh
|
|
||||||
variables:
|
|
||||||
JSON_VERSION: "0.0.7"
|
|
||||||
artifacts:
|
|
||||||
expire_in: 2 week
|
|
||||||
paths:
|
|
||||||
- test/golden
|
|
||||||
- dist-newstyle/cache/
|
|
||||||
when: on_failure
|
|
||||||
cache:
|
|
||||||
key: ghcup-test-$CACHE_REV
|
|
||||||
paths:
|
|
||||||
- cabal-cache
|
|
||||||
|
|
||||||
# .test_ghcup_scoop:
|
|
||||||
# script:
|
|
||||||
# - cl /O1 scoop-better-shimexe/shim.c
|
|
||||||
|
|
||||||
.test_ghcup_version:linux:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .debian
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:linux32:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .alpine:32bit
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:armv7:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .linux:armv7
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:aarch64:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .linux:aarch64
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:darwin:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .darwin
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/darwin/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:darwin:aarch64:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .darwin:aarch64
|
|
||||||
cache:
|
|
||||||
key: darwin-brew-$CACHE_REV
|
|
||||||
paths:
|
|
||||||
- brew_cache
|
|
||||||
key: ghcup-test-$CACHE_REV
|
|
||||||
paths:
|
|
||||||
- cabal-cache
|
|
||||||
before_script:
|
|
||||||
# extract brew cache
|
|
||||||
- ./.gitlab/script/ci.sh extract_brew_cache
|
|
||||||
# otherwise we seem to get intel binaries
|
|
||||||
- export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
|
||||||
# update and install packages
|
|
||||||
- /bin/bash ./.gitlab/script/brew.sh llvm autoconf automake coreutils
|
|
||||||
# extract cabal cache
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
script: |
|
|
||||||
export PATH="$CI_PROJECT_DIR/.brew/opt/llvm/bin:$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH"
|
|
||||||
export CC=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang
|
|
||||||
export CXX=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang++
|
|
||||||
export LD=ld
|
|
||||||
export AR=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ar
|
|
||||||
export RANLIB=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ranlib
|
|
||||||
./.gitlab/before_script/darwin/install_deps.sh
|
|
||||||
./.gitlab/script/ghcup_version.sh
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- ./.gitlab/script/ci.sh save_brew_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:freebsd12:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .freebsd12
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/freebsd/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:freebsd13:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .freebsd13
|
|
||||||
before_script:
|
|
||||||
- sudo pkg update
|
|
||||||
- sudo pkg install --yes compat12x-amd64
|
|
||||||
- sudo ln -s libncurses.so.6 /usr/local/lib/libncurses.so.6.2
|
|
||||||
- ./.gitlab/before_script/freebsd/install_deps.sh
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
.test_ghcup_version:windows:
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .windows
|
|
||||||
before_script:
|
|
||||||
- bash ./.gitlab/before_script/windows/install_deps.sh
|
|
||||||
- bash ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
after_script:
|
|
||||||
- bash ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
|
|
||||||
# .test_ghcup_scoop:windows:
|
|
||||||
# extends:
|
|
||||||
# - .windows
|
|
||||||
# - .test_ghcup_scoop
|
|
||||||
|
|
||||||
.release_ghcup:
|
|
||||||
script:
|
|
||||||
- bash ./.gitlab/script/ghcup_release.sh
|
|
||||||
artifacts:
|
|
||||||
expire_in: 2 week
|
|
||||||
paths:
|
|
||||||
- out
|
|
||||||
- dist-newstyle/cache/
|
|
||||||
only:
|
|
||||||
- tags
|
|
||||||
variables:
|
|
||||||
JSON_VERSION: "0.0.7"
|
|
||||||
|
|
||||||
######## stack test ########
|
|
||||||
|
|
||||||
test:linux:stack:
|
|
||||||
stage: test
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/script/ci.sh extract_stack_cache
|
|
||||||
- ./.gitlab/before_script/linux/install_deps_minimal.sh
|
|
||||||
script:
|
|
||||||
- ./.gitlab/script/ghcup_stack.sh
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_stack_cache
|
|
||||||
extends:
|
|
||||||
- .debian
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
######## bootstrap test ########
|
|
||||||
|
|
||||||
test:linux:bootstrap_script:
|
|
||||||
stage: quick-test
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps_minimal.sh
|
|
||||||
script:
|
|
||||||
- ./.gitlab/script/ghcup_bootstrap.sh
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
extends:
|
|
||||||
- .debian
|
|
||||||
- .root_cleanup
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
test:windows:bootstrap_powershell_script:
|
|
||||||
stage: quick-test
|
|
||||||
script:
|
|
||||||
- ./scripts/bootstrap/bootstrap-haskell.ps1 -InstallDir $CI_PROJECT_DIR -BootstrapUrl $CI_PROJECT_DIR/bootstrap-haskell -InBash
|
|
||||||
after_script:
|
|
||||||
- "[Environment]::SetEnvironmentVariable('GHCUP_INSTALL_BASE_PREFIX', $null, [System.EnvironmentVariableTarget]::User)"
|
|
||||||
- "[Environment]::SetEnvironmentVariable('GHCUP_MSYS2', $null, [System.EnvironmentVariableTarget]::User)"
|
|
||||||
- "[Environment]::SetEnvironmentVariable('CABAL_DIR', $null, [System.EnvironmentVariableTarget]::User)"
|
|
||||||
- bash ./.gitlab/after_script.sh
|
|
||||||
- bash ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
extends:
|
|
||||||
- .windows
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
######## linux test ########
|
|
||||||
|
|
||||||
test:linux:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:linux
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
test:linux:hls:
|
|
||||||
stage: expensive-test
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .debian
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
HLS_TARGET_VERSION: "1.4.0"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
when: manual
|
|
||||||
allow_failure: true
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
script:
|
|
||||||
- ./.gitlab/script/ghcup_hls.sh
|
|
||||||
|
|
||||||
test:linux:cross-armv7:
|
|
||||||
stage: expensive-test
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .debian
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.6"
|
|
||||||
GHC_TARGET_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: "arm-linux-gnueabihf"
|
|
||||||
needs: []
|
|
||||||
when: manual
|
|
||||||
allow_failure: true
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
script:
|
|
||||||
- ./.gitlab/script/ghcup_cross.sh
|
|
||||||
|
|
||||||
test:linux:git:hadrian:
|
|
||||||
stage: expensive-test
|
|
||||||
extends:
|
|
||||||
- .test_ghcup_version
|
|
||||||
- .debian
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
GHC_GIT_TAG: "ghc-9.0.1-release"
|
|
||||||
GHC_GIT_VERSION: "9.0.1"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: ""
|
|
||||||
needs: []
|
|
||||||
when: manual
|
|
||||||
allow_failure: true
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
script:
|
|
||||||
- ./.gitlab/script/ghcup_git.sh
|
|
||||||
|
|
||||||
|
|
||||||
######## linux 32bit test ########
|
|
||||||
|
|
||||||
test:linux:32bit:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:linux32
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
######## arm tests ########
|
|
||||||
|
|
||||||
test:linux:armv7:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:armv7
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: ""
|
|
||||||
when: manual
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
test:linux:aarch64:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:aarch64
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: ""
|
|
||||||
when: manual
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
######## darwin test ########
|
|
||||||
|
|
||||||
test:mac:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:darwin
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
test:mac:aarch64:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:darwin:aarch64
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
allow_failure: true
|
|
||||||
when: manual
|
|
||||||
|
|
||||||
|
|
||||||
######## freebsd test ########
|
|
||||||
|
|
||||||
test:freebsd12:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:freebsd12
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
allow_failure: true # freebsd runners are unreliable
|
|
||||||
when: manual
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
test:freebsd13:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:freebsd13
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
allow_failure: true # freebsd runners are unreliable
|
|
||||||
when: manual
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
######## windows test ########
|
|
||||||
|
|
||||||
test:windows:
|
|
||||||
stage: test
|
|
||||||
extends: .test_ghcup_version:windows
|
|
||||||
variables:
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
needs: []
|
|
||||||
|
|
||||||
# test:windows:scoop:
|
|
||||||
# stage: test
|
|
||||||
# extends: .test_ghcup_scoop:windows
|
|
||||||
# needs: []
|
|
||||||
|
|
||||||
######## linux release ########
|
|
||||||
|
|
||||||
release:linux:64bit:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:linux"]
|
|
||||||
extends:
|
|
||||||
- .alpine:64bit
|
|
||||||
- .release_ghcup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "x86_64-linux-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
|
|
||||||
|
|
||||||
release:linux:32bit:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:linux:32bit"]
|
|
||||||
extends:
|
|
||||||
- .alpine:32bit
|
|
||||||
- .release_ghcup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "i386-linux-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
|
|
||||||
release:linux:armv7:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:linux:armv7"]
|
|
||||||
extends:
|
|
||||||
- .linux:armv7
|
|
||||||
- .release_ghcup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "armv7-linux-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: ""
|
|
||||||
|
|
||||||
release:linux:aarch64:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:linux:aarch64"]
|
|
||||||
extends:
|
|
||||||
- .linux:aarch64
|
|
||||||
- .release_ghcup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/linux/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "aarch64-linux-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
CROSS: ""
|
|
||||||
|
|
||||||
######## darwin release ########
|
|
||||||
|
|
||||||
release:darwin:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:mac"]
|
|
||||||
extends:
|
|
||||||
- .darwin
|
|
||||||
- .release_ghcup
|
|
||||||
- .root_cleanup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/darwin/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "x86_64-apple-darwin-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
|
||||||
|
|
||||||
release:darwin:aarch64:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:mac:aarch64"]
|
|
||||||
extends:
|
|
||||||
- .darwin:aarch64
|
|
||||||
- .release_ghcup
|
|
||||||
- .root_cleanup
|
|
||||||
cache:
|
|
||||||
key: darwin-brew-$CACHE_REV
|
|
||||||
paths:
|
|
||||||
- brew_cache
|
|
||||||
key: ghcup-test-$CACHE_REV
|
|
||||||
paths:
|
|
||||||
- cabal-cache
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/script/ci.sh extract_brew_cache
|
|
||||||
- ./.gitlab/script/ci.sh extract_cabal_cache
|
|
||||||
# otherwise we seem to get intel binaries
|
|
||||||
- export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
|
||||||
# update and install packages
|
|
||||||
- /bin/bash ./.gitlab/script/brew.sh llvm autoconf automake coreutils
|
|
||||||
script: |
|
|
||||||
export PATH="$CI_PROJECT_DIR/.brew/opt/llvm/bin:$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH"
|
|
||||||
export CC=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang
|
|
||||||
export CXX=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang++
|
|
||||||
export LD=ld
|
|
||||||
export AR=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ar
|
|
||||||
export RANLIB=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ranlib
|
|
||||||
./.gitlab/before_script/darwin/install_deps.sh
|
|
||||||
./.gitlab/script/ghcup_release.sh
|
|
||||||
after_script:
|
|
||||||
- ./.gitlab/script/ci.sh save_cabal_cache
|
|
||||||
- ./.gitlab/script/ci.sh save_brew_cache
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "aarch64-apple-darwin-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
|
||||||
allow_failure: true
|
|
||||||
when: manual
|
|
||||||
|
|
||||||
|
|
||||||
######## freebsd release ########
|
|
||||||
|
|
||||||
release:freebsd12:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:freebsd12"]
|
|
||||||
extends:
|
|
||||||
- .freebsd12
|
|
||||||
- .release_ghcup
|
|
||||||
- .root_cleanup
|
|
||||||
before_script:
|
|
||||||
- ./.gitlab/before_script/freebsd/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
release:freebsd13:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:freebsd13"]
|
|
||||||
extends:
|
|
||||||
- .freebsd13
|
|
||||||
- .release_ghcup
|
|
||||||
- .root_cleanup
|
|
||||||
before_script:
|
|
||||||
- sudo pkg update
|
|
||||||
- sudo pkg install --yes compat12x-amd64
|
|
||||||
- sudo ln -s libncurses.so.6 /usr/local/lib/libncurses.so.6.2
|
|
||||||
- ./.gitlab/before_script/freebsd/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
######## windows release ########
|
|
||||||
|
|
||||||
release:windows:
|
|
||||||
stage: release
|
|
||||||
needs: ["test:windows"]
|
|
||||||
extends:
|
|
||||||
- .windows
|
|
||||||
- .release_ghcup
|
|
||||||
- .root_cleanup
|
|
||||||
before_script:
|
|
||||||
- bash ./.gitlab/before_script/windows/install_deps.sh
|
|
||||||
variables:
|
|
||||||
ARTIFACT: "x86_64-mingw64-ghcup"
|
|
||||||
GHC_VERSION: "8.10.7"
|
|
||||||
CABAL_VERSION: "3.6.2.0"
|
|
||||||
|
|
||||||
######## hlint ########
|
|
||||||
|
|
||||||
hlint:
|
|
||||||
stage: checks
|
|
||||||
extends:
|
|
||||||
- .debian
|
|
||||||
script:
|
|
||||||
- curl -sSL https://raw.github.com/ndmitchell/hlint/master/misc/run.sh | sh -s -- -r lib/ test/
|
|
||||||
allow_failure: true
|
|
||||||
artifacts:
|
|
||||||
expire_in: 2 week
|
|
||||||
paths:
|
|
||||||
- report.html
|
|
||||||
when: on_failure
|
|
||||||
|
|
||||||
######## mkdocs ########
|
|
||||||
|
|
||||||
mkdocs:
|
|
||||||
stage: checks
|
|
||||||
extends:
|
|
||||||
- .debian
|
|
||||||
before_script:
|
|
||||||
- sudo apt-get update -y
|
|
||||||
- sudo apt-get install -y python3-pip
|
|
||||||
- pip3 install mkdocs
|
|
||||||
script:
|
|
||||||
- ~/.local/bin/mkdocs build
|
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
######## shellcheck ########
|
|
||||||
|
|
||||||
shellcheck:
|
|
||||||
image: "koalaman/shellcheck-alpine"
|
|
||||||
tags:
|
|
||||||
- x86_64-linux
|
|
||||||
stage: checks
|
|
||||||
script:
|
|
||||||
- shellcheck scripts/bootstrap/bootstrap-haskell
|
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
BUILD_DIR=$CI_PROJECT_DIR
|
|
||||||
echo "Cleaning $BUILD_DIR"
|
|
||||||
cd $HOME
|
|
||||||
test -n "$BUILD_DIR"
|
|
||||||
shopt -s extglob
|
|
||||||
rm -Rf "$BUILD_DIR"/!(out)
|
|
||||||
if [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
rm -Rf /c/ghcup
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${OS}" = "DARWIN" ] ; then
|
|
||||||
rm -Rf /private/tmp/.brew_tmp
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "${TMPDIR}"
|
|
||||||
|
|
||||||
if [ $ARCH = 'ARM64' ] ; then
|
|
||||||
curl -sSfL https://downloads.haskell.org/~ghcup/aarch64-apple-darwin-ghcup > ./ghcup-bin
|
|
||||||
chmod +x ghcup-bin
|
|
||||||
else
|
|
||||||
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-apple-darwin-ghcup > ./ghcup-bin
|
|
||||||
chmod +x ghcup-bin
|
|
||||||
./ghcup-bin upgrade -i -f
|
|
||||||
fi
|
|
||||||
|
|
||||||
./ghcup-bin install ${GHC_VERSION}
|
|
||||||
./ghcup-bin set ${GHC_VERSION}
|
|
||||||
./ghcup-bin install-cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
if [ $ARCH = 'ARM64' ] ; then
|
|
||||||
cabal update
|
|
||||||
mkdir vendored
|
|
||||||
cd vendored
|
|
||||||
cabal unpack network-3.1.2.1
|
|
||||||
cd network*
|
|
||||||
autoreconf -fi
|
|
||||||
cd ../..
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
# pkg install --force --yes --no-repo-update curl gcc gmp gmake ncurses perl5 libffi libiconv
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "${TMPDIR}"
|
|
||||||
|
|
||||||
if freebsd-version | grep -E '^12.*' ; then
|
|
||||||
freebsd_ver=12
|
|
||||||
elif freebsd-version | grep -E '^13.*' ; then
|
|
||||||
freebsd_ver=13
|
|
||||||
else
|
|
||||||
(>&2 echo "Unsupported FreeBSD version! Please report a bug at https://gitlab.haskell.org/haskell/ghcup-hs/-/issues")
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-freebsd${freebsd_ver}-ghcup > ./ghcup-bin
|
|
||||||
chmod +x ghcup-bin
|
|
||||||
|
|
||||||
./ghcup-bin -v upgrade -i -f
|
|
||||||
./ghcup-bin -v install ${GHC_VERSION}
|
|
||||||
./ghcup-bin -v set ${GHC_VERSION}
|
|
||||||
./ghcup-bin -v install-cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "${TMPDIR}"
|
|
||||||
|
|
||||||
apk add --no-cache \
|
|
||||||
curl \
|
|
||||||
gcc \
|
|
||||||
g++ \
|
|
||||||
binutils \
|
|
||||||
binutils-gold \
|
|
||||||
bsd-compat-headers \
|
|
||||||
gmp-dev \
|
|
||||||
ncurses-dev \
|
|
||||||
libffi-dev \
|
|
||||||
make \
|
|
||||||
xz \
|
|
||||||
tar \
|
|
||||||
perl
|
|
||||||
|
|
||||||
if [ "${ARCH}" = "32" ] ; then
|
|
||||||
curl -sSfL https://downloads.haskell.org/ghcup/i386-linux-ghcup > ./ghcup-bin
|
|
||||||
else
|
|
||||||
curl -sSfL https://downloads.haskell.org/ghcup/x86_64-linux-ghcup > ./ghcup-bin
|
|
||||||
fi
|
|
||||||
chmod +x ghcup-bin
|
|
||||||
./ghcup-bin upgrade -i -f
|
|
||||||
./ghcup-bin install ${GHC_VERSION}
|
|
||||||
./ghcup-bin install-cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
# utils
|
|
||||||
apk add --no-cache \
|
|
||||||
bash \
|
|
||||||
git
|
|
||||||
|
|
||||||
## Package specific
|
|
||||||
apk add --no-cache \
|
|
||||||
zlib \
|
|
||||||
zlib-dev \
|
|
||||||
zlib-static \
|
|
||||||
bzip2 \
|
|
||||||
bzip2-dev \
|
|
||||||
bzip2-static \
|
|
||||||
gmp \
|
|
||||||
gmp-dev \
|
|
||||||
openssl-dev \
|
|
||||||
openssl-libs-static \
|
|
||||||
xz \
|
|
||||||
xz-dev \
|
|
||||||
ncurses-static
|
|
||||||
|
|
||||||
if [ "${ARCH}" = "32" ] ; then
|
|
||||||
apk add --no-cache \
|
|
||||||
bsd-compat-headers
|
|
||||||
fi
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
|
||||||
|
|
||||||
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 lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential
|
|
||||||
|
|
||||||
if [ "${CROSS}" = "arm-linux-gnueabihf" ] ; then
|
|
||||||
sudo apt-get install -y gcc-arm-linux-gnueabihf
|
|
||||||
sudo dpkg --add-architecture armhf
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y libncurses-dev:armhf
|
|
||||||
fi
|
|
||||||
|
|
||||||
export BOOTSTRAP_HASKELL_NONINTERACTIVE=1
|
|
||||||
export BOOTSTRAP_HASKELL_GHC_VERSION=$GHC_VERSION
|
|
||||||
export BOOTSTRAP_HASKELL_CABAL_VERSION=$CABAL_VERSION
|
|
||||||
export BOOTSTRAP_HASKELL_VERBOSE=1
|
|
||||||
|
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
|
|
||||||
|
|
||||||
rm "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/ghcup
|
|
||||||
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
|
||||||
|
|
||||||
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
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "${TMPDIR}" "${CABAL_DIR}"
|
|
||||||
|
|
||||||
mkdir -p "$GHCUP_INSTALL_BASE_PREFIX/ghcup/bin"
|
|
||||||
|
|
||||||
CI_PROJECT_DIR=$(pwd)
|
|
||||||
curl -o ghcup.exe https://downloads.haskell.org/~ghcup/x86_64-mingw64-ghcup.exe
|
|
||||||
chmod +x ghcup.exe
|
|
||||||
|
|
||||||
./ghcup.exe install ${GHC_VERSION}
|
|
||||||
./ghcup.exe set ${GHC_VERSION}
|
|
||||||
./ghcup.exe install-cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
rm ./ghcup.exe
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,37 +0,0 @@
|
|||||||
.
|
|
||||||
./cabal
|
|
||||||
./ghc
|
|
||||||
./ghc-8.10.7
|
|
||||||
./ghc-pkg
|
|
||||||
./ghc-pkg-8.10.7
|
|
||||||
./ghci
|
|
||||||
./ghci-8.10.7
|
|
||||||
./haddock
|
|
||||||
./haddock-8.10.7
|
|
||||||
./haskell-language-server-8.10.6
|
|
||||||
./haskell-language-server-8.10.6~1.6.1.0
|
|
||||||
./haskell-language-server-8.10.7
|
|
||||||
./haskell-language-server-8.10.7~1.6.1.0
|
|
||||||
./haskell-language-server-8.6.5
|
|
||||||
./haskell-language-server-8.6.5~1.6.1.0
|
|
||||||
./haskell-language-server-8.8.4
|
|
||||||
./haskell-language-server-8.8.4~1.6.1.0
|
|
||||||
./haskell-language-server-9.0.1
|
|
||||||
./haskell-language-server-9.0.1~1.6.1.0
|
|
||||||
./haskell-language-server-9.0.2
|
|
||||||
./haskell-language-server-9.0.2~1.6.1.0
|
|
||||||
./haskell-language-server-9.2.1
|
|
||||||
./haskell-language-server-9.2.1~1.6.1.0
|
|
||||||
./haskell-language-server-wrapper
|
|
||||||
./haskell-language-server-wrapper-1.6.1.0
|
|
||||||
./hp2ps
|
|
||||||
./hp2ps-8.10.7
|
|
||||||
./hpc
|
|
||||||
./hpc-8.10.7
|
|
||||||
./hsc2hs
|
|
||||||
./hsc2hs-8.10.7
|
|
||||||
./runghc
|
|
||||||
./runghc-8.10.7
|
|
||||||
./runhaskell
|
|
||||||
./runhaskell-8.10.7
|
|
||||||
./stack
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
.
|
|
||||||
./cabal.exe
|
|
||||||
./cabal.shim
|
|
||||||
./ghc-8.10.7.exe
|
|
||||||
./ghc-8.10.7.shim
|
|
||||||
./ghc-pkg-8.10.7.exe
|
|
||||||
./ghc-pkg-8.10.7.shim
|
|
||||||
./ghc-pkg.exe
|
|
||||||
./ghc-pkg.shim
|
|
||||||
./ghc.exe
|
|
||||||
./ghc.shim
|
|
||||||
./ghci-8.10.7.exe
|
|
||||||
./ghci-8.10.7.shim
|
|
||||||
./ghci.exe
|
|
||||||
./ghci.shim
|
|
||||||
./ghcii-8.10.7.sh-8.10.7.exe
|
|
||||||
./ghcii-8.10.7.sh-8.10.7.shim
|
|
||||||
./ghcii-8.10.7.sh.exe
|
|
||||||
./ghcii-8.10.7.sh.shim
|
|
||||||
./ghcii.sh-8.10.7.exe
|
|
||||||
./ghcii.sh-8.10.7.shim
|
|
||||||
./ghcii.sh.exe
|
|
||||||
./ghcii.sh.shim
|
|
||||||
./haddock-8.10.7.exe
|
|
||||||
./haddock-8.10.7.shim
|
|
||||||
./haddock.exe
|
|
||||||
./haddock.shim
|
|
||||||
./haskell-language-server-8.10.6.exe
|
|
||||||
./haskell-language-server-8.10.6.shim
|
|
||||||
./haskell-language-server-8.10.6~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.10.6~1.6.1.0.shim
|
|
||||||
./haskell-language-server-8.10.7.exe
|
|
||||||
./haskell-language-server-8.10.7.shim
|
|
||||||
./haskell-language-server-8.10.7~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.10.7~1.6.1.0.shim
|
|
||||||
./haskell-language-server-8.6.5.exe
|
|
||||||
./haskell-language-server-8.6.5.shim
|
|
||||||
./haskell-language-server-8.6.5~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.6.5~1.6.1.0.shim
|
|
||||||
./haskell-language-server-8.8.4.exe
|
|
||||||
./haskell-language-server-8.8.4.shim
|
|
||||||
./haskell-language-server-8.8.4~1.6.1.0.exe
|
|
||||||
./haskell-language-server-8.8.4~1.6.1.0.shim
|
|
||||||
./haskell-language-server-9.0.1.exe
|
|
||||||
./haskell-language-server-9.0.1.shim
|
|
||||||
./haskell-language-server-9.0.1~1.6.1.0.exe
|
|
||||||
./haskell-language-server-9.0.1~1.6.1.0.shim
|
|
||||||
./haskell-language-server-9.0.2.exe
|
|
||||||
./haskell-language-server-9.0.2.shim
|
|
||||||
./haskell-language-server-9.0.2~1.6.1.0.exe
|
|
||||||
./haskell-language-server-9.0.2~1.6.1.0.shim
|
|
||||||
./haskell-language-server-9.2.1.exe
|
|
||||||
./haskell-language-server-9.2.1.shim
|
|
||||||
./haskell-language-server-9.2.1~1.6.1.0.exe
|
|
||||||
./haskell-language-server-9.2.1~1.6.1.0.shim
|
|
||||||
./haskell-language-server-wrapper-1.6.1.0.exe
|
|
||||||
./haskell-language-server-wrapper-1.6.1.0.shim
|
|
||||||
./haskell-language-server-wrapper.exe
|
|
||||||
./haskell-language-server-wrapper.shim
|
|
||||||
./hp2ps-8.10.7.exe
|
|
||||||
./hp2ps-8.10.7.shim
|
|
||||||
./hp2ps.exe
|
|
||||||
./hp2ps.shim
|
|
||||||
./hpc-8.10.7.exe
|
|
||||||
./hpc-8.10.7.shim
|
|
||||||
./hpc.exe
|
|
||||||
./hpc.shim
|
|
||||||
./hsc2hs-8.10.7.exe
|
|
||||||
./hsc2hs-8.10.7.shim
|
|
||||||
./hsc2hs.exe
|
|
||||||
./hsc2hs.shim
|
|
||||||
./runghc-8.10.7.exe
|
|
||||||
./runghc-8.10.7.shim
|
|
||||||
./runghc.exe
|
|
||||||
./runghc.shim
|
|
||||||
./runhaskell-8.10.7.exe
|
|
||||||
./runhaskell-8.10.7.shim
|
|
||||||
./runhaskell.exe
|
|
||||||
./runhaskell.shim
|
|
||||||
./stack.exe
|
|
||||||
./stack.shim
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
if [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR"
|
|
||||||
export GHCUP_BIN="$CI_PROJECT_DIR/ghcup/bin"
|
|
||||||
export PATH="$GHCUP_BIN:$CI_PROJECT_DIR/.local/bin:$PATH"
|
|
||||||
export TMPDIR="$CI_PROJECT_DIR/tmp"
|
|
||||||
export CABAL_DIR="$CI_PROJECT_DIR/cabal"
|
|
||||||
export CABAL_CACHE="$CI_PROJECT_DIR/cabal-cache"
|
|
||||||
export STACK_ROOT="$CI_PROJECT_DIR/stack"
|
|
||||||
export STACK_CACHE="$CI_PROJECT_DIR/stack-cache"
|
|
||||||
export BREW_DIR="$CI_PROJECT_DIR/.brew_cache"
|
|
||||||
export BREW_CACHE="$CI_PROJECT_DIR/brew-cache"
|
|
||||||
else
|
|
||||||
export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR"
|
|
||||||
export GHCUP_BIN="$CI_PROJECT_DIR/.ghcup/bin"
|
|
||||||
export PATH="$GHCUP_BIN:$CI_PROJECT_DIR/.local/bin:$PATH"
|
|
||||||
export TMPDIR="$CI_PROJECT_DIR/tmp"
|
|
||||||
export CABAL_DIR="$CI_PROJECT_DIR/cabal"
|
|
||||||
export CABAL_CACHE="$CI_PROJECT_DIR/cabal-cache"
|
|
||||||
export STACK_ROOT="$CI_PROJECT_DIR/stack"
|
|
||||||
export STACK_CACHE="$CI_PROJECT_DIR/stack-cache"
|
|
||||||
export BREW_DIR="$CI_PROJECT_DIR/.brew_cache"
|
|
||||||
export BREW_CACHE="$CI_PROJECT_DIR/brew-cache"
|
|
||||||
fi
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -Eeuxo pipefail
|
|
||||||
|
|
||||||
# Install brew locally in the project dir. Packages will also be installed here.
|
|
||||||
[ -e "$CI_PROJECT_DIR/.brew" ] || git clone --depth=1 https://github.com/Homebrew/brew $CI_PROJECT_DIR/.brew
|
|
||||||
export PATH="$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH"
|
|
||||||
|
|
||||||
# make sure to not pollute the machine with temp files etc
|
|
||||||
mkdir -p $CI_PROJECT_DIR/.brew_cache
|
|
||||||
export HOMEBREW_CACHE=$CI_PROJECT_DIR/.brew_cache
|
|
||||||
mkdir -p $CI_PROJECT_DIR/.brew_logs
|
|
||||||
export HOMEBREW_LOGS=$CI_PROJECT_DIR/.brew_logs
|
|
||||||
mkdir -p /private/tmp/.brew_tmp
|
|
||||||
export HOMEBREW_TEMP=/private/tmp/.brew_tmp
|
|
||||||
|
|
||||||
# update and install packages
|
|
||||||
brew update
|
|
||||||
brew install ${1+"$@"}
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -Eeuo pipefail
|
|
||||||
|
|
||||||
TOP="$( cd "$(dirname "$0")" ; pwd -P )"
|
|
||||||
. "${TOP}/../ghcup_env"
|
|
||||||
|
|
||||||
function save_cabal_cache () {
|
|
||||||
echo "Storing cabal cache from $CABAL_DIR to $CABAL_CACHE..."
|
|
||||||
rm -Rf "$CABAL_CACHE"
|
|
||||||
mkdir -p "$CABAL_CACHE"
|
|
||||||
if [ -d "$CABAL_DIR" ]; then
|
|
||||||
cp -Rf "$CABAL_DIR" "$CABAL_CACHE/"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function extract_cabal_cache () {
|
|
||||||
if [ -d "$CABAL_CACHE" ]; then
|
|
||||||
echo "Extracting cabal cache from $CABAL_CACHE to $CABAL_DIR..."
|
|
||||||
mkdir -p "$CABAL_DIR"
|
|
||||||
cp -Rf "$CABAL_CACHE"/* "$CABAL_DIR"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function save_stack_cache () {
|
|
||||||
echo "Storing stack cache from $STACK_ROOT to $STACK_CACHE..."
|
|
||||||
rm -Rf "$STACK_CACHE"
|
|
||||||
mkdir -p "$STACK_CACHE"
|
|
||||||
if [ -d "$STACK_ROOT" ]; then
|
|
||||||
cp -Rf "$STACK_DIR" "$STACK_CACHE"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function extract_stack_cache () {
|
|
||||||
if [ -d "$STACK_CACHE" ]; then
|
|
||||||
echo "Extracting stack cache from $STACK_CACHE to $STACK_ROOT..."
|
|
||||||
mkdir -p "$STACK_ROOT"
|
|
||||||
cp -Rf "$STACK_CACHE"/* "$STACK_ROOT"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function save_brew_cache () {
|
|
||||||
echo "Storing brew cache from $BREW_DIR to $BREW_CACHE..."
|
|
||||||
rm -Rf "$BREW_CACHE"
|
|
||||||
mkdir -p "$BREW_CACHE"
|
|
||||||
if [ -d "$BREW_DIR" ]; then
|
|
||||||
cp -Rf "$BREW_DIR" "$BREW_CACHE"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function extract_brew_cache () {
|
|
||||||
if [ -d "$BREW_CACHE" ]; then
|
|
||||||
echo "Extracting stack cache from $BREW_CACHE to $BREW_DIR..."
|
|
||||||
mkdir -p "$BREW_DIR"
|
|
||||||
cp -Rf "$BREW_CACHE"/* "$BREW_DIR"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
extract_cabal_cache) extract_cabal_cache ;;
|
|
||||||
save_cabal_cache) save_cabal_cache ;;
|
|
||||||
extract_stack_cache) extract_stack_cache ;;
|
|
||||||
save_stack_cache) save_stack_cache ;;
|
|
||||||
extract_brew_cache) extract_brew_cache ;;
|
|
||||||
save_brew_cache) save_brew_cache ;;
|
|
||||||
*) echo "unknown mode $1" ; exit 11 ;;
|
|
||||||
esac
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
export BOOTSTRAP_HASKELL_NONINTERACTIVE=yes
|
|
||||||
export BOOTSTRAP_HASKELL_GHC_VERSION=$GHC_VERSION
|
|
||||||
export BOOTSTRAP_HASKELL_CABAL_VERSION=$CABAL_VERSION
|
|
||||||
|
|
||||||
./scripts/bootstrap/bootstrap-haskell
|
|
||||||
|
|
||||||
[ "$(ghc --numeric-version)" = "${GHC_VERSION}" ]
|
|
||||||
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
CI_PROJECT_DIR=$(pwd)
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
eghcup() {
|
|
||||||
ghcup -v -c -s file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
ecabal build -w ghc-${GHC_VERSION}
|
|
||||||
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')" "$CI_PROJECT_DIR"/.local/bin/ghcup
|
|
||||||
|
|
||||||
### cleanup
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
|
||||||
|
|
||||||
### manual cli based testing
|
|
||||||
|
|
||||||
eghcup --numeric-version
|
|
||||||
|
|
||||||
eghcup install ghc ${GHC_VERSION}
|
|
||||||
eghcup set ghc ${GHC_VERSION}
|
|
||||||
eghcup install cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
cabal --version
|
|
||||||
|
|
||||||
eghcup debug-info
|
|
||||||
|
|
||||||
eghcup compile ghc -j $(nproc) -v ${GHC_TARGET_VERSION} -b ${GHC_VERSION} -x ${CROSS} -- --enable-unregisterised
|
|
||||||
eghcup set ghc ${CROSS}-${GHC_TARGET_VERSION}
|
|
||||||
|
|
||||||
[ `$(eghcup whereis ghc ${CROSS}-${GHC_TARGET_VERSION}) --numeric-version` = "${GHC_TARGET_VERSION}" ]
|
|
||||||
|
|
||||||
# nuke
|
|
||||||
eghcup nuke
|
|
||||||
[ ! -e "${GHCUP_INSTALL_BASE_PREFIX}/.ghcup" ]
|
|
||||||
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
CI_PROJECT_DIR=$(pwd)
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
eghcup() {
|
|
||||||
ghcup -v -c -s file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
ecabal build -w ghc-${GHC_VERSION}
|
|
||||||
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')" "$CI_PROJECT_DIR"/.local/bin/ghcup
|
|
||||||
|
|
||||||
### cleanup
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
|
||||||
|
|
||||||
### manual cli based testing
|
|
||||||
|
|
||||||
eghcup --numeric-version
|
|
||||||
|
|
||||||
eghcup install ghc ${GHC_VERSION}
|
|
||||||
eghcup set ghc ${GHC_VERSION}
|
|
||||||
eghcup install cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
cabal --version
|
|
||||||
|
|
||||||
eghcup debug-info
|
|
||||||
|
|
||||||
eghcup compile ghc -j $(nproc) -g ${GHC_GIT_TAG} -b ${GHC_VERSION} -- --enable-unregisterised
|
|
||||||
eghcup set ghc ${GHC_GIT_VERSION}
|
|
||||||
|
|
||||||
[ `$(eghcup whereis ghc ${GHC_GIT_VERSION}) --numeric-version` = "${GHC_GIT_VERSION}" ]
|
|
||||||
|
|
||||||
# nuke
|
|
||||||
eghcup nuke
|
|
||||||
[ ! -e "${GHCUP_INSTALL_BASE_PREFIX}/.ghcup" ]
|
|
||||||
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
CI_PROJECT_DIR=$(pwd)
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
eghcup() {
|
|
||||||
ghcup -v -c -s file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
ecabal build -w ghc-${GHC_VERSION}
|
|
||||||
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')" "$CI_PROJECT_DIR"/.local/bin/ghcup
|
|
||||||
|
|
||||||
### cleanup
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
|
||||||
|
|
||||||
### manual cli based testing
|
|
||||||
|
|
||||||
eghcup --numeric-version
|
|
||||||
|
|
||||||
eghcup install ghc ${GHC_VERSION}
|
|
||||||
eghcup set ghc ${GHC_VERSION}
|
|
||||||
eghcup install cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
cabal --version
|
|
||||||
|
|
||||||
eghcup debug-info
|
|
||||||
|
|
||||||
eghcup compile hls -j $(nproc) -v ${HLS_TARGET_VERSION} --ghc ${GHC_VERSION}
|
|
||||||
|
|
||||||
[ `$(eghcup whereis hls ${HLS_TARGET_VERSION}) --numeric-version` = "${HLS_TARGET_VERSION}" ] || [ `$(eghcup whereis hls ${HLS_TARGET_VERSION}) --numeric-version | sed 's/.0$//'` = "${HLS_TARGET_VERSION}" ]
|
|
||||||
|
|
||||||
# nuke
|
|
||||||
eghcup nuke
|
|
||||||
[ ! -e "${GHCUP_INSTALL_BASE_PREFIX}/.ghcup" ]
|
|
||||||
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
git describe
|
|
||||||
|
|
||||||
# build
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
|
|
||||||
if [ "${OS}" = "LINUX" ] ; then
|
|
||||||
if [ "${ARCH}" = "32" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui
|
|
||||||
elif [ "${ARCH}" = "64" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui
|
|
||||||
else
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -ftui
|
|
||||||
fi
|
|
||||||
elif [ "${OS}" = "FREEBSD" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections' --constraint="zlib +bundled-c-zlib" --constraint="zip +disable-zstd" -ftui
|
|
||||||
elif [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} --constraint="zlib +bundled-c-zlib" --constraint="lzma +static"
|
|
||||||
else
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" -ftui
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir out
|
|
||||||
binary=$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')
|
|
||||||
ver=$("${binary}" --numeric-version)
|
|
||||||
if [ "${OS}" = "DARWIN" ] ; then
|
|
||||||
strip "${binary}"
|
|
||||||
else
|
|
||||||
strip -s "${binary}"
|
|
||||||
fi
|
|
||||||
cp "${binary}" out/${ARTIFACT}-${ver}
|
|
||||||
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
curl -L -O https://get.haskellstack.org/stable/linux-x86_64.tar.gz
|
|
||||||
tar xf linux-x86_64.tar.gz
|
|
||||||
cp stack-*-linux-*/stack "$CI_PROJECT_DIR"/.local/bin/stack
|
|
||||||
chmod +x "$CI_PROJECT_DIR"/.local/bin/stack
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.stack_root
|
|
||||||
export TAR_OPTIONS=--no-same-owner
|
|
||||||
stack --allow-different-user --stack-root "$CI_PROJECT_DIR"/.stack_root build
|
|
||||||
stack --allow-different-user --stack-root "$CI_PROJECT_DIR"/.stack_root test
|
|
||||||
@@ -1,314 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
CI_PROJECT_DIR=$(pwd)
|
|
||||||
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
raw_eghcup() {
|
|
||||||
ghcup -v -c "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
eghcup() {
|
|
||||||
if [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
ghcup -v -c -s file:/$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@"
|
|
||||||
else
|
|
||||||
ghcup -v -c -s file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/ghcup
|
|
||||||
else
|
|
||||||
GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup
|
|
||||||
fi
|
|
||||||
|
|
||||||
git describe --always
|
|
||||||
|
|
||||||
### build
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_DIR}"/share
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
|
|
||||||
if [ "${OS}" = "DARWIN" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -ftui
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} -ftui ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION} -ftui
|
|
||||||
elif [ "${OS}" = "LINUX" ] ; then
|
|
||||||
if [ "${ARCH}" = "32" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
else
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
# doctest
|
|
||||||
curl -sL https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal-docspec/cabal-docspec-0.0.0.20210228_p1.tar.bz2 > cabal-docspec.tar.bz2
|
|
||||||
echo '3a10f6fec16dbd18efdd331b1cef5d2d342082da42f5b520726d1fa6a3990d12 cabal-docspec.tar.bz2' | sha256sum -c -
|
|
||||||
tar -xjf cabal-docspec.tar.bz2 cabal-docspec
|
|
||||||
mv cabal-docspec "$CI_PROJECT_DIR"/.local/bin/cabal-docspec
|
|
||||||
rm -f cabal-docspec.tar.bz2
|
|
||||||
chmod a+x "$CI_PROJECT_DIR"/.local/bin/cabal-docspec
|
|
||||||
|
|
||||||
cabal-docspec -XCPP -XTypeSynonymInstances -XOverloadedStrings -XPackageImports --check-properties
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
elif [ "${OS}" = "FREEBSD" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui --constraint="zip +disable-zstd"
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui --constraint="zip +disable-zstd" ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui --constraint="zip +disable-zstd"
|
|
||||||
elif [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
ecabal build -w ghc-${GHC_VERSION}
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION}
|
|
||||||
else
|
|
||||||
ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui ghcup-test
|
|
||||||
ecabal haddock -w ghc-${GHC_VERSION} -finternal-downloader -ftui
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
ext=".exe"
|
|
||||||
else
|
|
||||||
ext=''
|
|
||||||
fi
|
|
||||||
cp "$(ecabal new-exec -w ghc-${GHC_VERSION} --verbose=0 --offline sh -- -c 'command -v ghcup')" "$CI_PROJECT_DIR"/.local/bin/ghcup${ext}
|
|
||||||
|
|
||||||
### cleanup
|
|
||||||
|
|
||||||
rm -rf "${GHCUP_DIR}"
|
|
||||||
|
|
||||||
### manual cli based testing
|
|
||||||
|
|
||||||
|
|
||||||
eghcup --numeric-version
|
|
||||||
|
|
||||||
eghcup install ghc ${GHC_VERSION}
|
|
||||||
eghcup unset ghc ${GHC_VERSION}
|
|
||||||
ls -lah "$(eghcup whereis -d ghc ${GHC_VERSION})"
|
|
||||||
[ "`$(eghcup whereis ghc ${GHC_VERSION}) --numeric-version`" = "${GHC_VERSION}" ]
|
|
||||||
[ "`eghcup run --ghc ${GHC_VERSION} -- ghc --numeric-version`" = "${GHC_VERSION}" ]
|
|
||||||
[ "`ghcup run --ghc ${GHC_VERSION} -- ghc -e 'Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)'`" = "`$(ghcup whereis ghc ${GHC_VERSION}) -e 'Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)'`" ]
|
|
||||||
eghcup set ghc ${GHC_VERSION}
|
|
||||||
eghcup install cabal ${CABAL_VERSION}
|
|
||||||
[ "`$(eghcup whereis cabal ${CABAL_VERSION}) --numeric-version`" = "${CABAL_VERSION}" ]
|
|
||||||
eghcup unset cabal
|
|
||||||
"$GHCUP_BIN"/cabal --version && exit 1 || echo yes
|
|
||||||
|
|
||||||
# make sure no cabal is set when running 'ghcup run' to check that PATH propagages properly
|
|
||||||
# https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/375
|
|
||||||
[ "`eghcup run --cabal ${CABAL_VERSION} -- cabal --numeric-version`" = "${CABAL_VERSION}" ]
|
|
||||||
eghcup set cabal ${CABAL_VERSION}
|
|
||||||
|
|
||||||
[ "`$(eghcup whereis cabal ${CABAL_VERSION}) --numeric-version`" = "${CABAL_VERSION}" ]
|
|
||||||
|
|
||||||
if [ "${OS}" != "FREEBSD" ] ; then
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
eghcup run --ghc 8.10.7 --cabal 3.4.1.0 --hls 1.6.1.0 --stack 2.7.3 --install --bindir "$(pwd)/.bin"
|
|
||||||
if [ "${OS}" == "WINDOWS" ] ; then
|
|
||||||
expected=$(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files.windows" | sort)
|
|
||||||
else
|
|
||||||
expected=$(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files" | sort)
|
|
||||||
fi
|
|
||||||
actual=$(cd ".bin" && find . | sort)
|
|
||||||
[ "${actual}" = "${expected}" ]
|
|
||||||
unset actual expected
|
|
||||||
rm -rf .bin
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
cabal --version
|
|
||||||
|
|
||||||
eghcup debug-info
|
|
||||||
|
|
||||||
# also test etags
|
|
||||||
eghcup list
|
|
||||||
eghcup list -t ghc
|
|
||||||
eghcup list -t cabal
|
|
||||||
|
|
||||||
ghc_ver=$(ghc --numeric-version)
|
|
||||||
ghc --version
|
|
||||||
ghc-${ghc_ver} --version
|
|
||||||
if [ "${OS}" != "WINDOWS" ] ; then
|
|
||||||
ghci --version
|
|
||||||
ghci-${ghc_ver} --version
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [ "${OS}" = "DARWIN" ] && [ "${ARCH}" = "ARM64" ] ; then
|
|
||||||
echo
|
|
||||||
else
|
|
||||||
# test installing new ghc doesn't mess with currently set GHC
|
|
||||||
# https://gitlab.haskell.org/haskell/ghcup-hs/issues/7
|
|
||||||
if [ "${OS}" = "LINUX" ] ; then
|
|
||||||
eghcup --downloader=wget prefetch ghc 8.10.3
|
|
||||||
eghcup --offline install ghc 8.10.3
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
expected=$(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-linux.files" | sort)
|
|
||||||
actual=$(cd "${GHCUP_DIR}/ghc/8.10.3/" && find . | sort)
|
|
||||||
[ "${actual}" = "${expected}" ]
|
|
||||||
unset actual expected
|
|
||||||
fi
|
|
||||||
elif [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
eghcup prefetch ghc 8.10.3
|
|
||||||
eghcup --offline install ghc 8.10.3
|
|
||||||
expected=$(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-windows.files" | sort)
|
|
||||||
actual=$(cd "${GHCUP_DIR}/ghc/8.10.3/" && find . | sort)
|
|
||||||
[ "${actual}" = "${expected}" ]
|
|
||||||
unset actual expected
|
|
||||||
else
|
|
||||||
eghcup prefetch ghc 8.10.3
|
|
||||||
eghcup --offline install ghc 8.10.3
|
|
||||||
fi
|
|
||||||
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
|
||||||
eghcup --offline set 8.10.3
|
|
||||||
eghcup set 8.10.3
|
|
||||||
[ "$(ghc --numeric-version)" = "8.10.3" ]
|
|
||||||
eghcup set ${GHC_VERSION}
|
|
||||||
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
|
||||||
eghcup unset ghc
|
|
||||||
"$GHCUP_BIN"/ghc --numeric-version && exit 1 || echo yes
|
|
||||||
eghcup set ${GHC_VERSION}
|
|
||||||
eghcup --offline rm 8.10.3
|
|
||||||
[ "$(ghc --numeric-version)" = "${ghc_ver}" ]
|
|
||||||
|
|
||||||
|
|
||||||
ls -lah "$GHCUP_BIN"
|
|
||||||
|
|
||||||
if [ "${OS}" = "DARWIN" ] ; then
|
|
||||||
eghcup install hls
|
|
||||||
$(eghcup whereis hls) --version
|
|
||||||
|
|
||||||
eghcup install stack
|
|
||||||
$(eghcup whereis stack) --version
|
|
||||||
elif [ "${OS}" = "LINUX" ] ; then
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
eghcup install hls
|
|
||||||
haskell-language-server-wrapper --version
|
|
||||||
eghcup unset hls
|
|
||||||
"$GHCUP_BIN"/haskell-language-server-wrapper --version && exit 1 || echo yes
|
|
||||||
|
|
||||||
eghcup install stack
|
|
||||||
stack --version
|
|
||||||
eghcup unset stack
|
|
||||||
"$GHCUP_BIN"/stack --version && exit 1 || echo yes
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# check that lazy loading works for 'whereis'
|
|
||||||
cp "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml" "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml.bak"
|
|
||||||
echo '**' > "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
eghcup whereis ghc $(ghc --numeric-version)
|
|
||||||
mv -f "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml.bak" "$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
|
|
||||||
eghcup rm $(ghc --numeric-version)
|
|
||||||
|
|
||||||
# https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/116
|
|
||||||
if [ "${OS}" = "LINUX" ] ; then
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
eghcup install cabal -u https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.7.0.0-pre20220407/cabal-install-3.7-x86_64-linux-alpine.tar.xz 3.4.0.0-rc4
|
|
||||||
eghcup rm cabal 3.4.0.0-rc4
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
eghcup gc -c
|
|
||||||
|
|
||||||
sha_sum() {
|
|
||||||
if [ "${OS}" = "FREEBSD" ] ; then
|
|
||||||
sha256 "$@"
|
|
||||||
else
|
|
||||||
sha256sum "$@"
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# test etags
|
|
||||||
rm -f "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
raw_eghcup -s https://www.haskell.org/ghcup/data/ghcup-${JSON_VERSION}.yaml list
|
|
||||||
# snapshot yaml and etags file
|
|
||||||
etag=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
|
||||||
sha=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
|
||||||
# invalidate access time timer, which is 5minutes, so we re-download
|
|
||||||
touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
# redownload same file with some newlines added
|
|
||||||
raw_eghcup -s https://www.haskell.org/ghcup/exp/ghcup-${JSON_VERSION}.yaml list
|
|
||||||
# snapshot new yaml and etags file
|
|
||||||
etag2=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
|
||||||
sha2=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
|
||||||
# compare
|
|
||||||
[ "${etag}" != "${etag2}" ]
|
|
||||||
[ "${sha}" != "${sha2}" ]
|
|
||||||
# invalidate access time timer, which is 5minutes, but don't expect a re-download
|
|
||||||
touch -a -m -t '199901010101' "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml"
|
|
||||||
# this time, we expect the same hash and etag
|
|
||||||
raw_eghcup -s https://www.haskell.org/ghcup/exp/ghcup-${JSON_VERSION}.yaml list
|
|
||||||
etag3=$(cat "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml.etags")
|
|
||||||
sha3=$(sha_sum "${GHCUP_DIR}/cache/ghcup-${JSON_VERSION}.yaml")
|
|
||||||
[ "${etag2}" = "${etag3}" ]
|
|
||||||
[ "${sha2}" = "${sha3}" ]
|
|
||||||
|
|
||||||
# test isolated installs
|
|
||||||
eghcup install ghc -i "$(pwd)/isolated" 8.10.5
|
|
||||||
[ "$(isolated/bin/ghc --numeric-version)" = "8.10.5" ]
|
|
||||||
! eghcup install ghc -i "$(pwd)/isolated" 8.10.5
|
|
||||||
if [ "${ARCH}" = "64" ] ; then
|
|
||||||
if [ "${OS}" = "LINUX" ] || [ "${OS}" = "WINDOWS" ] ; then
|
|
||||||
eghcup install cabal -i "$(pwd)/isolated" 3.4.0.0
|
|
||||||
[ "$(isolated/cabal --numeric-version)" = "3.4.0.0" ]
|
|
||||||
eghcup install stack -i "$(pwd)/isolated" 2.7.3
|
|
||||||
[ "$(isolated/stack --numeric-version)" = "2.7.3" ]
|
|
||||||
eghcup install hls -i "$(pwd)/isolated" 1.3.0
|
|
||||||
[ "$(isolated/haskell-language-server-wrapper --numeric-version)" = "1.3.0" ] ||
|
|
||||||
[ "$(isolated/haskell-language-server-wrapper --numeric-version)" = "1.3.0.0" ]
|
|
||||||
|
|
||||||
# test that isolated installs don't clean up target directory
|
|
||||||
cat <<EOF > "${GHCUP_BIN}/gmake"
|
|
||||||
#!/bin/bash
|
|
||||||
exit 1
|
|
||||||
EOF
|
|
||||||
chmod +x "${GHCUP_BIN}/gmake"
|
|
||||||
mkdir isolated_tainted/
|
|
||||||
touch isolated_tainted/lol
|
|
||||||
|
|
||||||
! eghcup install ghc -i "$(pwd)/isolated_tainted" 8.10.5 --force
|
|
||||||
[ -e "$(pwd)/isolated_tainted/lol" ]
|
|
||||||
rm "${GHCUP_BIN}/gmake"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
eghcup upgrade
|
|
||||||
eghcup upgrade -f
|
|
||||||
|
|
||||||
# test that doing fishy symlinks into GHCup dir doesn't cause weird stuff on 'ghcup nuke'
|
|
||||||
mkdir no_nuke/
|
|
||||||
mkdir no_nuke/bar
|
|
||||||
echo 'foo' > no_nuke/file
|
|
||||||
echo 'bar' > no_nuke/bar/file
|
|
||||||
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/cache/no_nuke
|
|
||||||
ln -s "$CI_PROJECT_DIR"/no_nuke/ "${GHCUP_DIR}"/logs/no_nuke
|
|
||||||
|
|
||||||
# nuke
|
|
||||||
eghcup nuke
|
|
||||||
[ ! -e "${GHCUP_DIR}" ]
|
|
||||||
|
|
||||||
# make sure nuke doesn't resolve symlinks
|
|
||||||
[ -e "$CI_PROJECT_DIR"/no_nuke/file ]
|
|
||||||
[ -e "$CI_PROJECT_DIR"/no_nuke/bar/file ]
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
. "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup_env"
|
|
||||||
|
|
||||||
mkdir -p "$CI_PROJECT_DIR"/.local/bin
|
|
||||||
|
|
||||||
ecabal() {
|
|
||||||
cabal --store-dir="$(pwd)"/.store "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
git describe
|
|
||||||
|
|
||||||
ecabal update
|
|
||||||
ecabal install -w ghc-${GHC_VERSION} --installdir="$CI_PROJECT_DIR"/.local/bin hlint
|
|
||||||
|
|
||||||
hlint -r app/ lib/ test/
|
|
||||||
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
mkdir -p ~/.ghcup/bin
|
|
||||||
curl -sSfL https://downloads.haskell.org/~ghcup/x86_64-apple-darwin-ghcup > ~/.ghcup/bin/ghcup
|
|
||||||
chmod +x ~/.ghcup/bin/ghcup
|
|
||||||
|
|
||||||
export PATH="$HOME/.ghcup/bin:$PATH"
|
|
||||||
|
|
||||||
ghcup install 8.10.4
|
|
||||||
ghcup install-cabal 3.4.0.0
|
|
||||||
ghcup set 8.10.4
|
|
||||||
|
|
||||||
|
|
||||||
## install ghcup
|
|
||||||
|
|
||||||
cabal update
|
|
||||||
|
|
||||||
(
|
|
||||||
cd /tmp
|
|
||||||
cabal install --installdir="$HOME"/.ghcup/bin hspec-discover
|
|
||||||
)
|
|
||||||
|
|
||||||
cabal build --constraint="zlib +static" --constraint="lzma +static" -ftui
|
|
||||||
cp "$(cabal new-exec --verbose=0 --offline sh -- -c 'command -v ghcup')" .
|
|
||||||
strip ./ghcup
|
|
||||||
cp ghcup "./${ARTIFACT}"
|
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
{-# LANGUAGE MultiParamTypeClasses #-}
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
|
{-# LANGUAGE ViewPatterns #-}
|
||||||
|
|
||||||
module BrickMain where
|
module BrickMain where
|
||||||
|
|
||||||
@@ -202,34 +203,35 @@ handleGenericListEvent (VtyEvent ev) = do
|
|||||||
handleGenericListEvent _ = pure ()
|
handleGenericListEvent _ = pure ()
|
||||||
|
|
||||||
-- This re-uses Brick.Widget.List.renderList
|
-- This re-uses Brick.Widget.List.renderList
|
||||||
renderSectionList :: (Traversable t, Ord n, Show n, Eq n, L.Splittable t)
|
renderSectionList :: forall n t e . (Traversable t, Ord n, Show n, Eq n, L.Splittable t, Semigroup (t e))
|
||||||
=> (Bool -> e -> Widget n) -- ^ Rendering function of the list element, True for the selected element
|
=> (Bool -> e -> Widget n) -- ^ Rendering function of the list element, True for the selected element
|
||||||
-> Bool -- ^ Whether the section list has focus
|
-> Bool -- ^ Whether the section list has focus
|
||||||
-> GenericSectionList n t e -- ^ The section list to render
|
-> GenericSectionList n t e -- ^ The section list to render
|
||||||
-> Widget n
|
-> Widget n
|
||||||
renderSectionList render_elem section_focus (GenericSectionList focus elms sl_name) =
|
renderSectionList renderElem sectionFocus ge@(GenericSectionList focus elms slName) =
|
||||||
Brick.Widget Brick.Greedy Brick.Greedy $ do
|
Brick.Widget Brick.Greedy Brick.Greedy $ Brick.render $ Brick.viewport slName Brick.Vertical $
|
||||||
c <- Brick.getContext
|
V.ifoldl' (\(!accWidget) !i list ->
|
||||||
let -- A section is focused if the whole thing is focused, and the inner list has focus
|
let hasFocusList = sectionIsFocused list
|
||||||
section_is_focused l = section_focus && (Just (L.listName l) == F.focusGetCurrent focus)
|
makeVisible = if hasFocusList then Brick.visibleRegion (Brick.Location (c, r)) (1, 1) else id
|
||||||
-- We need to limit the widget size when the length of the list is higher than the size of the terminal
|
appendBorder = if i == 0 then id else (hBorder <=>)
|
||||||
limit = min (Brick.windowHeight c) (Brick.availHeight c)
|
newWidget = appendBorder (makeVisible $ renderInnerList hasFocusList list)
|
||||||
s_idx = fromMaybe 0 $ V.findIndex section_is_focused elms
|
in accWidget <=> newWidget
|
||||||
render_inner_list has_focus l = Brick.vLimit (length l) $ L.renderList (\b -> render_elem (b && has_focus)) has_focus l
|
)
|
||||||
(widget, off) =
|
Brick.emptyWidget
|
||||||
V.ifoldl' (\wacc i list ->
|
elms
|
||||||
let has_focus_list = section_is_focused list
|
where
|
||||||
(!acc_widget, !acc_off) = wacc
|
-- A section is focused if the whole thing is focused, and the inner list has focus
|
||||||
new_widget = if i == 0 then render_inner_list has_focus_list list else hBorder <=> render_inner_list has_focus_list list
|
sectionIsFocused :: L.GenericList n t e -> Bool
|
||||||
new_off
|
sectionIsFocused l = sectionFocus && (Just (L.listName l) == F.focusGetCurrent focus)
|
||||||
| i < s_idx = 1 + L.listItemHeight list * length list
|
|
||||||
| i == s_idx = 1 + L.listItemHeight list * fromMaybe 0 (L.listSelected list)
|
renderInnerList :: Bool -> L.GenericList n t e -> Widget n
|
||||||
| otherwise = 0
|
renderInnerList hasFocus l = Brick.vLimit (length l) $ L.renderList (\b -> renderElem (b && hasFocus)) hasFocus l
|
||||||
in (acc_widget <=> new_widget, acc_off + new_off)
|
|
||||||
)
|
-- compute the location to focus on within the active section
|
||||||
(Brick.emptyWidget, 0)
|
(c, r) :: (Int, Int) = case sectionListSelectedElement ge of
|
||||||
elms
|
Nothing -> (0, 0)
|
||||||
Brick.render $ Brick.viewport sl_name Brick.Vertical $ Brick.translateBy (Brick.Location (0, min 0 (limit-off))) widget
|
Just (selElIx, _) -> (0, selElIx)
|
||||||
|
|
||||||
|
|
||||||
-- | Equivalent to listSelectedElement
|
-- | Equivalent to listSelectedElement
|
||||||
sectionListSelectedElement :: (Eq n, L.Splittable t, Traversable t, Semigroup (t e)) => GenericSectionList n t e -> Maybe (Int, e)
|
sectionListSelectedElement :: (Eq n, L.Splittable t, Traversable t, Semigroup (t e)) => GenericSectionList n t e -> Maybe (Int, e)
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import Data.Aeson ( decodeStrict', Value )
|
|||||||
import Data.Aeson.Encode.Pretty ( encodePretty )
|
import Data.Aeson.Encode.Pretty ( encodePretty )
|
||||||
import Data.Either
|
import Data.Either
|
||||||
import Data.Functor
|
import Data.Functor
|
||||||
|
import Data.Versions (version)
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import GHC.IO.Encoding
|
import GHC.IO.Encoding
|
||||||
import Haskus.Utils.Variant.Excepts
|
import Haskus.Utils.Variant.Excepts
|
||||||
@@ -341,12 +342,14 @@ Report bugs at <https://github.com/haskell/ghcup-hs/issues>|]
|
|||||||
alreadyInstalling (Install (Left (InstallCabal InstallOptions{..}))) (Cabal, ver) = cmp' Cabal instVer ver
|
alreadyInstalling (Install (Left (InstallCabal InstallOptions{..}))) (Cabal, ver) = cmp' Cabal instVer ver
|
||||||
alreadyInstalling (Install (Left (InstallHLS InstallOptions{..}))) (HLS, ver) = cmp' HLS instVer ver
|
alreadyInstalling (Install (Left (InstallHLS InstallOptions{..}))) (HLS, ver) = cmp' HLS instVer ver
|
||||||
alreadyInstalling (Install (Left (InstallStack InstallOptions{..}))) (Stack, ver) = cmp' Stack instVer ver
|
alreadyInstalling (Install (Left (InstallStack InstallOptions{..}))) (Stack, ver) = cmp' Stack instVer ver
|
||||||
alreadyInstalling (Compile (CompileGHC GHCCompileOptions{ ovewrwiteVer = Just over }))
|
alreadyInstalling (Compile (CompileGHC GHCCompileOptions{ overwriteVer = Just [S over] })) (GHC, ver)
|
||||||
(GHC, ver) = cmp' GHC (Just $ GHCVersion (mkTVer over)) ver
|
| Right over' <- version (T.pack over) = cmp' GHC (Just $ GHCVersion (mkTVer over')) ver
|
||||||
|
| otherwise = pure False
|
||||||
alreadyInstalling (Compile (CompileGHC GHCCompileOptions{ targetGhc = GHC.SourceDist tver }))
|
alreadyInstalling (Compile (CompileGHC GHCCompileOptions{ targetGhc = GHC.SourceDist tver }))
|
||||||
(GHC, ver) = cmp' GHC (Just $ ToolVersion tver) ver
|
(GHC, ver) = cmp' GHC (Just $ ToolVersion tver) ver
|
||||||
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ ovewrwiteVer = Right over }))
|
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ overwriteVer = Just [S over] })) (HLS, ver)
|
||||||
(HLS, ver) = cmp' HLS (Just $ ToolVersion over) ver
|
| Right over' <- version (T.pack over) = cmp' HLS (Just $ ToolVersion over') ver
|
||||||
|
| otherwise = pure False
|
||||||
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ targetHLS = HLS.SourceDist tver }))
|
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ targetHLS = HLS.SourceDist tver }))
|
||||||
(HLS, ver) = cmp' HLS (Just $ ToolVersion tver) ver
|
(HLS, ver) = cmp' HLS (Just $ ToolVersion tver) ver
|
||||||
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ targetHLS = HLS.HackageDist tver }))
|
alreadyInstalling (Compile (CompileHLS HLSCompileOptions{ targetHLS = HLS.HackageDist tver }))
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ elif os(freebsd)
|
|||||||
constraints: zlib +bundled-c-zlib,
|
constraints: zlib +bundled-c-zlib,
|
||||||
zip +disable-zstd
|
zip +disable-zstd
|
||||||
package *
|
package *
|
||||||
ghc-options: -split-sections -pgmc clang++14
|
ghc-options: -split-sections
|
||||||
|
|
||||||
constraints: http-io-streams -brotli,
|
constraints: http-io-streams -brotli,
|
||||||
any.aeson >= 2.0.1.0,
|
any.aeson >= 2.0.1.0,
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import GHCup.Platform
|
|||||||
import GHCup.Types
|
import GHCup.Types
|
||||||
import GHCup.Types.Optics
|
import GHCup.Types.Optics
|
||||||
import GHCup.Utils
|
import GHCup.Utils
|
||||||
import GHCup.Utils.URI
|
|
||||||
import GHCup.Prelude
|
import GHCup.Prelude
|
||||||
import GHCup.Prelude.Process
|
import GHCup.Prelude.Process
|
||||||
import GHCup.Prelude.Logger
|
import GHCup.Prelude.Logger
|
||||||
@@ -78,7 +77,6 @@ import qualified Cabal.Config as CC
|
|||||||
--[ Types ]--
|
--[ Types ]--
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
||||||
-- a superset of ToolVersion
|
-- a superset of ToolVersion
|
||||||
data SetToolVersion = SetGHCVersion GHCTargetVersion
|
data SetToolVersion = SetGHCVersion GHCTargetVersion
|
||||||
| SetToolVersion Version
|
| SetToolVersion Version
|
||||||
@@ -314,6 +312,29 @@ gpgParser s' | t == T.pack "strict" = Right GPGStrict
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
overWriteVersionParser :: String -> Either String [VersionPattern]
|
||||||
|
overWriteVersionParser = first (const "Not a valid version pattern") . MP.parse (MP.many versionPattern <* MP.eof) "" . T.pack
|
||||||
|
where
|
||||||
|
versionPattern :: MP.Parsec Void Text VersionPattern
|
||||||
|
versionPattern = do
|
||||||
|
str' <- T.unpack <$> MP.takeWhileP Nothing (/= '%')
|
||||||
|
if str' /= mempty
|
||||||
|
then pure (S str')
|
||||||
|
else fmap (const CabalVer) v_cabal
|
||||||
|
<|> fmap (const GitBranchName) b_name
|
||||||
|
<|> fmap (const GitHashShort) s_hash
|
||||||
|
<|> fmap (const GitHashLong) l_hash
|
||||||
|
<|> fmap (const GitDescribe) g_desc
|
||||||
|
<|> ((\a b -> S (a : T.unpack b)) <$> MP.satisfy (const True) <*> MP.takeWhileP Nothing (== '%')) -- invalid pattern, e.g. "%k"
|
||||||
|
where
|
||||||
|
v_cabal = MP.chunk "%v"
|
||||||
|
b_name = MP.chunk "%b"
|
||||||
|
s_hash = MP.chunk "%h"
|
||||||
|
l_hash = MP.chunk "%H"
|
||||||
|
g_desc = MP.chunk "%g"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
------------------
|
------------------
|
||||||
--[ Completers ]--
|
--[ Completers ]--
|
||||||
------------------
|
------------------
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ import qualified Data.Versions as V
|
|||||||
import Data.Text ( Text )
|
import Data.Text ( Text )
|
||||||
import Haskus.Utils.Variant.Excepts
|
import Haskus.Utils.Variant.Excepts
|
||||||
import Options.Applicative hiding ( style )
|
import Options.Applicative hiding ( style )
|
||||||
import Options.Applicative.Help.Pretty ( text )
|
import Options.Applicative.Help.Pretty ( text, vsep )
|
||||||
import Prelude hiding ( appendFile )
|
import Prelude hiding ( appendFile )
|
||||||
import System.Exit
|
import System.Exit
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ data GHCCompileOptions = GHCCompileOptions
|
|||||||
, crossTarget :: Maybe Text
|
, crossTarget :: Maybe Text
|
||||||
, addConfArgs :: [Text]
|
, addConfArgs :: [Text]
|
||||||
, setCompile :: Bool
|
, setCompile :: Bool
|
||||||
, ovewrwiteVer :: Maybe Version
|
, overwriteVer :: Maybe [VersionPattern]
|
||||||
, buildFlavour :: Maybe String
|
, buildFlavour :: Maybe String
|
||||||
, buildSystem :: Maybe BuildSystem
|
, buildSystem :: Maybe BuildSystem
|
||||||
, isolateDir :: Maybe FilePath
|
, isolateDir :: Maybe FilePath
|
||||||
@@ -86,7 +86,7 @@ data HLSCompileOptions = HLSCompileOptions
|
|||||||
, jobs :: Maybe Int
|
, jobs :: Maybe Int
|
||||||
, setCompile :: Bool
|
, setCompile :: Bool
|
||||||
, updateCabal :: Bool
|
, updateCabal :: Bool
|
||||||
, ovewrwiteVer :: Either Bool Version
|
, overwriteVer :: Maybe [VersionPattern]
|
||||||
, isolateDir :: Maybe FilePath
|
, isolateDir :: Maybe FilePath
|
||||||
, cabalProject :: Maybe (Either FilePath URI)
|
, cabalProject :: Maybe (Either FilePath URI)
|
||||||
, cabalProjectLocal :: Maybe URI
|
, cabalProjectLocal :: Maybe URI
|
||||||
@@ -155,8 +155,8 @@ Examples:
|
|||||||
Examples:
|
Examples:
|
||||||
# compile 1.7.0.0 from hackage for 8.10.7, running 'cabal update' before the build
|
# compile 1.7.0.0 from hackage for 8.10.7, running 'cabal update' before the build
|
||||||
ghcup compile hls --version 1.7.0.0 --ghc 8.10.7 --cabal-update
|
ghcup compile hls --version 1.7.0.0 --ghc 8.10.7 --cabal-update
|
||||||
# compile from master for ghc 9.2.3 using 'git describe' to name the binary and ignore the pinned index state
|
# compile from master for ghc 9.2.3, appending the short git commit hash to the version and ignore the pinned index state
|
||||||
ghcup compile hls -g master --git-describe-version --ghc 9.2.3 -- --index-state=@(date '+%s')
|
ghcup compile hls -g master -o '%v-%h' --ghc 9.2.3 -- --index-state=@(date '+%s')
|
||||||
# compile a specific commit for ghc 9.2.3 and set a specific version for the binary name
|
# compile a specific commit for ghc 9.2.3 and set a specific version for the binary name
|
||||||
ghcup compile hls -g a32db0b -o 1.7.0.0-p1 --ghc 9.2.3|]
|
ghcup compile hls -g a32db0b -o 1.7.0.0-p1 --ghc 9.2.3|]
|
||||||
|
|
||||||
@@ -253,11 +253,16 @@ ghcCompileOpts =
|
|||||||
<*> fmap (fromMaybe False) (invertableSwitch "set" Nothing False (help "Set as active version after install"))
|
<*> fmap (fromMaybe False) (invertableSwitch "set" Nothing False (help "Set as active version after install"))
|
||||||
<*> optional
|
<*> optional
|
||||||
(option
|
(option
|
||||||
(eitherReader
|
(eitherReader overWriteVersionParser
|
||||||
(first (const "Not a valid version") . version . T.pack)
|
|
||||||
)
|
)
|
||||||
(short 'o' <> long "overwrite-version" <> metavar "OVERWRITE_VERSION" <> help
|
(short 'o' <> long "overwrite-version" <> metavar "OVERWRITE_VERSION"
|
||||||
"Allows to overwrite the finally installed VERSION with a different one, e.g. when you build 8.10.4 with your own patches, you might want to set this to '8.10.4-p1'"
|
<> helpDoc (Just $ vsep [ text "Overwrite the finally installed VERSION with a different one. Allows to specify patterns"
|
||||||
|
, text "%v version"
|
||||||
|
, text "%b branch name"
|
||||||
|
, text "%h short commit hash"
|
||||||
|
, text "%H long commit hash"
|
||||||
|
, text "%g 'git describe' output"
|
||||||
|
])
|
||||||
<> (completer $ versionCompleter [] GHC)
|
<> (completer $ versionCompleter [] GHC)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -343,19 +348,25 @@ hlsCompileOpts =
|
|||||||
<*> switch (long "cabal-update" <> help "Run 'cabal update' before the build")
|
<*> switch (long "cabal-update" <> help "Run 'cabal update' before the build")
|
||||||
<*>
|
<*>
|
||||||
(
|
(
|
||||||
(Right <$> option
|
optional (option
|
||||||
(eitherReader
|
(eitherReader overWriteVersionParser
|
||||||
(first (const "Not a valid version") . version . T.pack)
|
|
||||||
)
|
)
|
||||||
(short 'o' <> long "overwrite-version" <> metavar "OVERWRITE_VERSION" <> help
|
(short 'o' <> long "overwrite-version" <> metavar "OVERWRITE_VERSION"
|
||||||
"Allows to overwrite the finally installed VERSION with a different one, e.g. when you build 8.10.4 with your own patches, you might want to set this to '8.10.4-p1'"
|
<> helpDoc (Just $ vsep [ text "Overwrite the finally installed VERSION with a different one. Allows to specify patterns"
|
||||||
|
, text "%v version from cabal file"
|
||||||
|
, text "%b branch name"
|
||||||
|
, text "%h short commit hash"
|
||||||
|
, text "%H long commit hash"
|
||||||
|
, text "%g 'git describe' output"
|
||||||
|
])
|
||||||
<> (completer $ versionCompleter [] HLS)
|
<> (completer $ versionCompleter [] HLS)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
<|>
|
<|>
|
||||||
(Left <$> (switch
|
((\b -> if b then Just [GitDescribe] else Nothing) <$> (switch
|
||||||
(long "git-describe-version"
|
(long "git-describe-version"
|
||||||
<> help "Use the output of 'git describe' (if building from git) as the VERSION component of the installed binary."
|
<> help "Use the output of 'git describe' (if building from git) as the VERSION component of the installed binary."
|
||||||
|
<> internal
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -529,7 +540,7 @@ compile compileCommand settings Dirs{..} runAppState runLogger = do
|
|||||||
targetHLS
|
targetHLS
|
||||||
ghcs
|
ghcs
|
||||||
jobs
|
jobs
|
||||||
ovewrwiteVer
|
overwriteVer
|
||||||
(maybe GHCupInternal IsolateDir isolateDir)
|
(maybe GHCupInternal IsolateDir isolateDir)
|
||||||
cabalProject
|
cabalProject
|
||||||
cabalProjectLocal
|
cabalProjectLocal
|
||||||
@@ -576,7 +587,7 @@ compile compileCommand settings Dirs{..} runAppState runLogger = do
|
|||||||
targetVer <- liftE $ compileGHC
|
targetVer <- liftE $ compileGHC
|
||||||
targetGhc
|
targetGhc
|
||||||
crossTarget
|
crossTarget
|
||||||
ovewrwiteVer
|
overwriteVer
|
||||||
bootstrapGhc
|
bootstrapGhc
|
||||||
jobs
|
jobs
|
||||||
buildConfig
|
buildConfig
|
||||||
|
|||||||
@@ -807,7 +807,7 @@ compileGHC :: ( MonadMask m
|
|||||||
)
|
)
|
||||||
=> GHCVer
|
=> GHCVer
|
||||||
-> Maybe Text -- ^ cross target
|
-> Maybe Text -- ^ cross target
|
||||||
-> Maybe Version -- ^ overwrite version
|
-> Maybe [VersionPattern]
|
||||||
-> Either Version FilePath -- ^ version to bootstrap with
|
-> Either Version FilePath -- ^ version to bootstrap with
|
||||||
-> Maybe Int -- ^ jobs
|
-> Maybe Int -- ^ jobs
|
||||||
-> Maybe FilePath -- ^ build config
|
-> Maybe FilePath -- ^ build config
|
||||||
@@ -843,12 +843,12 @@ compileGHC :: ( MonadMask m
|
|||||||
]
|
]
|
||||||
m
|
m
|
||||||
GHCTargetVersion
|
GHCTargetVersion
|
||||||
compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs buildFlavour buildSystem installDir
|
compileGHC targetGhc crossTarget vps bstrap jobs mbuildConfig patches aargs buildFlavour buildSystem installDir
|
||||||
= do
|
= do
|
||||||
pfreq@PlatformRequest { .. } <- lift getPlatformReq
|
pfreq@PlatformRequest { .. } <- lift getPlatformReq
|
||||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||||
|
|
||||||
(workdir, tmpUnpack, tver) <- case targetGhc of
|
(workdir, tmpUnpack, tver, ov) <- case targetGhc of
|
||||||
-- unpack from version tarball
|
-- unpack from version tarball
|
||||||
SourceDist ver -> do
|
SourceDist ver -> do
|
||||||
lift $ logDebug $ "Requested to compile: " <> prettyVer ver <> " with " <> either prettyVer T.pack bstrap
|
lift $ logDebug $ "Requested to compile: " <> prettyVer ver <> " with " <> either prettyVer T.pack bstrap
|
||||||
@@ -870,7 +870,11 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
(view dlSubdir dlInfo)
|
(view dlSubdir dlInfo)
|
||||||
liftE $ applyAnyPatch patches (fromGHCupPath workdir)
|
liftE $ applyAnyPatch patches (fromGHCupPath workdir)
|
||||||
|
|
||||||
pure (workdir, tmpUnpack, Just (GHCTargetVersion crossTarget ver))
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern (Just ver) "" "" "" "" vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
|
pure (workdir, tmpUnpack, Just (GHCTargetVersion crossTarget ver), ov)
|
||||||
|
|
||||||
RemoteDist uri -> do
|
RemoteDist uri -> do
|
||||||
lift $ logDebug $ "Requested to compile (from uri): " <> T.pack (show uri)
|
lift $ logDebug $ "Requested to compile (from uri): " <> T.pack (show uri)
|
||||||
@@ -894,13 +898,17 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
|
|
||||||
let workdir = appendGHCupPath tmpUnpack (takeDirectory bf)
|
let workdir = appendGHCupPath tmpUnpack (takeDirectory bf)
|
||||||
|
|
||||||
pure (workdir, tmpUnpack, GHCTargetVersion crossTarget <$> tver)
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern tver "" "" "" "" vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
|
pure (workdir, tmpUnpack, GHCTargetVersion crossTarget <$> tver, ov)
|
||||||
|
|
||||||
-- clone from git
|
-- clone from git
|
||||||
GitDist GitBranch{..} -> do
|
GitDist GitBranch{..} -> do
|
||||||
tmpUnpack <- lift mkGhcupTmpDir
|
tmpUnpack <- lift mkGhcupTmpDir
|
||||||
let git args = execLogged "git" ("--no-pager":args) (Just $ fromGHCupPath tmpUnpack) "git" Nothing
|
let git args = execLogged "git" ("--no-pager":args) (Just $ fromGHCupPath tmpUnpack) "git" Nothing
|
||||||
tver <- reThrowAll @_ @'[PatchFailed, ProcessError, NotFoundInPATH, DigestError, ContentLengthError, DownloadFailed, GPGError] DownloadFailed $ do
|
(tver, ov) <- reThrowAll @_ @'[PatchFailed, ProcessError, NotFoundInPATH, DigestError, ContentLengthError, DownloadFailed, GPGError] DownloadFailed $ do
|
||||||
let rep = fromMaybe "https://gitlab.haskell.org/ghc/ghc.git" repo
|
let rep = fromMaybe "https://gitlab.haskell.org/ghc/ghc.git" repo
|
||||||
lift $ logInfo $ "Fetching git repo " <> T.pack rep <> " at ref " <> T.pack ref <> " (this may take a while)"
|
lift $ logInfo $ "Fetching git repo " <> T.pack rep <> " at ref " <> T.pack ref <> " (this may take a while)"
|
||||||
lEM $ git [ "init" ]
|
lEM $ git [ "init" ]
|
||||||
@@ -932,6 +940,7 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
then pure Nothing
|
then pure Nothing
|
||||||
else fmap Just $ liftE $ gitOut ["describe", "--tags"] (fromGHCupPath tmpUnpack)
|
else fmap Just $ liftE $ gitOut ["describe", "--tags"] (fromGHCupPath tmpUnpack)
|
||||||
chash <- liftE $ gitOut ["rev-parse", "HEAD" ] (fromGHCupPath tmpUnpack)
|
chash <- liftE $ gitOut ["rev-parse", "HEAD" ] (fromGHCupPath tmpUnpack)
|
||||||
|
branch <- liftE $ gitOut ["rev-parse", "--abbrev-ref", "HEAD" ] (fromGHCupPath tmpUnpack)
|
||||||
|
|
||||||
-- clone submodules
|
-- clone submodules
|
||||||
lEM $ git [ "submodule", "update", "--init", "--depth", "1" ]
|
lEM $ git [ "submodule", "update", "--init", "--depth", "1" ]
|
||||||
@@ -949,9 +958,19 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
(if isCommitHash ref then mempty else "\n " <> "commit hash: " <> chash)
|
(if isCommitHash ref then mempty else "\n " <> "commit hash: " <> chash)
|
||||||
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
liftIO $ threadDelay 5000000 -- give the user a sec to intervene
|
||||||
|
|
||||||
pure tver
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern
|
||||||
|
tver
|
||||||
|
(take 7 $ T.unpack chash)
|
||||||
|
(T.unpack chash)
|
||||||
|
(maybe "" T.unpack git_describe)
|
||||||
|
(T.unpack branch)
|
||||||
|
vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
pure (tmpUnpack, tmpUnpack, GHCTargetVersion crossTarget <$> tver)
|
pure (tver, ov)
|
||||||
|
|
||||||
|
pure (tmpUnpack, tmpUnpack, GHCTargetVersion crossTarget <$> tver, ov)
|
||||||
-- the version that's installed may differ from the
|
-- the version that's installed may differ from the
|
||||||
-- compiled version, so the user can overwrite it
|
-- compiled version, so the user can overwrite it
|
||||||
installVer <- if | Just ov' <- ov -> pure (GHCTargetVersion crossTarget ov')
|
installVer <- if | Just ov' <- ov -> pure (GHCTargetVersion crossTarget ov')
|
||||||
@@ -1091,7 +1110,7 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
compileHadrianBindist tver workdir ghcdir = do
|
compileHadrianBindist tver workdir ghcdir = do
|
||||||
liftE $ configureBindist tver workdir ghcdir
|
liftE $ configureBindist tver workdir ghcdir
|
||||||
|
|
||||||
lift $ logInfo "Building (this may take a while)..."
|
lift $ logInfo $ "Building GHC version " <> tVerToText tver <> " (this may take a while)..."
|
||||||
hadrian_build <- liftE $ findHadrianFile workdir
|
hadrian_build <- liftE $ findHadrianFile workdir
|
||||||
lEM $ execLogged hadrian_build
|
lEM $ execLogged hadrian_build
|
||||||
( maybe [] (\j -> ["-j" <> show j] ) jobs
|
( maybe [] (\j -> ["-j" <> show j] ) jobs
|
||||||
@@ -1163,7 +1182,7 @@ compileGHC targetGhc crossTarget ov bstrap jobs mbuildConfig patches aargs build
|
|||||||
|
|
||||||
liftE $ checkBuildConfig (build_mk workdir)
|
liftE $ checkBuildConfig (build_mk workdir)
|
||||||
|
|
||||||
lift $ logInfo "Building (this may take a while)..."
|
lift $ logInfo $ "Building GHC version " <> tVerToText tver <> " (this may take a while)..."
|
||||||
lEM $ make (maybe [] (\j -> ["-j" <> fS (show j)]) jobs) (Just workdir)
|
lEM $ make (maybe [] (\j -> ["-j" <> fS (show j)]) jobs) (Just workdir)
|
||||||
|
|
||||||
if | isCross tver -> do
|
if | isCross tver -> do
|
||||||
|
|||||||
@@ -335,7 +335,7 @@ compileHLS :: ( MonadMask m
|
|||||||
=> HLSVer
|
=> HLSVer
|
||||||
-> [Version]
|
-> [Version]
|
||||||
-> Maybe Int
|
-> Maybe Int
|
||||||
-> Either Bool Version
|
-> Maybe [VersionPattern]
|
||||||
-> InstallDir
|
-> InstallDir
|
||||||
-> Maybe (Either FilePath URI)
|
-> Maybe (Either FilePath URI)
|
||||||
-> Maybe URI
|
-> Maybe URI
|
||||||
@@ -353,7 +353,7 @@ compileHLS :: ( MonadMask m
|
|||||||
, BuildFailed
|
, BuildFailed
|
||||||
, NotInstalled
|
, NotInstalled
|
||||||
] m Version
|
] m Version
|
||||||
compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal updateCabal patches cabalArgs = do
|
compileHLS targetHLS ghcs jobs vps installDir cabalProject cabalProjectLocal updateCabal patches cabalArgs = do
|
||||||
pfreq@PlatformRequest { .. } <- lift getPlatformReq
|
pfreq@PlatformRequest { .. } <- lift getPlatformReq
|
||||||
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
|
||||||
Dirs { .. } <- lift getDirs
|
Dirs { .. } <- lift getDirs
|
||||||
@@ -362,7 +362,7 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
lift $ logInfo "Updating cabal DB"
|
lift $ logInfo "Updating cabal DB"
|
||||||
lEM $ exec "cabal" ["update"] (Just $ fromGHCupPath tmpDir) Nothing
|
lEM $ exec "cabal" ["update"] (Just $ fromGHCupPath tmpDir) Nothing
|
||||||
|
|
||||||
(workdir, tmpUnpack, tver, git_describe) <- case targetHLS of
|
(workdir, tmpUnpack, tver, ov) <- case targetHLS of
|
||||||
-- unpack from version tarball
|
-- unpack from version tarball
|
||||||
SourceDist tver -> do
|
SourceDist tver -> do
|
||||||
lift $ logDebug $ "Requested to compile: " <> prettyVer tver
|
lift $ logDebug $ "Requested to compile: " <> prettyVer tver
|
||||||
@@ -382,7 +382,11 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
(liftE . intoSubdir tmpUnpack)
|
(liftE . intoSubdir tmpUnpack)
|
||||||
(view dlSubdir dlInfo)
|
(view dlSubdir dlInfo)
|
||||||
|
|
||||||
pure (workdir, tmpUnpack, tver, Nothing)
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern (Just tver) "" "" "" "" vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
|
pure (workdir, tmpUnpack, tver, ov)
|
||||||
|
|
||||||
HackageDist tver -> do
|
HackageDist tver -> do
|
||||||
lift $ logDebug $ "Requested to compile (from hackage): " <> prettyVer tver
|
lift $ logDebug $ "Requested to compile (from hackage): " <> prettyVer tver
|
||||||
@@ -396,7 +400,11 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
|
|
||||||
let workdir = appendGHCupPath tmpUnpack hls
|
let workdir = appendGHCupPath tmpUnpack hls
|
||||||
|
|
||||||
pure (workdir, tmpUnpack, tver, Nothing)
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern (Just tver) "" "" "" "" vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
|
pure (workdir, tmpUnpack, tver, ov)
|
||||||
|
|
||||||
RemoteDist uri -> do
|
RemoteDist uri -> do
|
||||||
lift $ logDebug $ "Requested to compile (from uri): " <> T.pack (show uri)
|
lift $ logDebug $ "Requested to compile (from uri): " <> T.pack (show uri)
|
||||||
@@ -419,7 +427,11 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
|
|
||||||
let workdir = appendGHCupPath tmpUnpack (takeDirectory cf)
|
let workdir = appendGHCupPath tmpUnpack (takeDirectory cf)
|
||||||
|
|
||||||
pure (workdir, tmpUnpack, tver, Nothing)
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern (Just tver) "" "" "" "" vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
|
pure (workdir, tmpUnpack, tver, ov)
|
||||||
|
|
||||||
-- clone from git
|
-- clone from git
|
||||||
GitDist GitBranch{..} -> do
|
GitDist GitBranch{..} -> do
|
||||||
@@ -459,28 +471,31 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
then pure Nothing
|
then pure Nothing
|
||||||
else fmap Just $ gitOut ["describe", "--tags"] (fromGHCupPath tmpUnpack)
|
else fmap Just $ gitOut ["describe", "--tags"] (fromGHCupPath tmpUnpack)
|
||||||
chash <- gitOut ["rev-parse", "HEAD" ] (fromGHCupPath tmpUnpack)
|
chash <- gitOut ["rev-parse", "HEAD" ] (fromGHCupPath tmpUnpack)
|
||||||
|
branch <- gitOut ["rev-parse", "--abbrev-ref", "HEAD" ] (fromGHCupPath tmpUnpack)
|
||||||
tver <- getCabalVersion (fromGHCupPath tmpUnpack </> "haskell-language-server.cabal")
|
tver <- getCabalVersion (fromGHCupPath tmpUnpack </> "haskell-language-server.cabal")
|
||||||
|
|
||||||
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform (fromGHCupPath tmpUnpack)
|
liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform (fromGHCupPath tmpUnpack)
|
||||||
|
|
||||||
|
ov <- case vps of
|
||||||
|
Just vps' -> fmap Just $ expandVersionPattern
|
||||||
|
(Just tver)
|
||||||
|
(take 7 $ T.unpack chash)
|
||||||
|
(T.unpack chash)
|
||||||
|
(maybe "" T.unpack git_describe)
|
||||||
|
(T.unpack branch)
|
||||||
|
vps'
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
|
||||||
lift $ logInfo $ "Examining git ref " <> T.pack ref <> "\n " <>
|
lift $ logInfo $ "Examining git ref " <> T.pack ref <> "\n " <>
|
||||||
"HLS version (from cabal file): " <> prettyVer tver <>
|
"HLS version (from cabal file): " <> prettyVer tver <>
|
||||||
|
"\n branch: " <> branch <>
|
||||||
(if not shallow_clone then "\n " <> "'git describe' output: " <> fromJust git_describe else mempty) <>
|
(if not shallow_clone then "\n " <> "'git describe' output: " <> fromJust git_describe else mempty) <>
|
||||||
(if isCommitHash ref then mempty else "\n " <> "commit hash: " <> chash)
|
(if isCommitHash ref then mempty else "\n " <> "commit hash: " <> chash)
|
||||||
|
pure (tmpUnpack, tmpUnpack, tver, ov)
|
||||||
pure (tmpUnpack, tmpUnpack, tver, git_describe)
|
|
||||||
|
|
||||||
-- the version that's installed may differ from the
|
-- the version that's installed may differ from the
|
||||||
-- compiled version, so the user can overwrite it
|
-- compiled version, so the user can overwrite it
|
||||||
installVer <- case ov of
|
installVer <- maybe (pure tver) pure ov
|
||||||
Left True -> case git_describe of
|
|
||||||
-- git describe
|
|
||||||
Just h -> either (fail . displayException) pure . version $ h
|
|
||||||
-- git describe, but not building from git, lol
|
|
||||||
Nothing -> pure tver
|
|
||||||
-- default: use detected version
|
|
||||||
Left False -> pure tver
|
|
||||||
-- overwrite version with users value
|
|
||||||
Right v -> pure v
|
|
||||||
|
|
||||||
liftE $ runBuildAction
|
liftE $ runBuildAction
|
||||||
tmpUnpack
|
tmpUnpack
|
||||||
@@ -558,9 +573,7 @@ compileHLS targetHLS ghcs jobs ov installDir cabalProject cabalProjectLocal upda
|
|||||||
|
|
||||||
pure installVer
|
pure installVer
|
||||||
where
|
where
|
||||||
gitDescribeRequested = case ov of
|
gitDescribeRequested = maybe False (GitDescribe `elem`) vps
|
||||||
Left b -> b
|
|
||||||
_ -> False
|
|
||||||
|
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
|
|||||||
@@ -777,3 +777,13 @@ instance Pretty ToolVersion where
|
|||||||
data BuildSystem = Hadrian
|
data BuildSystem = Hadrian
|
||||||
| Make
|
| Make
|
||||||
deriving (Show, Eq)
|
deriving (Show, Eq)
|
||||||
|
|
||||||
|
|
||||||
|
data VersionPattern = CabalVer
|
||||||
|
| GitHashShort
|
||||||
|
| GitHashLong
|
||||||
|
| GitDescribe
|
||||||
|
| GitBranchName
|
||||||
|
| S String
|
||||||
|
deriving (Eq, Show)
|
||||||
|
|
||||||
|
|||||||
@@ -1275,3 +1275,29 @@ processBranches str' = let lines' = lines (T.unpack str')
|
|||||||
branches = catMaybes $ fmap (stripPrefix "refs/heads/") $ filter (isPrefixOf "refs/heads/") refs
|
branches = catMaybes $ fmap (stripPrefix "refs/heads/") $ filter (isPrefixOf "refs/heads/") refs
|
||||||
in branches
|
in branches
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
------------------
|
||||||
|
--[ Versioning ]--
|
||||||
|
------------------
|
||||||
|
|
||||||
|
|
||||||
|
expandVersionPattern :: MonadFail m
|
||||||
|
=> Maybe Version -- ^ cabal ver
|
||||||
|
-> String -- ^ git hash (short), if any
|
||||||
|
-> String -- ^ git hash (long), if any
|
||||||
|
-> String -- ^ git describe output, if any
|
||||||
|
-> String -- ^ git branch name, if any
|
||||||
|
-> [VersionPattern]
|
||||||
|
-> m Version
|
||||||
|
expandVersionPattern cabalVer gitHashS gitHashL gitDescribe gitBranch
|
||||||
|
= either (fail . displayException) pure . version . T.pack . go
|
||||||
|
where
|
||||||
|
go [] = ""
|
||||||
|
go (CabalVer:xs) = T.unpack (maybe "" prettyVer cabalVer) <> go xs
|
||||||
|
go (GitHashShort:xs) = gitHashS <> go xs
|
||||||
|
go (GitHashLong:xs) = gitHashL <> go xs
|
||||||
|
go (GitDescribe:xs) = gitDescribe <> go xs
|
||||||
|
go (GitBranchName:xs) = gitBranch <> go xs
|
||||||
|
go (S str:xs) = str <> go xs
|
||||||
|
|
||||||
|
|||||||
@@ -527,7 +527,7 @@ adjust_bashrc() {
|
|||||||
;;
|
;;
|
||||||
fish)
|
fish)
|
||||||
mkdir -p "${GHCUP_PROFILE_FILE%/*}"
|
mkdir -p "${GHCUP_PROFILE_FILE%/*}"
|
||||||
sed -i -e '/# ghcup-env$/ s/^#*/#/' "$(posix_realpath "${GHCUP_PROFILE_FILE}")"
|
sed -i -e '/# ghcup-env$/d' "$(posix_realpath "${GHCUP_PROFILE_FILE}")"
|
||||||
case $1 in
|
case $1 in
|
||||||
1)
|
1)
|
||||||
printf "\n%s" "set -q GHCUP_INSTALL_BASE_PREFIX[1]; or set GHCUP_INSTALL_BASE_PREFIX \$HOME ; set -gx PATH \$HOME/.cabal/bin $GHCUP_BIN \$PATH # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
printf "\n%s" "set -q GHCUP_INSTALL_BASE_PREFIX[1]; or set GHCUP_INSTALL_BASE_PREFIX \$HOME ; set -gx PATH \$HOME/.cabal/bin $GHCUP_BIN \$PATH # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
||||||
@@ -538,12 +538,12 @@ adjust_bashrc() {
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
bash)
|
bash)
|
||||||
sed -i -e '/# ghcup-env$/ s/^#*/#/' "$(posix_realpath "${GHCUP_PROFILE_FILE}")"
|
sed -i -e '/# ghcup-env$/d' "$(posix_realpath "${GHCUP_PROFILE_FILE}")"
|
||||||
printf "\n%s" "[ -f \"${GHCUP_DIR}/env\" ] && source \"${GHCUP_DIR}/env\" # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
printf "\n%s" "[ -f \"${GHCUP_DIR}/env\" ] && . \"${GHCUP_DIR}/env\" # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
||||||
case "${plat}" in
|
case "${plat}" in
|
||||||
"Darwin"|"darwin")
|
"Darwin"|"darwin")
|
||||||
if ! grep -q "ghcup-env" "${HOME}/.bash_profile" ; then
|
if ! grep -q "ghcup-env" "${HOME}/.bash_profile" ; then
|
||||||
printf "\n%s" "[[ -f ~/.bashrc ]] && source ~/.bashrc # ghcup-env" >> "${HOME}/.bash_profile"
|
printf "\n%s" "[[ -f ~/.bashrc ]] && . ~/.bashrc # ghcup-env" >> "${HOME}/.bash_profile"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
MSYS*|MINGW*|CYGWIN*)
|
MSYS*|MINGW*|CYGWIN*)
|
||||||
@@ -557,15 +557,19 @@ adjust_bashrc() {
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
zsh)
|
zsh)
|
||||||
sed -i -e '/# ghcup-env$/ s/^#*/#/' "$(posix_realpath "${GHCUP_PROFILE_FILE}")"
|
sed -i -e '/# ghcup-env$/d' "$(posix_realpath "${GHCUP_PROFILE_FILE}")"
|
||||||
printf "\n%s" "[ -f \"${GHCUP_DIR}/env\" ] && source \"${GHCUP_DIR}/env\" # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
printf "\n%s" "[ -f \"${GHCUP_DIR}/env\" ] && . \"${GHCUP_DIR}/env\" # ghcup-env" >> "${GHCUP_PROFILE_FILE}"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
if [ -e "$HOME/.profile" ] ; then
|
||||||
|
sed -i -e '/# ghcup-env$/d' "$(posix_realpath "$HOME/.profile")"
|
||||||
|
printf "\n%s" "[ -f \"${GHCUP_DIR}/env\" ] && . \"${GHCUP_DIR}/env\" # ghcup-env" >> "$HOME/.profile"
|
||||||
|
fi
|
||||||
echo
|
echo
|
||||||
echo "==============================================================================="
|
echo "==============================================================================="
|
||||||
echo
|
echo
|
||||||
warn "OK! ${GHCUP_PROFILE_FILE} has been modified. Restart your terminal for the changes to take effect,"
|
warn "OK! ${GHCUP_PROFILE_FILE} has been modified. Restart your terminal for the changes to take effect,"
|
||||||
warn "or type \"source ${GHCUP_DIR}/env\" to apply them in your current terminal session."
|
warn "or type \". ${GHCUP_DIR}/env\" to apply them in your current terminal session."
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
@@ -44,7 +44,9 @@ param (
|
|||||||
# The Msys2 sha256sum hash
|
# The Msys2 sha256sum hash
|
||||||
[string]$Msys2Hash,
|
[string]$Msys2Hash,
|
||||||
# Whether to disable creation of several desktop shortcuts
|
# Whether to disable creation of several desktop shortcuts
|
||||||
[switch]$DontWriteDesktopShortcuts
|
[switch]$DontWriteDesktopShortcuts,
|
||||||
|
# Whether to disable adjusting bashrc (in msys2 env) with PATH
|
||||||
|
[switch]$DontAdjustBashRc
|
||||||
)
|
)
|
||||||
|
|
||||||
$DefaultMsys2Version = "20221216"
|
$DefaultMsys2Version = "20221216"
|
||||||
@@ -185,6 +187,13 @@ function Exec
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Only x86 32/64-bit is supported
|
||||||
|
$SupportedArchitectures = 'AMD64', 'x86'
|
||||||
|
if (!$SupportedArchitectures.contains($env:PROCESSOR_ARCHITECTURE)) {
|
||||||
|
Print-Msg -color Red -msg ("Unsupported processor architecture: {0}. Supported architectures: {1}." -f $env:PROCESSOR_ARCHITECTURE, ($SupportedArchitectures -join ", "))
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
$GhcupBasePrefixEnv = [System.Environment]::GetEnvironmentVariable('GHCUP_INSTALL_BASE_PREFIX', 'user')
|
$GhcupBasePrefixEnv = [System.Environment]::GetEnvironmentVariable('GHCUP_INSTALL_BASE_PREFIX', 'user')
|
||||||
@@ -647,10 +656,14 @@ if ($DisableCurl) {
|
|||||||
$DownloadScript = 'curl --proto ''=https'' --tlsv1.2 -sSf'
|
$DownloadScript = 'curl --proto ''=https'' --tlsv1.2 -sSf'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!($DontAdjustBashRc)) {
|
||||||
|
$AdjustBashRcExport = 'export BOOTSTRAP_HASKELL_ADJUST_BASHRC=1 ;'
|
||||||
|
}
|
||||||
|
|
||||||
if ((Get-Process -ID $PID).ProcessName.StartsWith("bootstrap-haskell") -Or $InBash) {
|
if ((Get-Process -ID $PID).ProcessName.StartsWith("bootstrap-haskell") -Or $InBash) {
|
||||||
Exec "$Bash" '-lc' ('{4} {6} {7} {8} {9} {10} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript)
|
Exec "$Bash" '-lc' ('{4} {6} {7} {8} {9} {10} {12} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript, $AdjustBashRcExport)
|
||||||
} else {
|
} else {
|
||||||
Exec "$Msys2Shell" '-mingw64' '-mintty' '-shell' 'bash' '-c' ('{4} {6} {7} {8} {9} {10} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; trap ''echo Press any key to exit && read -n 1 && exit'' 2 ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash ; echo ''Press any key to exit'' && read -n 1' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript)
|
Exec "$Msys2Shell" '-mingw64' '-mintty' '-shell' 'bash' '-c' ('{4} {6} {7} {8} {9} {10} {12} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; trap ''echo Press any key to exit && read -n 1 && exit'' 2 ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash ; echo ''Press any key to exit'' && read -n 1' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript, $AdjustBashRcExport)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,11 +27,7 @@ cd "gh-release-artifacts/${RELEASE}"
|
|||||||
# github
|
# github
|
||||||
gh release download "$RELEASE"
|
gh release download "$RELEASE"
|
||||||
|
|
||||||
# cirrus
|
|
||||||
curl -L -o "x86_64-portbld-freebsd-ghcup-${TAG}" \
|
|
||||||
"https://api.cirrus-ci.com/v1/artifact/github/haskell/ghcup-hs/build/binaries/out/x86_64-portbld-freebsd-ghcup-${TAG}?branch=${RELEASE}"
|
|
||||||
|
|
||||||
sha256sum ./*-ghcup-* > SHA256SUMS
|
sha256sum ./*-ghcup-* > SHA256SUMS
|
||||||
gpg --detach-sign -u "${SIGNER}" SHA256SUMS
|
gpg --detach-sign -u "${SIGNER}" SHA256SUMS
|
||||||
|
|
||||||
gh release upload "$RELEASE" "ghcup-${TAG}-src.tar.gz" "x86_64-portbld-freebsd-ghcup-${TAG}" SHA256SUMS SHA256SUMS.sig
|
gh release upload "$RELEASE" "ghcup-${TAG}-src.tar.gz" SHA256SUMS SHA256SUMS.sig
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ mkDefaultHLSCompileOptions target ghcs =
|
|||||||
Nothing
|
Nothing
|
||||||
True
|
True
|
||||||
False
|
False
|
||||||
(Left False)
|
Nothing
|
||||||
Nothing
|
Nothing
|
||||||
Nothing
|
Nothing
|
||||||
Nothing
|
Nothing
|
||||||
@@ -91,8 +91,8 @@ compileGhcCheckList = mapSecond CompileGHC
|
|||||||
, (baseCmd <> "--cross-target armv7-unknown-linux-gnueabihf", baseOptions{GHC.crossTarget = Just "armv7-unknown-linux-gnueabihf"})
|
, (baseCmd <> "--cross-target armv7-unknown-linux-gnueabihf", baseOptions{GHC.crossTarget = Just "armv7-unknown-linux-gnueabihf"})
|
||||||
, (baseCmd <> "-- --enable-unregisterised", baseOptions{GHC.addConfArgs = ["--enable-unregisterised"]})
|
, (baseCmd <> "-- --enable-unregisterised", baseOptions{GHC.addConfArgs = ["--enable-unregisterised"]})
|
||||||
, (baseCmd <> "--set", baseOptions{GHC.setCompile = True})
|
, (baseCmd <> "--set", baseOptions{GHC.setCompile = True})
|
||||||
, (baseCmd <> "-o 9.4.5-p1", baseOptions{GHC.ovewrwiteVer = Just $(versionQ "9.4.5-p1")})
|
, (baseCmd <> "-o 9.4.5-p1", baseOptions{GHC.overwriteVer = Just [S "9.4.5-p1"]})
|
||||||
, (baseCmd <> "--overwrite-version 9.4.5-p1", baseOptions{GHC.ovewrwiteVer = Just $(versionQ "9.4.5-p1")})
|
, (baseCmd <> "--overwrite-version 9.4.5-p1", baseOptions{GHC.overwriteVer = Just [S "9.4.5-p1"]})
|
||||||
, (baseCmd <> "-f make", baseOptions{GHC.buildFlavour = Just "make"})
|
, (baseCmd <> "-f make", baseOptions{GHC.buildFlavour = Just "make"})
|
||||||
, (baseCmd <> "--flavour make", baseOptions{GHC.buildFlavour = Just "make"})
|
, (baseCmd <> "--flavour make", baseOptions{GHC.buildFlavour = Just "make"})
|
||||||
, (baseCmd <> "--hadrian", baseOptions{GHC.buildSystem = Just Hadrian})
|
, (baseCmd <> "--hadrian", baseOptions{GHC.buildSystem = Just Hadrian})
|
||||||
@@ -158,9 +158,9 @@ compileHlsCheckList = mapSecond CompileHLS
|
|||||||
, (baseCmd <> "--jobs 10", baseOptions{HLS.jobs = Just 10})
|
, (baseCmd <> "--jobs 10", baseOptions{HLS.jobs = Just 10})
|
||||||
, (baseCmd <> "--no-set", baseOptions{HLS.setCompile = False})
|
, (baseCmd <> "--no-set", baseOptions{HLS.setCompile = False})
|
||||||
, (baseCmd <> "--cabal-update", baseOptions{HLS.updateCabal = True})
|
, (baseCmd <> "--cabal-update", baseOptions{HLS.updateCabal = True})
|
||||||
, (baseCmd <> "-o 2.0.0.0-p1", baseOptions{HLS.ovewrwiteVer = Right $(versionQ "2.0.0.0-p1")})
|
, (baseCmd <> "-o 2.0.0.0-p1", baseOptions{HLS.overwriteVer = Just [S "2.0.0.0-p1"]})
|
||||||
, (baseCmd <> "--overwrite-version 2.0.0.0-p1", baseOptions{HLS.ovewrwiteVer = Right $(versionQ "2.0.0.0-p1")})
|
, (baseCmd <> "--overwrite-version 2.0.0.0-p1", baseOptions{HLS.overwriteVer = Just [S "2.0.0.0-p1"]})
|
||||||
, (baseCmd <> "--git-describe-version", baseOptions{HLS.ovewrwiteVer = Left True})
|
, (baseCmd <> "--git-describe-version", baseOptions{HLS.overwriteVer = Just [GitDescribe]})
|
||||||
#ifdef IS_WINDOWS
|
#ifdef IS_WINDOWS
|
||||||
, (baseCmd <> "-i C:\\\\tmp\\out_dir", baseOptions{HLS.isolateDir = Just "C:\\\\tmp\\out_dir"})
|
, (baseCmd <> "-i C:\\\\tmp\\out_dir", baseOptions{HLS.isolateDir = Just "C:\\\\tmp\\out_dir"})
|
||||||
, (baseCmd <> "--isolate C:\\\\tmp\\out_dir", baseOptions{HLS.isolateDir = Just "C:\\\\tmp\\out_dir"})
|
, (baseCmd <> "--isolate C:\\\\tmp\\out_dir", baseOptions{HLS.isolateDir = Just "C:\\\\tmp\\out_dir"})
|
||||||
|
|||||||
Reference in New Issue
Block a user