tar_em_up.sh 10.6 KB
Newer Older
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
# super-simplistic installer for l2ork things by Ivica Ico Bukvic <ico@vt.edu>
# for info on L2Ork visit http://l2ork.music.vt.edu

if [ $# -eq 0 ] # should check for no arguments
then
	echo
	echo "   Usage: ./tar_em_up.sh -option1 -option2 ..."
	echo "   Options:"
	echo "     -a    l2ork addon to the dev package"
	echo "     -c    core Pd"
	echo "     -d    whole dev folder"
	echo "     -e    everything"
	echo "     -u    full installer for end-users without sudo"
	echo
	echo "   Options for devs only (please ignore):"
Ivica Bukvic's avatar
Ivica Bukvic committed
17
	echo "     -b    build a deb (incremental, all platforms)"
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
18
	echo "     -B    build a deb (complete recompile)"
Ivica Bukvic's avatar
Ivica Bukvic committed
19
	echo "     -R    build a Raspberry Pi deb (complete recompile)"
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
20
21
22
23
24
25
26
27
28
29
30
31
32
	echo "     -f    full installer (incremental)"
	echo "     -F    full installer (complete recompile)"
	echo "     -w    do not install cwiid system-wide"
	echo
	exit 1
fi

addon=0
deb=0
core=0
dev=0
full=0
no_cwiid=0
Ivica Bukvic's avatar
Ivica Bukvic committed
33
rpi=0
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
34
35
36

inst_dir=/usr/local

Ivica Bukvic's avatar
Ivica Bukvic committed
37
while getopts ":abBcdefFRuw" Option
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
38
39
40
41
42
43
44
45
46
do case $Option in
		a)		addon=1;;

		b)		deb=1
				inst_dir=/usr;;

		B)		deb=2
				inst_dir=/usr;;

Ivica Bukvic's avatar
Ivica Bukvic committed
47
48
49
50
		R)		deb=2
				inst_dir=/usr
				rpi=1;;

Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
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
		c)		core=1;;

		d)		dev=1;;

		e)		addon=1
				core=1
				dev=1
				full=1;;

		f)		full=1;;

		F)		full=2;;

		u)		full=3
				echo "
You've selected sudo-less version of the installer. Please note that this option, while not requiring sudo, may generate broken binaries if you are running other versions of pd on your system. To avoid this, you have two options:

1) Uninstall other versions of the software

2) Use -f or -F options for the devs instead that automatically guide you through sudo options and install Pd-l2ork in the /usr/local/ folder. Please note that you need to have sudo enabled on your system in order to use this option. You can use -f option if you've only made small changes to your build environment but have already built most of the binaries. This will be a lot faster. Otherwise use option -F.

Press any key to continue or CTRL+C to cancel install..."
				read dummy
				;;
		w)		no_cwiid=1
				;;

		*)		echo "Error: unknown option";;
	esac
done

cd ../

if [ $core -eq 1 ]
then
	echo "core Pd..."
	rm -f ../Pd-l2ork-`date +%Y%m%d`.tar.bz2 2> /dev/null
	cd pd/src/
	make clean
	cd ../../
	tar -jcf ../Pd-l2ork-`date +%Y%m%d`.tar.bz2 pd
fi

if [ $dev -eq 1 ]
then
	echo "Pd dev package..."
	cd doc/
	svn checkout https://pure-data.svn.sourceforge.net/svnroot/pure-data/trunk/doc .
99
	cp -f ../l2ork_addons/doc/Makefile .
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
	cd ..
	cd externals/miXed
	make clean
	cd ../
	make distclean
	cd ../pd/src
	make distclean
	cd ../../Gem/src/
	make distclean
	rm -rf ./.libs
	rm -rf ./*/.libs
	cd ../
	make distclean
	rm gemglutwindow.pd_linux
	rm Gem.pd_linux
	cd ../packages/linux_make
	make distclean
117
118
119
	cd ../../
	gitfolder=`basename $PWD`
	cd ../
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
120
121
	rm -f pd-l2ork-dev-`date +%Y%m%d`.tar.bz2 2> /dev/null
	echo "tar dev installer..."
122
123
	tar -jcf pd-l2ork-dev-`date +%Y%m%d`.tar.bz2 $gitfolder
	cd $gitfolder
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
124
125
126
127
fi

if [ $full -gt 0 -o $deb -gt 0 ]
then
128
	echo "Pd full installer... IMPORTANT! When ran for the first time this step requires internet connection to pull sources from other repositories..."
129
130
131
132
133
134
135

	# check if Gem submodule is empty, and if so do first init
	if [ "$(ls -A Gem)" ]; then
		git submodule update
	else
		git submodule init
		git submodule update
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
136
137
	fi

138
139
140
141
142
	# update the include files to be safe
	#if [ ! -d "/usr/local/include/pdl2ork" ]; then
	#	sudo mkdir /usr/local/include/pdl2ork
	#fi

Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
	#if [ $full -eq 3 ]
	#then
	#	echo "IMPORTANT! If you are already running vanilla Pd or Pd-extended, or have a custom installation of Pd-l2ork at a location other than /usr/local/lib/pd-l2ork, you will want to EITHER uninstall all older versions of Pd-l2ork and/or other versions of pd OR manually pre-install Pd-l2ork includes in order to ensure that any third-party externals that rely on the global Pd-l2ork includes reference the right versions of the said files. Failing to do so may result in incorrectly compiled externals that will definitely crash Pd-l2ork. You can install the includes into their default dir /usr/local/include by typing following commands:"
	#	echo
	#	echo "sudo cp -f -v pd/src/g_all_guis.h /usr/local/include/pdl2ork/"
	#	echo "sudo cp -f -v pd/src/g_canvas.h /usr/local/include/pdl2ork/"
	#	echo "sudo cp -f -v pd/src/m_imp.h /usr/local/include/pdl2ork/"
	#	echo "sudo cp -f -v pd/src/m_pd.h /usr/local/include/pdl2ork/"
	#	echo "sudo cp -f -v pd/src/s_stuff.h /usr/local/include/pdl2ork/"
	#	echo
	#	echo "If you don't have sudo enabled, replace sudo commands with the appropraite alternative before pasting aforesaid lines in the terminal.
#
#PLEASE NOTE that because both Pd and Pd-l2ork use the includes with the same name, depending on your system's setup, skipping this step may result in a failed build. Press any key to continue or CTRL+C to cancel install and manually copy the said files first (or use -f or -F options to have these steps performed automatically)..."
	#	read dummy
	#else
	#	echo "First we will copy updated includes... You may have to enter your sudo password..."
	#	sudo mkdir $inst_dir/include/pdl2ork/
	#	sudo cp -f -v pd/src/g_all_guis.h $inst_dir/include/pdl2ork/
	#	sudo cp -f -v pd/src/g_canvas.h $inst_dir/include/pdl2ork/
	#	sudo cp -f -v pd/src/m_imp.h $inst_dir/include/pdl2ork/
	#	sudo cp -f -v pd/src/m_pd.h $inst_dir/include/pdl2ork/
	#	sudo cp -f -v pd/src/s_stuff.h $inst_dir/include/pdl2ork/
	#fi

	# update docs
	cd doc/
	svn checkout https://pure-data.svn.sourceforge.net/svnroot/pure-data/trunk/doc .
170
	cp -f ../l2ork_addons/doc/Makefile .
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
171
172
	cd ..

173
	if [ $full -eq 2 -o $full -eq 3 -o $deb -eq 2 ]
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
174
175
176
	then
	#	echo "Since we are doing a complete recompile we are assuming we will need to install l2ork version of the cwiid library. You will need to remove any existing cwiid libraries manually as they will clash with this one. L2Ork version is fully backwards compatible while also offering unique features like full extension support including the passthrough mode. YOU SHOULD REMOVE EXISTING CWIID LIBRARIES PRIOR TO RUNNING THIS INSTALL... You will also have to enter sudo password to install these... Press any key to continue or CTRL+C to cancel install..."
	#	read dummy
177
178
	#	if [ $no_cwiid -eq 0 ]
	#	then
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
179
180
181
182
183
184
			cd l2ork_addons/cwiid/
			# install cwiid
			aclocal
			autoconf
			./configure
			make
185
186
187
188
			# we have disabled system-wide install because as of 23-03-2013
			# we now statically link disis_wiimote against custom L2Ork version
			# of the cwiid library
			# sudo make install
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
189
			cd ../../
190
	#	fi
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
191
192
193
194
195
196
197
198
199
200
201
202
203
		# clean files that may remain stuck even after doing global make clean (if any)
		cd externals/miXed
		make clean
		cd ../../Gem/src/
		make distclean
		rm -rf ./.libs
		rm -rf ./*/.libs
		cd ../
		make distclean
		rm gemglutwindow.pd_linux
		rm Gem.pd_linux
		aclocal
		./autogen.sh
204
205
206
207
208
209
210
211
212
213
	#elif [ $full -eq 3 ]
	#then
	#	echo "Since pd-l2ork relies on a unique version of cwiid library, we will need to install it to make disis_wiimote external work properly. YOU SHOULD REMOVE EXISTING CWIID LIBRARIES PRIOR TO RUNNING THIS INSTALL... No worries though, L2Ork version is fully backwards compatible while also offering unique features like full extension support including the passthrough mode. To install cwiid library go to <pd-l2ork-root-git-folder>/l2ork-addons/cwiid/ folder and install it using the usual:"
	#	echo
	#	echo "./configure"
	#	echo "make"
	#	echo "sudo make install"
	#	echo
	#	echo "As an alternative, you can also use the -f or -F options instead of an -u option to have this performed automatically. Please note that options -f and -F require that your system has sudo enabled. Press any key to continue or CTRL+C to cancel install..."
	#	read dummy
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
214
		# clean files that may remain stuck even after doing global make clean (if any)
215
216
217
218
219
220
221
222
223
224
225
226
	#	cd externals/miXed
	#	make clean
	#	cd ../../Gem/src/
	#	make distclean
	#	rm -rf ./.libs
	#	rm -rf ./*/.libs
	#	cd ../
	#	make distclean
	#	rm gemglutwindow.pd_linux
	#	rm Gem.pd_linux
	#	aclocal
	#	./autogen.sh
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
227
228
229
	else
		cd Gem/
	fi
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
230
	#git pull
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
231
232
233
234
235
236
	cd ../packages/linux_make
	if [ $full -gt 1 -o $deb -eq 2 ]
	then
		make distclean
		rm -rf build/
	fi
Ivica Bukvic's avatar
Ivica Bukvic committed
237
238
239
240
241
242
243
244
245
	if [ $rpi -eq 0 ]
	then
		echo "installing desktop version..."
		cp -f debian/control.desktop debian/control
	else
		echo "installing raspbian version..."
		cp -f debian/control.raspbian debian/control
		cat ../../externals/OSCx/src/Makefile | sed -e s/-lpd//g > ../../externals/OSCx/src/Makefile
	fi
Ivica Ico Bukvic's avatar
Ivica Ico Bukvic committed
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
	make install prefix=$inst_dir
	echo "copying l2ork-specific externals..."
	# patch_name
	cd ../../l2ork_addons/patch_name
	make clean
	make
	cp -f patch_name.pd_linux ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	cp -f patch_name-help.pd ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	# disis_wiimote
	cd ../disis_wiimote
	make clean
	make
	cp -f disis_wiimote.pd_linux ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	cp -f disis_wiimote-help.pd ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	# disis_netsend
	cd ../disis_netsend
	make clean
	make
	cp -f disis_netsend.pd_linux ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	cp -f disis_netsend-help.pd ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	# disis_netreceive
	cd ../disis_netreceive
	make clean
	make
	cp -f disis_netreceive.pd_linux ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	cp -f disis_netreceive-help.pd ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	# disis_phasor
	cd ../disis_phasor
	make clean
	make
	cp -f disis_phasor~.pd_linux ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	cp -f disis_phasor~-help.pd ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	# spectdelay
	cd ../spectdelay/spectdelay~
	./linux-install.sh
	cp -f spectdelay~.pd_linux ../../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	cp -f spectdelay~-help.pd ../../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	cp -f array* ../../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
	# return to l2ork_addons folder
	cd ../../
	# finish install
	cd ../packages/linux_make
	echo "tar full installer..."
	rm -f build/usr/local/lib/pd
	if [ $deb -gt 0 ]
	then
		cd build/
		rm -rf DEBIAN/ etc/
		cd ../
		make deb prefix=$inst_dir
	else
		make tarbz2 prefix=$inst_dir
	fi
	echo "move full installer..."
	if [ $deb -gt 0 ]
	then
		mv *.deb ../../../
	else
		#rm -f ../../../Pd-l2ork-full-`arch`-`date +%Y%m%d`.tar.bz2 2> /dev/null
		#mv build/Pd*bz2 ../../../Pd-l2ork-full-`arch`-`date +%Y%m%d`.tar.bz2
		mv -f build/pd*bz2 ../../..
	fi
	cd ../../
fi

if [ $addon -eq 1 ]
then
	echo "l2ork addons..."
	rm -f ../l2ork_addons-`arch`-`date +%Y%m%d`.tar.bz2 2> /dev/null
	#cp -rf /usr/local/lib/pd/* l2ork_addons/externals/
	tar -jcf ../l2ork_addons-`arch`-`date +%Y%m%d`.tar.bz2 l2ork_addons
fi

cd l2ork_addons/

echo "done."

exit 0