diff --git a/.github/workflows/hlint-from-scratch.yml b/.github/workflows/hlint-from-scratch.yml index ade04f7..20a3574 100644 --- a/.github/workflows/hlint-from-scratch.yml +++ b/.github/workflows/hlint-from-scratch.yml @@ -13,12 +13,15 @@ jobs: os: [ubuntu, macos, windows] steps: - uses: actions/checkout@v4 - - run: stack upgrade - run: brew install automake if: matrix.os == 'macos' + - run: cabal update + # - run: cabal new-install cabal-install --overwrite-policy=always + - run: cabal new-install apply-refact + if: matrix.os == 'ubuntu' - run: |- echo "GHCLIB_AZURE='1'" >> $GITHUB_ENV - echo "repo_dir=$(mktemp -d)" >> $GITHUB_ENV + echo "repo_dir=." >> $GITHUB_ENV shell: bash - run: ./hlint-from-scratch.sh --init="$repo_dir" shell: bash diff --git a/README.md b/README.md index 033da39..c397a8a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# `hlint-from-scratch` +# `hlint-from-scratch` [![hlint-from-scratch](https://github.com/shayne-fletcher/hlint-from-scratch/actions/workflows/hlint-from-scratch.yml/badge.svg)](https://github.com/shayne-fletcher/hlint-from-scratch/actions/workflows/hlint-from-scratch.yml) Scripts for building HLint from GHC `HEAD` (and other flavors). diff --git a/hlint-from-scratch-cabal-build-test.sh b/hlint-from-scratch-cabal-build-test.sh index c2e6ef6..eedbd22 100755 --- a/hlint-from-scratch-cabal-build-test.sh +++ b/hlint-from-scratch-cabal-build-test.sh @@ -24,7 +24,7 @@ opts: " usage="usage: $prog ARGS" -ghc_version="" +ghc_version="$(ghc --version | sed -e 's/The Glorious Glasgow Haskell Compilation System, version //g' -e 's/^/ghc-/g')" version_tag="" ghc_lib_dir="" ghc_lib_parser_ex_dir="" @@ -84,17 +84,18 @@ done set -u -[ ! -f "$HOME/$ghc_version/bin/ghc" ] && { echo "$HOME/$ghc_version/bin/ghc not found" && exit 1; } -PATH="$HOME/$ghc_version/bin:$PATH" -export PATH +if [ -d "$HOME/$ghc_version" ]; then + PATH="$HOME/$ghc_version/bin:$PATH" + export PATH +fi # Make sure cabal-install is up-to-date with the most recent # available. At this time there aren't build plans for compilers > # ghc-9.2.4. -(PATH=$HOME/ghc-9.2.4/bin:$PATH; export PATH && \ - cabal update && \ - cabal new-install cabal-install --overwrite-policy=always \ -) +# (PATH=$HOME/ghc-9.2.4/bin:$PATH; export PATH && \ +# cabal update && \ +# cabal new-install cabal-install --overwrite-policy=always \ +# ) echo "cabal-install: $(which cabal)" echo "cabal-install version: $(cabal -V)" diff --git a/hlint-from-scratch.sh b/hlint-from-scratch.sh index 3883447..d7db4ab 100755 --- a/hlint-from-scratch.sh +++ b/hlint-from-scratch.sh @@ -234,9 +234,9 @@ if [ -z "$GHC_FLAVOR" ]; then else eval "$cmd" "$GHC_FLAVOR" fi -sha_ghc_lib_parser=$(shasum -a 256 "$repo_dir"/ghc-lib/ghc-lib-parser-"$version".tar.gz | awk '{ print $1 }') +#sha_ghc_lib_parser=$(shasum -a 256 "$repo_dir"/ghc-lib/ghc-lib-parser-"$version".tar.gz | awk '{ print $1 }') -# temp disable while i focus on minimal set of github actions +# temp disabled while i focus on minimal set of github actions if false; then if [ -z "$GHC_FLAVOR" ]; then # If the above worked out, update CI.hs. @@ -305,8 +305,7 @@ $allow_newer\n\ # --\n\ extra-deps:\n\ # ghc-lib-parser\n\ - - archive: ${repo_dir}/ghc-lib/ghc-lib-parser-${version}.tar.gz\n\ - sha256: \"${sha_ghc_lib_parser}\";\ + - archive: ${repo_dir}/ghc-lib/ghc-lib-parser-${version}.tar.gz;\ g" | \ sed -e "s;^resolver:.*$;resolver: ${resolver};g" > stack-head.yaml else @@ -314,7 +313,6 @@ else resolver: $resolver extra-deps: - archive: ${repo_dir}/ghc-lib/ghc-lib-parser-$version.tar.gz - sha256: "$sha_ghc_lib_parser" ghc-options: "$DOLLAR$everything": -j "$DOLLAR$locals": -ddump-to-file -ddump-hi -Wall -Wno-name-shadowing -Wunused-imports @@ -333,8 +331,11 @@ stack_yaml=stack-head.yaml stack_yaml_flag="--stack-yaml $stack_yaml" # No need to pass $resolver_flag here, we fixed the resolver in # 'stack-head.yaml'. +set +e +cat "$stack_yaml" eval "$runhaskell $stack_yaml_flag CI.hs -- $no_builds $stack_yaml_flag --version-tag $version" -sha_ghc_lib_parser_ex=$(shasum -a 256 "$repo_dir"/ghc-lib-parser-ex/ghc-lib-parser-ex-"$version".tar.gz | awk '{ print $1 }') +# sha_ghc_lib_parser_ex=$(shasum -a 256 "$repo_dir"/ghc-lib-parser-ex/ghc-lib-parser-ex-"$version".tar.gz | awk '{ print $1 }') +set -e # Hlint @@ -376,9 +377,7 @@ packages: - . extra-deps: - archive: $repo_dir/ghc-lib/ghc-lib-parser-$version.tar.gz - sha256: "$sha_ghc_lib_parser" - archive: $repo_dir/ghc-lib-parser-ex/ghc-lib-parser-ex-$version.tar.gz - sha256: "$sha_ghc_lib_parser_ex" ghc-options: "$DOLLAR$everything": -j "$DOLLAR$locals": -ddump-to-file -ddump-hi -Werror=unused-imports -Werror=unused-local-binds -Werror=unused-top-binds -Werror=orphans @@ -400,17 +399,34 @@ if ! [ "$no_builds" == --no-builds ]; then # Again, wrong to pass $resolver_flag here. # Build hlint. - eval "C_INCLUDE_PATH=$(xcrun --show-sdk-path)/usr/include/ffi" "stack" "$stack_yaml_flag" "build" + if [ $(uname) == 'Darwin' ]; then + eval "C_INCLUDE_PATH=$(xcrun --show-sdk-path)/usr/include/ffi" "stack" "$stack_yaml_flag" "build" + else + eval "stack" "$stack_yaml_flag" "build" + fi # Run its tests. - eval "C_INCLUDE_PATH=$(xcrun --show-sdk-path)/usr/include/ffi" "stack" "$stack_yaml_flag" "run" "--" "--test" + if [ $(uname) == 'Darwin' ]; then + eval "C_INCLUDE_PATH=$(xcrun --show-sdk-path)/usr/include/ffi" "stack" "$stack_yaml_flag" "run" "--" "--test" + else + eval "stack" "$stack_yaml_flag" "run" "--" "--test" + fi # Test there are no changes to 'hints.md'. - eval "C_INCLUDE_PATH=$(xcrun --show-sdk-path)/usr/include/ffi" "stack" "$stack_yaml_flag" "run" "--" "hlint" "--generate-summary" + if [ $(uname) == 'Darwin' ]; then + eval "C_INCLUDE_PATH=$(xcrun --show-sdk-path)/usr/include/ffi" "stack" "$stack_yaml_flag" "run" "--" "hlint" "--generate-summary" + else + eval "stack" "$stack_yaml_flag" "run" "--" "hlint" "--generate-summary" + fi + git diff --exit-code hints.md # Run it on its own source. - eval "C_INCLUDE_PATH=$(xcrun --show-sdk-path)/usr/include/ffi" "stack" "$stack_yaml_flag" "run" "--" "src" + if [ $(uname) == 'Darwin' ]; then + eval "C_INCLUDE_PATH=$(xcrun --show-sdk-path)/usr/include/ffi" "stack" "$stack_yaml_flag" "run" "--" "src" + else + eval "stack" "$stack_yaml_flag" "run" "--" "src" + fi fi # -- @@ -445,9 +461,8 @@ eval "stack" "$stack_yaml_flag" "sdist" "." "--tar-dir" "." # - Depending on the contents of `$with_haddock_flag`. Also, # - Run ghc-lib-test-mini-hlint, ghc-lib-test-mini-compile and the # hlint test suite. -tmp_dir="$HOME/tmp" -mkdir -p "$tmp_dir" -(cd "$HOME"/tmp && hlint-from-scratch-cabal-build-test.sh \ +tmp_dir=$(mktemp -d) +(cd "$tmp_dir" && hlint-from-scratch-cabal-build-test.sh \ "$cabal_with_ghc_flag" \ --version-tag="$version" \ --ghc-lib-dir="$repo_dir/ghc-lib" \