diff options
-rwxr-xr-x | bin/ptxdist | 21 | ||||
-rw-r--r-- | scripts/lib/ptxd_make_serialize.sh | 13 |
2 files changed, 26 insertions, 8 deletions
diff --git a/bin/ptxdist b/bin/ptxdist index f9e7d845d..224bbe2d8 100755 --- a/bin/ptxdist +++ b/bin/ptxdist @@ -1022,6 +1022,9 @@ Options: --debug, -d print out additional info (like make decisions) --quiet, -q suppress output, show only stderr --verbose, -v be more verbose, print command before execute them + --output-sync Improve output readability for parallel building. + Disabled by default except for quiet builds. + --no-output-sync Disable output-sync if enabled by default. --j-intern=<n>, -ji<n> set number of parallel builds in packages (default = 2*CPUs) @@ -1328,6 +1331,12 @@ parse_first() PTX_NICE="${arg#*=}" PTX_NICE="${PTX_NICE:-10}" ;; + --output-sync) + PTXDIST_OUTPUT_SYNC=1 + ;; + --no-output-sync) + PTXDIST_OUTPUT_SYNC=0 + ;; -q|--quiet) PTXDIST_QUIET=1 ;; @@ -2326,12 +2335,14 @@ setup_config() { # out: PTXDIST_PARALLELMFLAGS # PTXDIST_PARALLELMFLAGS_INTERN # PTXDIST_PARALLELMFLAGS_EXTERN +# PTXDIST_OUTPUT_SYNC # setup_parallel() { # default no parallel for now local pmf_extern="" local pmf_intern="" local cpus + local output_sync="" # this one is for Linux if [ -r /proc/cpuinfo ]; then @@ -2356,12 +2367,19 @@ setup_parallel() { PTXDIST_PARALLELMFLAGS="${pmf_cpus}" fi + PTXDIST_OUTPUT_SYNC="${PTXDIST_OUTPUT_SYNC:-${PTXDIST_QUIET}}" + if [ "${PTXDIST_OUTPUT_SYNC}" == "1" ]; then + if make -h | grep -q -- --output-sync; then + PTXDIST_OUTPUT_SYNC="--output-sync=" + fi + fi + # # user may override these, via cmdline # PTXDIST_PARALLELMFLAGS_INTERN="${PTXDIST_PARALLELMFLAGS_INTERN:-${pmf_intern}}" PTXDIST_PARALLELMFLAGS_EXTERN="${PTXDIST_PARALLELMFLAGS_EXTERN:-${pmf_extern}}" - export PTXDIST_PARALLELMFLAGS_EXTERN + export PTXDIST_PARALLELMFLAGS_EXTERN PTXDIST_OUTPUT_SYNC } @@ -2649,6 +2667,7 @@ setup_export() { PTXDIST_FORCE_DOWNLOAD \ PTXDIST_ICECC \ PTXDIST_LOG_PROMPT \ + PTXDIST_OUTPUT_SYNC \ PTXDIST_PEDANTIC \ PTXDIST_QUIET \ PTXDIST_VERBOSE diff --git a/scripts/lib/ptxd_make_serialize.sh b/scripts/lib/ptxd_make_serialize.sh index 44e577c14..ba3f1e168 100644 --- a/scripts/lib/ptxd_make_serialize.sh +++ b/scripts/lib/ptxd_make_serialize.sh @@ -47,21 +47,20 @@ export -f ptxd_make_serialize_setup ptxd_make_serialize_init() { local num="${PTXDIST_PARALLELMFLAGS#-j}" - local sync - - if make -h | grep -q -- --output-sync && [ -n "${PTXDIST_FD_STDOUT}" ]; then - sync="--output-sync=" - fi + local sync mflags if [ -n "${num}" ]; then ptxd_make_serialize_setup global "${num}" || return - local mflags="${sync:+${sync}recurse} -j --jobserver-fds=${ptxd_make_serialize_global_readfd},${ptxd_make_serialize_global_writefd}" + sync="${PTXDIST_OUTPUT_SYNC:+${PTXDIST_OUTPUT_SYNC}recurse}" + mflags="${sync} -j --jobserver-fds=${ptxd_make_serialize_global_readfd},${ptxd_make_serialize_global_writefd}" PTXDIST_PARALLELMFLAGS_INTERN="${mflags}" PTXDIST_PARALLELMFLAGS_EXTERN="${mflags}" else case "${PTXDIST_PARALLELMFLAGS_INTERN}" in -j1) ;; - *) PTXDIST_PARALLELMFLAGS_INTERN="${PTXDIST_PARALLELMFLAGS_INTERN} ${sync:+${sync}target --no-print-directory}" ;; + *) + sync="${PTXDIST_OUTPUT_SYNC:+${PTXDIST_OUTPUT_SYNC}target --no-print-directory}" + PTXDIST_PARALLELMFLAGS_INTERN="${PTXDIST_PARALLELMFLAGS_INTERN} ${sync}" ;; esac fi |