From: PHO Date: Thu, 23 Feb 2012 09:57:31 +0000 (+0900) Subject: Fix conflicts X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=build-hc-pkg.git;a=commitdiff_plain;h=104962c00b3b18e657e4bdeb7a37145d338cffbf Fix conflicts --- 104962c00b3b18e657e4bdeb7a37145d338cffbf diff --cc build-hc-pkg index 1c1fe32,5743b3c..51b56f1 --- a/build-hc-pkg +++ b/build-hc-pkg @@@ -1,88 -1,53 +1,100 @@@ #!/usr/bin/env bash set -e -declare canon_name="canon-name/src/canon-name" -declare archive="work/archive" - -if [[ ! -x "$canon_name" ]]; then - gmake -f mk/canon-name.mk -fi -readonly platform=$("$canon_name") - -echo "This is build-hc-pkg, running on \"$platform\"." - -if [[ "$1" = "clean" ]]; then - echo "Cleaning..." - rm -rf work - exit -fi - -declare srcpath="" -if [[ -e "$archive" ]]; then - srcpath=$(cat "$archive") -fi - -if [[ -z "$srcpath" || ! -e "$srcpath" ]]; then - mkdir -p work - read -e -p "Enter the file path to ghc-x.y.z-src.tar.bz2: " srcpath - if [[ -e "$srcpath" ]]; then - mkdir -p work - echo "$srcpath" > "$archive" + +function detect_platform_type () { + local -r canon_name="canon-name/src/canon-name" + + if [[ ! -x "$canon_name" ]]; then + gmake -f mk/canon-name.mk + 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 +} + ++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 "$srcpath not found." >&2 ++ echo "We need GNU tar to be installed." >&2 + exit 1 + fi -fi - -# What's the name of our GNU tar? -declare gnutar="" -if which gnutar >/dev/null 2>&1; then - gnutar="gnutar" -elif which gtar >/dev/null 2>&1; then - gnutar="gtar" -else - echo "We need GNU tar to be installed." >&2 - exit 1 -fi - -gmake -f mk/main.mk \ - SRCPATH="$srcpath" \ - PLATFORM="$platform" \ - GNUTAR="$gnutar" \ - SHELL="$SHELL" - -echo "If you are done, run \"$0 clean\" to cleanup the working directory." ++} ++ +function say_hello () { + 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." +} + +function srcpath () { + local -r archive="work/archive" + local srcpath="" + + if [[ -e "$archive" ]]; then + srcpath=$(cat "$archive") + fi + + if [[ -z "$srcpath" || ! -e "$srcpath" ]]; then + mkdir -p work + read -e -p "Enter the file path to ghc-x.y.z-src.tar.bz2: " srcpath + if [[ -e "$srcpath" ]]; then + mkdir -p work + echo "$srcpath" > "$archive" + else + echo "$srcpath not found." >&2 + exit 1 + fi + fi + + echo "$srcpath" +} + +function build_hc_pkg () { + local -r srcpath="$(srcpath)" + + gmake \ + -j $(($(detect_number_of_cpus) + 1)) \ + -f mk/main.mk \ + SRCPATH="$srcpath" \ + PLATFORM="$(detect_platform_type)" \ ++ GNUTAR="$(detect_gnu_tar)" \ + SHELL="$SHELL" + + echo "If you are done, run \"$0 clean\" to cleanup the working directory." +} + +function main () { + case "$1" in + "") + say_hello + build_hc_pkg + exit + ;; + "clean") + echo "Cleaning..." + rm -rf work + exit + ;; + *) + echo "Usage: $0 [clean]" >&2 + exit 1 + ;; + esac +} + +main $@