Compare commits

...

14 Commits

17 changed files with 170 additions and 71 deletions

View File

@@ -1,28 +0,0 @@
freebsd_instance:
image_family: freebsd-13-2
build_task:
name: build
env:
GHC_VER: 9.4.8
CABAL_VER: 3.10.2.0
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
ARCH: 64
RUNNER_OS: FreeBSD
DISTRO: na
GITHUB_WORKSPACE: ${CIRRUS_WORKING_DIR}
JSON_VERSION: "0.0.7"
CIRRUS_CLONE_SUBMODULES: true
AWS_ACCESS_KEY_ID: ENCRYPTED[6ed6287e2dd78ab5f84b22232c5245834ab042bd8ba443883aaf4b4d1ecc0481add1fdfad5ae6f6a8cfb418e6f19b2fc]
AWS_SECRET_ACCESS_KEY: ENCRYPTED[16f3cda2954c7cee99444e6788eb5997382aa4ce1477e7523fef2586077541f43b5c816156961fc6b4677259679875a7]
S3_HOST: ENCRYPTED[ce961780a33159f7d1d8046956b5ac6ebc3bfc8149428e5f538576cda51d9f3d0c35b79cdd1e325793639ff6e31f889d]
install_script:
- sed -i.bak -e 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
- pkg install -y ghc hs-cabal-install git bash misc/compat10x misc/compat11x misc/compat12x gmake llvm14
script:
- tzsetup Etc/GMT
- adjkerntz -a
- bash .github/scripts/build.sh
- bash .github/scripts/test.sh
binaries_artifacts:
path: "out/*"

View File

@@ -9,6 +9,10 @@ fi
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
export TZ=Asia/Singapore export TZ=Asia/Singapore
if [ "${RUNNER_OS}" = "freebsd" ] ; then
export RUNNER_OS=FreeBSD
fi
export OS="$RUNNER_OS" export OS="$RUNNER_OS"
export PATH="$HOME/.local/bin:$PATH" export PATH="$HOME/.local/bin:$PATH"

View File

@@ -19,7 +19,7 @@ env:
jobs: jobs:
build: build:
name: Build linux binary name: Build linux binary
runs-on: ubuntu-latest runs-on: [self-hosted, Linux, X64, maerwald]
env: env:
CABAL_VER: 3.10.1.0 CABAL_VER: 3.10.1.0
JSON_VERSION: "0.0.7" JSON_VERSION: "0.0.7"

View File

@@ -57,6 +57,7 @@ jobs:
steps: steps:
- uses: docker://arm64v8/ubuntu:focal - uses: docker://arm64v8/ubuntu:focal
name: Cleanup (aarch64 linux) name: Cleanup (aarch64 linux)
continue-on-error: true
with: with:
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +" args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
@@ -93,6 +94,7 @@ jobs:
steps: steps:
- uses: docker://arm64v8/ubuntu:focal - uses: docker://arm64v8/ubuntu:focal
name: Cleanup (aarch64 linux) name: Cleanup (aarch64 linux)
continue-on-error: true
with: with:
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +" args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"

View File

@@ -94,20 +94,15 @@ jobs:
fail-fast: true fail-fast: true
matrix: matrix:
include: include:
- os: [self-hosted, Linux, ARM64] - os: [self-hosted, Linux, ARM64, maerwald]
ARTIFACT: "armv7-linux-ghcup" ARTIFACT: "armv7-linux-ghcup"
GHC_VER: 9.2.8 GHC_VER: 9.2.8
ARCH: ARM ARCH: ARM
- os: [self-hosted, Linux, ARM64] - os: [self-hosted, Linux, ARM64, maerwald]
ARTIFACT: "aarch64-linux-ghcup" ARTIFACT: "aarch64-linux-ghcup"
GHC_VER: 9.4.8 GHC_VER: 9.4.8
ARCH: ARM64 ARCH: ARM64
steps: steps:
- uses: docker://arm64v8/debian:10
name: Cleanup (aarch64 linux)
with:
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
- name: git config - name: git config
run: | run: |
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*" git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
@@ -246,6 +241,42 @@ jobs:
path: | path: |
./out/* ./out/*
build-freebsd:
name: Build binary (FreeBSD)
runs-on: [self-hosted, FreeBSD, X64]
env:
CABAL_VER: 3.10.2.0
MACOSX_DEPLOYMENT_TARGET: 10.13
JSON_VERSION: "0.0.8"
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
S3_HOST: ${{ secrets.S3_HOST }}
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
GHC_VER: 9.4.8
ARCH: 64
DISTRO: na
RUNNER_OS: FreeBSD
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: 'true'
- name: Run build
run: |
sed -i.bak -e 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
pkg install -y ghc hs-cabal-install git bash misc/compat10x misc/compat11x misc/compat12x gmake llvm14 libiconv
tzsetup Etc/GMT
adjkerntz -a
bash .github/scripts/build.sh
- if: always()
name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: artifacts
path: |
./out/*
test-linux: test-linux:
name: Test linux name: Test linux
needs: "build-linux" needs: "build-linux"
@@ -334,23 +365,18 @@ jobs:
strategy: strategy:
matrix: matrix:
include: include:
- os: [self-hosted, Linux, ARM64] - os: [self-hosted, Linux, ARM64, maerwald]
ARTIFACT: "armv7-linux-ghcup" ARTIFACT: "armv7-linux-ghcup"
GHC_VER: 9.2.8 GHC_VER: 9.2.8
ARCH: ARM ARCH: ARM
DISTRO: Ubuntu DISTRO: Ubuntu
- os: [self-hosted, Linux, ARM64] - os: [self-hosted, Linux, ARM64, maerwald]
ARTIFACT: "aarch64-linux-ghcup" ARTIFACT: "aarch64-linux-ghcup"
GHC_VER: 9.4.8 GHC_VER: 9.4.8
ARCH: ARM64 ARCH: ARM64
DISTRO: Ubuntu DISTRO: Ubuntu
steps: steps:
- uses: docker://arm64v8/debian:10
name: Cleanup (aarch64 linux)
with:
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
@@ -467,6 +493,41 @@ jobs:
name: testfiles name: testfiles
path: | path: |
./test/ghcup-test/golden/unix/GHCupInfo*json ./test/ghcup-test/golden/unix/GHCupInfo*json
test-freebsd:
name: Test FreeBSD
needs: "build-freebsd"
runs-on: [self-hosted, FreeBSD, X64]
env:
CABAL_VER: 3.10.2.0
MACOSX_DEPLOYMENT_TARGET: 10.13
JSON_VERSION: "0.0.8"
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
GHC_VER: 9.4.8
ARCH: 64
DISTRO: na
RUNNER_OS: FreeBSD
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: 'true'
- uses: actions/download-artifact@v3
with:
name: artifacts
path: ./out
- name: Run test
run: |
bash .github/scripts/test.sh
- if: failure()
name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: testfiles
path: |
./test/ghcup-test/golden/unix/GHCupInfo*json
hls: hls:
name: hls name: hls
needs: build-linux needs: build-linux
@@ -500,7 +561,7 @@ jobs:
release: release:
name: release name: release
needs: ["test-linux", "test-arm", "test-macwin", "hls"] needs: ["test-linux", "test-arm", "test-macwin", "test-freebsd", "hls"]
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v') if: startsWith(github.ref, 'refs/tags/v')
steps: steps:

View File

@@ -11,6 +11,7 @@
{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE BangPatterns #-} {-# LANGUAGE BangPatterns #-}
{-# LANGUAGE ViewPatterns #-}
module BrickMain where module BrickMain where
@@ -202,34 +203,35 @@ handleGenericListEvent (VtyEvent ev) = do
handleGenericListEvent _ = pure () handleGenericListEvent _ = pure ()
-- This re-uses Brick.Widget.List.renderList -- This re-uses Brick.Widget.List.renderList
renderSectionList :: (Traversable t, Ord n, Show n, Eq n, L.Splittable t) renderSectionList :: forall n t e . (Traversable t, Ord n, Show n, Eq n, L.Splittable t, Semigroup (t e))
=> (Bool -> e -> Widget n) -- ^ Rendering function of the list element, True for the selected element => (Bool -> e -> Widget n) -- ^ Rendering function of the list element, True for the selected element
-> Bool -- ^ Whether the section list has focus -> Bool -- ^ Whether the section list has focus
-> GenericSectionList n t e -- ^ The section list to render -> GenericSectionList n t e -- ^ The section list to render
-> Widget n -> Widget n
renderSectionList render_elem section_focus (GenericSectionList focus elms sl_name) = renderSectionList renderElem sectionFocus ge@(GenericSectionList focus elms slName) =
Brick.Widget Brick.Greedy Brick.Greedy $ do Brick.Widget Brick.Greedy Brick.Greedy $ Brick.render $ Brick.viewport slName Brick.Vertical $
c <- Brick.getContext V.ifoldl' (\(!accWidget) !i list ->
let -- A section is focused if the whole thing is focused, and the inner list has focus let hasFocusList = sectionIsFocused list
section_is_focused l = section_focus && (Just (L.listName l) == F.focusGetCurrent focus) makeVisible = if hasFocusList then Brick.visibleRegion (Brick.Location (c, r)) (1, 1) else id
-- We need to limit the widget size when the length of the list is higher than the size of the terminal appendBorder = if i == 0 then id else (hBorder <=>)
limit = min (Brick.windowHeight c) (Brick.availHeight c) newWidget = appendBorder (makeVisible $ renderInnerList hasFocusList list)
s_idx = fromMaybe 0 $ V.findIndex section_is_focused elms in accWidget <=> newWidget
render_inner_list has_focus l = Brick.vLimit (length l) $ L.renderList (\b -> render_elem (b && has_focus)) has_focus l )
(widget, off) = Brick.emptyWidget
V.ifoldl' (\wacc i list -> elms
let has_focus_list = section_is_focused list where
(!acc_widget, !acc_off) = wacc -- A section is focused if the whole thing is focused, and the inner list has focus
new_widget = if i == 0 then render_inner_list has_focus_list list else hBorder <=> render_inner_list has_focus_list list sectionIsFocused :: L.GenericList n t e -> Bool
new_off sectionIsFocused l = sectionFocus && (Just (L.listName l) == F.focusGetCurrent focus)
| i < s_idx = 1 + L.listItemHeight list * length list
| i == s_idx = 1 + L.listItemHeight list * fromMaybe 0 (L.listSelected list) renderInnerList :: Bool -> L.GenericList n t e -> Widget n
| otherwise = 0 renderInnerList hasFocus l = Brick.vLimit (length l) $ L.renderList (\b -> renderElem (b && hasFocus)) hasFocus l
in (acc_widget <=> new_widget, acc_off + new_off)
) -- compute the location to focus on within the active section
(Brick.emptyWidget, 0) (c, r) :: (Int, Int) = case sectionListSelectedElement ge of
elms Nothing -> (0, 0)
Brick.render $ Brick.viewport sl_name Brick.Vertical $ Brick.translateBy (Brick.Location (0, min 0 (limit-off))) widget Just (selElIx, _) -> (0, selElIx)
-- | Equivalent to listSelectedElement -- | Equivalent to listSelectedElement
sectionListSelectedElement :: (Eq n, L.Splittable t, Traversable t, Semigroup (t e)) => GenericSectionList n t e -> Maybe (Int, e) sectionListSelectedElement :: (Eq n, L.Splittable t, Traversable t, Semigroup (t e)) => GenericSectionList n t e -> Maybe (Int, e)

View File

@@ -12,6 +12,10 @@ else
constraints: http-io-streams -brotli, constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0 any.aeson >= 2.0.1.0
if os(mingw32)
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package source-repository-package
type: git type: git
location: https://github.com/haskell/tar.git location: https://github.com/haskell/tar.git
@@ -22,6 +26,11 @@ source-repository-package
location: https://github.com/hasufell/uri-bytestring.git location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001 tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
source-repository-package
type: git
location: https://github.com/hasufell/versions.git
tag: 79e18fbc44fae3064d8957c550cc0229465db320
package libarchive package libarchive
flags: -system-libarchive flags: -system-libarchive

View File

@@ -85,6 +85,7 @@ constraints: any.Cabal ==3.6.3.0,
any.dlist ==1.0, any.dlist ==1.0,
dlist -werror, dlist -werror,
any.exceptions ==0.10.4, any.exceptions ==0.10.4,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.2.1, any.filepath ==1.4.2.1,
any.foldable1-classes-compat ==0.1, any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged, foldable1-classes-compat +tagged,

View File

@@ -12,6 +12,10 @@ else
constraints: http-io-streams -brotli, constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0 any.aeson >= 2.0.1.0
if os(mingw32)
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package source-repository-package
type: git type: git
location: https://github.com/haskell/tar.git location: https://github.com/haskell/tar.git
@@ -22,6 +26,11 @@ source-repository-package
location: https://github.com/hasufell/uri-bytestring.git location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001 tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
source-repository-package
type: git
location: https://github.com/hasufell/versions.git
tag: 79e18fbc44fae3064d8957c550cc0229465db320
package libarchive package libarchive
flags: -system-libarchive flags: -system-libarchive

View File

@@ -90,6 +90,7 @@ constraints: any.Cabal ==3.6.3.0,
any.dlist ==1.0, any.dlist ==1.0,
dlist -werror, dlist -werror,
any.exceptions ==0.10.4, any.exceptions ==0.10.4,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.2.1, any.filepath ==1.4.2.1,
any.foldable1-classes-compat ==0.1, any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged, foldable1-classes-compat +tagged,

View File

@@ -12,6 +12,10 @@ else
constraints: http-io-streams -brotli, constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0 any.aeson >= 2.0.1.0
if os(mingw32)
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package source-repository-package
type: git type: git
location: https://github.com/haskell/tar.git location: https://github.com/haskell/tar.git
@@ -22,6 +26,11 @@ source-repository-package
location: https://github.com/hasufell/uri-bytestring.git location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001 tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
source-repository-package
type: git
location: https://github.com/hasufell/versions.git
tag: 79e18fbc44fae3064d8957c550cc0229465db320
package libarchive package libarchive
flags: -system-libarchive flags: -system-libarchive

View File

@@ -90,6 +90,7 @@ constraints: any.Cabal ==3.6.3.0,
any.dlist ==1.0, any.dlist ==1.0,
dlist -werror, dlist -werror,
any.exceptions ==0.10.4, any.exceptions ==0.10.4,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.2.2, any.filepath ==1.4.2.2,
any.foldable1-classes-compat ==0.1, any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged, foldable1-classes-compat +tagged,

View File

@@ -12,6 +12,10 @@ else
constraints: http-io-streams -brotli, constraints: http-io-streams -brotli,
any.aeson >= 2.0.1.0 any.aeson >= 2.0.1.0
if os(mingw32)
if impl(ghc >= 9.4)
constraints: language-c >= 0.9.3
source-repository-package source-repository-package
type: git type: git
location: https://github.com/haskell/tar.git location: https://github.com/haskell/tar.git
@@ -22,6 +26,11 @@ source-repository-package
location: https://github.com/hasufell/uri-bytestring.git location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001 tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
source-repository-package
type: git
location: https://github.com/hasufell/versions.git
tag: 79e18fbc44fae3064d8957c550cc0229465db320
package libarchive package libarchive
flags: -system-libarchive flags: -system-libarchive

View File

@@ -89,6 +89,7 @@ constraints: any.Cabal ==3.6.3.0 || ==3.8.1.0,
any.dlist ==1.0, any.dlist ==1.0,
dlist -werror, dlist -werror,
any.exceptions ==0.10.5, any.exceptions ==0.10.5,
any.file-uri ==0.1.0.0,
any.filepath ==1.4.2.2, any.filepath ==1.4.2.2,
any.foldable1-classes-compat ==0.1, any.foldable1-classes-compat ==0.1,
foldable1-classes-compat +tagged, foldable1-classes-compat +tagged,

View File

@@ -26,6 +26,11 @@ source-repository-package
location: https://github.com/hasufell/uri-bytestring.git location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001 tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
source-repository-package
type: git
location: https://github.com/hasufell/versions.git
tag: 79e18fbc44fae3064d8957c550cc0229465db320
package libarchive package libarchive
flags: -system-libarchive flags: -system-libarchive

View File

@@ -56,3 +56,10 @@ source-repository-package
location: https://github.com/hasufell/uri-bytestring.git location: https://github.com/hasufell/uri-bytestring.git
tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001 tag: 4fb5ed14b500c192e6e7a97f6b2b1eb478806001
source-repository-package
type: git
location: https://github.com/hasufell/versions.git
tag: 79e18fbc44fae3064d8957c550cc0229465db320
allow-newer: cabal-install-parsers:tar

View File

@@ -44,7 +44,9 @@ param (
# The Msys2 sha256sum hash # The Msys2 sha256sum hash
[string]$Msys2Hash, [string]$Msys2Hash,
# Whether to disable creation of several desktop shortcuts # Whether to disable creation of several desktop shortcuts
[switch]$DontWriteDesktopShortcuts [switch]$DontWriteDesktopShortcuts,
# Whether to disable adjusting bashrc (in msys2 env) with PATH
[switch]$DontAdjustBashRc
) )
$DefaultMsys2Version = "20221216" $DefaultMsys2Version = "20221216"
@@ -647,10 +649,14 @@ if ($DisableCurl) {
$DownloadScript = 'curl --proto ''=https'' --tlsv1.2 -sSf' $DownloadScript = 'curl --proto ''=https'' --tlsv1.2 -sSf'
} }
if (!($DontAdjustBashRc)) {
$AdjustBashRcExport = 'export BOOTSTRAP_HASKELL_ADJUST_BASHRC=1 ;'
}
if ((Get-Process -ID $PID).ProcessName.StartsWith("bootstrap-haskell") -Or $InBash) { if ((Get-Process -ID $PID).ProcessName.StartsWith("bootstrap-haskell") -Or $InBash) {
Exec "$Bash" '-lc' ('{4} {6} {7} {8} {9} {10} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript) Exec "$Bash" '-lc' ('{4} {6} {7} {8} {9} {10} {12} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript, $AdjustBashRcExport)
} else { } else {
Exec "$Msys2Shell" '-mingw64' '-mintty' '-shell' 'bash' '-c' ('{4} {6} {7} {8} {9} {10} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; trap ''echo Press any key to exit && read -n 1 && exit'' 2 ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash ; echo ''Press any key to exit'' && read -n 1' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript) Exec "$Msys2Shell" '-mingw64' '-mintty' '-shell' 'bash' '-c' ('{4} {6} {7} {8} {9} {10} {12} [ -n ''{1}'' ] && export GHCUP_MSYS2=$(cygpath -m ''{1}'') ; [ -n ''{2}'' ] && export GHCUP_INSTALL_BASE_PREFIX=$(cygpath -m ''{2}/'') ; export PATH=$(cygpath -u ''{3}/bin''):$PATH ; export CABAL_DIR=''{5}'' ; trap ''echo Press any key to exit && read -n 1 && exit'' 2 ; [[ ''{0}'' = https* ]] && {11} {0} | bash || cat $(cygpath -m ''{0}'') | bash ; echo ''Press any key to exit'' && read -n 1' -f $BootstrapUrl, $MsysDir, $GhcupBasePrefix, $GhcupDir, $SilentExport, $CabalDirFull, $StackInstallExport, $HLSInstallExport, $AdjustCabalConfigExport, $MinimalExport, $BootstrapDownloader, $DownloadScript, $AdjustBashRcExport)
} }