Merge branch 'issue-1032'
This commit is contained in:
		
						commit
						7cad0ca9fe
					
				
							
								
								
									
										41
									
								
								.github/workflows/cross.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										41
									
								
								.github/workflows/cross.yaml
									
									
									
									
										vendored
									
									
								
							@ -21,8 +21,8 @@ jobs:
 | 
				
			|||||||
    name: Build linux binary
 | 
					    name: Build linux binary
 | 
				
			||||||
    runs-on: [self-hosted, Linux, X64, maerwald]
 | 
					    runs-on: [self-hosted, Linux, X64, maerwald]
 | 
				
			||||||
    env:
 | 
					    env:
 | 
				
			||||||
      CABAL_VER: 3.10.1.0
 | 
					      CABAL_VER: 3.10.3.0
 | 
				
			||||||
      JSON_VERSION: "0.0.7"
 | 
					      JSON_VERSION: "0.0.8"
 | 
				
			||||||
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
 | 
					      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
 | 
				
			||||||
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
 | 
					      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
 | 
				
			||||||
      S3_HOST: ${{ secrets.S3_HOST }}
 | 
					      S3_HOST: ${{ secrets.S3_HOST }}
 | 
				
			||||||
@ -31,7 +31,7 @@ jobs:
 | 
				
			|||||||
      ARCH: 64
 | 
					      ARCH: 64
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout code
 | 
					      - name: Checkout code
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          submodules: 'true'
 | 
					          submodules: 'true'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -50,7 +50,7 @@ jobs:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      - if: always()
 | 
					      - if: always()
 | 
				
			||||||
        name: Upload artifact
 | 
					        name: Upload artifact
 | 
				
			||||||
        uses: actions/upload-artifact@v3
 | 
					        uses: actions/upload-artifact@v4
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          name: artifacts
 | 
					          name: artifacts
 | 
				
			||||||
          path: |
 | 
					          path: |
 | 
				
			||||||
@ -61,13 +61,13 @@ jobs:
 | 
				
			|||||||
    needs: "build"
 | 
					    needs: "build"
 | 
				
			||||||
    runs-on: [self-hosted, Linux, X64]
 | 
					    runs-on: [self-hosted, Linux, X64]
 | 
				
			||||||
    container:
 | 
					    container:
 | 
				
			||||||
      image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:8d0224e6b2a08157649651e69302380b2bd24e11
 | 
					      image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb12:a9297a370025101b479cfd4977f8f910814e03ab
 | 
				
			||||||
      options: --user root
 | 
					      options: --user root
 | 
				
			||||||
      env:
 | 
					      env:
 | 
				
			||||||
        CABAL_VER: 3.6.2.0
 | 
					        CABAL_VER: 3.10.3.0
 | 
				
			||||||
        BUILD_CONF_ARGS: "--enable-unregisterised"
 | 
					        BUILD_CONF_ARGS: "--enable-unregisterised"
 | 
				
			||||||
        HADRIAN_FLAVOUR: ""
 | 
					        HADRIAN_FLAVOUR: ""
 | 
				
			||||||
        JSON_VERSION: "0.0.7"
 | 
					        JSON_VERSION: "0.0.8"
 | 
				
			||||||
        GHC_VER: 8.10.6
 | 
					        GHC_VER: 8.10.6
 | 
				
			||||||
        GHC_TARGET_VERSION: "8.10.7"
 | 
					        GHC_TARGET_VERSION: "8.10.7"
 | 
				
			||||||
        ARCH: 64
 | 
					        ARCH: 64
 | 
				
			||||||
@ -77,11 +77,11 @@ jobs:
 | 
				
			|||||||
        WRAPPER: "run"
 | 
					        WRAPPER: "run"
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout code
 | 
					      - name: Checkout code
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          submodules: 'true'
 | 
					          submodules: 'true'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - uses: actions/download-artifact@v3
 | 
					      - uses: actions/download-artifact@v4
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          name: artifacts
 | 
					          name: artifacts
 | 
				
			||||||
          path: ./out
 | 
					          path: ./out
 | 
				
			||||||
@ -89,11 +89,18 @@ jobs:
 | 
				
			|||||||
      - name: Run test (64 bit linux)
 | 
					      - name: Run test (64 bit linux)
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
          sudo apt-get update -y
 | 
					          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 curl gzip
 | 
					          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 curl gzip libstdc++-11-dev
 | 
				
			||||||
          sudo apt-get install -y gcc-arm-linux-gnueabihf
 | 
					          sudo apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
 | 
				
			||||||
          sudo dpkg --add-architecture armhf
 | 
					          sudo dpkg --add-architecture armhf
 | 
				
			||||||
          sudo apt-get update -y
 | 
					          sudo apt-get update -y
 | 
				
			||||||
          sudo apt-get install -y libncurses-dev:armhf
 | 
					          sudo apt-get install -y libncurses-dev:armhf libstdc++-11-dev:armhf
 | 
				
			||||||
 | 
					          # ld.bfd is broken on armv7: https://sourceware.org/bugzilla/show_bug.cgi?id=16177
 | 
				
			||||||
 | 
					          update-alternatives --install "/usr/bin/x86_64-linux-gnu-ld" "ld" "/usr/bin/x86_64-linux-gnu-ld.gold" 20
 | 
				
			||||||
 | 
					          update-alternatives --install "/usr/bin/x86_64-linux-gnu-ld" "ld" "/usr/bin/x86_64-linux-gnu-ld.bfd" 10
 | 
				
			||||||
 | 
					          update-alternatives --set "ld" "/usr/bin/x86_64-linux-gnu-ld.gold"
 | 
				
			||||||
 | 
					          update-alternatives --install "/usr/bin/arm-linux-gnueabihf-ld" "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.gold" 20
 | 
				
			||||||
 | 
					          update-alternatives --install "/usr/bin/arm-linux-gnueabihf-ld" "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.bfd" 10
 | 
				
			||||||
 | 
					          update-alternatives --set "ld-arm" "/usr/bin/arm-linux-gnueabihf-ld.gold"
 | 
				
			||||||
          sh .github/scripts/cross.sh
 | 
					          sh .github/scripts/cross.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  test-cross-js:
 | 
					  test-cross-js:
 | 
				
			||||||
@ -101,13 +108,13 @@ jobs:
 | 
				
			|||||||
    needs: "build"
 | 
					    needs: "build"
 | 
				
			||||||
    runs-on: [self-hosted, Linux, X64]
 | 
					    runs-on: [self-hosted, Linux, X64]
 | 
				
			||||||
    container:
 | 
					    container:
 | 
				
			||||||
      image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:8d0224e6b2a08157649651e69302380b2bd24e11
 | 
					      image: registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb12:a9297a370025101b479cfd4977f8f910814e03ab
 | 
				
			||||||
      options: --user root
 | 
					      options: --user root
 | 
				
			||||||
      env:
 | 
					      env:
 | 
				
			||||||
        CABAL_VER: 3.6.2.0
 | 
					        CABAL_VER: 3.10.3.0
 | 
				
			||||||
        BUILD_CONF_ARGS: ""
 | 
					        BUILD_CONF_ARGS: ""
 | 
				
			||||||
        HADRIAN_FLAVOUR: "default+native_bignum"
 | 
					        HADRIAN_FLAVOUR: "default+native_bignum"
 | 
				
			||||||
        JSON_VERSION: "0.0.7"
 | 
					        JSON_VERSION: "0.0.8"
 | 
				
			||||||
        GHC_VER: 9.6.2
 | 
					        GHC_VER: 9.6.2
 | 
				
			||||||
        GHC_TARGET_VERSION: "9.6.2"
 | 
					        GHC_TARGET_VERSION: "9.6.2"
 | 
				
			||||||
        ARCH: 64
 | 
					        ARCH: 64
 | 
				
			||||||
@ -117,11 +124,11 @@ jobs:
 | 
				
			|||||||
        WRAPPER: "emconfigure"
 | 
					        WRAPPER: "emconfigure"
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout code
 | 
					      - name: Checkout code
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          submodules: 'true'
 | 
					          submodules: 'true'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - uses: actions/download-artifact@v3
 | 
					      - uses: actions/download-artifact@v4
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          name: artifacts
 | 
					          name: artifacts
 | 
				
			||||||
          path: ./out
 | 
					          path: ./out
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								.github/workflows/release.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/release.yaml
									
									
									
									
										vendored
									
									
								
							@ -126,6 +126,7 @@ jobs:
 | 
				
			|||||||
          AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
 | 
					          AWS_SECRET_ACCESS_KEY: ${{ env.AWS_SECRET_ACCESS_KEY }}
 | 
				
			||||||
          AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
 | 
					          AWS_ACCESS_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
 | 
				
			||||||
          S3_HOST: ${{ env.S3_HOST }}
 | 
					          S3_HOST: ${{ env.S3_HOST }}
 | 
				
			||||||
 | 
					          LD: ld.gold
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - if: matrix.ARCH == 'ARM64'
 | 
					      - if: matrix.ARCH == 'ARM64'
 | 
				
			||||||
        uses: docker://hasufell/arm64v8-debian-haskell:10
 | 
					        uses: docker://hasufell/arm64v8-debian-haskell:10
 | 
				
			||||||
@ -397,6 +398,7 @@ jobs:
 | 
				
			|||||||
          ARCH: ${{ matrix.ARCH }}
 | 
					          ARCH: ${{ matrix.ARCH }}
 | 
				
			||||||
          GHC_VER: ${{ matrix.GHC_VER }}
 | 
					          GHC_VER: ${{ matrix.GHC_VER }}
 | 
				
			||||||
          DISTRO: Ubuntu
 | 
					          DISTRO: Ubuntu
 | 
				
			||||||
 | 
					          LD: ld.gold
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - if: matrix.ARCH == 'ARM64'
 | 
					      - if: matrix.ARCH == 'ARM64'
 | 
				
			||||||
        uses: docker://hasufell/arm64v8-debian-haskell:10
 | 
					        uses: docker://hasufell/arm64v8-debian-haskell:10
 | 
				
			||||||
 | 
				
			|||||||
@ -90,6 +90,7 @@ toSettings options = do
 | 
				
			|||||||
         gpgSetting  = fromMaybe (fromMaybe (Types.gpgSetting defaultSettings) uGPGSetting) optGpg
 | 
					         gpgSetting  = fromMaybe (fromMaybe (Types.gpgSetting defaultSettings) uGPGSetting) optGpg
 | 
				
			||||||
         platformOverride = optPlatform <|> (uPlatformOverride <|> Types.platformOverride defaultSettings)
 | 
					         platformOverride = optPlatform <|> (uPlatformOverride <|> Types.platformOverride defaultSettings)
 | 
				
			||||||
         mirrors  = fromMaybe (Types.mirrors defaultSettings) uMirrors
 | 
					         mirrors  = fromMaybe (Types.mirrors defaultSettings) uMirrors
 | 
				
			||||||
 | 
					         defGHCConfOptions  = fromMaybe (Types.defGHCConfOptions defaultSettings) uDefGHCConfOptions
 | 
				
			||||||
     in (Settings {..}, keyBindings)
 | 
					     in (Settings {..}, keyBindings)
 | 
				
			||||||
#if defined(INTERNAL_DOWNLOADER)
 | 
					#if defined(INTERNAL_DOWNLOADER)
 | 
				
			||||||
   defaultDownloader = Internal
 | 
					   defaultDownloader = Internal
 | 
				
			||||||
 | 
				
			|||||||
@ -128,3 +128,12 @@ mirrors:
 | 
				
			|||||||
    authority:
 | 
					    authority:
 | 
				
			||||||
      host: "mirror.sjtu.edu.cn"
 | 
					      host: "mirror.sjtu.edu.cn"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Arguments to pass to the configure script of the prebuilt bindist.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Do not pass '--prefix' here.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# GHCup by default passes '--disable-ld-override', so if you want to enable
 | 
				
			||||||
 | 
					# the vanilla way, which aggressively favors 'ld.gold' linker, add the following:
 | 
				
			||||||
 | 
					def-ghc-conf-options:
 | 
				
			||||||
 | 
					  - "--enable-ld-override"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +1 @@
 | 
				
			|||||||
Subproject commit 7e1a50cfff66fdc4039535ea2251fd62a0521579
 | 
					Subproject commit cca49a2e023181ecc172a53e9cfdfeae5eafe553
 | 
				
			||||||
@ -360,6 +360,28 @@ mirrors:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
The configuration depends on the host of the mirror and they have to provide the correct configuration.
 | 
					The configuration depends on the host of the mirror and they have to provide the correct configuration.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Linkers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The GHC bindist configure script by default doesn't honour the system `ld` that is set, but instead
 | 
				
			||||||
 | 
					probes for `ld.lld`, `ld.gold` and only then `ld` in order, see
 | 
				
			||||||
 | 
					[find_ld.m4](https://gitlab.haskell.org/ghc/ghc/-/blob/master/m4/find_ld.m4?ref_type=heads).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is controlled by the configure switch `--enable-ld-override`/`--disable-ld-override`, which is enabled by default in GHC.
 | 
				
			||||||
 | 
					GHCup however [has decided](https://github.com/haskell/ghcup-hs/issues/1032) **to disable this switch by default**,
 | 
				
			||||||
 | 
					for reasons of stability and simplicity.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					That means, when `--disable-ld-override` is passed, the linker is picked simply by:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* checking if `LD` env var is set, then use whatever is specified
 | 
				
			||||||
 | 
					* otherwise use `ld` binary in PATH (system/distro default)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can restore the GHC vanilla default by adding this to your `~/.ghcup/config.yaml`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					def-ghc-conf-options:
 | 
				
			||||||
 | 
					  - "--enable-ld-override"
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# More on installation
 | 
					# More on installation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Customisation of the installation scripts
 | 
					## Customisation of the installation scripts
 | 
				
			||||||
 | 
				
			|||||||
@ -133,7 +133,8 @@ updateSettings usl usr =
 | 
				
			|||||||
       gpgSetting' = uGPGSetting usl <|> uGPGSetting usr
 | 
					       gpgSetting' = uGPGSetting usl <|> uGPGSetting usr
 | 
				
			||||||
       platformOverride' = uPlatformOverride usl <|> uPlatformOverride usr
 | 
					       platformOverride' = uPlatformOverride usl <|> uPlatformOverride usr
 | 
				
			||||||
       mirrors' = uMirrors usl <|> uMirrors usr
 | 
					       mirrors' = uMirrors usl <|> uMirrors usr
 | 
				
			||||||
   in UserSettings cache' metaCache' metaMode' noVerify' verbose' keepDirs' downloader' (updateKeyBindings (uKeyBindings usl) (uKeyBindings usr)) urlSource' noNetwork' gpgSetting' platformOverride' mirrors'
 | 
					       defGHCconfOptions' = uDefGHCConfOptions usl <|> uDefGHCConfOptions usr
 | 
				
			||||||
 | 
					   in UserSettings cache' metaCache' metaMode' noVerify' verbose' keepDirs' downloader' (updateKeyBindings (uKeyBindings usl) (uKeyBindings usr)) urlSource' noNetwork' gpgSetting' platformOverride' mirrors' defGHCconfOptions'
 | 
				
			||||||
 where
 | 
					 where
 | 
				
			||||||
  updateKeyBindings :: Maybe UserKeyBindings -> Maybe UserKeyBindings -> Maybe UserKeyBindings
 | 
					  updateKeyBindings :: Maybe UserKeyBindings -> Maybe UserKeyBindings -> Maybe UserKeyBindings
 | 
				
			||||||
  updateKeyBindings Nothing Nothing = Nothing
 | 
					  updateKeyBindings Nothing Nothing = Nothing
 | 
				
			||||||
 | 
				
			|||||||
@ -439,39 +439,22 @@ installUnpackedGHC path inst tver forceInstall addConfArgs
 | 
				
			|||||||
      liftE $ mergeGHCFileTree path inst tver forceInstall
 | 
					      liftE $ mergeGHCFileTree path inst tver forceInstall
 | 
				
			||||||
  | otherwise = do
 | 
					  | otherwise = do
 | 
				
			||||||
      PlatformRequest {..} <- lift getPlatformReq
 | 
					      PlatformRequest {..} <- lift getPlatformReq
 | 
				
			||||||
 | 
					      Settings {..} <- lift getSettings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      let ldOverride
 | 
					      addConfArgs' <- sanitizefGHCconfOptions (T.unpack <$> addConfArgs)
 | 
				
			||||||
           | _tvVersion tver >= [vver|8.2.2|]
 | 
					      defGHCConfOptions' <- sanitizefGHCconfOptions defGHCConfOptions
 | 
				
			||||||
           , _rPlatform `elem` [Linux Alpine, Darwin]
 | 
					 | 
				
			||||||
           = ["--disable-ld-override"]
 | 
					 | 
				
			||||||
           | otherwise
 | 
					 | 
				
			||||||
           = []
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      lift $ logInfo "Installing GHC (this may take a while)"
 | 
					      lift $ logInfo "Installing GHC (this may take a while)"
 | 
				
			||||||
      env <- case _rPlatform of
 | 
					 | 
				
			||||||
               -- https://github.com/haskell/ghcup-hs/issues/967
 | 
					 | 
				
			||||||
               Linux Alpine
 | 
					 | 
				
			||||||
                 -- lets not touch LD for cross targets
 | 
					 | 
				
			||||||
                 | Nothing <- _tvTarget tver -> do
 | 
					 | 
				
			||||||
                     cEnv <- liftIO getEnvironment
 | 
					 | 
				
			||||||
                     spaths <- liftIO getSearchPath
 | 
					 | 
				
			||||||
                     has_ld_bfd <- isJust <$> liftIO (searchPath spaths "ld.bfd")
 | 
					 | 
				
			||||||
                     let ldSet = isJust $ lookup "LD" cEnv
 | 
					 | 
				
			||||||
                     -- only set LD if ld.bfd exists in PATH and LD is not set
 | 
					 | 
				
			||||||
                     -- already
 | 
					 | 
				
			||||||
                     if has_ld_bfd && not ldSet
 | 
					 | 
				
			||||||
                     then do
 | 
					 | 
				
			||||||
                       lift $ logInfo "Detected alpine linux... setting LD=ld.bfd"
 | 
					 | 
				
			||||||
                       pure $ Just (("LD", "ld.bfd") : cEnv)
 | 
					 | 
				
			||||||
                     else pure Nothing
 | 
					 | 
				
			||||||
               _ -> pure Nothing
 | 
					 | 
				
			||||||
      lEM $ execLogged "sh"
 | 
					      lEM $ execLogged "sh"
 | 
				
			||||||
                       ("./configure" : ("--prefix=" <> fromInstallDir inst)
 | 
					                       ("./configure" : ("--prefix=" <> fromInstallDir inst)
 | 
				
			||||||
                        : (maybe mempty (\x -> ["--target=" <> T.unpack x]) (_tvTarget tver) <> ldOverride <> (T.unpack <$> addConfArgs))
 | 
					                        : (maybe mempty (\x -> ["--target=" <> T.unpack x]) (_tvTarget tver)
 | 
				
			||||||
 | 
					                          <> ldOverride (_tvVersion tver)
 | 
				
			||||||
 | 
					                          <> defGHCConfOptions'
 | 
				
			||||||
 | 
					                          <> addConfArgs')
 | 
				
			||||||
                       )
 | 
					                       )
 | 
				
			||||||
                       (Just $ fromGHCupPath path)
 | 
					                       (Just $ fromGHCupPath path)
 | 
				
			||||||
                       "ghc-configure"
 | 
					                       "ghc-configure"
 | 
				
			||||||
                       env
 | 
					                       Nothing
 | 
				
			||||||
      tmpInstallDest <- lift withGHCupTmpDir
 | 
					      tmpInstallDest <- lift withGHCupTmpDir
 | 
				
			||||||
      lEM $ make ["DESTDIR=" <> fromGHCupPath tmpInstallDest, "install"] (Just $ fromGHCupPath path)
 | 
					      lEM $ make ["DESTDIR=" <> fromGHCupPath tmpInstallDest, "install"] (Just $ fromGHCupPath path)
 | 
				
			||||||
      liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform (fromGHCupPath tmpInstallDest)
 | 
					      liftE $ catchWarn $ lEM @_ @'[ProcessError] $ darwinNotarization _rPlatform (fromGHCupPath tmpInstallDest)
 | 
				
			||||||
@ -479,6 +462,7 @@ installUnpackedGHC path inst tver forceInstall addConfArgs
 | 
				
			|||||||
      pure ()
 | 
					      pure ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mergeGHCFileTree :: ( MonadReader env m
 | 
					mergeGHCFileTree :: ( MonadReader env m
 | 
				
			||||||
                    , HasPlatformReq env
 | 
					                    , HasPlatformReq env
 | 
				
			||||||
                    , HasDirs env
 | 
					                    , HasDirs env
 | 
				
			||||||
@ -1313,6 +1297,8 @@ compileGHC targetGhc crossTarget vps bstrap jobs mbuildConfig patches aargs buil
 | 
				
			|||||||
                (_tvTarget tver)
 | 
					                (_tvTarget tver)
 | 
				
			||||||
      ++ ["--prefix=" <> ghcdir]
 | 
					      ++ ["--prefix=" <> ghcdir]
 | 
				
			||||||
      ++ (if isWindows then ["--enable-tarballs-autodownload"] else [])
 | 
					      ++ (if isWindows then ["--enable-tarballs-autodownload"] else [])
 | 
				
			||||||
 | 
					      -- https://github.com/haskell/ghcup-hs/issues/1032
 | 
				
			||||||
 | 
					      ++ ldOverride (_tvVersion tver)
 | 
				
			||||||
      ++ fmap T.unpack aargs
 | 
					      ++ fmap T.unpack aargs
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
      (Just workdir)
 | 
					      (Just workdir)
 | 
				
			||||||
@ -1387,3 +1373,16 @@ postGHCInstall ver@GHCTargetVersion {..} = do
 | 
				
			|||||||
  forM_ v' $ \(mj, mi) -> lift (getGHCForPVP (PVP (fromIntegral mj :| [fromIntegral mi])) _tvTarget)
 | 
					  forM_ v' $ \(mj, mi) -> lift (getGHCForPVP (PVP (fromIntegral mj :| [fromIntegral mi])) _tvTarget)
 | 
				
			||||||
    >>= mapM_ (\v -> liftE $ setGHC v SetGHC_XY Nothing)
 | 
					    >>= mapM_ (\v -> liftE $ setGHC v SetGHC_XY Nothing)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ldOverride ::  Version -> [String]
 | 
				
			||||||
 | 
					ldOverride ver
 | 
				
			||||||
 | 
					  | ver >= [vver|8.2.2|]
 | 
				
			||||||
 | 
					  = ["--disable-ld-override"]
 | 
				
			||||||
 | 
					  | otherwise
 | 
				
			||||||
 | 
					  = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sanitizefGHCconfOptions :: MonadFail m => [String] -> m [String]
 | 
				
			||||||
 | 
					sanitizefGHCconfOptions args
 | 
				
			||||||
 | 
					  | "--prefix" `elem` fmap (takeWhile (/= '=')) args = fail "Don't explicitly set --prefix ...aborting"
 | 
				
			||||||
 | 
					  | otherwise = pure args
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -379,24 +379,25 @@ data MetaMode = Strict
 | 
				
			|||||||
instance NFData MetaMode
 | 
					instance NFData MetaMode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
data UserSettings = UserSettings
 | 
					data UserSettings = UserSettings
 | 
				
			||||||
  { uCache       :: Maybe Bool
 | 
					  { uCache             :: Maybe Bool
 | 
				
			||||||
  , uMetaCache   :: Maybe Integer
 | 
					  , uMetaCache         :: Maybe Integer
 | 
				
			||||||
  , uMetaMode    :: Maybe MetaMode
 | 
					  , uMetaMode          :: Maybe MetaMode
 | 
				
			||||||
  , uNoVerify    :: Maybe Bool
 | 
					  , uNoVerify          :: Maybe Bool
 | 
				
			||||||
  , uVerbose     :: Maybe Bool
 | 
					  , uVerbose           :: Maybe Bool
 | 
				
			||||||
  , uKeepDirs    :: Maybe KeepDirs
 | 
					  , uKeepDirs          :: Maybe KeepDirs
 | 
				
			||||||
  , uDownloader  :: Maybe Downloader
 | 
					  , uDownloader        :: Maybe Downloader
 | 
				
			||||||
  , uKeyBindings :: Maybe UserKeyBindings
 | 
					  , uKeyBindings       :: Maybe UserKeyBindings
 | 
				
			||||||
  , uUrlSource   :: Maybe URLSource
 | 
					  , uUrlSource         :: Maybe URLSource
 | 
				
			||||||
  , uNoNetwork   :: Maybe Bool
 | 
					  , uNoNetwork         :: Maybe Bool
 | 
				
			||||||
  , uGPGSetting  :: Maybe GPGSetting
 | 
					  , uGPGSetting        :: Maybe GPGSetting
 | 
				
			||||||
  , uPlatformOverride :: Maybe PlatformRequest
 | 
					  , uPlatformOverride  :: Maybe PlatformRequest
 | 
				
			||||||
  , uMirrors     :: Maybe DownloadMirrors
 | 
					  , uMirrors           :: Maybe DownloadMirrors
 | 
				
			||||||
 | 
					  , uDefGHCConfOptions :: Maybe [String]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  deriving (Show, GHC.Generic, Eq)
 | 
					  deriving (Show, GHC.Generic, Eq)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
defaultUserSettings :: UserSettings
 | 
					defaultUserSettings :: UserSettings
 | 
				
			||||||
defaultUserSettings = UserSettings Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
 | 
					defaultUserSettings = UserSettings Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fromSettings :: Settings -> Maybe KeyBindings -> UserSettings
 | 
					fromSettings :: Settings -> Maybe KeyBindings -> UserSettings
 | 
				
			||||||
fromSettings Settings{..} Nothing =
 | 
					fromSettings Settings{..} Nothing =
 | 
				
			||||||
@ -414,6 +415,7 @@ fromSettings Settings{..} Nothing =
 | 
				
			|||||||
    , uGPGSetting = Just gpgSetting
 | 
					    , uGPGSetting = Just gpgSetting
 | 
				
			||||||
    , uPlatformOverride = platformOverride
 | 
					    , uPlatformOverride = platformOverride
 | 
				
			||||||
    , uMirrors = Just mirrors
 | 
					    , uMirrors = Just mirrors
 | 
				
			||||||
 | 
					    , uDefGHCConfOptions = Just defGHCConfOptions
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
fromSettings Settings{..} (Just KeyBindings{..}) =
 | 
					fromSettings Settings{..} (Just KeyBindings{..}) =
 | 
				
			||||||
  let ukb = UserKeyBindings
 | 
					  let ukb = UserKeyBindings
 | 
				
			||||||
@ -440,6 +442,7 @@ fromSettings Settings{..} (Just KeyBindings{..}) =
 | 
				
			|||||||
    , uGPGSetting = Just gpgSetting
 | 
					    , uGPGSetting = Just gpgSetting
 | 
				
			||||||
    , uPlatformOverride = platformOverride
 | 
					    , uPlatformOverride = platformOverride
 | 
				
			||||||
    , uMirrors = Just mirrors
 | 
					    , uMirrors = Just mirrors
 | 
				
			||||||
 | 
					    , uDefGHCConfOptions = Just defGHCConfOptions
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
data UserKeyBindings = UserKeyBindings
 | 
					data UserKeyBindings = UserKeyBindings
 | 
				
			||||||
@ -512,19 +515,20 @@ instance NFData LeanAppState
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
data Settings = Settings
 | 
					data Settings = Settings
 | 
				
			||||||
  { cache            :: Bool
 | 
					  { cache             :: Bool
 | 
				
			||||||
  , metaCache        :: Integer
 | 
					  , metaCache         :: Integer
 | 
				
			||||||
  , metaMode         :: MetaMode
 | 
					  , metaMode          :: MetaMode
 | 
				
			||||||
  , noVerify         :: Bool
 | 
					  , noVerify          :: Bool
 | 
				
			||||||
  , keepDirs         :: KeepDirs
 | 
					  , keepDirs          :: KeepDirs
 | 
				
			||||||
  , downloader       :: Downloader
 | 
					  , downloader        :: Downloader
 | 
				
			||||||
  , verbose          :: Bool
 | 
					  , verbose           :: Bool
 | 
				
			||||||
  , urlSource        :: URLSource
 | 
					  , urlSource         :: URLSource
 | 
				
			||||||
  , noNetwork        :: Bool
 | 
					  , noNetwork         :: Bool
 | 
				
			||||||
  , gpgSetting       :: GPGSetting
 | 
					  , gpgSetting        :: GPGSetting
 | 
				
			||||||
  , noColor          :: Bool -- this also exists in LoggerConfig
 | 
					  , noColor           :: Bool -- this also exists in LoggerConfig
 | 
				
			||||||
  , platformOverride :: Maybe PlatformRequest
 | 
					  , platformOverride  :: Maybe PlatformRequest
 | 
				
			||||||
  , mirrors          :: DownloadMirrors
 | 
					  , mirrors           :: DownloadMirrors
 | 
				
			||||||
 | 
					  , defGHCConfOptions :: [String]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  deriving (Show, GHC.Generic)
 | 
					  deriving (Show, GHC.Generic)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -532,7 +536,7 @@ defaultMetaCache :: Integer
 | 
				
			|||||||
defaultMetaCache = 300 -- 5 minutes
 | 
					defaultMetaCache = 300 -- 5 minutes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
defaultSettings :: Settings
 | 
					defaultSettings :: Settings
 | 
				
			||||||
defaultSettings = Settings False defaultMetaCache Lax False Never Curl False GHCupURL False GPGNone False Nothing (DM mempty)
 | 
					defaultSettings = Settings False defaultMetaCache Lax False Never Curl False GHCupURL False GPGNone False Nothing (DM mempty) []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
instance NFData Settings
 | 
					instance NFData Settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user