Setup DWT for linux and DMD
This downloads DSSS+DMD+Tango+Jive+DWT into the current directory and configures them to work. Nothing is installed outside this directory. Nothing is changed on your system.
The intent of this script is to get you started.
Howto:
- Make sure your system has the packages libgtk2.0-dev, libxtst-dev and libgnomeui-dev installed
- Save this script to a file into a new/empty directory.
- Set execution permission on the file (chmod +x file).
- In a console window cd into this directory and start it.
The DWT directories are either downloaded as snapshot archives or as a mercurial working copy if the hg executable is available.
#!/bin/bash
# exit with message and error code
function doExit {
echo "$1"
exit $2
}
# Test if a executable of name $1 exists
function testForTool {
which $1 > /dev/null || doExit "Tool $1 is missing. Exit..." 1
}
# download from-url to-file
function download {
echo "Downloading $1 ..."
curl "-#" $1 -o $2 || doExit "Error while downloading. Exit..." 1
}
testForTool curl
testForTool tar
testForTool unzip
testForTool sed
testForTool patch
EXE=""
PLATFORM_PORT="dwt-linux"
DMD_PLATFORM="linux"
DSSS_PLATFORM="gnuWlinux-x86"
DSSS_PROFILE="dmd-posix-tango"
DSSS_VERSION="0.75"
DSSS_ARCHIVE_EXT=".tar.gz"
DSSS_ARCHIVE_BASE="dsss-$DSSS_VERSION-dmd-$DSSS_PLATFORM"
DSSS_ARCHIVE="$DSSS_ARCHIVE_BASE$DSSS_ARCHIVE_EXT"
DSSS_DIR="$DSSS_ARCHIVE_BASE"
TANGO_PLATFORM="linux"
TANGO_RELEASE="0.99.6"
TANGO_DMD_RELEASE="1.029"
TANGO_ARCHIVE_EXT=".tar.gz"
TANGO_ARCHIVE_BASE="tango-$TANGO_RELEASE-bin-$TANGO_PLATFORM-dmd.$TANGO_DMD_RELEASE"
TANGO_ARCHIVE="$TANGO_ARCHIVE_BASE$TANGO_ARCHIVE_EXT"
TANGO_DIR="$TANGO_ARCHIVE_BASE"
HG_EXISTS=0
echo "**************************************************"
echo "* This downloads and configures DWT"
echo "* Run this in a new created directory"
if which hg > /dev/null
then
echo "* "
echo "* Mercurial was found, so instead of downloading snapshots,"
echo "* this script will create HG working directories"
echo "* "
HG_EXISTS=1
fi
echo "* <Enter> to proceed or cancel with Ctrl-C"
read ok
# create the archives directory, no error if already exists
mkdir -p archives
# *** DSSS ***
if [ ! -f archives/$DSSS_ARCHIVE ]
then
echo "* download DSSS"
download http://svn.dsource.org/projects/dsss/downloads/$DSSS_VERSION/$DSSS_ARCHIVE archives/$DSSS_ARCHIVE
fi
echo "* removing old DSSS version, extract the archive, rename it to simple name"
rm -rf dsss
tar xzf archives/$DSSS_ARCHIVE
mv $DSSS_DIR dsss
# *** Tango ***
if [ ! -f archives/$TANGO_ARCHIVE ]
then
echo "* download Tango"
download http://downloads.dsource.org/projects/tango/$TANGO_RELEASE/$TANGO_ARCHIVE archives/$TANGO_ARCHIVE
fi
echo "* remove old tango version, extract the archive, rename it to simple name"
rm -rf tango
tar xzf archives/$TANGO_ARCHIVE
mv $TANGO_DIR tango
# *** Jive ****
if [ ! -f archives/jive.zip ]
then
echo "* download Jive"
download http://downloads.dsource.org/projects/dwt/jive.zip archives/jive.zip
fi
echo "* remove old Jive version, extract the archive"
rm -rf jive
unzip -q archives/jive.zip
# Fixes and workarounds
DMD_FIXUP_VERSION="1.028"
echo "* Fix: Replace the DMD binary with $DMD_FIXUP_VERSION because of bug #2067"
if [ ! -f ./archives/dmd.$DMD_FIXUP_VERSION.zip ]
then
download http://ftp.digitalmars.com/dmd.$DMD_FIXUP_VERSION.zip archives/dmd.$DMD_FIXUP_VERSION.zip
fi
# extract compiler executable, copy it into the tango/bin folder and remove the extraction leftover dirs
unzip -q archives/dmd.$DMD_FIXUP_VERSION.zip dmd/bin/dmd$EXE
cp dmd/bin/dmd$EXE tango/bin/dmd$EXE
chmod +x tango/bin/dmd$EXE
rm -rf dmd
echo "* Configure: make dsss use the tango profile"
echo "profile=$DSSS_PROFILE" > dsss/etc/rebuild/default
echo "* Configure: make dsss use oneatatime=off"
sed -i s/oneatatime=yes/oneatatime=no/ dsss/etc/rebuild/$DSSS_PROFILE
echo "* Configure: create a dsss starter which prepends dsss/bin and tango/bin to PATH"
DSSS_START=dsss.sh
echo "#!/bin/sh" > $DSSS_START
echo "PATH=`pwd`/tango/bin:`pwd`/dsss/bin:\$PATH `pwd`/dsss/bin/dsss \$* -full -version=Jive -I`pwd`/jive" >> $DSSS_START
chmod +x $DSSS_START
# download the dwt archives
function doDwtRepos {
if [ -d $1 ]
then
echo "* removing old version of $1"
rm -rf ./$1
fi
if [ $HG_EXISTS -eq 0 ]
then
echo "* download snapshot and extract $1"
mkdir -p ./$1
rm -f archives/$1.tar.gz
download http://hg.dsource.org/projects/$1/archive/tip.tar.gz archives/$1.tar.gz
tar xz -C $1 --strip 1 --file archives/$1.tar.gz
rm -f archive/$1.tar.gz
else
echo -n "* clone Mercurial repository for $1 ..."
hg clone -q http://hg.dsource.org/projects/$1 || doExit "Error while cloning $1" 1
echo " OK"
fi
}
doDwtRepos $PLATFORM_PORT
doDwtRepos dwt-samples
doDwtRepos dwt-addons
echo "* Fix: patch the tango collections to work around the dmd 1.028 bug #1978"
echo "* (See also http://www.dsource.org/projects/dwt/wiki/JFace)"
patch -s -p1 << PATCHEND
diff -Naur old/tango/import/tango/util/collection/model/Seq.d new/tango/import/tango/util/collection/model/Seq.d
--- old/tango/import/tango/util/collection/model/Seq.d 2008-05-12 14:35:11.000000000 +0200
+++ new/tango/import/tango/util/collection/model/Seq.d 2008-05-12 14:37:25.000000000 +0200
@@ -32,6 +32,8 @@
public interface Seq(T) : SeqView!(T), Dispenser!(T)
{
+ public Seq!(T) duplicate();
+ public alias duplicate dup;
/**
* Insert all elements of enumeration e at a given index, preserving
* their order. The index can range from
diff -Naur old/tango/import/tango/util/collection/model/Set.d new/tango/import/tango/util/collection/model/Set.d
--- old/tango/import/tango/util/collection/model/Set.d 2008-05-12 14:35:11.000000000 +0200
+++ new/tango/import/tango/util/collection/model/Set.d 2008-05-12 14:36:57.000000000 +0200
@@ -34,6 +34,8 @@
public interface Set(T) : SetView!(T), Dispenser!(T)
{
+ public Set!(T) duplicate();
+ public alias duplicate dup;
/**
* Include the indicated element in the collection.
* No effect if the element is already present.
diff -Naur old/tango/import/tango/util/collection/model/View.d new/tango/import/tango/util/collection/model/View.d
--- old/tango/import/tango/util/collection/model/View.d 2008-05-12 14:35:11.000000000 +0200
+++ new/tango/import/tango/util/collection/model/View.d 2008-05-12 14:36:14.000000000 +0200
@@ -36,7 +36,7 @@
* All Views implement duplicate
**/
- public Dispenser!(T) duplicate ();
+ public View!(T) duplicate ();
public alias duplicate dup;
/**
PATCHEND
echo "* Building+installing $PLATFORM_PORT"
cd $PLATFORM_PORT
../dsss.sh build >/dev/null || doExit "Compile failed" 1
../dsss.sh install >/dev/null || doExit "DSSS $PLATFORM_PORT install failed" 1
cd ..
echo "* "
echo "* "
echo "**************************************************"
echo "* The DWT Setup finished successfully"
echo "* now goto dwt-samples directory and run:"
echo "* ../dsss.sh build"
echo "* to build the JFace examples goto dwt-samples/jface and start the build with "
echo "* ../../dsss.sh build -I../../dwt-addons -J../../dwt-addons/res"
echo "* "
echo "**************************************************"
