brmake 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/bash
  2. # (C) 2016, "Yann E. MORIN" <yann.morin.1998@free.fr>
  3. # License: WTFPL, https://spdx.org/licenses/WTFPL.html
  4. main() {
  5. local ret start d h m mf
  6. if ! which unbuffer >/dev/null 2>&1; then
  7. printf "you need to install 'unbuffer' (from package expect or expect-dev)\n" >&2
  8. exit 1
  9. fi
  10. start=${SECONDS}
  11. if [ -n "$BR2_DOCKER" ]; then
  12. docker=("${0%/*}/docker-run")
  13. else
  14. docker=()
  15. fi
  16. ( exec 2>&1; unbuffer "${docker[@]}" make "${@}"; ) \
  17. > >( while read -r line; do
  18. printf "%(%Y-%m-%dT%H:%M:%S)T %s\n" -1 "${line}"
  19. done \
  20. |tee -a br.log \
  21. |grep --colour=never -E '>>>'
  22. )
  23. ret=${?}
  24. d=$((SECONDS-start))
  25. printf "Done in "
  26. h=$((d/3600))
  27. d=$((d%3600))
  28. [ ${h} -eq 0 ] || { printf "%dh " ${h}; mf="02"; }
  29. m=$((d/60))
  30. d=$((d%60))
  31. [ ${m} -eq 0 ] || { printf "%${mf}dmin " ${m}; sf="02"; }
  32. printf "%${sf}ds" ${d}
  33. if [ ${ret} -ne 0 ]; then
  34. printf " (error code: %s)" ${ret}
  35. fi
  36. printf "\n"
  37. return ${ret}
  38. }
  39. main "${@}"