diff --git a/.circleci/config.yml b/.circleci/config.yml index e52d38d587e0..298162efa635 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -15,7 +15,9 @@ aliases: name: submodules command: .circleci/fetch-submodules.sh - &buildenv - THREADS: 9 + # ideally we would simply set THREADS here instead of re-detecting it every + # time we need it below. Unfortunately, there is no way to set an environment + # variable with the result of a shell script. SKIP_PERF_TESTS: YES VERBOSE: 2 - &boot @@ -50,19 +52,19 @@ aliases: - &make run: name: Build - command: "make -j$THREADS" + command: "make -j`mk/detect-cpu-count.sh`" - &build_hadrian run: name: Build GHC using Hadrian command: | cabal update - hadrian/build.sh -j$THREADS + hadrian/build.sh -j`mk/detect-cpu-count.sh` - &test run: name: Test command: | mkdir -p test-results - make test SKIP_PERF_TESTS=YES JUNIT_FILE=../../test-results/junit.xml + make test THREADS=`mk/detect-cpu-count.sh` SKIP_PERF_TESTS=YES JUNIT_FILE=../../test-results/junit.xml - &store_test_results store_test_results: path: test-results diff --git a/mk/detect-cpu-count.sh b/mk/detect-cpu-count.sh new file mode 100755 index 000000000000..abc47387d16d --- /dev/null +++ b/mk/detect-cpu-count.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +detect_cpu_count () { + if [ "$CPUS" = "" ]; then + # Windows standard environment variable + CPUS="$NUMBER_OF_PROCESSORS" + fi + + if [ "$CPUS" = "" ]; then + # Linux + CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null` + fi + + if [ "$CPUS" = "" ]; then + # FreeBSD + CPUS=`getconf NPROCESSORS_ONLN 2>/dev/null` + fi + + if [ "$CPUS" = "" ]; then + # nothing helped + CPUS="1" + fi +} + +detect_cpu_count +echo "$CPUS" diff --git a/validate b/validate index 0332e5b1ec15..2f82b2800bc5 100755 --- a/validate +++ b/validate @@ -119,29 +119,7 @@ check_packages () { fi } -detect_cpu_count () { - if [ "$CPUS" = "" ]; then - # Windows standard environment variable - CPUS="$NUMBER_OF_PROCESSORS" - fi - - if [ "$CPUS" = "" ]; then - # Linux - CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null` - fi - - if [ "$CPUS" = "" ]; then - # FreeBSD - CPUS=`getconf NPROCESSORS_ONLN 2>/dev/null` - fi - - if [ "$CPUS" = "" ]; then - # nothing helped - CPUS="1" - fi -} - -detect_cpu_count +CPUS=`mk/detect-cpu-count.sh` if ! [ -d testsuite ] then