]> gitweb @ CieloNegro.org - build-hc-pkg.git/blobdiff - build-hc-pkg
Various changes to support Linux
[build-hc-pkg.git] / build-hc-pkg
index e0e55f512c25a98bf8c50d4f1277339c5d036d27..e900fcfae14f44a209c2e47f40d37afb98be266e 100755 (executable)
@@ -12,7 +12,13 @@ function detect_platform_type () {
 }
 
 function detect_number_of_cpus () {
-    if ! sysctl -n hw.ncpu; then
+    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
@@ -30,11 +36,28 @@ function detect_gnu_tar () {
     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 () {
@@ -69,6 +92,7 @@ function build_hc_pkg () {
         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."