Showing posts with label project. Show all posts
Showing posts with label project. Show all posts

Building FireFox

No comments:
Found a good HOWTO on building FF on Windows [update: don't use this page. Use this one instead], but that document is a bit out of date and needs some updating. In particular:
  1. Better to download a tarball of the source rather than do a CVS checkout. Note that the tarball includes CVS meta data so if you want to get updates later, you can. This reduces load on the mozilla servers (good for them), and is a fast way to bootstrap good for you).
  2. .mozconfig is optional - and the parameters have changed significantly since that document was written, and they no longer work.
  3. You need Cygwin, but you need to make sure Perl, Python, and Make are present. And possibly more stuff.
Notes:

http://developer.mozilla.org/en/docs/Configuring_Build_Options
http://mxr.mozilla.org/mozilla/source/browser/config/mozconfig?raw=1
be careful noto to save in PC format as make doesn't like CRLFs.

One bummer about this build is that it spends about 10 minutes doing environment checks. I bet there's a way to skip it, but I don't know what it is yet (probably setting correct build options). This wouldn't be so bad, except that the loop is {run build, get error, fix dependancy, repeat}. Every iteration gets you a bit farther, but it takes a lot of time. (Personally, I find solace in blogging about the experience while I wait.) A nice touch would be if make could remember all the checks it did last time it ran.

The HOWTO above very wisely warns the user that it probably won't work right the first time. But it should add that it probably won't work right the 2nd, 3rd, or 4th time either. :)

Things I had to install (or fix):
  1. make (cyg)
  2. bad options (edit .mozconfig)
  3. python (cyg)
  4. makensis (skip: --disable-installer)
  5. iconv (a character conversion library. at first I added C:\bin\xampp-1.6.4\apache\bin to build path but that didn't work; I read the gnu page and noticed it's probably called libiconv in cygwin. added the "dev" version, and that worked)
And at this point it's actually generating more makefiles, which is a start, I guess. I'll be really happy once it starts actually compiling stuff. :)

Getting this build to work reminds of me of a nice little puzzle game I ran into yesterday called "Thief" that basically dumps you into a puzzle with neither explanation or context. You just have to figure it out. I kind of like that genre of game.

While the build runs, I ran a search to see if anyone has built FF with the Eclipse CDT. The best link I found was from over 2 years ago, and the short answer is "not really". For a FF build I might try something like Pulse with only the single project in the workspace. (Holy crap I'm the 5th result for "genuitec pulse".)

(Ooh and now gcc is getting called, and it's not puking! Cool!)

Anyway, so yeah a stripped down, shiny new Eclipse 3.0 with just the CDT installed, a workspace with just one monster project.... Sounds to me like the experiment should be tried again.

(OMG it looks like the build is doing a depth-first traversal of a tree of about 6000 files, building a command line and then calling gcc on each file. I mean, whoah.)

Sigh. I should have known. 5 hours later, the build failed. Here's the output:

Creating .deps
/cygdrive/c/home/josh/moztools/mozilla/build/cygwin-wrapper /cygdrive/c/home/josh/moztools/bin/nsinstall -m 644 /
e/c/home/josh/moztools/mozilla/xpinstall/cleanup/InstallCleanupDefines.h ../../dist/include/xpinstall
make[5]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/xpinstall/cleanup'
make[5]: Entering directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/xpinstall/stub'
Creating .deps
make[5]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/xpinstall/stub'
make[4]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/xpinstall'
make[4]: Entering directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/security/manager'
/usr/bin/make -C /cygdrive/c/home/josh/moztools/mozilla/security/coreconf MAKE="/usr/bin/make -j1" -j1 CC="/cygdr
ome/josh/moztools/mozilla/build/cygwin-wrapper cl" SOURCE_MD_DIR=c:/home/josh/moztools/mozilla/firefox-objdir/dis
c:/home/josh/moztools/mozilla/firefox-objdir/dist NSPR_INCLUDE_DIR=c:/home/josh/moztools/mozilla/firefox-objdir/d
lude/nspr NSPR_LIB_DIR=c:/home/josh/moztools/mozilla/firefox-objdir/dist/lib MOZILLA_CLIENT=1 NO_MDUPDATE=1 NSS_E
CC=1 BUILD_TREE=c:/home/josh/moztools/mozilla/firefox-objdir NS_USE_GCC= NS_USE_NATIVE=1 OS_TARGET=WIN95 USE_DEBU
clean
make[5]: Entering directory `/cygdrive/c/home/josh/moztools/mozilla/security/coreconf'
../coreconf/rules.mk:368: target `c' doesn't match the target pattern
../coreconf/rules.mk:415: target `c' doesn't match the target pattern
../coreconf/rules.mk:416: warning: overriding commands for target `c'
../coreconf/rules.mk:369: warning: ignoring old commands for target `c'
../coreconf/rules.mk:444: target `c' doesn't match the target pattern
../coreconf/rules.mk:445: warning: overriding commands for target `c'
../coreconf/rules.mk:416: warning: ignoring old commands for target `c'
../coreconf/rules.mk:448: target `c' doesn't match the target pattern
../coreconf/rules.mk:449: warning: overriding commands for target `c'
../coreconf/rules.mk:445: warning: ignoring old commands for target `c'
../coreconf/rules.mk:452: target `c' doesn't match the target pattern
../coreconf/rules.mk:453: warning: overriding commands for target `c'
../coreconf/rules.mk:449: warning: ignoring old commands for target `c'
../coreconf/rules.mk:467: target `c' doesn't match the target pattern
../coreconf/rules.mk:468: warning: overriding commands for target `c'
../coreconf/rules.mk:453: warning: ignoring old commands for target `c'
../coreconf/rules.mk:471: target `c' doesn't match the target pattern
../coreconf/rules.mk:472: warning: overriding commands for target `c'
../coreconf/rules.mk:468: warning: ignoring old commands for target `c'
../coreconf/rules.mk:969: *** multiple target patterns. Stop.
make[5]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/security/coreconf'
make[4]: *** [.nss.cleaned] Error 2
make[4]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/security/manager'
make[3]: *** [export_tier_toolkit] Error 2
make[3]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir'
make[2]: *** [tier_toolkit] Error 2
make[2]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir'
make: *** [build] Error 2


I may need to contact the developer list or google groups for this one. I feel strangely unmotivated.

9pm After dinner and a little nap, I feel better about the whole
situation. I did a little searching, and I'm not the only one with this
problem. Apparently the culprit is make, and I need to go back to v
3.80. Having this problem actually pointed out a very nice HOWTO from Mozilla itself which is much better than the HOWTO I started off with. Not quite sure how I missed it....

Web 2.0, Linux Kernels, and Building FireFox

No comments:
How about a system where people collaboratively describe the components of their PC for fun (this would especially nice for the anandtech/extremetech/pcgamer crowd). But then this data could be fed into a service that creates custom kernels for people and/or bootable mini distributions maxed out for your machine without all the driver dross in a typical distro. (Of course, this would also be a nice place, like Visual History, to hang other meta data off of, perhaps even organize Linux driver projects like this one or this.)

(This occurred to me as I was looking testing LXR with Kernel sources, and realizing how much of Linux is actually "just" device drivers - 99% of which you don't need ever, and 99.9% you don't need to bootstrap to a system that can download what it needs. The idea also dovetails with an earlier idea to wrap common unix utilities in an easy-to-call document that can autogenerate UIs. That would possibly compete with Webmin and Cpanel, but I haven't written that idea up yet, at least not publicly :)

BTW if you want to build FireFox 3b2 get the sources here. Wow it's 220M uncompressed! How on earth do they compile it down to like 6M? I don't know what it is about this tarball, but it's taking even a fast archiver like 7-Zip like 30 minutes to expand all the files. Weird.

Idea: Toward Better Browser History (and bookmarks) - Visual History

No comments:
Consider a UI where, when you navigate, you see a quick, translucent graph of the sites you've visited overlaid over the browser content window. You get the option of clicking one of these ghostly icons. When you hit the back button, take a different path, a new "branch" is added to the tree. Over the course of seconds, the graph fades away. Call it "Visual History".

The data (your navigation tree, or "Visual History") could be stored locally, or shared, perhaps as simple HTML with some JSON meta-data. Sharing would be as simple as posting some HTML/JavaScript somewhere.

This would be the natural place to hang other meta-data, such as date of last visit, how many times you've visited, whether you "dugg" it, tagging (bookmark tagging is a nice feature of FireFox 3.0!) Of course, some this information probably wouldn't be very useful shared, and so would be elided on output.

I see this data structure as being "seeded" passively, and then actively maintained, perhaps by collaborators. It would be a visualization of some of the same things that are being done by human powered directories like Mahalo.com. But instead of lists of things, you get graphs, with lots of juicy meta data, etc.

The thing I really like about this idea is that it scales from something you could personally use all the way up to something everyone could use. It even has both passive and active data accumulation features, which is great.

I've always thought history and bookmarks lost a lot of information - yes, that URL bookmark or history entry is quite useful and wonderful, but how did you find it? That's perhaps even more important, as gateway sites tend to be used more than destination sites, and are somehow easier to forget in light of the 600lb Goorilla (heh, just made that up!). Indeed, if such a system got popular I think people would use specialist gateway sites and search more often than they do today where we all just "Google it". The marginally better results we get elsewhere just isn't worth the inconvenience of remembering another URL. For now. And anyone who knows me knows that I think concentration of power is never a good thing.

In a small related note, you may be noticing these little popups that preview a link. It's a handy, if somewhat superfluous thing which will probably go away in time. But you could present these "super-bookmarks" in a similar way, and that would be useful. I mean, the ideal client would be a browser addon, but you could get a lot of milage out of the data even without the addon.

[Update: one other big reason this needs to be done, memory. Sometimes I can't remember a site, but I might remember how I got there.]

Gmail on the Desktop - let's fix contacts, too.

No comments:
In an earlier post I mentioned the desire to run Gmail on the desktop, potentially in offline operation. This would have the added benefit of being able to use Gmail's contacts in a more useful way (try as I might, Gmail's contact management remains completely unusable). I think if I did something with Eclipse I might call it "Penumbra". Heh.