build

How to build Haiku on Mac OS X

Article contributed by VinDuv on Sat, 2008-10-11 16:49
2009-June: This document is now obsolete. We are in the process of consolidating and re-organizing the website documentation. For now please refer to one of these guides. Alternatively, you can view the in-progress website documentation.

Even if Mac OS X is Unix based, building Haiku on it still requires some tweaks.
I tested these instructions on Mac OS X 10.5.6 (Leopard). If they work on older versions (Tiger, Panther…) please let me know.

  1. Case-sensitive disk image
  2. Fetching the buildtools and the Haiku source code
  3. Install required software
  4. Let’s Patch
  5. Building the buildtools ;-)
  6. Building Haiku

Requirements

  • At least 3 GB of free space on your hard drive
  • You will need the Xcode Tools: use the installer on your Mac OS X Install DVD, or download the latest version from Apple Developer Connection (free registration required).
  • You must be logged in as administrator to install some tools.
  • MacPorts will also be required (see Step 3 for installation tips)

Step 1: Case-sensitive disk image

The Mac OS file system, HFS+, is case-insensitive by default. This causes troubles during the build of some Haiku components, because of wrong headers inclusion (“String.h” (from Haiku) instead of “string.h” (from the system) for instance).
If your Mac OS X partition is not in case-sensitive HFS+ (which is very likely), you need to create a case-sensitive disk image and put Haiku buildtools and source code on it.

1) Open Disk Utility (in /Application/Utilities)
2) Click “New Image”, and enter the following parameters:

  • Volume name: You should enter a short name without special character or spaces.
  • Volume size: Haiku sources, compiled objects and the resulting Haiku disk image will take around 2.7 GB, but you should put more (8 GB for instance), especially if you want to add optional packages to the image. Only the consumed space on the image will be used on your hard drive, so don’t be afraid of setting a big value ;-)
  • Volume format: Mac OS Extended (Case-sensitive)
  • Encryption: You should say “none”, unless you really want to slow down Haiku building…
  • Partitions: (Tiger users will not have this - just skip it): Choose No partition map.
  • Image format: Choose “sparse disk image”.

Disk utility settings panel
The image is automatically mounted on the Desktop. If you want to remount it later, just double-click on the image file.

Step 2: Fetching the buildtools and the Haiku source code

Open a Terminal (in /Application/Utilities), and enter:

cd /Volumes/Haiku/

“/Volumes/Haiku” refers here (and in all this tutorial) to the mounted disk image name. I named it “Haiku”, so if you chose another name, use it instead of “Haiku” after “/Volumes/”.

Checkout the buildtools:

svn checkout svn://svn.berlios.de/haiku/buildtools/trunk buildtools

[ Note to Tiger users: IIRC, Subversion is not available with Xcode 2.5. You have to install it manually. ]
And the sourcecode:

svn checkout svn://svn.berlios.de/haiku/haiku/trunk haiku

You should now have two folders “haiku” and “buildtools” into the mounted disk image.

Step 3: Install required software

First, install MacPorts (A standard Installer package is provided)
Close your Terminal, and enter in a new one:

sudo port install gnuregex gawk yasm

(You will be prompted for the administrator password of the current account - Do not worry if nothing you type shows after the Password prompt, this is intended ;-) )

  • If you plan to use optional packages, add wget to the list.
  • If you plan to build a bootable Haiku CD, add cdrtools to the list.
If you get an error “port: command not found”, the MacPorts shell configuration, stored in ~/.profile, is probably not taken into account.
If you’re using Bash, you probably have a ~/.bash_profile or ~/.bash_login file, preventing bash to read ~/.profile.
Check the file used by Bash (in the mentioned order) and add these lines to the used file:

export PATH=/opt/local/bin:$PATH
export MANPATH=$MANPATH:/opt/local/share/man
export INFOPATH=$INFOPATH:/opt/local/share/info

If you are using another shell, take a look a the shell documentation to see which file is parsed at login, and add the required commands.
You can now retry the port install... command in a new Terminal.

After MacPorts finished installing the tools, install the modified Haiku jam:

cd /Volumes/Haiku/buildtools/jam
make
sudo ./jam0 install
[Enter your password]
cd ..

Reopen a new Terminal, and enter jam -v.
You should get:

Jam 2.5-haiku-20080327. OS=MACOSX. Copyright 1993-2002 Christopher Seiwald.

Step 4: Let’s Patch

The patch file is now on Trac, so all you have to do is to launch:

cd /Volumes/Haiku
curl -O http://dev.haiku-os.org/raw-attachment/ticket/3298/haiku_gcc2_osx_2.patch
patch -p0 < haiku_gcc2_osx_2.patch

Step 5: Building the buildtools ;-)

Now, you can compile GCC2 with:

cd /Volumes/Haiku/haiku
./configure --build-cross-tools ../buildtools

If you want to build Haiku with GCC4, use:

./configure --build-cross-tools-gcc4 x86 ../buildtools/

If you do not now which one you should use, choose gcc2: Original BeOS R5 binaries (and many Haiku optional packages) will not run on a gcc4 build.

./configure has some more options: use ./configure --help to list them.

After some time, you should get:

binutils and gcc for cross compilation have been built successfully!

Step 6: Building Haiku

Installing to the hard drive

You can boot Haiku (with some mitiged success in my case :-/) on your Mac. Before installing, please consider the following points :

  • Only do this if you feel confident. There are serious risks of data loss here.
  • You need a Mac with an Intel processor.
  • Haiku must be installed to an internal hard drive. USB or FireWire external drives will not work.
  • You need to create a new partition on your hard drive. The Boot Camp Assistant or Leopard’s Disk Utility may help.

The first step is to determine the name of the partition where Haiku should be installed. Mac OS X uses the following naming scheme : diskXsY, where X is the disk number (starting with 0), and Y the partition number (starting with 1).
You can use the diskutil list command to get the list of disks attached to the computer, and their partitions.
Create or edit the file [Mounted Disk Image]/haiku/build/jam/UserBuildConfig, and add the following line :

DefineBuildProfile disk : disk : "/dev/diskXsY" ;

(with X and Y replaced by the actual partition numbers)
This will create a “build profile” rule that will install Haiku to the partition. For more information about build profiles, see the file [Mounted Disk Image]/haiku/build/jam/UserBuildConfig.ReadMe.
After this, start a Terminal, double check the disk and partition numbers and run :

cd /Volumes/Haiku/haiku
sudo chmod o+r /dev/diskX
[enter your password]
sudo chmod o+rw /dev/diskXsY
jam -q @disk

And voilà, Haiku is installed on your Mac ! To boot on it, the best way is to install the rEFIt boot manager.

Instructions for VMware Fusion:

The command:

cd /Volumes/Haiku/haiku
jam -q haiku-vmware-image

will build a VMware disk image: [Mounted Disk Image]/haiku/generated/haiku.vmdk.
To use it, follow these steps:

  1. Create a folder at the root of the disk image.
  2. Copy [Mounted Disk Image]/3rdparty/vmware/haiku.vmx inside this folder, and edit the copy.
  3. Change ide0:0.fileName = "haiku.vmdk" to ide0:0.fileName = "../haiku/generated/haiku.vmdk". Save the file.
  4. Double-clicking on the file should start VMware Fusion and launch Haiku.

VMware will create some files in the folder you put haiku.vmx.
If you want easy access to the virtual machine file, make an alias of the haiku.vmx file (or put it into the Dock).
Lanching this alias will mount the disk image and start the VM, automatically.

Instructions for other virtualisation/emulation software:

Haiku should run in Q (free), Parallels Desktop (commercial) or VirtualBox (free).
Some of them (Parallels, …) can use the VMware disk image (see above).
For the others, you can create a raw disk image with:

cd /Volumes/Haiku/haiku
jam haiku-image

The image will be created in [Mounted Disk Image]/haiku/generated/haiku.image.

How to Work on the Haiku WebKit Port

Article contributed by leavengood on Tue, 2007-12-04 05:57
This article is out of date and the code linked should not be used for anything right now. Please, refer to the more recent How to Work on WebKit article instead.

To work on the Haiku WebKit port one needs to take some time to get the right environment set up. At the moment the Haiku WebKit port can only be developed on Linux and cross compiled with the GCC4 compiler. So the first step is to follow my tutorial on building Haiku on Ubuntu. On step 5 of the above, please be sure to build the GCC4 cross compiler, not the GCC2 version. If you have already built Haiku with GCC2 on Linux, I recommend renaming your current "generated" directory in the Haiku tree to "generated_gcc2" and then continue with step 5 from the above, setting up the GCC4 cross compiler. Switching between compilers can then be done by just renaming the generated directory, since it contains all compiled build tools and necessary files for each compiler.

The Art of Jamming - All Parts

Article contributed by leavengood on Sat, 2003-03-08 05:00

Part 1

Before the musicians in the audience get too excited, I'm not going to talk about getting together with buddies to crank out some tunes. Nor will the cooks in the audience find instructions on making the perfect fruit preserves. No, when I say Jamming, I refer to the act of using the Jam build tool.

In this first part of my series on the Jam build tool, I'm going to provide a high level overview as well as show the product of some of my recent labors with Jam: the Jamfile-engine. For those who have developed on BeOS for a decent amount of time, this may sound familiar. It should, because I have essentially taken the functionality of the Be makefile-engine and "ported" it to Jam.

Syndicate content