Zrythm installer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

131 lines
4.1 KiB

#! /bin/bash
#
# Copyright (C) 2019-2021 Alexandros Theodotou <alex at zrythm dot org>
#
# This file is part of Zrythm
#
# Zrythm is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Zrythm is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Zrythm. If not, see <https://www.gnu.org/licenses/>.
# Notes:
# 1. This script assumes you have all the dependencies
# installed using HomeBrew.
# 2. Meant to be run from the parent dir
# 3. Uses appdmg (brew install npm, npm install -g appdmg)
# 4. need to install librsvg and then reinstall gdk-pixbuf
# in brew to get svg support (or copy the pixbuf loader from
# the Cellar of libtsvg to the Cellar of gdk-pixbuf)
# args:
# 1: version
# 2: zrythm source root dir
# 3: prefix where zrythm was installed
# 4: path to copy finished installer to
# 5: osx data dir (tools/osx)
# 6: normal prefix (where other programs are installed)
# 7: App name Zrythm or Zrythm (Trial)
# 8: App name Zrythm or Zrythm-trial
set -e
ZRYTHM_VERSION=$1
ZRYTHM_SRC_DIR=$2
ZRYTHM_INSTALL_PREFIX=$3
FINAL_DMG_PATH=$4
OSX_SOURCE_DATA_DIR=$5
NORMAL_PREFIX=$6
APP_NAME_W_SPACES=$7
APP_NAME_NO_SPACES=$8
WORK_ROOT=/tmp/zrythm-dmg
rm -rf $WORK_ROOT
# setup directory structure
APPDIR=$WORK_ROOT/$APP_NAME_NO_SPACES-buf
Contents=$APPDIR/Contents
Resources=$Contents/Resources
Bin=$Resources/bin
Share=$Resources/share
Etc=$Resources/etc
Locale=$Resources/share/locale
Lib=$Resources/lib
echo "Building new app directory structure ..."
mkdir -p $Contents/MacOS
mkdir -p $Etc
mkdir -p $Locale
mkdir -p $Lib
mkdir -p $Bin
# copy static files
echo "copying plists"
sed "s/@VERSION@/$ZRYTHM_VERSION/" < \
$OSX_SOURCE_DATA_DIR/Info.plist.in > $Contents/Info.plist
cp $Contents/Info.plist $OSX_SOURCE_DATA_DIR/Info.plist
THEMES_DIR="$Share/themes"
mkdir -p "$THEMES_DIR"
cp -RL "$NORMAL_PREFIX/share/themes/Default" "$THEMES_DIR/"
echo "copying Adwaita icons"
ICONS_DIR="$Share/icons"
mkdir -p "$ICONS_DIR"
cp -RL "$NORMAL_PREFIX/share/icons/Adwaita" "$ICONS_DIR/"
echo "copying existing hicolor icons"
cp -RL "$NORMAL_PREFIX/share/icons/hicolor" "$ICONS_DIR/"
echo "copying app icon"
APPICON_DIR1=$ICONS_DIR/hicolor/scalable/apps
APPICON_DIR2=$ICONS_DIR/hicolor/48x48/apps
mkdir -p $APPICON_DIR1
mkdir -p $APPICON_DIR2
cp $ZRYTHM_SRC_DIR/resources/icons/zrythm/zrythm.svg $APPICON_DIR1/
cp $ZRYTHM_SRC_DIR/resources/icons/zrythm/zrythm.svg $APPICON_DIR2/
SCHEMAS_DIR="glib-2.0/schemas"
mkdir -p $Share/$SCHEMAS_DIR
cp $NORMAL_PREFIX/share/$SCHEMAS_DIR/org.zrythm*.xml \
"$Share/$SCHEMAS_DIR/"
cp $NORMAL_PREFIX/share/$SCHEMAS_DIR/org.gtk.*.xml \
"$Share/$SCHEMAS_DIR/"
echo "building schemas"
glib-compile-schemas "$Share/$SCHEMAS_DIR/"
# add license, readme, third party info
cp $ZRYTHM_SRC_DIR/README.md $Resources/
cp -r $ZRYTHM_SRC_DIR/LICENSES $Resources/
brew list --versions -1 -v > $Resources/THIRDPARTY_INFO.txt
sed "s|@NORMAL_PREFIX@|$NORMAL_PREFIX|" < \
$OSX_SOURCE_DATA_DIR/zrythm.bundle.in > $WORK_ROOT/zrythm.bundle
sed -i -e "s|@ZRYTHM_PREFIX@|$ZRYTHM_INSTALL_PREFIX|" $WORK_ROOT/zrythm.bundle
sed -i -e "s|@BUNDLE_DEST@|$WORK_ROOT|" $WORK_ROOT/zrythm.bundle
sed -i -e "s|@OSX_DATA_DIR@|$OSX_SOURCE_DATA_DIR|" $WORK_ROOT/zrythm.bundle
sed -i -e "s|@BUFFER@|$APPDIR|" $WORK_ROOT/zrythm.bundle
gtk-mac-bundler $WORK_ROOT/zrythm.bundle
# make dmg
echo "making dmg from .app"
rm -f $FINAL_DMG_PATH
mkdir -p $(dirname "$FINAL_DMG_PATH")
sed "s|@APP_PATH@|$APPDIR|" < \
$OSX_SOURCE_DATA_DIR/appdmg.json.in > $WORK_ROOT/appdmg.json
sed -i -e "s|@APPNAME@|$APP_NAME_W_SPACES|" $WORK_ROOT/appdmg.json
sed -i -e "s|@ICNS_PATH@|$Resources/zrythm.icns|" \
$WORK_ROOT/appdmg.json
cat $WORK_ROOT/appdmg.json
appdmg $WORK_ROOT/appdmg.json $FINAL_DMG_PATH
rm -f $WORK_ROOT/appdmg.json
echo "Done."
exit