@@ -76,6 +76,7 @@ main = shakeArgsWith
76
76
gTestHaddocks = True
77
77
gProjectRoot = " " -- Set to real value below.
78
78
gBuildArgs = [" --flag" , " stack:-developer-mode" ]
79
+ gStackArgs = []
79
80
gCertificateName = Nothing
80
81
global0 = foldl
81
82
(flip id )
@@ -90,6 +91,7 @@ main = shakeArgsWith
90
91
, gBinarySuffix
91
92
, gTestHaddocks
92
93
, gBuildArgs
94
+ , gStackArgs
93
95
, gCertificateName
94
96
}
95
97
flags
@@ -131,13 +133,22 @@ options =
131
133
g { gBuildArgs =
132
134
gBuildArgs g
133
135
++ [ " --flag=stack:static"
134
- , " --docker"
136
+ ]
137
+ , gStackArgs =
138
+ gStackArgs g
139
+ ++ [ " --docker"
135
140
, " --system-ghc"
136
141
, " --no-install-ghc"
137
142
]
138
143
}
139
144
)
140
- " Build a statically linked binary using an Alpine Docker image."
145
+ " Build a statically-linked binary using an Alpine Linux Docker image."
146
+ , Option " " [stackArgsOptName]
147
+ ( ReqArg
148
+ (\ v -> Right $ \ g -> g{gStackArgs = gStackArgs g ++ words v})
149
+ " \" ARG1 ARG2 ...\" "
150
+ )
151
+ " Additional arguments to pass to 'stack'."
141
152
, Option " " [buildArgsOptName]
142
153
( ReqArg
143
154
(\ v -> Right $ \ g -> g{gBuildArgs = gBuildArgs g ++ words v})
@@ -234,7 +245,13 @@ rules global args = do
234
245
releaseDir </> binaryExeFileName %> \ out -> do
235
246
need [releaseBinDir </> binaryName </> stackExeFileName]
236
247
(Stdout versionOut) <-
237
- cmd (releaseBinDir </> binaryName </> stackExeFileName) " --version"
248
+ cmd
249
+ stackProgName -- Use the platform's Stack
250
+ global. gStackArgs -- Possibly to set up a Docker container
251
+ [" exec" ] -- To execute the target Stack and get its version info
252
+ (releaseBinDir </> binaryName </> stackExeFileName)
253
+ [" --" ]
254
+ [" --version" ]
238
255
when (not global. gAllowDirty && " dirty" `isInfixOf` lower versionOut) $
239
256
error
240
257
( " Refusing continue because 'stack --version' reports dirty. Use --"
@@ -295,10 +312,12 @@ rules global args = do
295
312
releaseBinDir </> binaryName </> stackExeFileName %> \ out -> do
296
313
alwaysRerun
297
314
actionOnException
298
- ( cmd stackProgName
315
+ ( cmd
316
+ stackProgName -- Use the platform's Stack
299
317
(stackArgs global)
300
318
[" --local-bin-path=" ++ takeDirectory out]
301
- " install"
319
+ global. gStackArgs -- Possibly to set up a Docker container
320
+ " install" -- To build and install Stack to that local bin path
302
321
global. gBuildArgs
303
322
integrationTestFlagArgs
304
323
" --pedantic"
@@ -438,6 +457,10 @@ binaryVariantOptName = "binary-variant"
438
457
noTestHaddocksOptName :: String
439
458
noTestHaddocksOptName = " no-test-haddocks"
440
459
460
+ -- | @--stack-args@ command-line option name.
461
+ stackArgsOptName :: String
462
+ stackArgsOptName = " stack-args"
463
+
441
464
-- | @--build-args@ command-line option name.
442
465
buildArgsOptName :: String
443
466
buildArgsOptName = " build-args"
@@ -472,6 +495,7 @@ data Global = Global
472
495
, gBinarySuffix :: ! String
473
496
, gTestHaddocks :: ! Bool
474
497
, gBuildArgs :: [String ]
498
+ , gStackArgs :: [String ]
475
499
, gCertificateName :: ! (Maybe String )
476
500
}
477
501
deriving Show
0 commit comments