]> gitweb @ CieloNegro.org - build-hc-pkg.git/blobdiff - build-hc-pkg
Various changes to support Linux
[build-hc-pkg.git] / build-hc-pkg
index 27bf1fdd72d420a763af6375c0704badc56c53b0..e900fcfae14f44a209c2e47f40d37afb98be266e 100755 (executable)
@@ -4,29 +4,25 @@ 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 () {
-    local -r platform=$(detect_platform_type)
-
-    case "$platform" in
-        *-*-darwin)
-            ioreg -r -c IOCPU | fgrep -c \"IOCPUNumber\"
-            ;;
-        *-*-netbsd*)
-            cat /proc/cpuinfo | grep -cE 'processor[[:space:]]*:'
-            ;;
-        *)
-            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 () {
@@ -40,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 () {
@@ -79,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."