Difference between revisions of "User:Mdsouza/Assignment 01: Build the Fox"

From CDOT Wiki
Jump to: navigation, search
Line 3: Line 3:
 
The way I decided to proceed with this assignment was to read all the information out there about how the build process works before trying anything out. I did this to decrease my chances that I do not fall into a "try, fail, try again" scenario. However, as it came to be, finding a bug in software is inevitable. :(
 
The way I decided to proceed with this assignment was to read all the information out there about how the build process works before trying anything out. I did this to decrease my chances that I do not fall into a "try, fail, try again" scenario. However, as it came to be, finding a bug in software is inevitable. :(
  
In the report below I mentioned the tools one needs, steps I took, and problems that I tackled to get me through the process of building firefox 1.5.0.7 without using CVS!
+
In the report below I mentioned the tools one needs, steps I took, and problems that I tackled to get me through the process of building firefox "minefield" using CVS!
 +
 
 +
Note: I initially tried to build firefox 1.5.0.7 without using CVS, but ran into way too many problems to document. I then moved on to the minefield version and the problems that spitted out were easier to fix.
  
 
=Computer Specs=
 
=Computer Specs=
Line 28: Line 30:
 
==Downloaded And Installed The Tools==
 
==Downloaded And Installed The Tools==
  
*Microsoft® Visual Studio .NET 2003® (C++ module is needed mainly). It's available from [http://acs.senecac.on.ca/pages/download.php ACS] -- [http://sonic.senecac.on.ca/download/getfile.php?username=sfernan2&filename=MSDN/2072.2.ISO Pre-requesite Disc], [http://sonic.senecac.on.ca/download/getfile.php?username=sfernan2&filename=MSDN/2070.ISO Disc 1], [http://sonic.senecac.on.ca/download/getfile.php?username=sfernan2&filename=MSDN/2071.ISO Disc 2]
+
*Microsoft® Visual Studio .NET 2003® (C++ module is needed mainly). It's available from http://acs.senecac.on.ca/pages/download.php ACS] -- [http://sonic.senecac.on.ca/download/getfile.php?username=sfernan2&filename=MSDN/2072.2.ISO Pre-requesite Disc], [http://sonic.senecac.on.ca/download/getfile.php?username=sfernan2&filename=MSDN/2070.ISO Disc 1], [http://sonic.senecac.on.ca/download/getfile.php?username=sfernan2&filename=MSDN/2071.ISO Disc 2]
 
*[http://www.rarlabs.com WinRar] to extract several archive files
 
*[http://www.rarlabs.com WinRar] to extract several archive files
 
*[ftp://ftp.cygwin.com/pub/cygwin/setup.exe Cygwin] | [http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites#GNU_Tools_for_Microsoft_Windows_.28Cygwin.29 More Info] | [http://www.cygwin.com Cygwin Main Website]
 
*[ftp://ftp.cygwin.com/pub/cygwin/setup.exe Cygwin] | [http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites#GNU_Tools_for_Microsoft_Windows_.28Cygwin.29 More Info] | [http://www.cygwin.com Cygwin Main Website]
Line 53: Line 55:
 
*[http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2 Make 3.80] (to overwrite the 3.81 version from the Cygwin install)
 
*[http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2 Make 3.80] (to overwrite the 3.81 version from the Cygwin install)
  
Once MAKE is downloaded and saved on your hard drive:
+
Once '''MAKE''' is downloaded and saved on your hard drive:
  
 
<pre>
 
<pre>
1. Use WinRAR to extract the file to any folder of your choosing.
+
1. Use '''WinRAR''' to extract the file to any folder of your choosing.
2. Copy the make.exe file located within the usr/bin folder and overwrite the make.exe located in C:\cygwin\bin  
+
2. Copy the make.exe file located within the usr/bin folder and overwrite the make.exe located in '''C:\cygwin\bin'''
 
</pre>
 
</pre>
  
 
*[http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/moztools-static.zip MozTools] | [http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites#moztools More Info]
 
*[http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/moztools-static.zip MozTools] | [http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites#moztools More Info]
  
Once downloaded, extract the contents to any location. Remember the location though as you will need to edit your batch file with this location.
+
Once downloaded, extract the contents to '''C:\proj\moztools'''.
  
 
*[http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&DisplayLang=en Microsoft ® Windows Server® 2003 R2 Platform SDK] | [http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites#Platform_SDK More Info]
 
*[http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&DisplayLang=en Microsoft ® Windows Server® 2003 R2 Platform SDK] | [http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites#Platform_SDK More Info]
Line 70: Line 72:
 
==The Build Begins==
 
==The Build Begins==
  
 +
I mainly followed the guide from [http://cs.senecac.on.ca/%7Edavid.humphrey/writing/firefox-win32-build.html Dave's site] but changed a few aspects of it so that it worked for the Visual Studio 2003 version and the way I setup my computer.
 +
 +
1. Created a directory called '''C:\proj'''
 +
 +
2. Downloaded and Installed the necessary software above.
 +
 +
3. Created my [[User:Mdsouza/Assignment_01:_Build_the_Fox#Batch_File|batch file]] and [[User:Mdsouza/Assignment_01:_Build_the_Fox#.mozconfig_File|.mozconfig file]].
 +
 +
4. Navigated to the location of where I stored my batch file ('''C:\proj''') and double-clicked it to execute.
 +
 +
5. When the bash prompt came up, I typed the following commands...
  
 +
Navigated to the '''C:\proj''' folder. Logged in ('''anonymous''' is the password):
 +
 +
<pre>
 +
cvs login
 +
</pre>
 +
 +
Navigated to the '''C:\proj''' folder. Checked out the build script:
 +
 +
<pre>
 +
cvs co mozilla/browser/config mozilla/client.mk
 +
</pre>
 +
 +
6. It created a directory called '''C:\proj\home\mozilla'''. I copied my .mozconfig file over to the '''C:\proj\home\mozilla''' folder.
 +
 +
7. Went back to the prompt and typed...
 +
 +
Navigated to the '''C:\proj\home\mozilla''' folder. Got the full source code:
 +
 +
<pre>
 +
make -f client.mk checkout
 +
</pre>
 +
 +
Built the code:
 +
 +
<pre>
 +
make -f client.mk build
 +
</pre>
 +
 +
8. Kept waiting for it to build (it took a couple of hours suprisingly). A couple of bugs below came up, I checked my
 +
[[User:Mdsouza/Assignment_01:_Build_the_Fox#Did_The_Boring_Stuff|resources]] and [http://www.google.com Google], fixed the problems and FINALLY finished it successfully!
  
 
==Problems And Solutions==
 
==Problems And Solutions==
Line 89: Line 132:
  
 
<pre>
 
<pre>
SET CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
 
SET CVS_RSH=ssh
 
 
 
rem --- Set HOME so that cvs and ssh work correctly
 
rem --- Set HOME so that cvs and ssh work correctly
 
rem --- cvs uses HOME to locate your .cvspass file, and ssh to locate your .ssh file
 
rem --- cvs uses HOME to locate your .cvspass file, and ssh to locate your .ssh file
 
rem --- if you are using ssh, your HOME should match the home directory specified in /etc/passwd. See http://www.cygwin.com/faq/faq0.html.
 
rem --- if you are using ssh, your HOME should match the home directory specified in /etc/passwd. See http://www.cygwin.com/faq/faq0.html.
set HOME=C:\home
+
set HOME=C:\proj\home
  
rem --- Set VCVARS to wherever the MSVC vcvars.bat file is found
+
rem --- CVS Setup
set VCVARS=C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat
+
SET CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
 +
SET CVS_RSH=ssh
  
rem --- Set MSSDK to wherever the MS SDK is installed
+
rem --- Setup the paths to the moztools build libraries
rem --- Only required for MSVC7 or the Free MSVC editions that don't come with an SDK
+
set MOZ_TOOLS=C:\proj\moztools
set MSSDK=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2
+
set GLIB_PREFIX=%MOZ_TOOLS%
 +
set LIBIDL_PREFIX=%MOZ_TOOLS%
  
rem --- Set MOZ_TOOLS to wherever you have the moztools packaged installed
+
rem --- Scrub these variables first
set MOZ_TOOLS=C:\moztools
+
SET INCLUDE=
 +
SET LIB=
 +
SET PATH=C:\;C:\windows\system32;C:\windows\system32\wbem
  
rem --- Set CYGWINBASE to wherever cygwin is installed
+
rem --- Prepend cygwin
rem --- Do not use CYGWIN or else cygserver, cygrunsrv, and Cygwin services will not function properly
+
SET PATH=C:\cygwin\bin;%PATH%
rem --- Variable CYGWIN is also used to modify Cygwin's behaviour a little bit.
 
set CYGWINBASE=C:\cygwin
 
rem --- Make sure Cygwin does not print out a DOS style path warning
 
set CYGWIN=nodosfilewarning
 
  
rem --- Prepend Cygwin path
+
rem --- Setup VC7 compiler environment vars
rem --- This is necessary so that cygwin find is ahead of windows find.exe in the PATH, but cgywin link is after MSVC link.exe.
+
CALL "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat"
set PATH=%CYGWINBASE%\bin;%PATH%
 
  
rem --- Set MSVC environment vars
+
rem --- Add glib/libidl to build environment
call "%VCVARS%"
+
SET PATH=%PATH%;%GLIB_PREFIX%;%GLIB_PREFIX%\bin
 +
SET INCLUDE=%GLIB_PREFIX%\include;%INCLUDE%
 +
SET LIB=%GLIB_PREFIX%\lib;%LIB%
  
rem --- Prepend SDK paths
+
rem --- moztools comes last after glib/libIDL
rem --- Only required for MSVC7 or the Free MSVC editions that don't come with an SDK
+
SET PATH=%PATH%;%MOZ_TOOLS%\bin
set PATH=%MSSDK%\bin;%PATH%
 
set INCLUDE=%MSSDK%\include;%INCLUDE%
 
set LIB=%MSSDK%\lib;%LIB%
 
 
 
rem --- moztools comes last
 
set PATH=%PATH%;%MOZ_TOOLS%\bin
 
 
 
rem --- Now the PATH variable contains:
 
rem MS-SDK; MSVC; Cygwin; Windows; glib/libIDL; Moztools
 
  
 
rem --- Typically the last thing the script does is launch a cygwin shell
 
rem --- Typically the last thing the script does is launch a cygwin shell
Line 140: Line 172:
 
===.mozconfig File===
 
===.mozconfig File===
  
 +
<pre>
 +
# Building Firefox Trunk with Debugging
 +
. $topsrcdir/browser/config/mozconfig
 +
 +
# Put all obj files in one place, not in src tree
 +
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-objdir
 +
ac_add_options --disable-static
 +
ac_add_options --enable-shared
 +
 +
# Debug Build Setup Options
 +
ac_add_options --disable-optimize
 +
ac_add_options --enable-debug
 +
 +
# I'm using Canvas for my work
 +
ac_add_options --enable-canvas
 +
 +
# I disabled the installer
 +
ac_add_options --disable-installer
 +
</pre>
  
 
=Voila!=
 
=Voila!=

Revision as of 19:42, 20 September 2006

Overview

The way I decided to proceed with this assignment was to read all the information out there about how the build process works before trying anything out. I did this to decrease my chances that I do not fall into a "try, fail, try again" scenario. However, as it came to be, finding a bug in software is inevitable. :(

In the report below I mentioned the tools one needs, steps I took, and problems that I tackled to get me through the process of building firefox "minefield" using CVS!

Note: I initially tried to build firefox 1.5.0.7 without using CVS, but ran into way too many problems to document. I then moved on to the minefield version and the problems that spitted out were easier to fix.

Computer Specs

  • Intel Pentium IV 1.7 GHz
  • 1GB of RAM
  • 40GB Hard Drive
  • Windows XP Professional

Steps Took To Build the Fox

Did The Boring Stuff

Here are some of the sites I spent the most time reading:

Downloaded And Installed The Tools

When installing Cygwin the following packages need to be selected:

* ash -- UNIX-like command line interpreter shell (Base category) 
* coreutils -- GNU core utilities (includes fileutils, install, sh-utils, and textutils) (Base category) 
* cvs -- concurrent versions system (Devel category) 
* diffutils -- file comparison utility (Base category) 
* findutils (Base category) 
* gawk -- pattern matching language (Base and Interpretors categories) 
* grep -- text search tool (Base category) 
* libiconv -- character set conversion (Devel category) 
* make -- dependency analyzer for software builds (Devel category) (not mandatory if the version is 3.81 -- we need 3.80)
* patchutils -- a small collection of programs that operate on patch files (Devel category) 
* perl -- a scripting language used to control parts of the build (Interpreters category) 
* sed -- a search and replace language (Base category) 
* unzip -- zip file extraction (Archive category) 
* zip -- zip file creation (Archive category)
  • Make 3.80 (to overwrite the 3.81 version from the Cygwin install)

Once MAKE is downloaded and saved on your hard drive:

1. Use '''WinRAR''' to extract the file to any folder of your choosing.
2. Copy the make.exe file located within the usr/bin folder and overwrite the make.exe located in '''C:\cygwin\bin''' 

Once downloaded, extract the contents to C:\proj\moztools.

Once downloaded, the "Windows Core SDK" (Tools, Build Environment, and Redistributable Components) and the "Web Workshop SDK" (Build Environment) must be installed. If you are using at least Visual Studio .NET 2003, you already have all the necessary SDKs for building mozilla and can skip this requirement step.

The Build Begins

I mainly followed the guide from Dave's site but changed a few aspects of it so that it worked for the Visual Studio 2003 version and the way I setup my computer.

1. Created a directory called C:\proj

2. Downloaded and Installed the necessary software above.

3. Created my batch file and .mozconfig file.

4. Navigated to the location of where I stored my batch file (C:\proj) and double-clicked it to execute.

5. When the bash prompt came up, I typed the following commands...

Navigated to the C:\proj folder. Logged in (anonymous is the password):

cvs login

Navigated to the C:\proj folder. Checked out the build script:

cvs co mozilla/browser/config mozilla/client.mk

6. It created a directory called C:\proj\home\mozilla. I copied my .mozconfig file over to the C:\proj\home\mozilla folder.

7. Went back to the prompt and typed...

Navigated to the C:\proj\home\mozilla folder. Got the full source code:

make -f client.mk checkout

Built the code:

make -f client.mk build

8. Kept waiting for it to build (it took a couple of hours suprisingly). A couple of bugs below came up, I checked my resources and Google, fixed the problems and FINALLY finished it successfully!

Problems And Solutions

Problem 1

Problem 2

Problem 3

Apendix

Batch File

rem --- Set HOME so that cvs and ssh work correctly
rem --- cvs uses HOME to locate your .cvspass file, and ssh to locate your .ssh file
rem --- if you are using ssh, your HOME should match the home directory specified in /etc/passwd. See http://www.cygwin.com/faq/faq0.html.
set HOME=C:\proj\home

rem --- CVS Setup
SET CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
SET CVS_RSH=ssh

rem --- Setup the paths to the moztools build libraries
set MOZ_TOOLS=C:\proj\moztools
set GLIB_PREFIX=%MOZ_TOOLS%
set LIBIDL_PREFIX=%MOZ_TOOLS%

rem --- Scrub these variables first
SET INCLUDE=
SET LIB=
SET PATH=C:\;C:\windows\system32;C:\windows\system32\wbem

rem --- Prepend cygwin
SET PATH=C:\cygwin\bin;%PATH%

rem --- Setup VC7 compiler environment vars
CALL "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat"

rem --- Add glib/libidl to build environment
SET PATH=%PATH%;%GLIB_PREFIX%;%GLIB_PREFIX%\bin
SET INCLUDE=%GLIB_PREFIX%\include;%INCLUDE%
SET LIB=%GLIB_PREFIX%\lib;%LIB%

rem --- moztools comes last after glib/libIDL
SET PATH=%PATH%;%MOZ_TOOLS%\bin

rem --- Typically the last thing the script does is launch a cygwin shell
rem --- watch for your ~/.profile and /etc/profile which may overwrite your carefully setup PATH!
bash --login -i

.mozconfig File

# Building Firefox Trunk with Debugging
. $topsrcdir/browser/config/mozconfig

# Put all obj files in one place, not in src tree
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-objdir
ac_add_options --disable-static
ac_add_options --enable-shared

# Debug Build Setup Options
ac_add_options --disable-optimize
ac_add_options --enable-debug

# I'm using Canvas for my work
ac_add_options --enable-canvas

# I disabled the installer
ac_add_options --disable-installer

Voila!

Conclusion