X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=build-hc-pkg.git;a=blobdiff_plain;f=build-hc-pkg;h=e900fcfae14f44a209c2e47f40d37afb98be266e;hp=1c1fe3201313da574233558fd53bb76088b5dba7;hb=HEAD;hpb=e2b3313ef0dceb8c31abb2b058fd69eff0641f48 diff --git a/build-hc-pkg b/build-hc-pkg index 1c1fe32..e900fcf 100755 --- a/build-hc-pkg +++ b/build-hc-pkg @@ -4,30 +4,60 @@ set -e function detect_platform_type () { local -r canon_name="canon-name/src/canon-name" - if [[ ! -x "$canon_name" ]]; then - gmake -f mk/canon-name.mk + if ! gmake --question --file="mk/canon-name.mk" >/dev/null 2>&1; then + gmake --file="mk/canon-name.mk" >&2 fi "$canon_name" } function detect_number_of_cpus () { - case "$(detect_platform_type)" in - *-*-darwin) - ioreg -r -c IOCPU | fgrep -c IOCPUNumber - ;; - *) - echo "WARNING: I don't know how to detect the number of processors on this platform." >&2 - echo "WARNING: GHC will be built using only 1 processor. Expect some slowdown." >&2 - echo 1 - ;; - esac + if sysctl -n "hw.ncpu" 2>/dev/null; then + # This works for most BSDs. + : + elif grep -qF processor /proc/cpuinfo 2>/dev/null; then + # Linux sucks... + grep -cF processor /proc/cpuinfo + else + echo "WARNING: I don't know how to detect the number of processors on this platform." >&2 + echo "WARNING: GHC will be built using only 1 processor. Expect some slowdown." >&2 + echo 1 + fi +} + +function detect_gnu_tar () { + if which gnutar >/dev/null 2>&1; then + echo "gnutar" + elif which gtar >/dev/null 2>&1; then + echo "gtar" + else + echo "We need GNU tar to be installed." >&2 + exit 1 + fi +} + +function detect_gnu_sed () { + if which gsed >/dev/null 2>&1; then + echo "gsed" + elif sed --version | grep -qF GNU; then + echo "sed" + else + echo "We need GNU sed to be installed." >&2 + exit 1 + fi } function say_hello () { + local -r self=$(basename "$0") local -r platform=$(detect_platform_type) local -r n_cpus=$(detect_number_of_cpus) - echo "This is build-hc-pkg, running on $platform with $n_cpus processors." + + echo -n "This is $self, running on $platform with $n_cpus " + if (( $n_cpus == 1 )); then + echo "processor." + else + echo "processors." + fi } function srcpath () { @@ -61,6 +91,8 @@ function build_hc_pkg () { -f mk/main.mk \ SRCPATH="$srcpath" \ PLATFORM="$(detect_platform_type)" \ + GNUTAR="$(detect_gnu_tar)" \ + GNUSED="$(detect_gnu_sed)" \ SHELL="$SHELL" echo "If you are done, run \"$0 clean\" to cleanup the working directory."