diff --git a/package/osx/make_dmg.sh b/package/osx/make_dmg.sh new file mode 100755 index 0000000000..767427c7e1 --- /dev/null +++ b/package/osx/make_dmg.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +# Assembles an installation bundle from a built copy of Slic3r. +# Required environment variables: +# Adapted from script written by bubnikv for Prusa3D. +# SLIC3R_VERSION - x.x.x format + +WD=$(dirname $0) +# Determine if this is a tagged (release) commit. +# Change the build id accordingly. +if [ $(git describe &>/dev/null) ]; then + TAGGED=true + SLIC3R_BUILD_ID=$(git describe) +else + TAGGED=false + SLIC3R_BUILD_ID=${SLIC3R_VERSION}d +fi + +# If we're on a branch, add the branch name to the app name. +if [ "$(git symbolic-ref HEAD | sed 's!refs\/heads\/!!')" == "master" ]; then + appname=Slic3r + dmgfile=${1}.dmg +else + appname=Slic3r-$(git symbolic-ref HEAD | sed 's!refs\/heads\/!!') + dmgfile=${1}-$(git symbolic-ref HEAD | sed 's!refs\/heads\/!!').dmg +fi + +# OSX Application folder shenanigans. +appfolder="$WD/${appname}.app" +macosfolder=$appfolder/Contents/MacOS +resourcefolder=$appfolder/Contents/Resources +plistfile=$appfolder/Contents/Info.plist +PkgInfoContents="APPL????" +source $WD/plist.sh + +# Our slic3r dir and location of perl +PERL_BIN=$(which perl) +SLIC3R_DIR="${WD}/../../" + +if [[ -d "${appfolder}" ]]; then + echo "Deleting old working folder." + rm -rf ${appfolder} +fi + +if [[ -d "${dmgfile}" ]]; then + echo "Deleting old dmg ${dmgfile}." + rm -rf ${dmgfile} +fi + +echo "Creating new app folder at $appfolder." +mkdir -p $appfolder +mkdir -p $macosfolder +mkdir -p $resourcefolder + +echo "Copying resources..." +cp -r $SLIC3R_DIR/var $macosfolder/ +mv $macosfolder/var/Slic3r.icns $resourcefolder + +echo "Copying Slic3r..." +cp $SLIC3R_DIR/slic3r.pl $macosfolder/slic3r.pl +cp -r $SLIC3R_DIR/local-lib $macosfolder/local-lib +cp -r $SLIC3R_DIR/lib/* $macosfolder/local-lib/lib/perl5/ + +echo "Copying startup script..." +cp $WD/startup_script.sh $macosfolder/$appname +chmod +x $macosfolder/$appname + +echo "Copying perl from $PERL_BIN" +cp $PERL_BIN $macosfolder + +make_plist + +echo $PkgInfoContents >$appfolder/Contents/PkgInfo + +echo "Creating dmg file...." +hdiutil create -fs HFS+ -srcfolder "$appfolder" -volname "$appname" "$dmgfile" diff --git a/package/osx/plist.sh b/package/osx/plist.sh new file mode 100644 index 0000000000..a4768a29ad --- /dev/null +++ b/package/osx/plist.sh @@ -0,0 +1,39 @@ +#!/bin/bash +function make_plist() { +# Create information property list file (Info.plist). +echo '' >$plistfile +echo '' >>$plistfile +echo '' >>$plistfile +echo '' >>$plistfile +echo ' CFBundleExecutable' >>$plistfile +echo ' '$appname'' >>$plistfile +echo ' CFBundleGetInfoString' >>$plistfile +echo " Slic3r Copyright (C) 2011-$(date +%Y) Alessandro Ranellucci" >>$plistfile +echo ' CFBundleIconFile' >>$plistfile +echo ' Slic3r.icns' >>$plistfile +echo ' CFBundleName' >>$plistfile +echo ' Slic3r' >>$plistfile +echo ' CFBundleShortVersionString' >>$plistfile +if [ $TAGGED ]; then + echo " Slic3r $SLIC3R_BUILD_ID" >>$plistfile +else + echo " Slic3r $SLIC3R_BUILD_ID-$(git rev-parse --short head)" >>$plistfile +fi +echo ' CFBundleIdentifier' >>$plistfile +echo ' ' >>$plistfile +echo ' CFBundleInfoDictionaryVersion' >>$plistfile +echo ' 6.0' >>$plistfile +echo ' CFBundlePackageType' >>$plistfile +echo ' APPL' >>$plistfile +echo ' CFBundleSignature' >>$plistfile +echo ' ????' >>$plistfile +echo ' CFBundleVersion' >>$plistfile +echo " ${SLIC3R_BUILD_ID}" >>$plistfile +echo ' CFBundleIdentifier' >>$plistfile +echo ' ' >>$plistfile +echo ' CGDisableCoalescedUpdates' >>$plistfile +echo ' ' >>$plistfile +echo '' >>$plistfile +echo '' >>$plistfile + +} diff --git a/package/osx/startup_script.sh b/package/osx/startup_script.sh new file mode 100644 index 0000000000..33adc2df78 --- /dev/null +++ b/package/osx/startup_script.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +DIR=$(dirname "$0") +$DIR/perl $DIR/slic3r.pl $@