make makeself compression options optional.
[ardour.git] / tools / linux_packaging / package
1 #!/bin/bash
2
3 # package
4
5 # This will collect up the x86 and x86_64 bundles created by build
6 # and package them together with an installer script.
7
8 BUILDTYPE=""
9 SINGLE_ARCH="F"
10 X86_BUNDLE_OK="F"
11 X86_64_BUNDLE_OK="F"
12 GCC5ABI="F"
13 MAKESELF=""
14 BUILD_ROOT=../../build
15
16 MAKESELFOPTS="--bzip2"
17
18 if [ $# -eq 0 ] ; then
19         echo ""  
20         echo "ERROR - Please specify build type"
21         echo "    --public"
22         echo "    --sae"
23         echo ""  
24         exit 1
25 fi
26
27 while [ $# -gt 0 ] ; do
28         echo "arg = $1"
29         case $1 in
30
31         #
32         # top level build targets
33         #
34
35         --sae)
36                 APPNAME=Ardour ;
37                 shift ;;
38         --mixbus)
39                 APPNAME=Mixbus ;
40                 shift ;;
41         --mixbus32c)
42                 APPNAME=Mixbus32C ;
43                 shift ;;
44         --public)
45                 APPNAME=Ardour ;
46                 shift ;;
47
48         --makeself)
49                 MAKESELF=`which makeself`;
50                 shift ;;
51
52         --singlearch) SINGLE_ARCH="T" ; shift ;;
53
54         --gcc5abi) GCC5ABI="T" ; shift ;;
55
56         --xz) MAKESELFOPTS="--xz --complevel 9" ; shift ;;
57
58         *)
59                 #catch all for unknown arguments
60                 echo ""
61                 echo "!!! ERROR !!! - Unknown argument $1"
62                 echo ""
63                 exit 1
64                 ;;
65         esac
66 done
67
68 . ../define_versions.sh
69
70 if [ x$DEBUG = xT ]; then
71         BUILDTYPE="dbg"
72 fi
73
74 X86_BUNDLE="${APPNAME}_x86-${release_version}"
75 X86_64_BUNDLE="${APPNAME}_x86_64-${release_version}"
76
77 if [ ! -z ${BUILDTYPE} ]; then
78         X86_BUNDLE="${X86_BUNDLE}-${BUILDTYPE}"
79         X86_64_BUNDLE="${X86_64_BUNDLE}-${BUILDTYPE}"
80 fi 
81
82 if [ ! -e ${X86_BUNDLE}.tar ] ; then
83         echo ""
84         echo "Can't locate x86 bundle file ${X86_BUNDLE}.tar"
85         echo ""
86 elif [ ! -e ${X86_BUNDLE}.size ] ; then
87         echo ""
88         echo "Can't locate x86 bundle size file ${X86_BUNDLE}.size"
89         echo ""
90 else
91         X86_BUNDLE_OK="T"
92 fi
93
94 if [ ! -e ${X86_64_BUNDLE}.tar ]; then
95         echo ""
96         echo "Can't locate x86_64 bundle file ${X86_64_BUNDLE}.tar"
97         echo ""
98 elif [ ! -e ${X86_64_BUNDLE}.size ]; then
99         echo ""
100         echo "Can't locate x86 bundle size file ${X86_BUNDLE}.size"
101         echo ""
102 else
103         X86_64_BUNDLE_OK="T"
104 fi
105
106
107 if [ "${X86_BUNDLE_OK}" = "F" ] || [ "${X86_64_BUNDLE_OK}" = "F" ]; then
108         if [ "${X86_BUNDLE_OK}" = "${X86_64_BUNDLE_OK}" ]; then
109                 echo ""
110                 echo "!!! ERROR !!! - Can't locate bundle files ${X86_BUNDLE} or ${X86_64_BUNDLE}"
111                 echo ""
112                 exit 1
113         elif [ "${SINGLE_ARCH}" = "T" ]; then
114                 echo ""
115                 echo "!!! Warning !!! - A single architecture package has been selected"
116                 echo ""
117         else
118                 echo ""
119                 echo "!!! ERROR !!! - Missing bundle files."
120                 echo ""
121                 exit 1
122         fi
123 fi
124
125
126
127 if [ -z ${BUILDTYPE} ]; then
128         if [ "${SINGLE_ARCH}" = "T" ]; then
129                 if [ "${X86_BUNDLE_OK}" = "T" ]; then
130                         PACKAGE="${APPNAME}_32bit-${release_version}"
131                 else
132                         PACKAGE="${APPNAME}_64bit-${release_version}"
133                 fi
134         else
135                 PACKAGE="${APPNAME}-${release_version}"
136         fi
137 else
138         if [ "${SINGLE_ARCH}" = "T" ]; then
139                 if [ "${X86_BUNDLE_OK}" = "T" ]; then
140                         PACKAGE="${APPNAME}_32bit-${release_version}-${BUILDTYPE}"
141                 else
142                         PACKAGE="${APPNAME}_64bit-${release_version}-${BUILDTYPE}"
143                 fi
144         else
145                 PACKAGE="${APPNAME}-${release_version}-${BUILDTYPE}"
146         fi
147 fi 
148
149 if [ "$GCC5ABI" = "T" ]; then
150         PACKAGE="${PACKAGE}-gcc5"
151 fi
152
153 echo "Cleaning up any old package files for this build"
154 #Get rid of any old packages of this same name.
155 rm -f ${PACKAGE}.tar
156 rm -rf ${PACKAGE}
157
158
159 echo "Creating new package dir..."
160 mkdir ${PACKAGE}
161
162 if [ "${X86_BUNDLE_OK}" = "T" ]; then
163         mv ${X86_BUNDLE}.tar ${PACKAGE}
164         mv ${X86_BUNDLE}.size ${PACKAGE}/.${X86_BUNDLE}.size
165 fi
166
167 if [ "${X86_64_BUNDLE_OK}" = "T" ]; then
168         mv ${X86_64_BUNDLE}.tar ${PACKAGE}
169         mv ${X86_64_BUNDLE}.size ${PACKAGE}/.${X86_64_BUNDLE}.size
170 fi
171
172 cp install.sh ${PACKAGE}
173 cp stage2.run ${PACKAGE}/.stage2.run
174 cp README ${PACKAGE}
175
176 # gcc4/5 ABI test tool
177 if [ -e $BUILD_ROOT/tools/gccabicheck/gcc-glibmm-abi-check ]; then
178         cp $BUILD_ROOT/tools/gccabicheck/gcc-glibmm-abi-check ${PACKAGE}/.gcc-glibmm-abi-check
179 else
180         echo "!!!ERROR !!! gcc-glibmm-abi-check program is missing. packager will exit without being complete"
181         rm -rf ${PACKAGE}
182         rm -f stage2.run
183         exit 1
184 fi
185
186 if test -n "$MAKESELF"; then
187         echo "Creating self-extracting installer"
188         $MAKESELF ${MAKESELFOPTS} ${PACKAGE}/ ${PACKAGE}.run ${APPNAME} ./install.sh
189 else
190         echo "Creating tarball..."
191         tar -cf ${PACKAGE}.tar ${PACKAGE}
192 fi
193
194 echo "Clean up"
195 rm -rf ${PACKAGE}
196 rm -f stage2.run
197
198 echo ""
199 echo "Done"
200 echo ""