Assignment 1(mylau)

From CDOT Wiki
Revision as of 21:06, 19 September 2006 by Mylau (talk | contribs) (Problems you encountered and how you solved those problems)
Jump to: navigation, search

Introduction

I built Firefox 3, code name "Minefield". I checked out the latest code from the branch. I built this version of Firefox on Ubuntu linux. I'm very new to linux. Fellow classmates who attended the first lecture told me the professor advising students to not use an Operation System that students were not familiar with. I purposely used Ubuntu because of the challenge.

Computer Specifications

 Intel Centrino 1.8 Ghz
 512 MB RAM
 60 Gig Hard Drive
 Dual Boot - Windows XP Pro and Ubuntu LTS 6.06
 Installed VMWare on Ubuntu to be able to run Windows XP Pro

Steps you took to complete the build

For my build, I used Ubuntu. The main reason for this was so I can become more comfortable using Linux and not become dependent on a specific Operating System. the following steps I performed to build Firefox are the following:

1. Downloaded and installed CVS

 $ sudo apt-get install cvs

2. Checked out the latest version of Firefox using CVS

 cvs -d :pserver:anonymous:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r MOZILLA_1_8_BRANCH mozilla/client.mk

3. Updated the checked out version of Firefox

 $ cd mozilla
 $ make -f client.mk checkout

4. Created a .mozconf file in the mozilla directory. It contained the following content:

 . $topsrcdir/browser/config/mozconfig

5. Performed a make command to build Firefox

 $ make -f client.mk build

6. Ran Firefox which was located in the folder mozilla/dist/bin

 $ cd dist/bin/
 $ ./firefox

Software you installed

I'm not sure if libraries are considered to be softwares on Linux but the following were the libraries I installed:

  • build-essentials - This was the very first library I installed. This came with all the tools needed to perform make commands. It also include gcc so all the Firefox prerequisites were met. I would say, this was the most easiest part of the assignment. Ubuntu did a good job coming up with this package.
  • CVS - I used this in order to get the latest Firefox code.
  • libidl-dev
  • libgtk2.0-dev

Problems you encountered and how you solved those problems

Problem 1: Finding a starting point

During the process of installing Firefox, I ran into a number of issues. The very first issue was finding a starting point for the assignment. Unfortunately, the assignment specification did not help much. It could have been the fact that we could build any Firefox version.


Solution 1: finding a starting point

To solve this issue, I asked Mohammad Tirtashi for the link to the source code to Firefox. From there I worked my way and found the link which explained what steps needed to be preformed the build on Mozilla Developer.


Problem 2: Missing packages

Throughout the whole process of building Firefox, I had missing libraries. The first few errors which involved libraries were trivial. The error messages were clear and self explanatory. Unfortunately, the last error message I got before a successful compile was had to deal with Intrinsic.h file. It did not exist in the X11 directory. I searched through the web for a good half day but had no luck finding a solution. There were quite a number of people who posted comments which had same issues as myself but none had solutions. Instead, most of the people just gave up on the build.


Solution 2: Missing packages

Lucky, I was able to get a hold of someone on the IRC chat in the #seneca channel. After talking to vlad, I realized I was missing some packages. They were libidl-dev and libgtk2.0-dev. These packages were not mentioned on the prerequisites.


Problem 3: How to run it after the application is successfully built

This was another one of the issues which took me a while to find. The first place I looked at was the mozilla folder and if it had a bin in mozilla but the file Firefox did not exist. I also checked Build and Install to find how to run the application after the make.


Solution 3: How to run it after the application is successfully built

I asked Tom Aratyn and he told me the Firefox executable was located on mozilla/dist/bin/. I myself would have not figured it this out.

Resources you used to complete your work (people, website, etc.)

I used websites and also asked people for help for this work. I started out using developer.mozilla.org and google to better understand what I needed to do in order to build Firefox. This was a good starting point. It got the ball rolling for this assignment although it was not enough to perform a successful build. Websites helped me troubleshoot some of the earlier issues. As I found more and more errors, the error messages started to become more unclear.

When websites alone was not providing me the right information, I started asking people for help. I got a lot of help from knowledgeable people on IRC chats. IRC chats provided more direct and detailed information as a posed to websites.

After successfully building Firefox, I had the feeling of success and wanted to do more than just a build.


Screenshot of Help > About Mozilla Firefox in your custom build

Screenshot-About Minefield.png

Conclusion and reflections on your first experience building Firefox

After my first experience building Firefox, I must say I learned a lot. One reason was because I built it with Linux which is an operating system I'm least familiar with. Another reason is is that I found another great source for information which is IRC chats. I'm glad open source developers use IRC. If everything ran by emails, I would have ran out of patience in building Firefox.

One suggestion I would make is, developer.mozilla.org should have forums so people can post their issues and how it was resolved. One of the issues I ran into was missing libraries which was not listed on the prerequisites. Although Mozilla's instructions were meant more for developers, it should describe in details of the steps in order for the users to build the source without having issues. Reading the instructions provided require quite a lot of troubleshooting.