All pastes #464796 Raw Edit

darwinesh

public text v1 · immutable
#464796 ·published 2007-04-29 18:34 UTC
rendered paste body
#!/bin/bash
##########################################################################
# Create Darwine distribution
#    create a Disk Image Containing WineHelper and Wine for the official
#    darwine distrib
#   
# Copyright (c) 2005 Pierre d'Herbemont
# Copyright (c) 2006 Emmanuel Maillard
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This program 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
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
##########################################################################


usage()
{
    echo "$0: illegal argument"
    echo "usage: create_darwine_distrib [--no-wine-build] version wine_sources"
    echo "     --no-wine-build do not build wine, skip configure and make"
    echo "               (saves time, but will not work if ./configure --prefix= was"
    echo "                correctly set)"
    echo "     wine_sources       /absolute/path/to/the/wine/sources"
    echo "     version            darwine version to release"
}

check_err()
{
  if [ "${1}" -ne "0" ]; then
    echo "***** Error: ${2}"
    exit ${1}
  fi
}

cleanup()
{
  rm -Rf "/tmp/$DARWINEPKGNAME"
  rm -Rf /tmp/wine_root
  rm -Rf /tmp/WineHelper
}

##########################################################################
# Arg check
if [ "$#" -eq 2 ]
then
    BUILDWINE="yes"
    VERSION=$1
    WINE=$2
elif [ "$#" -eq 3 ] && [ "$1" = "--no-wine-build" ]
then
    BUILDWINE="no"
    VERSION=$2
    WINE=$3
else
    usage
    exit 1
fi

USER_WD=`pwd`
DISTRIB_D=`pwd`

DARWINEPKGNAME="Darwine $VERSION"

##########################################################################
echo "# Packaging Darwine for version $VERSION using Wine sources in $WINE..."
cleanup
mkdir -p "/tmp/$DARWINEPKGNAME/Darwine"
mkdir -p "/tmp/$DARWINESDKPKGNAME"

##########################################################################
# Wine
echo "# Building Wine in $WINE (warning: takes a long time)..."
rm -Rf /tmp/wine_root
mkdir -p /tmp/wine_root
check_err $? "Can't create /tmp/wine_root"
cd $WINE
if [ "$BUILDWINE" = "yes" ]
then
    ./configure --prefix=/tmp/wine_root --silent && make -s && make -s install
else
    make -s install
fi
check_err $? "Can't build wine"

##########################################################################
# Build WineHelper from CVS
echo "# Building WineHelper from CVS..."
cd /tmp
cvs -d:pserver:anonymous:@darwine.cvs.sf.net:/cvsroot/darwine export -Dtomorrow WineHelper
check_err $? "Can't checkout WineHelper from CVS $?"
cd WineHelper
xcodebuild -project WineHelper.xcodeproj
check_err $? "Can't build WineHelper"
mv build/Default/WineHelper.app "/tmp/$DARWINEPKGNAME/Darwine"
check_err $? "Can't build WineHelper"

##########################################################################
# Create Wine.bundle
echo "# Creating Wine.bundle..."
mkdir -p "/tmp/$DARWINEPKGNAME/Darwine/Wine.bundle/Contents"
check_err $? "Can't create Wine.bundle"
cd "/tmp/$DARWINEPKGNAME/Darwine/Wine.bundle/Contents/"
cp -r /tmp/wine_root/ .
rm -rf ./include
check_err $? "Can't create Wine.bundle"

##########################################################################
# sexy WineLib apps in "Sample WineLib Applications"
echo "# Putting sexy WineLib apps in \"Sample WineLib Applications\"..."
cd "/tmp/$DARWINEPKGNAME/Darwine"
mkdir Sample\ WineLib\ Applications
cd Sample\ WineLib\ Applications
cp "/tmp/wine_root/lib/wine/winefile.exe.so" winefile.exe
cp "/tmp/wine_root/lib/wine/clock.exe.so" clock.exe
cp "/tmp/wine_root/lib/wine/winemine.exe.so" winemine.exe
cp "/tmp/wine_root/lib/wine/notepad.exe.so" notepad.exe
cp "/tmp/wine_root/lib/wine/regedit.exe.so" regedit.exe
cp "/tmp/wine_root/lib/wine/winecfg.exe.so" winecfg.exe
check_err $? "Error"

################################################
# ReadMe
echo "# Create the Readme..."
cd "/tmp/$DARWINEPKGNAME/Darwine"
sed "s/@VERSION@/$VERSION/" "$DISTRIB_D/readme.html" > "Read Me.html"
check_err $? "Error"

################################################
# Make a Disk Image
echo "# Create the Disk Image for Darwine $VERSION..."
cd /tmp
hdiutil create -srcfolder "/tmp/$DARWINEPKGNAME" "$USER_WD/$DARWINEPKGNAME.dmg"
check_err $? "Can't create the Disk Image."


################################################
# Prepare for Universal SDK
echo "# Prepare the SDK for Darwine $VERSION..."
echo "# Building SDK tree : $WINE/SDKRoot"
cd $WINE
if test ! -d "$WINE/SDKRoot"; then
	mkdir -p SDKRoot/ppc
	mkdir -p SDKRoot/x86
	mkdir -p SDKRoot/Library
	mkdir -p SDKRoot/Developer/Headers/Wine
	mkdir -p SDKRoot/Developer/Tools
	mkdir -p SDKRoot/Developer/Examples/Darwine
fi

# copy tools
cd /tmp/wine_root/bin
case `uname -p` in
		powerpc)
		cp winebuild winecpp wineg++ winegcc wrc widl $WINE/SDKRoot/ppc
		;;
		*)
		cp winebuild winecpp wineg++ winegcc wrc widl $WINE/SDKRoot/x86
		;;
esac
cp winemaker $WINE/SDKRoot/Developer/Tools

# copy headers
cd /tmp
cp -r wine_root/include $WINE/SDKRoot/Developer/Headers/Wine

################################################
# Clean up
echo "# Clean up..."
cleanup
check_err $? "Error"

echo "# Done (image: $USER_WD/$DARWINEPKGNAME.dmg )..."