1
1
mirror of https://github.com/nmattia/snack.git synced 2024-10-26 12:38:49 +03:00

Merge pull request #101 from nmattia/nm-max-jobs

Fix concurrency
This commit is contained in:
Nicolas Mattia 2019-01-22 22:06:06 +01:00 committed by GitHub
commit 88f6a41029
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 69 additions and 58 deletions

View File

@ -24,6 +24,7 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
`./package.nix`.
- The flag `-s` is used to specify a `snack.nix`. By default `./snack.nix` is
used.
- The `--cores` was replaced with `--jobs`
### Fixed
- The module import parsing when the CPP extension is enabled.

View File

@ -82,7 +82,7 @@ The _snack_ executable is now in your `PATH`:
``` shell
$ snack --help
Usage: <interactive> [-l|--lib DIR] ([-s|--snack-nix PATH] | [--no-snack-nix])
[-j|--cores INT] [-p|--package-file PATH] (COMMAND |
[-j|--jobs INT] [-p|--package-file PATH] (COMMAND |
COMMAND)
Available options:
@ -94,7 +94,7 @@ Available options:
(Use --no-snack-nix to disable this behavior)
--no-snack-nix Don't use ./snack.nix as the environment (snack.nix)
file.
-j,--cores INT How many cores to use during the build
-j,--jobs INT How many jobs to run concurrently
-p,--package-file PATH Specifies a YAML or Nix file to use as package
description. If not provided, snack looks for either
'package.yaml' or 'package.nix' in the current

View File

@ -171,18 +171,28 @@ discoverPackageFile = do
-- | How to call @nix-build@
newtype NixConfig = NixConfig
{ nixNCores :: Int }
{ nixNJobs :: NJobs }
data NJobs = NJobs Int | NJobsAuto
nJobsValue :: NJobs -> String
nJobsValue = \case
NJobs n -> show n
NJobsAuto -> "auto"
parseNixConfig :: Opts.Parser NixConfig
parseNixConfig =
(NixConfig <$>
Opts.option Opts.auto
(Opts.long "cores"
NixConfig <$>
(
(NJobs <$> Opts.option Opts.auto
(Opts.long "jobs"
<> Opts.short 'j'
<> Opts.value 1
<> Opts.metavar "INT"
<> Opts.help "How many cores to use during the build")
)
<> Opts.help "How many jobs to run concurrently (default: number of available cores)")
) <|>
pure NJobsAuto
)
--- Snack configuration (unrelated to packages)
@ -390,8 +400,8 @@ nixBuild snackCfg extraNixArgs nixExpr =
cliArgs =
[ "-" -- read expression from stdin
, "--no-out-link" -- no need for roots
-- how many cores to use (-j)
, "--cores", T.pack (show (nixNCores nixCfg))
-- how many jobs to run concurrently (-j)
, "--max-jobs", T.pack (nJobsValue (nixNJobs nixCfg))
] <> (concatMap toCliArgs nixArgs)
funArgs :: [String]
funArgs = toFunArg <$> nixArgs

View File

@ -8,6 +8,6 @@ test() {
$SNACK run
}
SNACK="snack -j4 --package-file ./package.nix" test
SNACK="snack -j4 --package-file ./package.nix -l ../../snack-lib" test
SNACK="snack -j4 --package-file ./package.yaml" test
SNACK="snack --package-file ./package.nix" test
SNACK="snack --package-file ./package.nix -l ../../snack-lib" test
SNACK="snack --package-file ./package.yaml" test

View File

@ -15,4 +15,4 @@ test() {
rm $TMP_FILE
}
SNACK="snack -j4" test
SNACK="snack" test

View File

@ -15,4 +15,4 @@ test() {
rm $TMP_FILE
}
SNACK="snack -j4" test
SNACK="snack" test

View File

@ -16,5 +16,5 @@ test() {
rm $TMP_FILE
}
SNACK="snack -j4 --snack-nix snack.nix --package-file package.yaml" test
SNACK="snack -j4" test
SNACK="snack --snack-nix snack.nix --package-file package.yaml" test
SNACK="snack" test

View File

@ -15,6 +15,6 @@ test() {
rm $TMP_FILE
}
SNACK="snack -j4 --package-file ./package.nix" test
SNACK="snack -j4 --package-file ./package.nix -l ../../snack-lib" test
SNACK="snack -j4 --package-file ./package.yaml" test
SNACK="snack --package-file ./package.nix" test
SNACK="snack --package-file ./package.nix -l ../../snack-lib" test
SNACK="snack --package-file ./package.yaml" test

View File

@ -9,7 +9,7 @@ git clone http://github.com/nmattia/pboy.git $TMP_DIR
git -C $TMP_DIR reset --hard a2458d6984930a33a3b1972cb6d5c167d2511b06
pushd $TMP_DIR
snack -j4 build
snack build
popd
rm -rf $TMP_DIR

View File

@ -15,7 +15,7 @@ test() {
rm $TMP_FILE
}
SNACK="snack -j4" test
SNACK="snack -j4 --package-file ./package.nix" test
SNACK="snack -j4 --package-file ./package.nix -l ../../snack-lib" test
SNACK="snack" test
SNACK="snack --package-file ./package.nix" test
SNACK="snack --package-file ./package.nix -l ../../snack-lib" test
# Note: no HPack test, because HPack doesn't support multi library

View File

@ -17,5 +17,5 @@ test() {
SNACK="snack" test
SNACK="snack --package-file ./package.nix" test
SNACK="snack -j4 --package-file ./package.nix -l ../../snack-lib" test
SNACK="snack --package-file ./package.nix -l ../../snack-lib" test
# Note: no HPack test, because HPack doesn't support multi library

View File

@ -15,5 +15,5 @@ test() {
rm $TMP_FILE
}
SNACK="snack -j4 --package-file ./package.nix" test
SNACK="snack -j4 --package-file ./package.yaml" test
SNACK="snack --package-file ./package.nix" test
SNACK="snack --package-file ./package.yaml" test

View File

@ -15,5 +15,5 @@ test() {
rm $TMP_FILE
}
SNACK="snack -j4 --package-file ./package.nix" test
SNACK="snack -j4 --package-file ./package.yaml" test
SNACK="snack --package-file ./package.nix" test
SNACK="snack --package-file ./package.yaml" test

View File

@ -16,5 +16,5 @@ test() {
rm $TMP_FILE
}
SNACK="snack -j4 --package-file ./package.nix" test
SNACK="snack -j4 --package-file ./package.yaml" test
SNACK="snack --package-file ./package.nix" test
SNACK="snack --package-file ./package.yaml" test

View File

@ -16,5 +16,5 @@ test() {
rm $TMP_FILE
}
SNACK="snack -j4 --package-file ./package.nix" test
SNACK="snack -j4 --package-file ./package.yaml" test
SNACK="snack --package-file ./package.nix" test
SNACK="snack --package-file ./package.yaml" test

View File

@ -8,6 +8,6 @@ test() {
$SNACK run
}
SNACK="snack -j4 --package-file ./package.nix" test
SNACK="snack -j4 --package-file ./package.nix -l ../../snack-lib" test
SNACK="snack -j4 --package-file ./package.yaml" test
SNACK="snack --package-file ./package.nix" test
SNACK="snack --package-file ./package.nix -l ../../snack-lib" test
SNACK="snack --package-file ./package.yaml" test

View File

@ -8,4 +8,4 @@ test() {
$SNACK run -- hello 'this is' 'the answer' bye | diff golden -
}
SNACK="snack -j4" test
SNACK="snack" test

View File

@ -8,4 +8,4 @@ test() {
$SNACK run
}
SNACK="snack -j4" test
SNACK="snack" test

View File

@ -16,5 +16,5 @@ test() {
}
SNACK="snack -j4 -p ./package.nix" test
SNACK="snack -j4 -p ./package.yaml" test
SNACK="snack -p ./package.nix" test
SNACK="snack -p ./package.yaml" test

View File

@ -15,5 +15,5 @@ test() {
rm $TMP_FILE
}
SNACK="snack -j4 --package-file ./package.nix" test
SNACK="snack -j4 --package-file ./package.yaml" test
SNACK="snack --package-file ./package.nix" test
SNACK="snack --package-file ./package.yaml" test

View File

@ -11,4 +11,4 @@ test() {
diff golden.jq $TMP_FILE
}
SNACK="snack -j4" test
SNACK="snack" test

View File

@ -3,12 +3,12 @@
set -euo pipefail
snack -j4 build --package-file code/package.nix
snack -j4 run --package-file code/package.nix | diff golden -
snack build --package-file code/package.nix
snack run --package-file code/package.nix | diff golden -
TMP_FILE=$(mktemp)
capture_io "$TMP_FILE" main | snack -j4 --package-file code/package.nix ghci
capture_io "$TMP_FILE" main | snack --package-file code/package.nix ghci
diff golden $TMP_FILE
rm $TMP_FILE

View File

@ -3,12 +3,12 @@
set -euo pipefail
snack -j4 build
snack -j4 run | diff golden -
snack build
snack run | diff golden -
TMP_FILE=$(mktemp)
capture_io "$TMP_FILE" main | snack -j4 ghci
capture_io "$TMP_FILE" main | snack ghci
diff golden $TMP_FILE
rm $TMP_FILE

View File

@ -3,12 +3,12 @@
set -euo pipefail
snack -j4 build
snack -j4 run | diff golden -
snack build
snack run | diff golden -
TMP_FILE=$(mktemp)
capture_io "$TMP_FILE" main | snack -j4 ghci
capture_io "$TMP_FILE" main | snack ghci
diff golden $TMP_FILE
rm $TMP_FILE

View File

@ -3,12 +3,12 @@
set -euo pipefail
snack -j4 build
snack -j4 run | diff golden -
snack build
snack run | diff golden -
TMP_FILE=$(mktemp)
capture_io "$TMP_FILE" main | snack -j4 ghci
capture_io "$TMP_FILE" main | snack ghci
diff golden $TMP_FILE
rm $TMP_FILE

View File

@ -15,6 +15,6 @@ test() {
rm $TMP_FILE
}
SNACK="snack -j4" test
SNACK="snack -j4 --package-file ./package.nix" test
SNACK="snack" test
SNACK="snack --package-file ./package.nix" test
# Note: no HPack test, because HPack doesn't support multi library