]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/qt-console/build-depkgs-qt-console
Change some icons around to make a little more senese with a status
[bacula/bacula] / bacula / src / qt-console / build-depkgs-qt-console
1 #!/bin/sh
2 #
3 #  This file is driven by the parameters that are defined in
4 #    the file External-qt-console
5 #
6
7 usage()
8 {
9    echo "usage: $0 [-h] [-C] [<dependency 1>] [<dependency 2>] ..."
10    echo "       -h      Displays this usage"
11    echo "       -C      Clobbers (overwrites) the source code by "
12    echo "               reextracting the archive and reapplying the"
13    echo "               patches."
14    echo ""
15    echo "<dependency N> Optional dependency, If none are given then all"
16    echo "               of them will be built."
17    echo ""
18    echo "Valid dependencies are:"
19    grep -v '^#' < External-qt-console | cut -d'|' -f1 | cut -d'_' -f1 | tr A-Z a-z | sort -u | awk '{ print "        " $1 }'
20 }
21
22 CLOBBER_SOURCE=
23
24 while getopts "hHC" opt; do
25    case ${opt} in
26    H|h|\?) usage;exit 1;;
27    C)      CLOBBER_SOURCE=true;;
28    esac
29 done
30
31 [ ${OPTIND} -gt 1 ] && shift `expr ${OPTIND} - 1`
32
33 cwd=`pwd`
34 cd `dirname $0`
35 SCRIPT_DIR=`pwd`
36
37 TOP_DIR=`pwd`
38
39 [ ! -e ${TOP_DIR}/depkgs ] && mkdir ${TOP_DIR}/depkgs
40 cd ${TOP_DIR}/depkgs
41 DEPPKG_DIR=`pwd`
42
43 OLD_IFS=${IFS};IFS="|";
44 while read package url dir mkd; do
45    case ${package} in
46    \#*) ;;
47    *) eval "URL_${package}=${url};DIR_${package}=${dir};MKD_${package}=${mkd}";;
48    esac
49 done < ${SCRIPT_DIR}/External-qt-console
50 IFS=${OLD_IFS};unset OLD_IFS
51
52 get_source()
53 {
54    URL=$1
55    SRC_DIR=$2
56    MAKE_DIR=$3
57    ARCHIVE=`basename ${URL}`
58 echo "in get_source URL is $URL SRC_DIR is $SRC_DIR MAKE_DIR is $MAKE_DIR ARCHIVE is $ARCHIVE"
59         
60    case ${ARCHIVE} in
61    *.tar.gz)       ARCHIVER="tar xzf";    [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.tar\.gz'`;;
62    *.tar.bz2)      ARCHIVER="tar xjf";    [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.tar\.bz2'`;;
63    *.zip)          ARCHIVER="unzip -q";   [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.zip'`;;
64    *.exe)          ARCHIVER="";           [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.zip'`;;
65    *)              echo "Unsupported archive type - $ARCHIVE"; exit 1;;
66    esac
67    
68 #  cd ${DEPPKG_DIR}/src
69    
70    if [ ! -e "${ARCHIVE}" ]
71    then 
72       echo "Downloading ${URL}"
73       if wget --passive-ftp "${URL}"
74       then
75           :
76       else
77          echo "Unable to download ${ARCHIVE}"
78          exit 1
79       fi
80    fi
81
82    [ -z "${ARCHIVER}" ] && return 0
83
84    if [ ! -e "${SRC_DIR}" -o "${CLOBBER_SOURCE}" = "true" ]
85    then
86       rm -rf ${SRC_DIR}
87       echo "Extracting ${ARCHIVE}"
88       if [ "${MAKE_DIR}" = "true" ]
89       then
90          mkdir ${SRC_DIR}
91          cd ${SRC_DIR}
92          ${ARCHIVER} ../${ARCHIVE} > ../${ARCHIVE}.log 2>&1
93       else
94          ${ARCHIVER} ${ARCHIVE} > ${ARCHIVE}.log 2>&1
95          cd ${SRC_DIR}
96       fi
97       return 0
98    fi
99
100    cd ${SRC_DIR}
101    return 1
102 }
103
104 parse_output()
105 {
106    sed -ne '/\\$/N' -e 's/\\\n//' -e 's/\t\+/ /g' -e 's/ \+/ /g' \
107        -e '/ error: /p' \
108        -e "s%.*Entering directory[ ]\\+.${DEPPKG_DIR}/\\([^ ]\+\).%Entering \\1%p" \
109        -e "s%.*Leaving directory[ ]\\+.${DEPPKG_DIR}/\\([^ ]\+.\).%Leaving \\1%p" \
110        -e '/gcc \|g\+\+ \|ar /!d' \
111        -e 's/ \(\.\.\/\)\+/ /g' \
112        -e 's/.* \([^ ]\+\(\.c\|\.cpp\|\.cc\|\.cxx\)\)\( .*\|\)$/Compiling \1/p' \
113        -e 's/.* \([^ ]\+\.s\)\( .*\|\)$/Assembling \1/p' \
114        -e 's/.*ar [^ ]\+ \([^ ]\+\)\(\( [^ ]\+\.o\)\+\)/Updating \1 -\2/p' \
115        -e 's/.* -o \([^ ]\+\)\( .*\|\)$/Linking \1/p'
116 }
117
118 do_patch()
119 {
120    PATCH_FILE=${SCRIPT_DIR}/patches/$1; shift
121    
122    if patch -f -p0 "$@" >>patch.log < ${PATCH_FILE}
123    then
124      :
125    else
126       echo "Patch failed - Check `pwd`/patch.log" > /dev/tty
127       exit 1
128    fi
129 }
130
131 do_make()
132 {
133    if make -f "$@" 2>&1
134    then
135        :
136    else
137       echo "Make failed - Check `pwd`/make.log" > /dev/tty
138       exit 1
139    fi | tee -a make.log #| parse_output
140 }
141
142 process_qwt()
143 {
144    get_source "${URL_QWT}" "${DIR_QWT}" "${MKD_QWT}"
145    echo "Building qwt graphics library. This takes some time ..."
146    echo "unix {" >${TOP_DIR}/depkgs/qwt-5.0.2/qwtconfig.pri                    
147    echo " INSTALLBASE = ${TOP_DIR}/qwt" >>${TOP_DIR}/depkgs/qwt-5.0.2/qwtconfig.pri
148    echo "}" >>${TOP_DIR}/depkgs/qwt-5.0.2/qwtconfig.pri
149    cat ${TOP_DIR}/qwtconfig.pri >>${TOP_DIR}/depkgs/qwt-5.0.2/qwtconfig.pri
150    qmake >make.log
151    do_make Makefile >>make.log
152    do_make Makefile install >>make.log
153    echo "In case of problems see: `pwd`/make.log"
154 }
155
156 if [ "$#" -eq 0 ]
157 then
158    process_qwt
159 else
160    for dependency in "$@"
161    do
162       eval "process_${dependency}"
163    done
164
165 fi