Switch releases to Github CI
This commit is contained in:
		
							parent
							
								
									77419ea41d
								
							
						
					
					
						commit
						4a46de4c49
					
				
							
								
								
									
										20
									
								
								.cirrus.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.cirrus.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| freebsd_instance: | ||||
|   image_family: freebsd-13-1 | ||||
| 
 | ||||
| task: | ||||
|   env: | ||||
|     GHC_VER: 9.2.4 | ||||
|     CABAL_VER: 3.6.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 | ||||
|   install_script: pkg install -y ghc hs-cabal-install git bash misc/compat10x misc/compat11x misc/compat12x gmake | ||||
|   script: | ||||
|     - bash .github/scripts/build.sh | ||||
|     - bash .github/scripts/test.sh | ||||
|   binaries_artifacts: | ||||
|     path: "out/x86_64-portbld-freebsd-ghcup-*" | ||||
							
								
								
									
										4946
									
								
								.github/ghc-8.10.3-linux.alpine.files
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4946
									
								
								.github/ghc-8.10.3-linux.alpine.files
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										8734
									
								
								.github/ghc-8.10.3-linux.files
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8734
									
								
								.github/ghc-8.10.3-linux.files
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										10321
									
								
								.github/ghc-8.10.3-windows.files
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10321
									
								
								.github/ghc-8.10.3-windows.files
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										37
									
								
								.github/ghcup-run.files
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								.github/ghcup-run.files
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | ||||
| . | ||||
| ./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 | ||||
							
								
								
									
										31
									
								
								.github/ghcup-run.files.alpine
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.github/ghcup-run.files.alpine
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| . | ||||
| ./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.7 | ||||
| ./haskell-language-server-8.10.7~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.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 | ||||
							
								
								
									
										81
									
								
								.github/ghcup-run.files.windows
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								.github/ghcup-run.files.windows
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,81 @@ | ||||
| . | ||||
| ./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 | ||||
							
								
								
									
										16
									
								
								.github/scripts/bootstrap.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								.github/scripts/bootstrap.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| set -eux | ||||
| 
 | ||||
| . .github/scripts/prereq.sh | ||||
| 
 | ||||
| mkdir -p "$CI_PROJECT_DIR"/.local/bin | ||||
| 
 | ||||
| git describe --always | ||||
| 
 | ||||
| ### build | ||||
| 
 | ||||
| ./scripts/bootstrap/bootstrap-haskell | ||||
| 
 | ||||
| [ "$(ghc --numeric-version)" = "${BOOTSTRAP_HASKELL_GHC_VERSION}" ] | ||||
| 
 | ||||
							
								
								
									
										62
									
								
								.github/scripts/build.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								.github/scripts/build.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,62 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| set -eux | ||||
| 
 | ||||
| . .github/scripts/prereq.sh | ||||
| 
 | ||||
| if ! command -v ghcup && [ "${RUNNER_OS}" != "FreeBSD" ] ; then | ||||
| 	find "$GHCUP_INSTALL_BASE_PREFIX" | ||||
| 	mkdir -p "$GHCUP_BIN" | ||||
| 	mkdir -p "$GHCUP_BIN"/../cache | ||||
| 	curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_MINIMAL=1 sh | ||||
| fi | ||||
| 
 | ||||
| if [ "${RUNNER_OS}" != "FreeBSD" ] ; then | ||||
| 	ghcup install ghc --set --isolate="$HOME/.local"     --force "$GHC_VER" | ||||
| 	ghcup install cabal     --isolate="$HOME/.local/bin" --force "$CABAL_VER" | ||||
| 	ghc --version | ||||
| 	cabal --version | ||||
| 	GHC="ghc-${GHC_VER}" | ||||
| else | ||||
| 	GHC="ghc" | ||||
| fi | ||||
| 
 | ||||
| git describe --all | ||||
| 
 | ||||
| ecabal() { | ||||
| 	cabal "$@" | ||||
| } | ||||
| 
 | ||||
| # build | ||||
| ecabal update | ||||
| 
 | ||||
| 
 | ||||
| if [ "${RUNNER_OS}" = "Linux" ] ; then | ||||
| 	if [ "${ARCH}" = "32" ] ; then | ||||
| 		ecabal build -w "${GHC}" --ghc-options='-split-sections -optl-static' -ftui | ||||
| 	elif [ "${ARCH}" = "64" ] ; then | ||||
| 		ecabal build -w "${GHC}" --ghc-options='-split-sections -optl-static' -ftui | ||||
| 	else | ||||
| 		ecabal build -w "${GHC}" -ftui | ||||
| 	fi | ||||
| elif [ "${RUNNER_OS}" = "FreeBSD" ] ; then | ||||
| 	ecabal build -w "${GHC}" --ghc-options='-split-sections' --constraint="zlib +bundled-c-zlib" --constraint="zip +disable-zstd" -ftui | ||||
| elif [ "${RUNNER_OS}" = "Windows" ] ; then | ||||
| 	ecabal build -w "${GHC}" --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" | ||||
| else | ||||
| 	ecabal build -w "${GHC}" --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" -ftui | ||||
| fi | ||||
| 
 | ||||
| mkdir out | ||||
| binary=$(ecabal new-exec -w "${GHC}" --verbose=0 --offline sh -- -c 'command -v ghcup') | ||||
| ver=$("${binary}" --numeric-version) | ||||
| if [ "${RUNNER_OS}" = "macOS" ] ; then | ||||
| 	strip "${binary}" | ||||
| else | ||||
| 	if [ "${RUNNER_OS}" != "Windows" ] ; then | ||||
| 		strip -s "${binary}" | ||||
| 	fi | ||||
| fi | ||||
| cp "${binary}" "out/${ARTIFACT}-${ver}" | ||||
| cp ./dist-newstyle/cache/plan.json "out/${ARTIFACT}.plan.json" | ||||
| 
 | ||||
							
								
								
									
										77
									
								
								.github/scripts/hls.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								.github/scripts/hls.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,77 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| set -eux | ||||
| 
 | ||||
| . .github/scripts/prereq.sh | ||||
| 
 | ||||
| mkdir -p "$CI_PROJECT_DIR"/.local/bin | ||||
| 
 | ||||
| ### build | ||||
| 
 | ||||
| ecabal() { | ||||
| 	cabal "$@" | ||||
| } | ||||
| 
 | ||||
| raw_eghcup() { | ||||
| 	"$GHCUP_BIN/ghcup${ext}" -v -c "$@" | ||||
| } | ||||
| 
 | ||||
| eghcup() { | ||||
| 	if [ "${OS}" = "Windows" ] ; then | ||||
| 		"$GHCUP_BIN/ghcup${ext}" -v -c -s file:/$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@" | ||||
| 	else | ||||
| 		"$GHCUP_BIN/ghcup${ext}" -v -c -s file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@" | ||||
| 	fi | ||||
| } | ||||
| 
 | ||||
| sha_sum() { | ||||
| 	if [ "${OS}" = "FreeBSD" ] ; then | ||||
| 		sha256 "$@" | ||||
| 	else | ||||
| 		sha256sum "$@" | ||||
| 	fi | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| if [ "${OS}" = "Windows" ] ; then | ||||
| 	GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/ghcup | ||||
| else | ||||
| 	GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup | ||||
| fi | ||||
| 
 | ||||
| rm -rf "${GHCUP_DIR}" | ||||
| mkdir -p "${GHCUP_BIN}" | ||||
| 
 | ||||
| if [ "${OS}" = "Windows" ] ; then | ||||
| 	ext=".exe" | ||||
| else | ||||
| 	ext='' | ||||
| fi | ||||
| ls -lah out | ||||
| find out | ||||
| cp "out/${ARTIFACT}"-* "$GHCUP_BIN/ghcup${ext}" | ||||
| chmod +x "$GHCUP_BIN/ghcup${ext}" | ||||
| echo "$PATH" | ||||
| 
 | ||||
| "$GHCUP_BIN/ghcup${ext}" --version | ||||
| eghcup --version | ||||
| sha_sum "$GHCUP_BIN/ghcup${ext}" | ||||
| sha_sum "$(raw_eghcup --offline whereis ghcup)" | ||||
| 
 | ||||
| git describe --always | ||||
| 
 | ||||
| eghcup install ghc "${GHC_VERSION}" | ||||
| eghcup install cabal | ||||
| 
 | ||||
| ecabal update | ||||
| 
 | ||||
| eghcup debug-info | ||||
| 
 | ||||
| eghcup compile hls -j $(nproc) -g ${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_DIR}" ] | ||||
| 
 | ||||
							
								
								
									
										76
									
								
								.github/scripts/prereq.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								.github/scripts/prereq.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,76 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| mkdir -p "$HOME"/.local/bin | ||||
| 
 | ||||
| export OS="$RUNNER_OS" | ||||
| export PATH="$HOME/.local/bin:$PATH" | ||||
| 
 | ||||
| if [ "${RUNNER_OS}" = "Windows" ] ; then | ||||
| 	# on windows use pwd to get unix style path | ||||
| 	CI_PROJECT_DIR="$(pwd)" | ||||
| 	export CI_PROJECT_DIR | ||||
|     export GHCUP_INSTALL_BASE_PREFIX="/c" | ||||
|     export GHCUP_BIN="$GHCUP_INSTALL_BASE_PREFIX/ghcup/bin" | ||||
|     export PATH="$GHCUP_BIN:$PATH" | ||||
| else | ||||
| 	export CI_PROJECT_DIR="${GITHUB_WORKSPACE}" | ||||
|     export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR" | ||||
|     export GHCUP_BIN="$GHCUP_INSTALL_BASE_PREFIX/.ghcup/bin" | ||||
|     export PATH="$GHCUP_BIN:$PATH" | ||||
|     export CABAL_DIR="$CI_PROJECT_DIR/cabal" | ||||
|     export CABAL_CACHE="$CI_PROJECT_DIR/cabal-cache" | ||||
| fi | ||||
| 
 | ||||
| if [ "${RUNNER_OS}" = "Linux" ] ; then | ||||
| 	if [ "${DISTRO}" = "Alpine" ] ; then | ||||
|           apk add --no-cache \ | ||||
|             curl \ | ||||
|             gcc \ | ||||
|             g++ \ | ||||
|             binutils \ | ||||
|             binutils-gold \ | ||||
|             bsd-compat-headers \ | ||||
|             gmp-dev \ | ||||
|             ncurses-dev \ | ||||
|             libffi-dev \ | ||||
|             make \ | ||||
|             xz \ | ||||
|             tar \ | ||||
|             perl \ | ||||
|             bash \ | ||||
|             diffutils \ | ||||
|             git | ||||
| 
 | ||||
|           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 | ||||
| 	elif [ "${DISTRO}" = "Ubuntu" ] ; then | ||||
| 		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 | ||||
| 	fi | ||||
| elif [ "${RUNNER_OS}" = "macOS" ] ; then | ||||
| 	if ! command -v brew ; then | ||||
| 		[ -e "$HOME/.brew" ] || | ||||
| 			git clone --depth=1 https://github.com/Homebrew/brew "$HOME/.brew" | ||||
| 		export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$PATH" | ||||
| 		brew update | ||||
| 	fi | ||||
| 	if ! command -v git ; then | ||||
| 		brew install git | ||||
| 	fi | ||||
| 	if ! command -v realpath ; then | ||||
| 		brew install coreutils | ||||
| 	fi | ||||
| fi | ||||
| 
 | ||||
							
								
								
									
										284
									
								
								.github/scripts/test.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										284
									
								
								.github/scripts/test.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,284 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| set -eux | ||||
| 
 | ||||
| . .github/scripts/prereq.sh | ||||
| 
 | ||||
| ecabal() { | ||||
| 	cabal "$@" | ||||
| } | ||||
| 
 | ||||
| raw_eghcup() { | ||||
| 	"$GHCUP_BIN/ghcup${ext}" -v -c "$@" | ||||
| } | ||||
| 
 | ||||
| eghcup() { | ||||
| 	if [ "${OS}" = "Windows" ] ; then | ||||
| 		"$GHCUP_BIN/ghcup${ext}" -v -c -s file:/$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@" | ||||
| 	else | ||||
| 		"$GHCUP_BIN/ghcup${ext}" -v -c -s file://$CI_PROJECT_DIR/data/metadata/ghcup-${JSON_VERSION}.yaml "$@" | ||||
| 	fi | ||||
| } | ||||
| 
 | ||||
| sha_sum() { | ||||
| 	if [ "${OS}" = "FreeBSD" ] ; then | ||||
| 		sha256 "$@" | ||||
| 	else | ||||
| 		sha256sum "$@" | ||||
| 	fi | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| if [ "${OS}" = "Windows" ] ; then | ||||
| 	GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/ghcup | ||||
| else | ||||
| 	GHCUP_DIR="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup | ||||
| fi | ||||
| 
 | ||||
| git describe --always | ||||
| 
 | ||||
| 
 | ||||
| rm -rf "${GHCUP_DIR}" | ||||
| mkdir -p "${GHCUP_BIN}" | ||||
| 
 | ||||
| if [ "${OS}" = "Windows" ] ; then | ||||
| 	ext=".exe" | ||||
| else | ||||
| 	ext='' | ||||
| fi | ||||
| ls -lah out | ||||
| find out | ||||
| cp "out/${ARTIFACT}"-* "$GHCUP_BIN/ghcup${ext}" | ||||
| chmod +x "$GHCUP_BIN/ghcup${ext}" | ||||
| echo "$PATH" | ||||
| 
 | ||||
| "$GHCUP_BIN/ghcup${ext}" --version | ||||
| eghcup --version | ||||
| sha_sum "$GHCUP_BIN/ghcup${ext}" | ||||
| sha_sum "$(raw_eghcup --offline whereis ghcup)" | ||||
| 
 | ||||
| ### manual cli based testing | ||||
| 
 | ||||
| eghcup --numeric-version | ||||
| 
 | ||||
| eghcup install ghc ${GHC_VER} | ||||
| eghcup unset ghc ${GHC_VER} | ||||
| ls -lah "$(eghcup whereis -d ghc ${GHC_VER})" | ||||
| [ "`$(eghcup whereis ghc ${GHC_VER}) --numeric-version`" = "${GHC_VER}" ] | ||||
| [ "`eghcup run --ghc ${GHC_VER} -- ghc --numeric-version`" = "${GHC_VER}" ] | ||||
| [ "`ghcup run --ghc ${GHC_VER} -- ghc -e 'Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)'`" = "`$(ghcup whereis ghc ${GHC_VER}) -e 'Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)'`" ] | ||||
| eghcup set ghc ${GHC_VER} | ||||
| eghcup install cabal ${CABAL_VER} | ||||
| [ "`$(eghcup whereis cabal ${CABAL_VER}) --numeric-version`" = "${CABAL_VER}" ] | ||||
| 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_VER} -- cabal --numeric-version`" = "${CABAL_VER}" ] | ||||
| eghcup set cabal ${CABAL_VER} | ||||
| 
 | ||||
| [ "`$(eghcup whereis cabal ${CABAL_VER}) --numeric-version`" = "${CABAL_VER}" ] | ||||
| 
 | ||||
| if [ "${OS}" != "FreeBSD" ] ; then | ||||
| 	if [ "${ARCH}" = "64" ] && [ "${DISTRO}" != "Alpine" ] ; 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 | ||||
| 			cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files.windows" | sort > expected.txt | ||||
| 		elif [ "${DISTRO}" = "Alpine" ] ; then | ||||
| 			cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files.alpine" | sort > expected.txt | ||||
| 		else | ||||
| 			cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghcup-run.files" | sort > expected.txt | ||||
| 		fi | ||||
| 		(cd ".bin" && find . | sort) > actual.txt | ||||
| 		diff --strip-trailing-cr -w -u actual.txt expected.txt | ||||
| 		rm actual.txt expected.txt | ||||
| 		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}" = "macOS" ] && [ "${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 | ||||
| 		    if [ "${DISTRO}" = "Alpine" ] ; then | ||||
| 				(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-linux.alpine.files" | sort) > expected.txt | ||||
| 			else | ||||
| 				(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-linux.files" | sort) > expected.txt | ||||
| 			fi | ||||
| 			(cd "${GHCUP_DIR}/ghc/8.10.3/" && find . | sort) > actual.txt | ||||
| 			# ignore docs | ||||
| 		    sed -i '/share\/doc/d' actual.txt | ||||
| 		    sed -i '/share\/doc/d' expected.txt | ||||
| 			diff --strip-trailing-cr -w -u actual.txt expected.txt | ||||
| 			rm actual.txt expected.txt | ||||
| 		fi | ||||
| 	elif [ "${OS}" = "Windows" ] ; then | ||||
| 		eghcup prefetch ghc 8.10.3 | ||||
| 		eghcup --offline install ghc 8.10.3 | ||||
| 		(cat "$( cd "$(dirname "$0")" ; pwd -P )/../ghc-8.10.3-windows.files" | sort) > expected.txt | ||||
| 		(cd "${GHCUP_DIR}/ghc/8.10.3/" && find . | sort) > actual.txt | ||||
| 		diff --strip-trailing-cr -w -u actual.txt expected.txt | ||||
| 		rm actual.txt expected.txt | ||||
| 	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_VER} | ||||
| 	[ "$(ghc --numeric-version)" = "${ghc_ver}" ] | ||||
| 	eghcup unset ghc | ||||
|     "$GHCUP_BIN"/ghc --numeric-version && exit 1 || echo yes | ||||
| 	eghcup set ${GHC_VER} | ||||
| 	eghcup --offline rm 8.10.3 | ||||
| 	[ "$(ghc --numeric-version)" = "${ghc_ver}" ] | ||||
| 
 | ||||
| 
 | ||||
| 	ls -lah "$GHCUP_BIN" | ||||
| 
 | ||||
| 	if [ "${OS}" = "macOS" ] ; then | ||||
| 		eghcup install hls | ||||
| 		$(eghcup whereis hls) --version | ||||
| 
 | ||||
| 		eghcup install stack | ||||
| 		$(eghcup whereis stack) --version | ||||
| 	elif [ "${OS}" = "Linux" ] ; then | ||||
| 		if [ "${ARCH}" = "64" ] && [ "${DISTRO}" != "Alpine" ] ; 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 | ||||
| 
 | ||||
| # 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 | ||||
| if [ "${DISTRO}" != "Alpine" ] ; then | ||||
| 	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 | ||||
| fi | ||||
| 
 | ||||
| eghcup upgrade | ||||
| eghcup upgrade -f | ||||
| 
 | ||||
| # restore old ghcup, because we want to test nuke | ||||
| cp "out/${ARTIFACT}"-* "$GHCUP_BIN/ghcup${ext}" | ||||
| chmod +x "$GHCUP_BIN/ghcup${ext}" | ||||
| 
 | ||||
| # 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 ] | ||||
| 
 | ||||
							
								
								
									
										46
									
								
								.github/workflows/bootstrap.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								.github/workflows/bootstrap.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | ||||
| name: Bootstrap tests | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|     tags: | ||||
|       - 'v*' | ||||
|   pull_request: | ||||
|     branches: | ||||
|       - master | ||||
| 
 | ||||
| jobs: | ||||
|   bootstrap: | ||||
|     name: bootstrap | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     env: | ||||
|       BOOTSTRAP_HASKELL_CABAL_VERSION: 3.6.2.0 | ||||
|       BOOTSTRAP_HASKELL_GHC_VERSION: 8.10.7 | ||||
|       BOOTSTRAP_HASKELL_NONINTERACTIVE: yes | ||||
|       JSON_VERSION: "0.0.7" | ||||
|     strategy: | ||||
|       matrix: | ||||
|         include: | ||||
|           - os: ubuntu-latest | ||||
|             DISTRO: Ubuntu | ||||
|           - os: macOS-10.15 | ||||
|             DISTRO: na | ||||
|           - os: windows-latest | ||||
|             DISTRO: na | ||||
|     steps: | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           submodules: 'true' | ||||
| 
 | ||||
|       - if: runner.os != 'Windows' | ||||
|         name: Run bootstrap | ||||
|         run: sh ./.github/scripts/bootstrap.sh | ||||
|         env: | ||||
|           DISTRO: ${{ matrix.DISTRO }} | ||||
| 
 | ||||
|       - if: runner.os == 'Windows' | ||||
|         name: Run bootstrap | ||||
|         run: ./scripts/bootstrap/bootstrap-haskell.ps1 -InstallDir ${GITHUB_WORKSPACE} -BootstrapUrl ${GITHUB_WORKSPACE}/bootstrap-haskell -InBash | ||||
|         shell: pwsh | ||||
							
								
								
									
										26
									
								
								.github/workflows/hlint.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								.github/workflows/hlint.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | ||||
| name: Hlint | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|     tags: | ||||
|       - 'v*' | ||||
|   pull_request: | ||||
|     branches: | ||||
|       - master | ||||
| 
 | ||||
| jobs: | ||||
|   hlint: | ||||
|     name: hlint | ||||
|     runs-on: ubuntu-latest | ||||
|     env: | ||||
|       JSON_VERSION: "0.0.7" | ||||
|     steps: | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           submodules: 'true' | ||||
| 
 | ||||
|       - name: Run hlint | ||||
|         run: curl -sSL https://raw.github.com/ndmitchell/hlint/master/misc/run.sh | sh -s -- -r lib/ test/ | ||||
							
								
								
									
										33
									
								
								.github/workflows/mkdocs.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.github/workflows/mkdocs.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| name: MkDocs | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|     tags: | ||||
|       - 'v*' | ||||
|   pull_request: | ||||
|     branches: | ||||
|       - master | ||||
| 
 | ||||
| jobs: | ||||
|   mkdocs: | ||||
|     name: mkdocs | ||||
|     runs-on: ubuntu-latest | ||||
|     env: | ||||
|       JSON_VERSION: "0.0.7" | ||||
|     steps: | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           submodules: 'true' | ||||
| 
 | ||||
|       - name: Install mkdocs deps | ||||
|         run: | | ||||
|           sudo apt-get update -y | ||||
|           sudo apt-get install -y python3-pip | ||||
|           sudo pip3 install mkdocs | ||||
| 
 | ||||
|       - name: Run mkdocs | ||||
|         run: | | ||||
|           mkdocs build | ||||
							
								
								
									
										289
									
								
								.github/workflows/release.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										289
									
								
								.github/workflows/release.yaml
									
									
									
									
										vendored
									
									
								
							| @ -1,109 +1,224 @@ | ||||
| name: Create Release | ||||
| name: Build and release | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|     tags: | ||||
|       - 'v*' | ||||
|   pull_request: | ||||
|     branches: | ||||
|       - master | ||||
| 
 | ||||
| jobs: | ||||
|   draft_release: | ||||
|     name: Draft Release | ||||
|     runs-on: ubuntu-latest | ||||
|     outputs: | ||||
|       upload_url: ${{ steps.create_release.outputs.upload_url }} | ||||
| 
 | ||||
|     steps: | ||||
|       - name: Create Release | ||||
|         id: create_release | ||||
|         uses: actions/create-release@v1 | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|         with: | ||||
|           tag_name: ${{ github.ref }} | ||||
|           release_name: Release ${{ github.ref }} | ||||
|           body: | | ||||
|             Changes in this Release | ||||
|             - First Change | ||||
|             - Second Change | ||||
|           draft: true | ||||
|           prerelease: false | ||||
| 
 | ||||
|   release-mac: | ||||
|     name: Create Release | ||||
|     needs: draft_release | ||||
|   build: | ||||
|     name: Build binary | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     env: | ||||
|       CABAL_VER: 3.6.2.0 | ||||
|       CACHE_VER: 1 | ||||
|       MACOSX_DEPLOYMENT_TARGET: 10.13 | ||||
|       JSON_VERSION: "0.0.7" | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: | ||||
|           - macOS-10.15 | ||||
|         include: | ||||
|           - os: ubuntu-latest | ||||
|             ARTIFACT: "i386-linux-ghcup" | ||||
|             GHC_VER: 8.10.7 | ||||
|             ARCH: 32 | ||||
|           - os: ubuntu-latest | ||||
|             ARTIFACT: "x86_64-linux-ghcup" | ||||
|             GHC_VER: 8.10.7 | ||||
|             ARCH: 64 | ||||
|           - os: [self-hosted, macOS, aarch64] | ||||
|             ARTIFACT: "aarch64-apple-darwin-ghcup" | ||||
|             GHC_VER: 9.2.5 | ||||
|             ARCH: ARM64 | ||||
|           - os: macOS-10.15 | ||||
|             ARTIFACT: "x86_64-apple-darwin-ghcup" | ||||
|             GHC_VER: 9.2.5 | ||||
|             ARCH: 64 | ||||
|           - os: windows-latest | ||||
|             ARTIFACT: "x86_64-mingw64-ghcup" | ||||
|             GHC_VER: 8.10.7 | ||||
|             ARCH: 64 | ||||
|     steps: | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v2 | ||||
| 
 | ||||
|       - uses: haskell/actions/setup@v1.2 | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           ghc-version: 8.10.7 | ||||
|           cabal-version: 3.6.2.0 | ||||
|           submodules: 'true' | ||||
| 
 | ||||
|       - name: create ~/.local/bin | ||||
|         run: mkdir -p "$HOME/.local/bin" | ||||
|         shell: bash | ||||
| 
 | ||||
|       - name: Add ~/.local/bin to PATH | ||||
|         run: echo "$HOME/.local/bin" >> $GITHUB_PATH | ||||
|         shell: bash | ||||
| 
 | ||||
|       - name: Update cabal cache | ||||
|         run: cabal update | ||||
|         shell: bash | ||||
| 
 | ||||
|       - name: Install cabal dependencies | ||||
|         run: cabal build --only-dependencies --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" -ftui | ||||
|         shell: bash | ||||
| 
 | ||||
|       - name: Build | ||||
|         run: cabal build --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" -ftui | ||||
|         shell: bash | ||||
| 
 | ||||
|       - name: Install | ||||
|         run: cp "$(cabal list-bin exe:ghcup)" ~/.local/bin/ghcup | ||||
|         shell: bash | ||||
| 
 | ||||
|       - name: Strip | ||||
|         run: strip ~/.local/bin/ghcup | ||||
|         shell: bash | ||||
| 
 | ||||
|       - name: Run tests | ||||
|         run: cabal test --constraint="zlib +bundled-c-zlib" --constraint="lzma +static" all | ||||
|         shell: bash | ||||
| 
 | ||||
|       - name: Install git | ||||
|         run: brew install git | ||||
| 
 | ||||
|       - name: set HOME | ||||
|         run: echo "HOME=$HOME" >> $GITHUB_ENV | ||||
|         shell: bash | ||||
| 
 | ||||
|       - name: Set ASSET_PATH | ||||
|         run: echo "ASSET_PATH=$HOME/.local/bin/ghcup" >> $GITHUB_ENV | ||||
|         shell: bash | ||||
| 
 | ||||
|       - name: Upload Release Asset | ||||
|         id: upload-release-asset | ||||
|         uses: actions/upload-release-asset@v1 | ||||
|       - if: matrix.ARCH == '32' && runner.os == 'Linux' | ||||
|         name: Run build (32 bit linux) | ||||
|         uses: docker://i386/alpine:3.12 | ||||
|         with: | ||||
|           args: sh .github/scripts/build.sh | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|           ARTIFACT: ${{ matrix.ARTIFACT }} | ||||
|           ARCH: ${{ matrix.ARCH }} | ||||
|           GHC_VER: ${{ matrix.GHC_VER }} | ||||
|           DISTRO: Alpine | ||||
| 
 | ||||
|       - if: matrix.ARCH == '64' && runner.os == 'Linux' | ||||
|         name: Run build (64 bit linux) | ||||
|         uses: docker://alpine:3.12 | ||||
|         with: | ||||
|           upload_url: ${{ needs.draft_release.outputs.upload_url }} | ||||
|           asset_path: ${{ env.ASSET_PATH }} | ||||
|           asset_name: ghcup-${{ matrix.os }} | ||||
|           asset_content_type: application/octet-stream | ||||
|           args: sh .github/scripts/build.sh | ||||
|         env: | ||||
|           ARTIFACT: ${{ matrix.ARTIFACT }} | ||||
|           ARCH: ${{ matrix.ARCH }} | ||||
|           GHC_VER: ${{ matrix.GHC_VER }} | ||||
|           DISTRO: Alpine | ||||
| 
 | ||||
|       - if: runner.os != 'Linux' | ||||
|         name: Run build (windows/mac) | ||||
|         run: bash .github/scripts/build.sh | ||||
|         env: | ||||
|           ARTIFACT: ${{ matrix.ARTIFACT }} | ||||
|           ARCH: ${{ matrix.ARCH }} | ||||
|           GHC_VER: ${{ matrix.GHC_VER }} | ||||
|           DISTRO: na | ||||
| 
 | ||||
|       - if: always() | ||||
|         uses: actions/upload-artifact@v2 | ||||
|         name: Upload artifact | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: plan.json | ||||
|           path: ./dist-newstyle/cache/plan.json | ||||
|           name: artifacts | ||||
|           path: | | ||||
|             ./out/* | ||||
| 
 | ||||
|   test: | ||||
|     name: Test | ||||
|     needs: build | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     env: | ||||
|       CABAL_VER: 3.6.2.0 | ||||
|       CACHE_VER: 1 | ||||
|       MACOSX_DEPLOYMENT_TARGET: 10.13 | ||||
|       JSON_VERSION: "0.0.7" | ||||
|     strategy: | ||||
|       matrix: | ||||
|         include: | ||||
|           - os: ubuntu-latest | ||||
|             ARTIFACT: "i386-linux-ghcup" | ||||
|             GHC_VER: 8.10.7 | ||||
|             ARCH: 32 | ||||
|             DISTRO: Alpine | ||||
|           - os: ubuntu-latest | ||||
|             ARTIFACT: "x86_64-linux-ghcup" | ||||
|             GHC_VER: 8.10.7 | ||||
|             ARCH: 64 | ||||
|             DISTRO: Alpine | ||||
|           - os: ubuntu-latest | ||||
|             ARTIFACT: "x86_64-linux-ghcup" | ||||
|             GHC_VER: 8.10.7 | ||||
|             ARCH: 64 | ||||
|             DISTRO: Ubuntu | ||||
|           - os: [self-hosted, macOS, aarch64] | ||||
|             ARTIFACT: "aarch64-apple-darwin-ghcup" | ||||
|             GHC_VER: 9.2.5 | ||||
|             ARCH: ARM64 | ||||
|             DISTRO: na | ||||
|           - os: macOS-10.15 | ||||
|             ARTIFACT: "x86_64-apple-darwin-ghcup" | ||||
|             GHC_VER: 9.2.5 | ||||
|             ARCH: 64 | ||||
|             DISTRO: na | ||||
|           - os: windows-latest | ||||
|             ARTIFACT: "x86_64-mingw64-ghcup" | ||||
|             GHC_VER: 8.10.7 | ||||
|             ARCH: 64 | ||||
|             DISTRO: na | ||||
|     steps: | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           submodules: 'true' | ||||
| 
 | ||||
|       - uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: artifacts | ||||
|           path: ./out | ||||
| 
 | ||||
|       - if: matrix.ARCH == '32' && runner.os == 'Linux' && matrix.DISTRO == 'Alpine' | ||||
|         name: Run build (32 bit linux Alpine) | ||||
|         uses: docker://i386/alpine:3.12 | ||||
|         with: | ||||
|           args: sh .github/scripts/test.sh | ||||
|         env: | ||||
|           ARTIFACT: ${{ matrix.ARTIFACT }} | ||||
|           ARCH: ${{ matrix.ARCH }} | ||||
|           GHC_VER: ${{ matrix.GHC_VER }} | ||||
|           DISTRO: ${{ matrix.DISTRO }} | ||||
| 
 | ||||
|       - if: matrix.ARCH == '64' && runner.os == 'Linux' && matrix.DISTRO == 'Alpine' | ||||
|         name: Run build (64 bit linux Alpine) | ||||
|         uses: docker://alpine:3.12 | ||||
|         with: | ||||
|           args: sh .github/scripts/test.sh | ||||
|         env: | ||||
|           ARTIFACT: ${{ matrix.ARTIFACT }} | ||||
|           ARCH: ${{ matrix.ARCH }} | ||||
|           GHC_VER: ${{ matrix.GHC_VER }} | ||||
|           DISTRO: ${{ matrix.DISTRO }} | ||||
| 
 | ||||
|       - if: runner.os == 'Linux' && matrix.DISTRO != 'Alpine' | ||||
|         name: Run build (64 bit linux) | ||||
|         run: sh .github/scripts/test.sh | ||||
|         env: | ||||
|           ARTIFACT: ${{ matrix.ARTIFACT }} | ||||
|           ARCH: ${{ matrix.ARCH }} | ||||
|           GHC_VER: ${{ matrix.GHC_VER }} | ||||
|           DISTRO: ${{ matrix.DISTRO }} | ||||
| 
 | ||||
|       - if: runner.os != 'Linux' | ||||
|         name: Run build (windows/mac) | ||||
|         run: bash .github/scripts/test.sh | ||||
|         env: | ||||
|           ARTIFACT: ${{ matrix.ARTIFACT }} | ||||
|           ARCH: ${{ matrix.ARCH }} | ||||
|           GHC_VER: ${{ matrix.GHC_VER }} | ||||
|           DISTRO: ${{ matrix.DISTRO }} | ||||
|   hls: | ||||
|     name: hls | ||||
|     needs: build | ||||
|     runs-on: ubuntu-latest | ||||
|     env: | ||||
|       GHC_VERSION: "8.10.7" | ||||
|       HLS_TARGET_VERSION: "1.8.0.0" | ||||
|       CABAL_VERSION: "3.6.2.0" | ||||
|       JSON_VERSION: "0.0.7" | ||||
|       ARTIFACT: "x86_64-linux-ghcup" | ||||
|       DISTRO: Ubuntu | ||||
|     steps: | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           submodules: 'true' | ||||
| 
 | ||||
|       - uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: artifacts | ||||
|           path: ./out | ||||
| 
 | ||||
|       - name: Run hls build | ||||
|         run: sh .github/scripts/hls.sh | ||||
| 
 | ||||
|   release: | ||||
|     name: release | ||||
|     needs: [build, test, hls] | ||||
|     runs-on: ubuntu-latest | ||||
|     if: startsWith(github.ref, 'refs/tags/v') | ||||
|     steps: | ||||
|       - name: Download artifacts | ||||
|         uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           name: artifacts | ||||
|           path: ./out | ||||
| 
 | ||||
|       - name: Release | ||||
|         uses: softprops/action-gh-release@v1 | ||||
|         with: | ||||
|           draft: true | ||||
|           files: | | ||||
|             ./out/* | ||||
|  | ||||
							
								
								
									
										28
									
								
								.github/workflows/shellcheck.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.github/workflows/shellcheck.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | ||||
| name: Shellcheck | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|     tags: | ||||
|       - 'v*' | ||||
|   pull_request: | ||||
|     branches: | ||||
|       - master | ||||
| 
 | ||||
| jobs: | ||||
|   shellcheck: | ||||
|     name: shellcheck | ||||
|     runs-on: ubuntu-latest | ||||
|     env: | ||||
|       JSON_VERSION: "0.0.7" | ||||
|     steps: | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           submodules: 'true' | ||||
| 
 | ||||
|       - name: Run shellcheck | ||||
|         uses: docker://koalaman/shellcheck-alpine | ||||
|         with: | ||||
|           args: shellcheck scripts/bootstrap/bootstrap-haskell | ||||
| @ -5,7 +5,6 @@ optional-packages: ./vendored/*/*.cabal | ||||
| optimization: 2 | ||||
| 
 | ||||
| package ghcup | ||||
|     tests: True | ||||
|     flags: +tui | ||||
| 
 | ||||
| source-repository-package | ||||
|  | ||||
| @ -1 +1 @@ | ||||
| Subproject commit 42f43a6b2d6295f78427de9dbefb0f7cde44167b | ||||
| Subproject commit 8f0e82ef06dea885a18d5352af26b72693a15ec0 | ||||
| @ -174,7 +174,7 @@ library | ||||
|     build-depends: | ||||
|       , bzlib | ||||
|       , process  ^>=1.6.11.0 | ||||
|       , Win32    ^>=2.10 | ||||
|       , Win32    >=2.10 | ||||
| 
 | ||||
|   else | ||||
|     other-modules: | ||||
|  | ||||
| @ -136,11 +136,8 @@ _eghcup() { | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| ecabal() { | ||||
| 	edo _ecabal "$@" | ||||
| } | ||||
| 
 | ||||
| _ecabal() { | ||||
|     # shellcheck disable=SC2317 | ||||
|     if [ -n "${CABAL_BIN}" ] ; then | ||||
|         "${CABAL_BIN}" "$@" | ||||
|     else | ||||
| @ -149,6 +146,10 @@ _ecabal() { | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| ecabal() { | ||||
| 	edo _ecabal "$@" | ||||
| } | ||||
| 
 | ||||
| _done() { | ||||
| 	echo | ||||
| 	echo "===============================================================================" | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user