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