Darwine 1.0 (and beyond!)

Wine 1.0 is here! And since the previous download page got cluttered, here's a new download page!

As always, be sure to have the latest version of Xquartz installed. It's just an updated version of X11, so if it's not up to date, its not the biggest deal in the world. But there's usually bugfixes in there that you want to have.

If you want to stay up to date with Darwine, here's an appcast/rss feed for it.

Downloads:

Development (Unstable) build of Darwine 1.1.0 for Leopard, with Freetype 2.3.6 and FontForge py25-20080607.
Stable build of Darwine 1.0 for Leopard, with Freetype 2.3.5 and FontForge py25-20080607.

Other:

Questions or comments? Feel free to post below or email me.

Darwine Dependancies

I just reinstalled OS X today after messing some things up and figured I'd document what I needed to install for Darwine in case anyone else wanted to compile on their own without playing guessing games for half the day to find what was needed (Also saves me from having to play guessing games for half the day myself :p )
Tools Installed:
Libraries installed: (not all of these are required for Wine - some are dependancies of Wine's dependancies)
Stuff that wont install:
  • libieee1284 0.2.11 - This requires some things from the Linux kernel to work. It adds further support for things within libsane (iirc). However its not required for libsane to compile.
  • libhal 0.5.11rc2 - This also requires some things from the Linux kernel. It provides dynamic device support.
  • libcapi20 - I couldn't even find where to download this library, so I couldn't install it. It provides ISDN support though.

Automatically update to the latest WebKit build!

WebKit is the foundation to Apple's web services. It's an integral part of Safari and is Open Source. As a result of this (Or because of this? Maybe there's no relation at all..) the WebKit team frequently posts nightly builds of the latest WebKit sources online for anyone to run and try out. However there isn't any official way to automatically update WebKit to the latest available version.

I personally like to have the latest of everything whenever possible, so not being able to automatically update WebKit annoyed me. So, as a result, here's a quick bash script that I've hacked together to update to the latest WebKit build.

The script runs at 7am every day, as I'm usually asleep by then so it works out pretty well. If this isn't a good time for you (I'm aware some people wake up at 7am for whatever reason..) go to the plist example that's linked to below the bash script and change the 7 in 7 to whatever time works best for you.

Additionally, the script logs which WebKit build was downloaded and what build got replaced in ~/Library/Logs/WebKitUpdate.log.  You can just view this in Console.app though.

Save the following bash script as webkitupdate.sh and place it in /Library/Scripts/

 
#-----------------------------------------------------------------------------
#!/bin/sh
#Automatically update to the latest WebKit nightly build.
#By Zach Drayer
 
#Set environment up
LOGGING_LOCATION="$HOME"/Library/Logs/WebKitUpdate.log
WEBKIT_BACKUP_LOCATION=""$HOME"/Documents/WebKit Backup/"
 
#Creates a temp working dir for WebKit and necessary files to be downloaded to
WEBKIT_TEMP_INSTALL_LOCATION="/tmp/WebKit-$RANDOM"
mkdir "$WEBKIT_TEMP_INSTALL_LOCATION"/
cd "$WEBKIT_TEMP_INSTALL_LOCATION"/
 
#Finds out what version of WebKit the nightly is at
curl -LOs "http://nightly.webkit.org/index.html"
WEBKIT_NIGHTLY_BUILT_VERSION=`cat index.html | grep trunk/mac | grep dmg \
| grep Mac | cut -c 79-83`
 
#Checks if WebKit needs updating or not
if [ -d /Applications/WebKit.app ]; then
  WEBKIT_INSTALLED_VERSION=`cat \
  /Applications/WebKit.app/Contents/Resources/VERSION`
if [ "$WEBKIT_NIGHTLY_BUILT_VERSION" == "$WEBKIT_INSTALLED_VERSION" ]; then
    exit
  fi
fi
 
#Checks if WebKit is running or not
ps aux | grep Web >> web.txt
cat web.txt | grep WebKit >> web2.txt
WEBKIT_RUNNING=`cat web2.txt`
if [ "$WEBKIT_RUNNING" != "" ]; then
  kill -9 `cat web2.txt | sed s/"$USER"\ \ \ \ \ \ //g | cut -c 1-5`
fi
 
#Back WebKit up
if [ -d /Applications/Webkit.app ]; then
  #Comment out this if/elseif block if you dont want to back WebKit up
  #Start commenting below --v
	if [ -d "$WEBKIT_BACKUP_LOCATION" ]; then
		mv /Applications/WebKit.app "$WEBKIT_BACKUP_LOCATION"WebKit-r"\
			$WEBKIT_INSTALLED_VERSION".app
		else
		mkdir "$WEBKIT_BACKUP_LOCATION"
		mv /Applications/WebKit.app "$WEBKIT_BACKUP_LOCATION"WebKit-r"\
			$WEBKIT_INSTALLED_VERSION".app
	fi
	echo "Downloading WebKit-r""$WEBKIT_NIGHTLY_BUILT_VERSION"" now"
	curl -LOs "http://nightly.webkit.org/files/trunk/mac/WebKit-SVN-r"\
		$WEBKIT_NIGHTLY_BUILT_VERSION".dmg"
else
  #Stop Commmenting here --^
#Also uncomment the next line if you dont back WebKit up
#	rm -rf /Applications/WebKit.app
	echo "Downloading WebKit-r""$WEBKIT_NIGHTLY_BUILT_VERSION"" now"
	curl -LOs "http://nightly.webkit.org/files/trunk/mac/WebKit-SVN-r"\
		$WEBKIT_NIGHTLY_BUILT_VERSION".dmg"
fi
 
#Install WebKit
hdiutil attach -quiet "$WEBKIT_TEMP_INSTALL_LOCATION"/WebKit-SVN-r"\
	$WEBKIT_NIGHTLY_BUILT_VERSION".dmg
cp -R /Volumes/WebKit/WebKit.app /Applications/
hdiutil detach -quiet /Volumes/WebKit
rm -rf "$WEBKIT_TEMP_INSTALL_LOCATION"/
echo "WebKit build " $WEBKIT_NIGHTLY_BUILT_VERSION " replaced build "\
 	$WEBKIT_INSTALLED_VERSION " on " `date` >> \
		$HOME/Library/Logs/WebKitUpdate.log
#-----------------------------------------------------------------------------
 

And the plist needed can be downloaded here. Just ctrl + click and "Save As.." and move it to /Library/LaunchAgents. You can also download the script here and just place it in /Library/Scripts.

Stats! (aka: How Many Times has Darwine been Downloaded?)

I've been building Darwine for a couple months now - since June 2007 or so! Since then, I've been running a stats program and figured I'd share some interesting results; Download totals, Bandwidth used, etc. I put it all in a nice Numbers spreadsheet and here's what came out: (There were more stats - browser popularity, OS popularity, etc - but I messed the script that goes through the stat logs up and the data got mangled and isn't really accurate. I fixed it for a few of the more interesting things though.)

Stats and stuff

*Note, all data amounts are given in Gigabytes, not Gigabits.

**Bandwidth Used / Day is the average of all the months, not the total added up.

Some things to note are that although the overall download total decreased in February, the amount of bandwidth used is greater then in January. Also, the # of distinct or individual hosts that downloaded Darwine is greater in February then in January despite the two day difference.

So what this all means? 56,000+ Downloads for Darwine. Wow. That's way, way more then I ever imagined when deciding to start compiling Darwine on a random whim. Also, there's a definite distinction between when the inclusion of an installer occurred (early December) and prior months.

That pretty much ends my few minutes of awe over stats - not that the stats are a huge amount, but its decently sized enough for me to be in awe :P If anyone has other stats / relations they want me to look at (or pretty graph requests to stare at), let me know and I'll try and get back to you :)