Firefox build instructions

Discussion about official Mozilla Firefox builds
Post Reply
mikecop
Posts: 268
Joined: January 12th, 2003, 12:47 pm

Post by mikecop »

As far as i can tell, files in the listed directories below are missing. These directories do exist, but they just don't have any files in them.
<code>/cygdrive/c/mozilla/mozilla/browser
/cygdrive/c/mozilla/mozilla/chrome
/cygdrive/c/mozilla/mozilla/toolkit</code>

By the way, times like this making Mozilla even greater, Using "find as you type" , I could easily find errors from the log.

Also i would like to ask, when i download the source from CVS, what exactly am i downloading ? Mozilla or firefox ? what version ? stable release or nightly? Where can I get these information ? where can i change these settings ?

Thanks.
nrthomas
Posts: 1988
Joined: February 9th, 2003, 3:25 pm

Post by nrthomas »

You should definitely try <code>make -f client.mk checkout</code> again then. It's equivalent to pull_all, which is an old name from an old system.

What you are downloading depends on the Tag of the branch specified at the top of client.mk. Here are two examples, first the FIREFOX 0.8 version:

Code: Select all

#######################################################################
# Checkout Tags
#
# For branches, uncomment the MOZ_CO_TAG line with the proper tag,
# and commit this file on that tag.
#MOZ_CO_TAG = <tag>
MOZ_CO_TAG = FIREFOX_0_8_RELEASE
NSPR_CO_TAG = FIREFOX_0_8_RELEASE
PSM_CO_TAG = FIREFOX_0_8_RELEASE
NSS_CO_TAG = FIREFOX_0_8_RELEASE
LDAPCSDK_CO_TAG = FIREFOX_0_8_RELEASE
ACCESSIBLE_CO_TAG = FIREFOX_0_8_RELEASE
IMGLIB2_CO_TAG = FIREFOX_0_8_RELEASE
IPC_CO_TAG = FIREFOX_0_8_RELEASE
TOOLKIT_CO_TAG = FIREFOX_0_8_RELEASE
BROWSER_CO_TAG = FIREFOX_0_8_RELEASE
MAIL_CO_TAG = FIREFOX_0_8_RELEASE
STANDALONE_COMPOSER_CO_TAG = FIREFOX_0_8_RELEASE
BUILD_MODULES = all

And then the trunk version:

Code: Select all

#######################################################################
# Checkout Tags
#
# For branches, uncomment the MOZ_CO_TAG line with the proper tag,
# and commit this file on that tag.
#MOZ_CO_TAG = <tag>
NSPR_CO_TAG = NSPRPUB_PRE_4_2_CLIENT_BRANCH
PSM_CO_TAG = #We will now build PSM from the tip instead of a branch.
NSS_CO_TAG = NSS_CLIENT_TAG
LDAPCSDK_CO_TAG = ldapcsdk_50_client_branch
ACCESSIBLE_CO_TAG =
IMGLIB2_CO_TAG =
IPC_CO_TAG =
TOOLKIT_CO_TAG =
BROWSER_CO_TAG =
MAIL_CO_TAG =
STANDALONE_COMPOSER_CO_TAG =
BUILD_MODULES = all

Having a blank line after the = indicates that cvs should pull from the head of the source tree, aka the trunk where development is occuring. So you are getting nightly code rather than stable, and the current version of Firefox is 0.8.0+ and based on Mozilla 1.7a. The trunk is currently frozen to fix only major bugs (blockers) before releasing 1.7alpha, but the Firefox developers continue to make checkins to their parts of the source tree because we have just had 0.8 and 0.9 won't be here too soon. Firefox is basically Mozilla + mozilla/browser + mozilla/toolkit. Does that lot help ?
mikecop
Posts: 268
Joined: January 12th, 2003, 12:47 pm

Post by mikecop »

Hi, I am running <code>make -f client.mk</code> now.

Do i have to delete any previous files or directories ? I hope the answer is "no", because i didn't.

I checked my client.mk file. It is for the trunk version.

Just wondering, if i change the tag to firefox, does it mean the download would be faster and so would the building process? Because i assume that firefox cvs contains much less number of files.

By the way, I really appreciate the help here. Although i haven't really built anything yet. But so far, i am having so much fun just looking at all those info flying off the DOS screen.
nrthomas
Posts: 1988
Joined: February 9th, 2003, 3:25 pm

Post by nrthomas »

mikecop wrote:Do i have to delete any previous files or directories ? I hope the answer is "no", because i didn't.


See how it goes without, and if you aren't pulling any files in the three directories you mentioned then zap them and try again. Perhaps CVS has gotten very confused.

mikecop wrote:I checked my client.mk file. It is for the trunk version.

Just wondering, if i change the tag to firefox, does it mean the download would be faster and so would the building process? Because i assume that firefox cvs contains much less number of files.


No, not at all - you really need all the Mozilla stuff. If you were to use the FIREFOX_0_8_RELEASE branch then you will get no bug fixes at all and it still contains all the stuff you are trying to avoid. If you want the stable release then you would probably be better off downloading the <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/0.8/firefox-source-0.8.tar.bz2">0.8 source tarball</a> than mucking around with CVS.

As far as I know, there is no way to get around the slowest part of a checkout - the module SeaMonkeyAll. This is core Mozilla stuff and therefore core Firefox stuff. It will also have no effect on build time - the dev's have already trimmed alot of the features they consider bloat.

One way to think about this is that Mozilla is a large family home, and Firefox is upstairs extensions you added to make it even cooler. Even the main building has problems and needs fixing up continually, and so you have to reconstruct the new parts every time to incorporate that. Perhaps that's not a very good analogy !

mikecop wrote:By the way, I really appreciate the help here. Although i haven't really built anything yet. But so far, i am having so much fun just looking at all those info flying off the DOS screen.


No worries. It's very rewarding when you finally get it going, and I enjoy helping people get there.
Last edited by nrthomas on February 18th, 2004, 2:04 pm, edited 1 time in total.
Christian Haugan
Posts: 30
Joined: April 6th, 2003, 5:48 am
Location: Oslo, Norway
Contact:

Post by Christian Haugan »

Christian Haugan wrote:I'm trying to build firefox using msvc .NET 2003. I've followed the instructions at http://iterator.besmirched.org/mozilla/mozbuild.html using the following .mozconfig:
MOZILLA_OFFICIAL=1
BUILD_OFFICIAL=1

export MOZ_PHOENIX=1
mk_add_options MOZ_PHOENIX=1

ac_add_options --disable-ldap
ac_add_options --disable-mailnews
ac_add_options --enable-extensions=cookie,xml-rpc,xmlextras,p3p,pref,
transformiix,universalchardet,typeaheadfind,webservices,inspector

ac_add_options --enable-crypto
ac_add_options --disable-composer
ac_add_options --disable-profilesharing
ac_add_options --disable-tests
ac_add_options --disable-debug
ac_add_options --enable-optimize="/O2"
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --disable-installer

But after quite a while of building, the process fails at:

/cygdrive/d/mozilla/mozilla/build/cygwin-wrapper d:/mozilla/moztools/bin/nsinsta
ll -m 644 uconv.lib ../../../dist/lib/components
+++ making chrome d:/mozilla/mozilla/intl/uconv/src => ../../../dist/bin/chrome
/en-US.jar
copy(d:/mozilla/mozilla/intl/uconv/src/charsetTitles.properties, ../../../dist/b
in/chrome/en-US/locale/en-US/global/charsetTitles.properties) failed: No such fi
le or directory at d:/mozilla/mozilla/config/make-jars.pl line 421, <STDIN> line
2.
make[5]: *** [libs] Error 2
make[5]: Leaving directory `/cygdrive/d/mozilla/mozilla/intl/uconv/src'
make[4]: *** [libs] Error 2
make[4]: Leaving directory `/cygdrive/d/mozilla/mozilla/intl/uconv'
make[3]: *** [libs] Error 2
make[3]: Leaving directory `/cygdrive/d/mozilla/mozilla/intl'
make[2]: *** [tier_9] Error 2
make[2]: Leaving directory `/cygdrive/d/mozilla/mozilla'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/cygdrive/d/mozilla/mozilla'
make: *** [build] Error 2

Any ideas of what I can do to fix this?

-
Christian Haugan


I finally solved this. In case anybody else has a similar problem, here is what I did:
First i tried a make -f client.mk clean, but that failed to. Error message was something like "file is being used by another program...". So I tried to do a rd /s d:\mozilla\mozilla, but that gave the same error message on several files. So instead of trying to figure out which process had locked my files, I booted up my Win2000 in safe-mode with cmd prompt. Did rd /s d:\mozilla\mozilla, now without any error messages. Then rebooted win2000 in the normal way. Checked out client.mk again, pulled the source again. And my next attempt to build was successful.

-
Christian Haugan
mikecop
Posts: 268
Joined: January 12th, 2003, 12:47 pm

Post by mikecop »

OK, the download has finished.

I tried <code>make -f client.mk build_all > c:\mozilla\build.log 2>&1</code> , and failed.

The build log look a bit different this time. It does not have all the <code>--disable-</code> and <code>#define</code> things.

This is the beginning and end of the build log:
Adding client.mk options from /cygdrive/c/mozilla/mozilla/.mozconfig:
MOZ_PHOENIX=1
make
make[1]: Entering directory `/cygdrive/c/mozilla/mozilla'
/usr/bin/make -C config export
make[2]: Entering directory `/cygdrive/c/mozilla/mozilla/config'
.....
.....
.....
make[5]: Entering directory `/cygdrive/c/mozilla/mozilla/browser/components/build'
rm -f brwsrcmp.dll
/cygdrive/c/mozilla/mozilla/build/cygwin-wrapper g++ -mno-cygwin -shared -o brwsrcmp.dll nsModule.o ./module.res -mwindows -Wl,--whole-archive ../../../dist/lib/libbookmarks_s.a ../../../dist/lib/libwinhooks_s.a -Wl,--no-whole-archive -L../../../dist/lib -lxpcom -L../../../dist/bin -L../../../dist/lib -lnspr4 -lplc4 -lplds4 -L../../../dist/lib -ljs3250 ../../../dist/lib/libunicharutil_s.a -L../../../dist/lib -lxpcom_compat -Wl,--version-script,/cygdrive/c/mozilla/mozilla/build/unix/gnu-ld-scripts/components-version-script -lm -lole32 -lshell32 -lversion
../../../dist/lib/libunicharutil_s.a(nsUnicharUtils.o.b)(.text+0x1a4):nsUnicharUtils.cpp: undefined reference to `_imp__NS_GetServiceManager'
make[5]: *** [brwsrcmp.dll] Error 1
make[5]: Leaving directory `/cygdrive/c/mozilla/mozilla/browser/components/build'
make[4]: *** [libs] Error 2
make[4]: Leaving directory `/cygdrive/c/mozilla/mozilla/browser/components'
make[3]: *** [libs] Error 2
make[3]: Leaving directory `/cygdrive/c/mozilla/mozilla/browser'
make[2]: *** [tier_99] Error 2
make[2]: Leaving directory `/cygdrive/c/mozilla/mozilla'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/cygdrive/c/mozilla/mozilla'
make: *** [build] Error 2


Should I delete and old files before start building again ? For example, the c:\mozilla\mozilla\dist directory ?
Thanks again.
nrthomas
Posts: 1988
Joined: February 9th, 2003, 3:25 pm

Post by nrthomas »

So close ! The lack of configure stuff is normal if mozconfig is unchanged.

Better than deleting mozilla/dist/bin would be to go:

Code: Select all

make -f client.mk distclean

Did you try that already ? It'll completely wipe out any previous build attempts and everything should go smooth as silk afterwards. It'll just take a while to do a complete recompilation.

There is probably a clever way to figure it out but I have to sleep. :-)
mikecop
Posts: 268
Joined: January 12th, 2003, 12:47 pm

Post by mikecop »

HI, me again.

This time it went much further, at least the build.log file is 5,805K, instead of the previous 1,000+K . :)

I don't see any error messages or "can't read" messages this time, except at the end of the log.
/cygdrive/c/mozilla/mozilla/build/cygwin-wrapper g++ -mno-cygwin -shared -o brwsrcmp.dll nsModule.o ./module.res -mwindows -Wl,--whole-archive ../../../dist/lib/libbookmarks_s.a ../../../dist/lib/libwinhooks_s.a -Wl,--no-whole-archive -L../../../dist/lib -lxpcom -L../../../dist/bin -L../../../dist/lib -lnspr4 -lplc4 -lplds4 -L../../../dist/lib -ljs3250 ../../../dist/lib/libunicharutil_s.a -L../../../dist/lib -lxpcom_compat -Wl,--version-script,/cygdrive/c/mozilla/mozilla/build/unix/gnu-ld-scripts/components-version-script -lm -lole32 -lshell32 -lversion
../../../dist/lib/libunicharutil_s.a(nsUnicharUtils.o.b)(.text+0x1a4):nsUnicharUtils.cpp: undefined reference to `_imp__NS_GetServiceManager'
make[5]: *** [brwsrcmp.dll] Error 1
make[5]: Leaving directory `/cygdrive/c/mozilla/mozilla/browser/components/build'
make[4]: *** [libs] Error 2
make[4]: Leaving directory `/cygdrive/c/mozilla/mozilla/browser/components'
make[3]: *** [libs] Error 2
make[3]: Leaving directory `/cygdrive/c/mozilla/mozilla/browser'
make[2]: *** [tier_99] Error 2
make[2]: Leaving directory `/cygdrive/c/mozilla/mozilla'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/cygdrive/c/mozilla/mozilla'
make: *** [build] Error 2


Any ideas what happened? and what should i do?

Thanks again. Sorry for all these trouble.
hypeiv
Posts: 7
Joined: February 18th, 2004, 1:17 pm

Post by hypeiv »

I am also getting that error and so are a few others. So its unlikely our fault, I will just keep trying everyday I am not sure if this has been reported or anything
nrthomas
Posts: 1988
Joined: February 9th, 2003, 3:25 pm

Post by nrthomas »

Thanks hypeiv, that's useful to know. What version of binutils are people having trouble using ? I remember seeing on this <a href="http://forums.mozillazine.org/viewtopic.php?t=49777&highlight=binutils">topic</a> that there was a problem with versions newer than 2.14.90 20030807-1.

Also, the win32api package just got updated to version 2.5. Are you guys using that ?
hypeiv
Posts: 7
Joined: February 18th, 2004, 1:17 pm

Post by hypeiv »

i am using binutils-2.14.90-20030807-1 and win32api 2.4. I have talked to someone who is getting the same problem and is using the same enviornment as he was when he was able to compile before 2-15-04.

I don't think there have been any gcc builds posted on burning edge since the 14th or 15th so we are not alone.

I will give 2.5 a try for kicks and if it works I will post back here.

UPDATE - same exact error with 2.5
nrthomas
Posts: 1988
Joined: February 9th, 2003, 3:25 pm

Post by nrthomas »

Ok, I think I might have tracked this down. Ben made a checkin 02/14/2004 17:49 PST to mozilla/browser/components/build/Makefile.in, which changes the order libraries where listed for linking. You can see this at the bottom of this <a href="http://bonsai.mozilla.org/cvsview2.cgi?diff_mode=context&whitespace_mode=show&root=/cvsroot&subdir=mozilla/browser/components/build&command=DIFF&root=/cvsroot&file=Makefile.in&rev1=1.13&rev2=1.14">bonsai query</a>.

Test scenario:

1, cd to mozilla/browser/components/build/
2, edit Makefile (not Makefile.in) to change the lines from:
EXTRA_DSO_LDOPTS += \
$(EXTRA_DSO_LIBS) \
$(MOZ_COMPONENT_LIBS) \
$(MOZ_JS_LIBS) \
$(MOZ_UNICHARUTIL_LIBS) \
$(MOZ_XPCOM_OBSOLETE_LIBS) \
$(NULL)
to
EXTRA_DSO_LDOPTS += \
$(EXTRA_DSO_LIBS) \
$(MOZ_UNICHARUTIL_LIBS) \
$(MOZ_COMPONENT_LIBS) \
$(MOZ_XPCOM_OBSOLETE_LIBS) \
$(MOZ_JS_LIBS) \
$(NULL)

3, issue the command "make libs"
4, see if the error persists
mitodna
Posts: 54
Joined: September 10th, 2003, 6:01 pm

Build FireFox with .NET SDK?

Post by mitodna »

hi,

i read somewhere here, that someone mention that the .NET SDK is free, so there is a compiler there right? so can i build Firefox with the SDK only?

anyone can give me hint? please thank you
jaz
Posts: 70
Joined: December 6th, 2002, 1:33 pm
Location: Texas

Post by jaz »

CrazyFred wrote:Ok, I think I might have tracked this down. Ben made a checkin 02/14/2004 17:49 PST to mozilla/browser/components/build/Makefile.in, which changes the order libraries where listed for linking. You can see this at the bottom of this <a href="http://bonsai.mozilla.org/cvsview2.cgi?diff_mode=context&whitespace_mode=show&root=/cvsroot&subdir=mozilla/browser/components/build&command=DIFF&root=/cvsroot&file=Makefile.in&rev1=1.13&rev2=1.14">bonsai query</a>.

Test scenario:

1, cd to mozilla/browser/components/build/
2, edit Makefile (not Makefile.in) to change the lines from:
EXTRA_DSO_LDOPTS += \
$(EXTRA_DSO_LIBS) \
$(MOZ_COMPONENT_LIBS) \
$(MOZ_JS_LIBS) \
$(MOZ_UNICHARUTIL_LIBS) \
$(MOZ_XPCOM_OBSOLETE_LIBS) \
$(NULL)
to
EXTRA_DSO_LDOPTS += \
$(EXTRA_DSO_LIBS) \
$(MOZ_UNICHARUTIL_LIBS) \
$(MOZ_COMPONENT_LIBS) \
$(MOZ_XPCOM_OBSOLETE_LIBS) \
$(MOZ_JS_LIBS) \
$(NULL)

3, issue the command "make libs"
4, see if the error persists


It worked! I used to have the brwsrcmp.dll error almost at the end of my build process and I don't anymore!!
mikecop
Posts: 268
Joined: January 12th, 2003, 12:47 pm

Post by mikecop »

Hi,

I think a made a little mess.

I was looking through cygwin's site. And it says, it is better if cygwin was not installed in c:\ . But i already did so. Therefore i tried to rearrange all the directories from this:
<code>c:\cygwin
c:\mingw
c:\mozilla
c:\mozilla\moztools</code>

to this ( I created a linux directory , re-installed cygwin , and moved mingw and mozillla) :
<code>c:\linux\cygwin
c:\linux\mingw
c:\linux\mozilla
c:\linux\mozilla\moztools</code>

Now i tried both

Code: Select all

make -f client.mk distclean

Code: Select all

make -f client.mk build_all
,

but i get this error message in both commend:

<code>checking for trouble comparing to zero near std::operator!=()... (cached) no
checking for LC_MESSAGES... (cached) no
configure: error: Building crypto support requires a valid version of the standalone assembler, ml.exe.
*** Fix above errors and then restart with "make -f client.mk build"
make: *** [/cygdrive/c/linux/mozilla/mozilla/Makefile] Error 1</code>

What have I done !! #-o

What should i do now?
Post Reply