Newer
Older
#!/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 " -b build a deb (incremental, all platforms)"
echo " -B build a deb (complete recompile)"
echo " -c core Pd source tarball"
echo " -e everything"
echo " -f full installer (incremental)"
echo " -F full installer (complete recompile)"
Albert Gräf
committed
echo " -n skip package creation (-bB, -fF)"
echo " -R build a Raspberry Pi deb (complete recompile)"
echo " -r build a Raspberry Pi deb (incremental)"
echo " -w install custom version of cwiid system-wide"
echo " -X build an OSX installer (dmg)"
echo " -z build a Windows installer (incremental)"
echo " -Z build a Windows installer (complete recompile)"
echo " For custom install locations do the following before"
echo " running this script:"
echo
echo " export inst_dir=/some/custom/location"
echo
exit 1
fi
addon=0
deb=0
core=0
full=0
Albert Gräf
committed
pkg=1
Jonathan Wilkes
committed
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
while getopts ":abBcdefFnRruwXzZ" Option
do case $Option in
a) addon=1;;
b) deb=1
inst_dir=${inst_dir:-/usr};;
B) deb=2
inst_dir=${inst_dir:-/usr};;
c) core=1;;
e) addon=1
core=1
full=1;;
f) full=1;;
F) full=2;;
n) pkg=0;;
R) deb=2
inst_dir=/usr
rpi=1;;
r) deb=1
inst_dir=/usr
rpi=1;;
w) sys_cwiid=1
;;
X) dmg=1
inst_dir=/usr;;
z) inno=1
inst_dir=/usr;;
Z) inno=2
inst_dir=/usr;;
*) echo "Error: unknown option";;
esac
done
inst_dir=${inst_dir:-/usr/local}
export TAR_EM_UP_PREFIX=$inst_dir
# Get the OS we're running under, normalized to names that can be used
# to fetch the nwjs binaries below
os=`uname | tr '[:upper:]' '[:lower:]'`
if [[ $os == *"mingw32"* ]]; then
os=win
fi
if [[ $os == "darwin" ]]; then
os=osx
fi
# Fetch the nw.js binary if we haven't already. We want to fetch it even
# for building with no libs, so we do it regardless of the options
echo nwjs-sdk-v0.16.0-`uname | tr '[:upper:]' '[:lower:]'`
if [ ! -d "../pd/nw/nw" ]; then
if [ `getconf LONG_BIT` -eq 32 ]; then
arch="ia32"
else
arch="x64"
fi
if [ `uname -m` == "armv7l" ]; then
if [[ $os == "win" || $os == "osx" ]]; then
else
ext="tar.gz"
fi
if [[ $os == "win" || $osx_version == "10.8" ]]; then
# We need the lts version to be able to run on XP. For
# simplicity we use that same version for 64 bit Windows, too
nwjs_version="v0.14.7"
else
# temporary kluge for rpi-- only 0.15.1 is available atm
if [ `uname -m` == "armv7l" ]; then
nwjs_version="v0.22.1"
nwjs="nwjs-sdk"
nwjs_dirname=${nwjs}-${nwjs_version}-${os}-${arch}
nwjs_filename=${nwjs_dirname}.${ext}
Jonathan Wilkes
committed
nwjs_url=https://git.purrdata.net/jwilkes/nwjs-binaries/raw/master
nwjs_url=${nwjs_url}/$nwjs_filename
echo "Fetching the nwjs binary from"
echo "$nwjs_url"
wget -nv $nwjs_url || exit 1
if [[ $os == "win" || $os == "osx" ]]; then
unzip $nwjs_filename
else
tar -xf $nwjs_filename
fi
Jonathan Wilkes
committed
# Special case for arm binary's inconsistent directory name
# (It's not the same as the `uname -m` output)
if [ `uname -m` == "armv7l" ]; then
nwjs_dirname=`echo $nwjs_dirname | sed 's/armv7l/arm/'`
fi
mv $nwjs_dirname ../pd/nw/nw
Jonathan Wilkes
committed
# make sure the nw binary is executable on GNU/Linux
if [[ $os != "win" && $dmg == 0 ]]; then
chmod 755 ../pd/nw/nw/nw
fi
rm $nwjs_filename
fi
# For Windows, fetch the ASIO SDK if we don't have it already
if [[ $os == "win" ]]; then
if [ ! -d "../pd/lib" ]; then
mkdir ../pd/lib
wget http://www.steinberg.net/sdk_downloads/asiosdk2.3.zip
unzip asiosdk2.3.zip
mv ASIOSDK2.3 ../pd/lib
fi
fi
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 ../../
Jonathan Wilkes
committed
tar -jcf ./Pd-l2ork-`date +%Y%m%d`.tar.bz2 pd
if [ $full -gt 0 -o $deb -gt 0 -o $inno -gt 0 -o $dmg -gt 0 ]
echo "Pd-L2Ork full installer... IMPORTANT! To ensure you have the most up-to-date submodules, this process requires internet connection to pull sources from various repositories..."
Ivica Bukvic
committed
if [ -d .git ]; then
# check if Gem submodule is empty, and if so do first init
if [ "$(ls -A Gem)" ]; then
Jonathan Wilkes
committed
git submodule update
#git submodule foreach git pull origin master
Ivica Bukvic
committed
else
# init all submodules (only necessary the first time)
Ivica Bukvic
committed
git submodule init
Jonathan Wilkes
committed
git submodule update
#git submodule foreach git pull origin master
Ivica Bukvic
committed
fi
if [ $full -eq 2 -o $deb -eq 2 -o $inno -eq 2 -o $dmg -eq 2 ]
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
# clean files that may remain stuck even after doing global make clean (if any)
cd externals/miXed
make clean
Ivica Bukvic
committed
cd ../
make gem_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 Bukvic
committed
export INCREMENTAL=""
Ivica Bukvic
committed
export INCREMENTAL="yes"
Jonathan Wilkes
committed
cd ../pd/src && aclocal && autoconf
if [[ $os == "win" ]]; then
cd ../../packages/win32_inno
else
cd ../../packages/linux_make
fi
if [ $full -gt 1 -o $deb -eq 2 -o $inno -eq 2 -o $dmg -eq 2 ]
cp ../../pd/src/g_all_guis.h ../../externals/build/include
cp ../../pd/src/g_canvas.h ../../externals/build/include
cp ../../pd/src/m_imp.h ../../externals/build/include
cp ../../pd/src/m_pd.h ../../externals/build/include
cp ../../pd/src/s_stuff.h ../../externals/build/include
cp ../../pd/src/t_tk.h ../../externals/build/include
cp ../../pd/src/g_all_guis.h ../../externals/build/include
if [ $rpi -eq 0 ]
then
echo "installing desktop version..."
cp -f debian/control.desktop debian/control
cp -f ../../l2ork_addons/flext/config-lnx-pd-gcc.txt.intel ../../externals/grill/trunk/flext/buildsys/config-lnx-pd-gcc.txt
else
echo "installing raspbian version..."
cp -f debian/control.raspbian debian/control
cp -f ../../l2ork_addons/flext/config-lnx-pd-gcc.txt.rpi ../../externals/grill/trunk/flext/buildsys/config-lnx-pd-gcc.txt
cat ../../externals/OSCx/src/Makefile | sed -e s/-lpd//g > ../../externals/OSCx/src/Makefile
fi
if [[ $os == "win" ]]; then
echo "Making Windows package..."
echo `pwd`
make install && make package
echo "Making OSX package (dmg)..."
echo `pwd`
make install && make package
else
make install prefix=$inst_dir
fi
Ivica Bukvic
committed
echo "copying pd-l2ork-specific externals..."
# create images folder
mkdir -p ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra/images
if [[ $os == "win" ]]; then
cd ../../l2ork_addons
else
cd ../../l2ork_addons/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 ../../
fi
# install raspberry pi externals (if applicable)
Jonathan Wilkes
committed
if [ $inno -eq 0 -a $dmg -eq 0 ]; then
cd raspberry_pi
./makeall.sh
cp -f disis_gpio/disis_gpio.pd_linux ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
cp -f disis_gpio/disis_gpio-help.pd ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
cp -f disis_spi/disis_spi.pd_linux ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
cp -f disis_spi/disis_spi-help.pd ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
cd ../
fi
echo "done with l2ork addons."
Albert Gräf
committed
cd ../
Jonathan Wilkes
committed
if [ $inno -eq 0 -a $dmg -eq 0 ]; then
cd packages/linux_make
rm -f build/usr/local/lib/pd
if [ $pkg -gt 0 ]; then
echo "tar full installer..."
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
Jonathan Wilkes
committed
mv *.deb ../../
else
#rm -f ../../../Pd-l2ork-full-`uname -m`-`date +%Y%m%d`.tar.bz2 2> /dev/null
#mv build/Pd*bz2 ../../../Pd-l2ork-full-`uname -m`-`date +%Y%m%d`.tar.bz2
Jonathan Wilkes
committed
mv -f build/pd*bz2 ../..
fi
elif [ $deb -gt 0 ]; then
make debstage prefix=$inst_dir
fi
cd ../../
# move OSX dmg installer
elif [ $dmg -gt 0 ]; then
mv packages/darwin_app/Pd*.dmg .
Albert Gräf
committed
fi
fi
if [ $addon -eq 1 ]
then
echo "l2ork addons..."
rm -f ../l2ork_addons-`uname -m`-`date +%Y%m%d`.tar.bz2 2> /dev/null
#cp -rf /usr/local/lib/pd/* l2ork_addons/externals/
tar -jcf ../l2ork_addons-`uname -m`-`date +%Y%m%d`.tar.bz2 l2ork_addons
fi
cd l2ork_addons/
echo "done."
exit 0