diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 29fece07f5..e93f32b716 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,6 +11,18 @@ variables: CABAL_INSTALL_VERSION: 3.6.2.0 .default_matrix: &default_matrix + matrix: + - GHC_VERSION: 8.8.4 + CABAL_PROJECT: cabal.project + - GHC_VERSION: 8.10.7 + CABAL_PROJECT: cabal.project + - GHC_VERSION: 9.0.2 + CABAL_PROJECT: cabal-ghc90.project + - GHC_VERSION: 9.2.1 + CABAL_PROJECT: cabal-ghc921.project + +# ghc-9.2.1 is broken for bsd +.freebsd_matrix: &freebsd_matrix matrix: - GHC_VERSION: 8.8.4 CABAL_PROJECT: cabal.project @@ -148,9 +160,9 @@ build-x86_64-freebsd12: extends: .build tags: - x86_64-freebsd12 - parallel: *default_matrix + parallel: *freebsd_matrix variables: - ADD_CABAL_ARGS: "--enable-split-sections" + ADD_CABAL_ARGS: "--enable-split-sections -j1" tar-x86_64-freebsd12: extends: .artifacts @@ -168,13 +180,13 @@ build-x86_64-freebsd13: extends: .build tags: - x86_64-freebsd13 - parallel: *default_matrix + parallel: *freebsd_matrix before_script: - sudo pkg update - sudo pkg install --yes compat12x-amd64 - sudo ln -s libncurses.so.6 /usr/local/lib/libncurses.so.6.2 variables: - ADD_CABAL_ARGS: "--enable-split-sections" + ADD_CABAL_ARGS: "--enable-split-sections -j1" tar-x86_64-freebsd13: extends: .artifacts diff --git a/.gitlab/ci.sh b/.gitlab/ci.sh index ab9bc23ad2..5267bc8c8f 100755 --- a/.gitlab/ci.sh +++ b/.gitlab/ci.sh @@ -45,11 +45,6 @@ case "$(uname -s)" in ;; esac -# some alpines need workaround -if ghc --info | grep -q integer-simple ; then - echo -e 'package blaze-textual\n flags: +integer-simple' >> cabal.project.local -fi - # Shorten binary names sed -i.bak -e 's/haskell-language-server/hls/g' \ -e 's/haskell_language_server/hls/g' \ @@ -58,9 +53,9 @@ sed -i.bak -e 's/Paths_haskell_language_server/Paths_hls/g' \ src/**/*.hs exe/*.hs args=( - -O2 + -O2 -w "ghc-$GHC_VERSION" - --project-file "$CABAL_PROJECT" + --project-file "$CABAL_PROJECT" --disable-profiling --disable-tests --enable-executable-stripping diff --git a/.gitlab/shell-aarch64-darwin.nix b/.gitlab/shell-aarch64-darwin.nix deleted file mode 100644 index 33c7c67bee..0000000000 --- a/.gitlab/shell-aarch64-darwin.nix +++ /dev/null @@ -1,90 +0,0 @@ -{ system ? "aarch64-darwin" -#, nixpkgs ? fetchTarball https://github.com/angerman/nixpkgs/archive/257cb120334.tar.gz #apple-silicon.tar.gz -, pkgs ? import { inherit system; } -, compiler ? if system == "aarch64-darwin" then "ghc8103Binary" else "ghc8103" -}: pkgs.mkShell { - # this prevents nix from trying to write the env-vars file. - # we can't really, as NIX_BUILD_TOP/env-vars is not set. - noDumpEnvVars=1; - - # stop polluting LDFLAGS with -liconv - dontAddExtraLibs = true; - - # we need to inject ncurses into --with-curses-libraries. - # the real fix is to teach terminfo to use libcurses on macOS. - # CONFIGURE_ARGS = "--with-intree-gmp --with-curses-libraries=${pkgs.ncurses.out}/lib"; - CONFIGURE_ARGS = "--with-intree-gmp --with-curses-libraries=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib --with-iconv-includes=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include --with-iconv-libraries=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib SH=/bin/bash"; - - # magic speedup pony :facepalm: - # - # nix has the ugly habbit of duplicating ld flags more than necessary. This - # somewhat consolidates this. - shellHook = '' - export NIX_LDFLAGS=$(for a in $NIX_LDFLAGS; do echo $a; done |sort|uniq|xargs) - export NIX_LDFLAGS_FOR_TARGET=$(for a in $NIX_LDFLAGS_FOR_TARGET; do echo $a; done |sort|uniq|xargs) - export NIX_LDFLAGS_FOR_TARGET=$(comm -3 <(for l in $NIX_LDFLAGS_FOR_TARGET; do echo $l; done) <(for l in $NIX_LDFLAGS; do echo $l; done)) - - - # Impurity hack for GHC releases. - ################################# - # We don't want binary releases to depend on nix, thus we'll need to make sure we don't leak in references. - # GHC externally depends only on iconv and curses. However we can't force a specific curses library for - # the terminfo package, as such we'll need to make sure we only look in the system path for the curses library - # and not pick up the tinfo from the nix provided ncurses package. - # - # We also need to force us to use the systems COREFOUNDATION, not the one that nix builds. Again this is impure, - # but it will allow us to have proper binary distributions. - # - # do not use nixpkgs provided core foundation - export NIX_COREFOUNDATION_RPATH=/System/Library/Frameworks - # drop curses from the LDFLAGS, we really want the system ones, not the nix ones. - export NIX_LDFLAGS=$(for lib in $NIX_LDFLAGS; do case "$lib" in *curses*);; *) echo -n "$lib ";; esac; done;) - export NIX_CFLAGS_COMPILE+=" -Wno-nullability-completeness -Wno-availability -Wno-expansion-to-defined -Wno-builtin-requires-header -Wno-unused-command-line-argument" - - # unconditionally add the MacOSX.sdk and TargetConditional.h - export NIX_CFLAGS_COMPILE+=" -isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include" - export NIX_LDFLAGS="-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib $NIX_LDFLAGS" - - ''; - - nativeBuildInputs = (with pkgs; [ - # This needs to come *before* ghc, - # otherwise we migth end up with the clang from - # the bootstrap GHC in PATH with higher priority. - clang_11 - llvm_11 - - haskell.compiler.${compiler} - haskell.packages.${compiler}.cabal-install - haskell.packages.${compiler}.alex - haskell.packages.${compiler}.happy # _1_19_12 is needed for older GHCs. - - automake - autoconf - m4 - - gmp - zlib.out - zlib.dev - glibcLocales - # locale doesn't build yet :-/ - # locale - - git - - python3 - # python3Full - # python3Packages.sphinx - perl - - which - wget - curl - file - - xz - xlibs.lndir - - cacert ]) - ++ (with pkgs.darwin.apple_sdk.frameworks; [ Foundation Security ]); -}