]> gitweb @ CieloNegro.org - build-hc-pkg.git/commitdiff
Fix conflicts
authorPHO <pho@cielonegro.org>
Thu, 23 Feb 2012 09:57:31 +0000 (18:57 +0900)
committerPHO <pho@cielonegro.org>
Thu, 23 Feb 2012 09:57:31 +0000 (18:57 +0900)
1  2 
build-hc-pkg

diff --cc build-hc-pkg
index 1c1fe3201313da574233558fd53bb76088b5dba7,5743b3cf1554a574db00c73649001000750cb3dd..51b56f19d3e7d9f11c5999cf1461a31a284ce132
  #!/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 $@