Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1467 alewis 1
# Force failed command to exit this shell - all commands must report success
2
set -e
3
echo
4
echo
5
 
6
 
7
 
8
#------------------------------------------------------------------------------
9
# Takes $1 and removes all relative paths (. and ..) from it.  The cleaned up
10
# directory is written to stdout.
11
#------------------------------------------------------------------------------
12
function cleanup_dir
13
{
14
    DIR_PARTS=`echo $1 | sed "s|/| |g"`
15
 
16
    CLEANUP_DIR=""
17
    for PART in ${DIR_PARTS}; do
18
        if [ "${PART}" != "." ]; then
19
 
20
            if [ "${PART}" == ".." ]; then
21
                CLEANUP_DIR=`echo "${CLEANUP_DIR}" | sed "s|/[^/]*$||"`
22
            else
23
                CLEANUP_DIR="${CLEANUP_DIR}/${PART}"
24
            fi
25
        fi
26
    done
27
 
28
    echo ${CLEANUP_DIR}
29
} 
30
 
31
 
32
 
33
 
34
#------------------------------------------------------------------------------
35
# Extract arguments - order not important except that the first argument is
36
# the launch script
37
#------------------------------------------------------------------------------
38
unset CLEAN
39
unset DOWNLOAD_PKG
40
unset DOWNLOAD_PKG_AUTO
41
unset DEBIAN_PACKAGE
42
unset APPLY_PATCHES
43
unset APPLY_MODS
1469 alewis 44
unset CONFIG_VARIENT
1477 dpurdie 45
unset WORK_DIR_NAME
1483 alewis 46
unset XGCC_IN_PATH;
1467 alewis 47
for arg in "$@" ; do
48
    val=${arg##*=}
49
    tag=${arg%%=*}
50
    case $tag in
1483 alewis 51
        -XGccInPath)            XGCC_IN_PATH=1;;            
1467 alewis 52
        -clean)                 CLEAN=1;;
53
        -ShellBuild)            SHELL_BUILD="$val";;
54
        -BuildName)             BUILD_NAME=$val;;
55
        -BuildVersion)          BUILD_VERSION=$val;;
56
        -Platform)              PLATFORM=$val;;
57
        -Type)                  TYPE=$val;;
58
        -Arch)                  ARCH=$val;;
59
        -MachType)              MACHTYPE=$val;;
60
        -BuildRoot)             BUILD_ROOT=$val;;
1475 dpurdie 61
        -InterfaceDir)          INTERFACE_DIR=$val;;
62
        -LocalDir)              LOCAL_DIR=$val;;
1477 dpurdie 63
        -LocalIncDir)           LOCAL_INC_DIR=$val;;
64
        -LocalBinDir)           LOCAL_BIN_DIR=$val;;
65
        -LocalLibDir)           LOCAL_LIB_DIR=$val;;
1469 alewis 66
        -BinDir)                BIN_DIR=$val;;
67
        -LibDir)                LIB_DIR=$val;;
68
        -ObjDir)                OBJ_DIR=$val;;
1467 alewis 69
        -PackageBinDir)         PKG_BIN_DIR=$val;;
70
        -PackageIncDir)         PKG_INC_DIR=$val;;
71
        -PackageLibDir)         PKG_LIB_DIR=$val;;
72
        -PackagePkgDir)         PKG_PKG_DIR=$val;;
73
        -PackageToolDir)        PKG_TOOL_DIR=$val;;
74
        -PackageToolBin)        PKG_TOOL_BIN_DIR=$val;;
75
        -PackageToolScript)     PKG_TOOL_SCRIPT_DIR=$val;;
76
        -PackageDir)            PKG_DIR=$val;;
77
        -CompilerPath)          COMPILER_DIR="$val";;
78
        -DownloadPkg)           DOWNLOAD_PKG="$val";;
1475 dpurdie 79
        -DebianPackage)         DEBIAN_PACKAGE=$val;;
1467 alewis 80
        -ApplyPatches)          APPLY_PATCHES=1;;
81
        -ApplyMods)             APPLY_MODS=1;;
1469 alewis 82
        -ConfigVarient)         CONFIG_VARIENT=$val;;
1477 dpurdie 83
        -WorkDir)               WORK_DIR_NAME=$val;;
1467 alewis 84
        *)                      echo "Unknown tag: $tag=$val"
85
    esac
86
done
87
 
88
if [ "${DOWNLOAD_PKG}" == "-DownloadPkg" ]; then
89
    DOWNLOAD_PKG_NAME=${BUILD_NAME}
90
    DOWNLOAD_PKG_VER=`echo ${BUILD_VERSION} | sed "s|\.[0-9]\+\.cots||"`
91
    DOWNLOAD_PKG=${DOWNLOAD_PKG_NAME}-${DOWNLOAD_PKG_VER}
92
else
93
    DOWNLOAD_PKG_VER=`echo ${DOWNLOAD_PKG} | sed "s|.*-||"`    
94
    DOWNLOAD_PKG_NAME=`echo ${DOWNLOAD_PKG} | sed "s|-${DOWNLOAD_PKG_VER}||"`    
95
fi
96
 
97
 
98
#------------------------------------------------------------------------------
99
# Dump JATS information for debugging purposes
100
#------------------------------------------------------------------------------
101
echo "================================================================================"
102
echo "   JATS SUPPLIED FIELDS"
103
echo "================================================================================"
104
echo " ShellBuild     = ${SHELL_BUILD}"
105
echo " BuildName      = ${BUILD_NAME} ${BUILD_VERSION}"
106
echo " Platform       = ${PLATFORM}"
107
echo " Type           = ${TYPE}"
108
echo " Arch           = ${ARCH}"
109
echo " MachType       = ${MACHTYPE}"
110
echo " BuildRoot      = ${BUILD_ROOT}"
1483 alewis 111
echo " InterfaceDir   = ${INTERFACE_DIR}"
112
echo " LocalDir       = ${LOCAL_DIR}"
1467 alewis 113
if [ ${DOWNLOAD_PKG} ]; then
114
    echo " DownloadPkg    = ${DOWNLOAD_PKG}"
115
fi    
1469 alewis 116
echo " BinDir         = ${BIN_DIR}"
117
echo " LibDir         = ${LIB_DIR}"
118
echo " ObjDir         = ${OBJ_DIR}"
1475 dpurdie 119
echo " PkgDir         = ${PKG_DIR}"
1467 alewis 120
echo " PackageBinDir  = ${PKG_BIN_DIR}"
121
echo " PackageIncDir  = ${PKG_INC_DIR}"
122
echo " PackageLibDir  = ${PKG_LIB_DIR}"
123
echo " PackagePkgDir  = ${PKG_PKG_DIR}"
124
echo " CompilerDir    = ${COMPILER_DIR}"
125
echo "================================================================================"
126
echo
127
echo
128
 
129
 
130
#------------------------------------------------------------------------------
131
# Determine host and build environments
132
#------------------------------------------------------------------------------
133
case ${MACHTYPE} in
134
    linux_i386)  
135
        COMPILE_BUILD="i386-cross-linux-gnu"
136
        ;;
137
    *)      
138
        echo "Unknown MACHTYPE=${MACHTYPE}"
139
        exit 1
140
        ;;
141
esac
142
 
143
case ${ARCH} in
144
    *603E*|*powerpc*)  
145
        COMPILE_HOST="powerpc-603e-linux-gnu"
146
        LINUX_HOST_ARCH=powerpc
147
        ;;
148
 
1469 alewis 149
    ARMV9*)  
150
        COMPILE_HOST="arm-9tdmi-linux-gnu"
1481 thunter 151
        LINUX_HOST_ARCH=arm
1469 alewis 152
        ;;
1483 alewis 153
 
154
    ARM926EJ*)
1481 thunter 155
        COMPILE_HOST="arm-926ejs-linux-gnueabi"
156
        LINUX_HOST_ARCH=arm
1483 alewis 157
        if [ "${XGCC_IN_PATH}" != "" ]; then
158
            echo "-XGccInPath is *NOT* supported by this platform by this version of ShellBuild"
159
            echo "Correct your shellbuild script so that it is not required."
160
            exit 1
161
        fi
1481 thunter 162
        ;;
163
 
1467 alewis 164
    *I386*)
1469 alewis 165
        if [ "${PLATFORM}" == "LINUX_I386" ]; then
166
            COMPILE_HOST="i386-cross-linux-gnu"
167
        else
168
            COMPILE_HOST="i586-unknown-linux-gnu"
169
        fi
1467 alewis 170
        LINUX_HOST_ARCH=x86
171
        ;;
172
 
1477 dpurdie 173
    *)
1467 alewis 174
        echo "Unknown ARCH=${ARCH}"
175
        exit 1
176
        ;;
177
esac
178
 
179
# Setup the location of the cross compiler
1469 alewis 180
if [ "${COMPILE_HOST}" == "i386-redhat-linux" ] || [ "${COMPILER_DIR}" == "gcc" ]; then
1467 alewis 181
    XGCC_BASE_DIR=
182
else
183
    XGCC_BASE_DIR=`echo ${COMPILER_DIR} | sed 's|/[^/]*/[^/]*$||'`
184
    XGCC_BASE_DIR=`cleanup_dir ${XGCC_BASE_DIR}`
185
fi
186
 
187
# Determine the location of the generated files
188
CWD=`pwd`
1469 alewis 189
BIN_DIR=`cleanup_dir ${CWD}/${BIN_DIR}`
190
LIB_DIR=`cleanup_dir ${CWD}/${LIB_DIR}`
191
OBJ_DIR=`cleanup_dir ${CWD}/${OBJ_DIR}`
1475 dpurdie 192
PKG_DIR=`cleanup_dir ${CWD}/${PKG_DIR}`
1467 alewis 193
PKG_BIN_DIR=`cleanup_dir ${CWD}/${PKG_BIN_DIR}`
194
PKG_INC_DIR=`cleanup_dir ${CWD}/${PKG_INC_DIR}`
195
PKG_LIB_DIR=`cleanup_dir ${CWD}/${PKG_LIB_DIR}`
196
PKG_PKG_DIR=`cleanup_dir ${CWD}/${PKG_PKG_DIR}`
197
 
198
PKG_TOOL_DIR=`cleanup_dir ${CWD}/${PKG_TOOL_DIR}`
199
PKG_TOOL_BIN_DIR=`cleanup_dir ${CWD}/${PKG_TOOL_BIN_DIR}`
200
PKG_TOOL_SCRIPT_DIR=`cleanup_dir ${CWD}/${PKG_TOOL_SCRIPT_DIR}`
201
 
202
BASE_DIR=`cleanup_dir ${CWD}/${BUILD_ROOT}`
1475 dpurdie 203
INTERFACE_DIR=`cleanup_dir ${CWD}/${INTERFACE_DIR}`
204
LOCAL_DIR=`cleanup_dir ${CWD}/${LOCAL_DIR}`
1477 dpurdie 205
LOCAL_INC_DIR=`cleanup_dir ${CWD}/${LOCAL_INC_DIR}`
206
LOCAL_BIN_DIR=`cleanup_dir ${CWD}/${LOCAL_BIN_DIR}`
207
LOCAL_LIB_DIR=`cleanup_dir ${CWD}/${LOCAL_LIB_DIR}`
1469 alewis 208
LCL_SRC_DIR=${BASE_DIR}/src
209
SHARE_SRC_DIR=${LCL_SRC_DIR}
210
SHARE_BASE_DIR=${BASE_DIR}
1467 alewis 211
 
1469 alewis 212
DEB_PKG_DIR=${LIB_DIR}
213
AFC_DIR=${DEB_PKG_DIR}/afc
214
AFC_BIN_DIR=${AFC_DIR}/bin
215
AFC_LIB_DIR=${AFC_DIR}/lib
216
AFC_SHARE_DIR=${AFC_DIR}/share
217
 
1475 dpurdie 218
DEB_DIR=`cleanup_dir ${CWD}/${DEBIAN_PACKAGE}`
1469 alewis 219
 
1467 alewis 220
# Find the launch script
1469 alewis 221
LAUNCH_SCRIPT=`cleanup_dir ${LCL_SRC_DIR}/${SHELL_BUILD}`
1467 alewis 222
 
223
if [ ! -f ${LAUNCH_SCRIPT} ]; then
224
    echo "Specified shell build script ${LAUNCH_SCRIPT} does not exist."
225
    exit 1
226
fi
227
 
228
if [ ${DOWNLOAD_PKG} ]; then
1469 alewis 229
 
230
    # This is the set of available download directories, consisting of downloads/
231
    # and a download directory that is offset from the location of the build
232
    # script src directory.
233
    unset TAR_DECOMP_ARG
234
    TMP=`echo ${SHELL_BUILD} | sed "s|/src/.*||"`
235
    TMP=`cleanup_dir ${CWD}/${TMP}`
236
    DOWNLOAD_DIRS="${TMP} ${BASE_DIR}"
237
    for DDIR in ${DOWNLOAD_DIRS}; do
238
        TMP=${DDIR}/downloads/${DOWNLOAD_PKG}.tar.bz2
239
        if [ -e ${TMP} ]; then
240
            TARBALL_FILE=${TMP}
241
            SHARE_SRC_DIR=${DDIR}/src
242
            SHARE_BASE_DIR=${DDIR}
243
            TAR_DECOMP_ARG=j
1467 alewis 244
        else
1469 alewis 245
            TMP=${DDIR}/downloads/${DOWNLOAD_PKG}.tar.gz
246
            if [ -e ${TMP} ]; then
247
                TARBALL_FILE=${TMP}
248
                SHARE_SRC_DIR=${DDIR}/src
249
                SHARE_BASE_DIR=${DDIR}
1467 alewis 250
                TAR_DECOMP_ARG=z
251
            else
1469 alewis 252
                TMP=${DDIR}/downloads/${DOWNLOAD_PKG}.tgz
253
                if [ -e ${TMP} ]; then
254
                    TARBALL_FILE=${TMP}
255
                    SHARE_SRC_DIR=${DDIR}/src
256
                    SHARE_BASE_DIR=${DDIR}
257
                    TAR_DECOMP_ARG=z
258
                fi
1467 alewis 259
            fi
1469 alewis 260
        fi    
261
    done
262
    if [ "${TAR_DECOMP_ARG}" == "" ]; then
263
        echo "Could not find download file ${DOWNLOAD_PKG}.<tar.gz|tar.bz2|tgz> in any of { ${DOWNLOAD_DIRS} }"
264
        exit 1
265
    fi
1483 alewis 266
    UNTAR_DIR=${LCL_SRC_DIR}/${DOWNLOAD_PKG}
267
    WORK_DIR=${UNTAR_DIR}.${PLATFORM}${TYPE}
1467 alewis 268
else
1483 alewis 269
    WORK_DIR=${LCL_SRC_DIR}/work.${PLATFORM}${TYPE}
1467 alewis 270
fi
271
 
1475 dpurdie 272
#
1477 dpurdie 273
#   Setup WORK_DIR
274
#   This can be deduced from the tar-file, but in some cases the name
275
#   must be specified
276
#
277
if [ ${WORK_DIR_NAME} ]; then
278
    WORK_DIR=${LCL_SRC_DIR}/${WORK_DIR_NAME}
279
fi
280
 
281
#
1475 dpurdie 282
#   Extend compiler and linker search paths to access data within
283
#   packages imported via BuildPkgArchive
284
#
285
#   Include the packageing directory - its used for builds that
286
#   build multiple packages.
287
#
288
#   Only include paths that exist
289
#
290
INCLUDE=
291
LIBPATH=
1467 alewis 292
 
1475 dpurdie 293
DJOIN=""
294
DLIST="
295
${PKG_INC_DIR}
296
${LOCAL_DIR}/inc
297
${INTERFACE_DIR}/include/${PLATFORM}
298
${INTERFACE_DIR}/include
299
"
300
for dtest in ${DLIST} ; do
301
    if [ -d $dtest ] ; then
302
        INCLUDE="${INCLUDE}${DJOIN}-I$dtest"
303
        DJOIN=" "
304
    fi
305
done
1467 alewis 306
 
1475 dpurdie 307
DJOIN=""
308
DLIST="
309
${PKG_LIB_DIR}
310
${LOCAL_DIR}/lib/${PLATFORM}
311
${INTERFACE_DIR}/lib/${PLATFORM}
312
"
313
for dtest in ${DLIST} ; do
314
    if [ -d $dtest ] ; then
315
        LIBPATH="${LIBPATH}${DJOIN}-L$dtest"
316
        DJOIN=" "
317
    fi
318
done
1467 alewis 319
 
320
# Dump configuration
321
echo "================================================================================"
322
echo "   BUILD CONFIGURATION"
323
echo "================================================================================"
324
echo " Compile Host   = ${COMPILE_HOST}"
325
echo " Compile Build  = ${COMPILE_BUILD}"
326
echo " XGCC Base Dir  = ${XGCC_BASE_DIR}"
327
echo " Base Dir       = ${BASE_DIR}"
1477 dpurdie 328
 
329
if [ ${WORK_DIR_NAME} ]; then
330
    echo " Work Dir Name  = ${WORK_DIR_NAME}"
331
fi  
332
 
1467 alewis 333
if [ ${DOWNLOAD_PKG} ]; then
334
    echo " Tarball File   = ${TARBALL_FILE}"
335
    echo " Working Dir    = ${WORK_DIR}"
1477 dpurdie 336
fi
337
 
338
TITLE="Includes       ="
1475 dpurdie 339
for INC in ${INCLUDE}; do
1477 dpurdie 340
        echo " ${TITLE} ${INC}"
341
        TITLE="                "
1469 alewis 342
done
1477 dpurdie 343
 
344
TITLE="Library Path   ="
1483 alewis 345
for LIB in ${LIBPATH}; do
1477 dpurdie 346
        echo " ${TITLE} ${LIB}"
347
        TITLE="                "
1469 alewis 348
done
1477 dpurdie 349
 
350
if [ ${DEBIAN_PACKAGE} ]; then
351
    echo " Debian Package = ${DEB_PKG_DIR}"
352
fi
353
 
1467 alewis 354
echo " Launch Script  = ${LAUNCH_SCRIPT}"
355
echo "================================================================================"
356
echo
357
echo
358
 
359
# Prepare the environment
360
echo " --> Preparing environment"
361
 
1483 alewis 362
LIBTOOL=${XGCC_BASE_DIR}/bin/${COMPILE_HOST}-libtool
363
if [ -e ${LIBTOOL} ]; then
364
    echo " --> Using toolchain libtool"
365
else
366
    echo " --> Using environment libtool"
367
    LIBTOOL=/usr/bin/libtool
368
fi    
1467 alewis 369
export LIBTOOL
370
 
1473 dpurdie 371
unset CC
372
unset CXX
373
unset CPP
374
unset CPPFLAGS
375
unset LD_LIBRARY_PATH
376
export CC CXX CPP CPPFLAGS LD_LIBRARY_PATH
377
 
1467 alewis 378
unset MAKE
379
unset MAKEFLAGS
380
unset MAKEOVERRIDES
381
unset MAKELEVEL
1473 dpurdie 382
export CFLAGS="${CFLAGS} ${INCLUDE}"
1475 dpurdie 383
export CXXFLAGS="${CXXFLAGS} ${INCLUDE}"
1473 dpurdie 384
export CCFLAGS="${CCFLAGS} ${INCLUDE}"
1467 alewis 385
export LDFLAGS="${LDFLAGS} ${LIBPATH}"
386
 
1483 alewis 387
if [ "${XGCC_IN_PATH}" != "" ]; then
388
    export PATH="${XGCC_BASE_DIR}/${COMPILE_HOST}/bin:${PATH}"
389
    XGCC_IN_PATH_PREFIX_DIR=${XGCC_BASE_DIR}/${COMPILE_HOST}
390
else    
1469 alewis 391
    export PATH="${XGCC_BASE_DIR}/bin:${PATH}"
1483 alewis 392
    XGCC_IN_PATH_PREFIX_DIR=/afc
1467 alewis 393
fi
394
 
1475 dpurdie 395
 
396
#
1483 alewis 397
# Environment - CHOST is used by some packages (e.g., zlib) to set the 
398
# host environment compiler.
399
#
400
export CHOST=${COMPILE_HOST}
401
 
402
#
403
# These are special files used to track completion of tasks allowing for partial
404
# rebuilds during development.
405
#
406
COMPLETE_PREFIX=${LCL_SRC_DIR}/.complete${DOWNLOAD_PKG}.${PLATFORM}${TYPE}.
407
COMPLETE_DECOMPRESS=${COMPLETE_PREFIX}decompress
408
COMPLETE_CONFIGURE=${COMPLETE_PREFIX}configure
409
 
410
#
1475 dpurdie 411
#   Clean up request
412
#   No building - just a clean of previous builds
413
#
1467 alewis 414
if [ ${CLEAN} ]; then
1483 alewis 415
    echo " --> Removing all completion tags"
416
    rm -fr ${LCL_SRC_DIR}/.complete.*
417
 
1467 alewis 418
    if [ ${DOWNLOAD_PKG} ]; then
419
        echo " --> Cleaning generated files"
420
        cd ${BASE_DIR}
421
        rm -fr ${WORK_DIR}
422
    fi        
1469 alewis 423
 
424
    echo " --> Deleting binary, object, and library directories"
425
    rm -fr ${BIN_DIR}
426
    rm -fr ${LIB_DIR}
427
    rm -fr ${OBJ_DIR}
1475 dpurdie 428
 
429
    if [ ${DEBIAN_PACKAGE} ]; then
430
        echo " --> Deleting Debian Build Files "
431
        rm -fr ${DEB_DIR}
432
    fi
1469 alewis 433
 
1467 alewis 434
    exit 0
435
fi
436
 
437
 
438
echo " --> Creating package directories"
439
mkdir -p ${PKG_BIN_DIR}
440
mkdir -p ${PKG_INC_DIR}
441
mkdir -p ${PKG_LIB_DIR}
442
mkdir -p ${PKG_PKG_DIR}
443
mkdir -p ${AFC_DIR}
444
mkdir -p ${AFC_BIN_DIR}
445
mkdir -p ${AFC_LIB_DIR}
446
mkdir -p ${AFC_SHARE_DIR}
447
mkdir -p ${PKG_TOOL_DIR}
448
mkdir -p ${PKG_TOOL_BIN_DIR}
449
mkdir -p ${PKG_TOOL_SCRIPT_DIR}
450
 
451
 
452
if [ ${DOWNLOAD_PKG} ]; then
1483 alewis 453
    if [ -e ${COMPLETE_DECOMPRESS} ]; then
454
        echo " --> Already extracted ${DOWNLOAD_PKG}"
455
    else
456
        echo " --> Deleting existing build objects directory"
457
        rm -fr ${UNTAR_DIR}
458
        rm -fr ${WORK_DIR}
1467 alewis 459
 
1483 alewis 460
        echo " --> Extracting ${DOWNLOAD_PKG}"
461
        cd ${LCL_SRC_DIR}
462
        tar -x${TAR_DECOMP_ARG}pf ${TARBALL_FILE}
463
 
464
        cd ${UNTAR_DIR}
465
        PATCHES_DIR=${SHARE_BASE_DIR}/patches
466
        if [ -d ${PATCHES_DIR} ]; then
467
            PATCHES=`cd ${PATCHES_DIR} && find . -name "*.patch" | sort`
468
            if [ "${PATCHES}" != "" ]; then
469
                echo " --> Apply external patches"
470
                for PATCH in ${PATCHES}; do
471
                    if patch -p1 < ${PATCHES_DIR}/${PATCH}; then
472
                        echo "Applied patch ${PATCH}"
473
                        echo ""
474
                    else
475
                        echo "Patch ${PATCH} failed"
476
                        exit 1
477
                    fi
478
                done    
479
            fi
1467 alewis 480
        fi
1483 alewis 481
 
482
        cd ${UNTAR_DIR}
483
        MODS_DIR=${SHARE_BASE_DIR}/${DOWNLOAD_PKG_NAME}_${DOWNLOAD_PKG_VER}_mods
484
        if [ -d ${MODS_DIR} ]; then
485
            echo " --> Applying modifications"
486
            cp -fr ${MODS_DIR}/* .
487
            ERG_CONFIG=${MODS_DIR}/ERG.config
488
            if [ -f ${ERG_CONFIG} ]; then
489
                cp -fr ${ERG_CONFIG} .config
490
            fi
491
            VXP_CONFIG=${MODS_DIR}/VXP.config
492
            if [ -f ${VXP_CONFIG} ]; then
493
                cp -fr ${VXP_CONFIG} .config
494
            fi
1467 alewis 495
        fi
496
 
1483 alewis 497
        mv ${UNTAR_DIR} ${WORK_DIR} 
498
 
499
        touch ${COMPLETE_DECOMPRESS}
500
    fi        
1475 dpurdie 501
fi
1467 alewis 502
 
1475 dpurdie 503
#
504
#   Source the users script
505
#   This is processed in the context of this script
506
#
1483 alewis 507
cd ${WORK_DIR}
1467 alewis 508
source ${LAUNCH_SCRIPT}
509
 
510
 
511
if [ ${DEBIAN_PACKAGE} ]; then 
512
    echo " --> Creating Debian packaging scripts"
513
    unset TOOL_DIR
514
    for DIR in `echo ${PATH} | sed "s|\:| |g"`; do
515
        if [ -f ${DIR}/debbuild.pl ]; then
516
            TOOL_DIR=`cleanup_dir ${DIR}`
517
        fi
518
    done
519
    if [ ${TOOL_DIR} ]; then
520
        DEBBUILD_PL=${TOOL_DIR}/debbuild.pl
1469 alewis 521
        echo "      - Found ${DEBBUILD_PL}"
1467 alewis 522
 
523
        rm -fr ${DEB_DIR}
524
        mkdir -p ${DEB_DIR}
1475 dpurdie 525
 
526
        # Replace TAGS in the debbuild.pl file
1467 alewis 527
        DEB_DESC="${BUILD_NAME} ${BUILD_VERSION} for ${PLATFORM}"
1475 dpurdie 528
        cat ${DEBBUILD_PL} | sed "-es|TAG_DESCRIPTION|${DEB_DESC}|" "-es|TAG_POSTINSTALL|${DEB_DIR}/postinstall|" > ${DEB_DIR}/debbuild.pl
1467 alewis 529
        cp ${TOOL_DIR}/postinstall ${DEB_DIR}/postinstall
530
    else
531
        echo "ERROR: Cannot find debbuild.pl in the PATH"
532
        exit 1
533
    fi
534
fi    
535
 
1469 alewis 536
echo " --> Removing unnecesary files resulting from the make install"
1477 dpurdie 537
if [ -d ${PKG_LIB_DIR} ] ; then
538
    DEL_FILES=`find ${PKG_LIB_DIR} -type f -name '*.la'`
539
    for FILE in ${DEL_FILES}; do
540
            echo "      - Deleting ${FILE}"
541
            rm -f ${FILE}
542
    done
543
fi
1469 alewis 544
 
545
echo " --> Cleaning up empty directories"
546
# Deletes directory $1 if it does not contain any other files or directories
547
function rmdir_empty()
548
{
1477 dpurdie 549
    if [ -d "$1" ] ; then
550
        # -A = do not list . and ..
551
        # -Q = enclose entry names in double quotes
552
        # -l = list one file per line
553
        # -F = appends each directory with a '/' 
554
        DIRS=`ls -A -Q -l -F "$1" | grep "\".*\"\/" | sed "s|.* \"||" | sed "s|\"\/||"`
555
        for DIR in ${DIRS}; do
556
            rmdir_empty $1/${DIR}
557
        done
1469 alewis 558
 
1477 dpurdie 559
        LS=`ls -A -Q -l -F "$1" | grep "\"" | sed "s|^.* \"||" | sed "s|\".*||"`
560
        if [ "${LS}" == "" ]; then
561
            rmdir $1
562
        fi
1469 alewis 563
    fi
564
}
1477 dpurdie 565
 
1469 alewis 566
rmdir_empty ${DEB_PKG_DIR}
567
rmdir_empty ${BASE_DIR}/pkg
568
 
1473 dpurdie 569
echo " --> End of ShellBuild"
1469 alewis 570