Assignment 1 (Pcvitori)
!!!!WORK IN PROGRESS!!!!
Introduction
While I have attempted to build various open source projects in the past (I.e. KDE), this will be my first time building Firefox. Before I begin the whole build process, let me give you a bit of information about my computer I will be building on.
My Notebook Specifications
- Intel Pentium 4 Processor-M 1.6 MHz
- 512 MB RAM
- 40 gig Hard Drive
- Dual Boot – Ubuntu and Windows XP
This computer is about 5 years old, so let’s see how it holds up in a Firefox build. Let the build begin!
Software Installation
Since I have already installed the latest version of Ubuntu on my notebook, I would only require a few more packages before I can execute my first build. My first step was to install any of the missing build perquisites on the developer website to my machine.
Using the Synaptic Install Wizard, I located and downloaded each package listed on the Mozilla website. The following packages were installed:
GTK2 gcc libxt-dev cvs make
My next step was to download the most recent version of the Mozilla source code from the cvs repository. To accomplish this task, I first need to create a directory to hold all my cvs repositories, then i need to checkout the latest browser version. The following commands were used through my Linux terminal.
>$ mkdir cvs >$ cd cvs >$ cvs -d :pserver:anonymous:anonymous@cvs-mirror.mozilla.org:/cvsroot co >$ mozilla/client.mk >$ cd mozilla
Now that we have a link to the Mozilla repository, I can now specify which code segment to download using the MOZ_CO_PROJECT parameter. Since we’re only building Firefox, we can specify the keyword ‘browser’ to download only the browser components.
>$ make -f client.mk checkout MOZ_CO_PROJECT=browser
By accident, I missed the section that talks about the build options configuration file. I quickly moved to the Firefox build section initiated the following command to build my newly downloaded browser source.
>$ make -f client.mk build
The Build
Problems Encountered
My very first problem! Failing to read the section about creating a .mozconfig file has resulted in the following error.
-Error: Parameter missing: --enable-application=APP
After reading over the configure build options web page, I quickly created my .mozconfig file with the following parameters.
<PARAMETERS HERE>
Once again, I initiated the build command described above to restart the Firefox build. After 1 hour into the build process, I noticed a consistent flow of error messages being display on my terminal. Minutes later, the build crashed. It turns out that I was missing a file called ‘int_types.h’ that caused various build files to crash as they could not resolve to this header file. After various google searches with no results, I decided to venture into the google newsgroups in hopes of an answer. To my surprise, many users were having the same issue. Described in many cases, my current situation was a result of not having the g++ package installed. I quickly installed the g++ package and re-executed the build command.
The build process this time failed much quicker then my previous tempt. Once again I received the same error as before. This time, I decided to venture into IRC and talk to my fellow classmates about the problem I was having. Within minutes, I had various users assisting me with my build problems. Tom (mystic) took the time to ensure that I had the required packages installed libraries installed. Dave quickly asked me about my make version and described how it may cause an issue if I had the wrong version installed. After double checking all the requirements listed by Tom and Dave were correct on my system, I decided to delete and re-checkout the whole Mozilla browser code from the truck.
Crossing my figures, I executed the build command in hopes that my previous snapshot of the repository was corrupted. Surely enough, I was right! (What a guess) 3 hours later, I had my first Firefox build!
Screenshot
Coming soon!
Conclusion
To tell you the truth, I was expecting a fierce battle with the Mozilla Firefox build. This turned out to be better then I expected as building on Ubuntu proved to be very easy and straight forward. The build problems I encountered allowed me to understand more about the build system and how the slightest file/version change can break the build.