#!/bin/sh -xe # This script is primarily made for the linuxsampler build server. It # copies the files created by the previous Max OS X build steps. Then # it packs all components as a .pkg Mac installer package and finally # it wraps everything in a tar.bz2 archive. LIPO=x86_64-apple-darwin9-lipo P=/home/persson/mac64 D=linuxsampler_`date +%Y%m%d` # command line tools shipped with libgig gigtools_bins="akaidump akaiextract dlsdump gig2mono gig2stereo gigdump gigextract gigmerge korg2gig korgdump rifftree sf2dump sf2extract" createuniv () { # we no longer support i686 and powerpc # $LIPO -create "$P/x86_64/$1" "$P/i686/$1" "$P/powerpc/$1" \ # -output "$D/${2-$1}" cp -a "$P/$1" "$D/${2-$1}" } rm -rf linuxsampler_* rm -rf components rm -rf linuxsampler.prepkg rm -rf LinuxSampler.pkg mkdir -p "$D/LinuxSampler" "$D/lib" # linuxsampler, libgig and dependencies createuniv lib/libogg.0.dylib createuniv lib/libvorbis.0.dylib createuniv lib/libvorbisenc.2.dylib createuniv lib/libFLAC.8.dylib createuniv lib/libsndfile.1.dylib createuniv lib/libgig/libgig.11.dylib lib/libgig.11.dylib createuniv lib/linuxsampler/liblinuxsampler.7.dylib lib/liblinuxsampler.7.dylib createuniv bin/linuxsampler LinuxSampler/linuxsampler createuniv bin/lscp LinuxSampler/lscp cp README "$D" cp licenses.txt "$D/LinuxSampler" # AU plugin cp -r "$P/Components/LinuxSamplerAU.component" "$D" createuniv Components/LinuxSamplerAU.component/Contents/MacOS/LinuxSamplerAU LinuxSamplerAU.component/Contents/MacOS/LinuxSamplerAU # VST plugin cp -r "$P/VST/LinuxSampler.vst" "$D" createuniv VST/LinuxSampler.vst/Contents/MacOS/LinuxSampler LinuxSampler.vst/Contents/MacOS/LinuxSampler # gigtools for x in $gigtools_bins do createuniv "bin/$x" "LinuxSampler/$x" done # Fantasia cp -r "/home/persson/mac/Fantasia.app" "$D/LinuxSampler" # QSampler ./make-qsampler-app.sh mv qsampler.app "$D/LinuxSampler" # Gigedit # no powerpc build of gigedit createuniv () { #$LIPO -create "$P/x86_64/$1" "$P/i686/$1" \ # -output "$D/${2-$1}" cp -a "$P/$1" "$D/${2-$1}" } mkdir -p "$D/LinuxSampler/gigedit.app/Contents/MacOS" \ "$D/lib/gdk-pixbuf-2.0/2.10.0/loaders" \ "$D/share/locale/sv/LC_MESSAGES" \ "$D/share/locale/de/LC_MESSAGES" \ "$D/lib/linuxsampler/plugins" createuniv lib/gigedit/libgigedit.6.dylib lib/libgigedit.6.dylib createuniv bin/gigedit LinuxSampler/gigedit.app/Contents/MacOS/gigedit createuniv lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so for x in libatk-1.0.0.dylib libatkmm-1.6.1.dylib libcairo.2.dylib \ libcairo-gobject.2.dylib \ libcairomm-1.0.1.dylib libepoxy.0.dylib libffi.6.dylib libfontconfig.1.dylib \ libfreetype.6.dylib libgailutil-3.0.dylib libgdk-3.0.dylib libgdkmm-3.0.1.dylib \ libgdk_pixbuf-2.0.0.dylib libgio-2.0.0.dylib \ libgiomm-2.4.1.dylib libglib-2.0.0.dylib libglibmm-2.4.1.dylib \ libgmodule-2.0.0.dylib libgobject-2.0.0.dylib libgthread-2.0.0.dylib \ libgtk-3.0.dylib libgtkmm-3.0.1.dylib libintl.9.dylib \ libpango-1.0.0.dylib libpangocairo-1.0.0.dylib \ libpangomm-1.4.1.dylib libpixman-1.0.dylib libpng16.16.dylib \ libsigc-2.0.0.dylib \ gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so \ gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so \ libharfbuzz.0.dylib libpangoft2-1.0.0.dylib libfribidi.0.dylib do #$LIPO -create "/home/persson/macgtk64/lib/$x" \ #"/home/persson/macgtk32/lib/$x" \ #-output "$D/lib/$x" cp -a "$P/lib/$x" "$D/lib/$x" done cp PkgInfo Info.plist "$D/LinuxSampler/gigedit.app/Contents" cp loaders.cache "$D/lib/gdk-pixbuf-2.0/2.10.0" cp $P/share/locale/de/LC_MESSAGES/gigedit.mo "$D/share/locale/de/LC_MESSAGES" cp $P/share/locale/sv/LC_MESSAGES/gigedit.mo "$D/share/locale/sv/LC_MESSAGES" cp $P/share/locale/de/LC_MESSAGES/gtk30.mo "$D/share/locale/de/LC_MESSAGES" cp $P/share/locale/sv/LC_MESSAGES/gtk30.mo "$D/share/locale/sv/LC_MESSAGES" cd $D (cd $P ; \ tar cf - \ share/glib-2.0/schemas/gschemas.compiled \ share/icons/Adwaita/index.theme \ share/icons/Adwaita/16x16/actions/application-exit.png \ share/icons/Adwaita/16x16/actions/bookmark-new-symbolic.symbolic.png \ share/icons/Adwaita/16x16/actions/document-new.png \ share/icons/Adwaita/16x16/actions/document-open.png \ share/icons/Adwaita/16x16/actions/document-open-recent-symbolic.symbolic.png \ share/icons/Adwaita/16x16/actions/document-properties.png \ share/icons/Adwaita/16x16/actions/document-save-as.png \ share/icons/Adwaita/16x16/actions/document-save.png \ share/icons/Adwaita/16x16/actions/edit-clear-symbolic.symbolic.png \ share/icons/Adwaita/16x16/actions/edit-copy.png \ share/icons/Adwaita/16x16/actions/edit-delete.png \ share/icons/Adwaita/16x16/actions/edit-find-symbolic.symbolic.png \ share/icons/Adwaita/16x16/actions/go-down.png \ share/icons/Adwaita/16x16/actions/go-up.png \ share/icons/Adwaita/16x16/actions/help-about.png \ share/icons/Adwaita/16x16/actions/list-add.png \ share/icons/Adwaita/16x16/actions/list-add-symbolic.symbolic.png \ share/icons/Adwaita/16x16/actions/list-remove.png \ share/icons/Adwaita/16x16/actions/list-remove-symbolic.symbolic.png \ share/icons/Adwaita/16x16/actions/media-eject-symbolic.symbolic.png \ share/icons/Adwaita/16x16/actions/pan-down-symbolic.symbolic.png \ share/icons/Adwaita/16x16/actions/pan-end-symbolic.symbolic.png \ share/icons/Adwaita/16x16/actions/pan-start-symbolic.symbolic.png \ share/icons/Adwaita/16x16/actions/pan-up-symbolic.symbolic.png \ share/icons/Adwaita/16x16/actions/window-close.png \ share/icons/Adwaita/16x16/devices/drive-harddisk-symbolic.symbolic.png \ share/icons/Adwaita/16x16/mimetypes/inode-directory-symbolic.symbolic.png \ share/icons/Adwaita/16x16/mimetypes/text-x-generic.png \ share/icons/Adwaita/16x16/places/folder-documents-symbolic.symbolic.png \ share/icons/Adwaita/16x16/places/folder-download-symbolic.symbolic.png \ share/icons/Adwaita/16x16/places/folder-music-symbolic.symbolic.png \ share/icons/Adwaita/16x16/places/folder-pictures-symbolic.symbolic.png \ share/icons/Adwaita/16x16/places/folder-videos-symbolic.symbolic.png \ share/icons/Adwaita/16x16/places/user-desktop.png \ share/icons/Adwaita/16x16/places/user-desktop-symbolic.symbolic.png \ share/icons/Adwaita/16x16/places/user-home-symbolic.symbolic.png \ share/icons/Adwaita/16x16/places/user-trash-symbolic.symbolic.png \ share/icons/Adwaita/16x16/status/image-missing.png \ share/icons/Adwaita/32x32/devices/drive-harddisk.png \ share/icons/hicolor/index.theme) | tar xf - cd .. # generate OS X .pkg package / installer ... component="codecs" dlib="components/$component.pkg/lib" mkdir -p $dlib for f in `ls $D/lib/libFLAC* $D/lib/libogg* $D/lib/libsndfile* $D/lib/libvorbis*`; do cp $f $dlib done component="fantasia" dlib="components/$component.pkg/LinuxSampler" mkdir -p $dlib cp -r $D/LinuxSampler/Fantasia.app $dlib component="gigedit" dlib="components/$component.pkg/LinuxSampler" mkdir -p $dlib cp -r $D/LinuxSampler/$component.app $dlib component="libgig" dlib="components/$component.pkg/lib" mkdir -p $dlib for f in `ls $D/lib/libgig.*`; do cp $f $dlib done component="gigtools" dlib="components/$component.pkg/bin" mkdir -p $dlib for f in $gigtools_bins; do cp $D/LinuxSampler/$f $dlib done dlib="components/$component.pkg/share/man/man1" mkdir -p $dlib for f in $gigtools_bins; do cp $P/share/man/man1/$f.1 $dlib done component="libgigedit" dlib="$PWD/components/$component.pkg/lib" mkdir -p $dlib ( cd $D/lib/ for f in `ls -d linuxsampler libgigedit*`; do cp -r --parents $f $dlib done ) dlib="$PWD/components/$component.pkg" ( cd $D cp --parents share/locale/*/LC_MESSAGES/gigedit.mo $dlib ) component="libgtk" dlib="$PWD/components/$component.pkg/lib" mkdir -p $dlib ( cd $D/lib/ for f in `ls -d gdk* libatk* libcairo* libepoxy* libffi* libfont* libfreetype* libfribidi* libgailutil* libgdk* libgio* libglib* libgmodule* libgobject* libgthread* libgtk* libharfbuzz* libintl* libpango* libpixman* libpng* libsigc*`; do cp -r --parents $f $dlib done ) dlib="$PWD/components/$component.pkg" ( cd $D cp -r --parents share/locale/*/LC_MESSAGES/gtk30.mo share/glib-2.0 share/icons $dlib ) component="liblinuxsampler" dlib="components/$component.pkg/lib" mkdir -p $dlib for f in `ls $D/lib/liblinuxsampler*`; do cp $f $dlib done mkdir -p "$dlib/linuxsampler/plugins" component="linuxsampler" dlib="components/$component.pkg/bin" mkdir -p $dlib for f in `ls $D/LinuxSampler/linuxsampler $D/LinuxSampler/lscp`; do cp $f $dlib done component="linuxsampler_au" dlib="components/$component.pkg" mkdir -p $dlib cp -r $D/LinuxSamplerAU.component $dlib component="linuxsampler_vst" dlib="components/$component.pkg" mkdir -p $dlib cp -r $D/LinuxSampler.vst $dlib component="qsampler" dlib="components/$component.pkg/LinuxSampler" mkdir -p $dlib cp -r $D/LinuxSampler/$component.app $dlib mkdir linuxsampler.prepkg cp linuxsampler.unpkg/Distribution linuxsampler.prepkg rsync -r --exclude='.svn' linuxsampler.unpkg/Resources linuxsampler.prepkg ( cd components for d in `ls -d *.pkg`; do mkdir -p ../linuxsampler.prepkg/$d ( cd $d find . | cpio -o --format odc --owner 0:80 | gzip -c ) > ../linuxsampler.prepkg/$d/Payload mkbom -u 0 -g 80 $d ../linuxsampler.prepkg/$d/Bom size_kb=`du -sk $d | cut -f 1` entries_count=`find $d | wc -l` cp ../linuxsampler.unpkg/$d/PackageInfo ../linuxsampler.prepkg/$d xmltxt=`xmlstarlet ed -u '/pkg-info/payload/@numberOfFiles' -v $entries_count ../linuxsampler.prepkg/$d/PackageInfo | xmlstarlet ed -u '/pkg-info/payload/@installKBytes' -v $size_kb` echo $xmltxt > ../linuxsampler.prepkg/$d/PackageInfo identifier=`xmlstarlet sel -t -v '/pkg-info/@identifier' ../linuxsampler.prepkg/$d/PackageInfo` xmltxt=`xmlstarlet ed -u "/installer-gui-script/pkg-ref[@id='$identifier']/@installKBytes" -v $size_kb ../linuxsampler.prepkg/Distribution` echo $xmltxt > ../linuxsampler.prepkg/Distribution done ) ( cd linuxsampler.prepkg xar --compression none -cf ../LinuxSampler.pkg . ) tar cjf "$D.tar.bz2" README LinuxSampler.pkg