aboutsummaryrefslogtreecommitdiff
path: root/scripts/auto-build/pd-extended-auto-builder.sh
blob: a3814c51a7dde111f653a1561674e1a72c9513ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/bash
# this script is the first attempt to have an automated updater and builder

# echo each command as its executed
set -x

# the source dir where this script is
## this could be done more easily with ${0%/*}
SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|')
. $SCRIPT_DIR/auto-build-common

# the name of this script
## this could be done more easily with ${0##*/}
SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g')

BUILD_DIR=.
case $SYSTEM in 
    linux)
        BUILD_DIR=linux_make
        echo "Configuring to use $BUILD_DIR on GNU/Linux"
        ;;
    darwin)
        BUILD_DIR=darwin_app
        echo "Configuring to use $BUILD_DIR on Darwin/Mac OS X"
        ;;
    mingw*)
        BUILD_DIR=win32_inno
        echo "Configuring to use $BUILD_DIR on MinGW/Windows"
        ;;
    cygwin*)
        BUILD_DIR=win32_inno
        echo "Configuring to use $BUILD_DIR on Cygwin/Windows"
        ;;
    *)
        echo "ERROR: Platform $SYSTEM not supported!"
        exit
        ;;
esac


# convert into absolute path
cd "${SCRIPT_DIR}/../.."
auto_build_root_dir=`pwd`
echo "build root: $auto_build_root_dir" 

# clean up and update
# run 'make distclean' first so the autotools Makefiles still exist
echo "--- make distclean -------------------------------------"
make -C ${auto_build_root_dir}/packages/$BUILD_DIR distclean

echo "--- use SCM to clean and update ------------------------"
svn=`find_svn`
# first pass at the root without externals
$svn up --ignore-externals $auto_build_root_dir
# then each folder in the root
for dir in $auto_build_root_dir/*; do
    clean_and_update_folder $dir
    remove_dead_svn_externals $dir
done
remove_dead_svn_externals $auto_build_root_dir

# kludge to restore folders when they've been converted from svn:externals to
# directly checked in
lib_targets=`sed -n 's|^ *LIB_TARGETS +*= *||p' $auto_build_root_dir/externals/Makefile`
cd $auto_build_root_dir/externals
$svn update $lib_targets

echo "--- setting up build -----------------------------------"
cd "${auto_build_root_dir}/packages/$BUILD_DIR"
make -C "${auto_build_root_dir}/packages" set_version
make test_locations
echo "--- environment ----------------------------------------"
set
echo "--- mounts ----------------------------------------"
mount
print_ip_address
echo "--- uname ----------------------------------------"
uname -a

if [ "$1" = "source-tarball-only" ]; then
    echo "--- making source tarball ------------------------------"
    version=`get_pd_version "$auto_build_root_dir"`
    tarballname=Pd-extended_$version-source.tar.bz2
    set_debian_changelog_version $version "${auto_build_root_dir}"
    make_source_tarball "${auto_build_root_dir}" $tarballname
    echo "The source tarball is here:"
    echo "  /tmp/$tarballname"
    echo "Finished cleaning and making source tarball, exiting."
    exit
fi

echo "--- compiling binary package ---------------------------"
make install && make package


echo "--- uploading build results ----------------------------"
upload_build ()
{
    platform_folder=$1
    build_folder=$2
    archive_format=$3
    
    archive=$(ls -1 ${auto_build_root_dir}/packages/${platform_folder}/${build_folder}/Pd*.${archive_format} | tail -1)
    
    echo "upload specs $1 $2 $3"
    echo "Uploading $archive"
    upload_filename=$(ls -1 ${archive} | sed "s|.*/\(.*\)\.${archive_format}|\1-${HOSTNAME}.${archive_format}|")
    if [ -e ${archive} ]; then
        rsync -a --chmod=a+r ${archive} -e ssh ${RSYNC_SERVER}:/home/apt/www/auto-build/${DATE}/${upload_filename}  && \
            md5sum ${archive} | sed "s|^\([0-9a-f][0-9a-f]*  \).*|\1${archive}|" > ${archive}.md5 && \
            rsync -a --chmod=a+r ${archive}.md5 -e ssh ${RSYNC_SERVER}:/home/apt/www/auto-build/${DATE}/${upload_filename}.md5  && \
            echo "successfully uploaded: ${upload_filename}" && \
            echo SUCCESS
    fi
}


case $SYSTEM in 
    linux)
        if [ -x /usr/bin/dpkg-deb ]; then
            upload_build linux_make . deb
        else
            upload_build linux_make build tar.bz2
        fi
        ;;
    darwin)
        upload_build darwin_app . dmg
        ;;
    mingw*)
        upload_build win32_inno Output exe
        upload_build win32_inno zip zip
        ;;
    cygwin*)
        upload_build win32_inno Output exe
        ;;
esac