Greetings,
I somehow managed to build google's Chrome browser the BLFS-way at the end of
last year (a long time ago :).
The starting point for help and enlightenment is obviously "The Chromium
Projects",
'dev.chromium.org/developers/how-tos/get-the-code'.
However, my overall build process didn't always go smoothly so I thought maybe
some of
these modest notes below might be of help for other adventurous souls who live
life in the fast
lane while always staying on the cutting edge.
-- You NEED
1. Firefox 9.0.1 (9.0 if you are a mac user :)
Why: to download the Chrome tarball :)
2. the Chrome browser.
Why: to get with the program.
According to the latest news, Chrome has overtaken Firefox as no 2 browser and
is in hot pursuit of IE (well, maybe not so hot, but the fateful 2025 is
looming ever closer).
So let's get to the nitty-gritty!
-- DETAILS (steps, pointers, etc.)
1. As noted above, the basic build instructions are at the above URL.
>From there you can spread your sights and knowledge left and right, up and
down. Including the download link.
First you download the tarball (about >= 1.2 GB). On a lousy DSL line like
mine that means long, joyful, uninterrupted hours of watching football.
The tarball has a name like, r116078, which shows the latest development
revision from which it was made.
This is important because you are strongly urged to update the resulting tree
to the latest release before starting the build. The development, as you will
notice at the end of one of the links out there, runs fast and furious.
(See below for the update how-to.)
Untar it somewhere. Carefully, especially as to the location. Unprivileged.
For personal reasons (whim), I rooted my decompressed Chrome tarball tree in
'usr/local/chromium'.
The actual root is located at the only subdirectory of 'usr/local/chromium':
'src'.
The whole tree takes up about 7 GB. The 'chrome' subdirectory weighs in at
about 0.6 GB.
(the build, when subdirectory 'out' is created, adds another half a gig
to the whole "mozilla".)
2. Before you start, you must also download a set of "tools":
/usr/local/depot_tools' (in my case.)
Small, trivial, a non-event (compared to the tarball download and its
unpacking at step 1. above)
According to documentation,
"Chromium uses a package of scripts, the "depot_tools", to manage interaction
with the Chromium source code repository and the Chromium development process."
Most important tool (app) therein is 'gclient' (IMHO).
The good (?) thing, "depot_tools" are updated automatically and periodically
(like when you run 'gclient' - again, see below)
3. Google uses (for reasons of their own) a project (version) control method
which to me sounds like a dialect of "Subversion".
To update your tree to the latest revision before your actual build (strongly
recommended) you run something like,
gclient sync'
This make take a while depending on how behind you are and how busy they were.
To check out Chromium you type:
'gclient config <URL_of_Chromium_svn>'
They recommend to start with the tarball and then to update it (fully or
partially), i.e., avoid this kind of full checkout.
4. Google uses (again, for reasons of their own) a "configure" procedure
called 'gyp_chromium' (this app is in the main tree; not in "tools").
The "in" files are called "*.gyp" and are all over the place (and updated as
part of the update process; hence, another reason to be up-to-date).
The "out"s (i.e. the resulting "Makefiles") are called "*.mk".
I suppose you can futz around with the gyps, if you so desire (and need).
Personally, I let them be for this, my first build.
Running 'gyp_chromium' is another non-event, about half a min. or so.
5. Now, finally, to the BIG 'make' EVENT.
To create the "chrome" browser, you basically just type
make chrome # add "Release" or "Debug" depending on your goals in life.
If successful, after about 90 min. you end up with a lovely new born (to
enhance the celebratory mood of the New Year's Eve party):
alex[/usr/local/chromium/src]% ls -og out/Release/chrome
-rwxr-xr-x 1 78790552 2011-12-31 19:41 out/Release/chrome
-- Additional NOTES
6. There's no install step ('make install' or some such). This is it.
What you find at 5. above is THE executable, so you deal with it accordingly.
7. Chrome (Chromium) is very fussy about privileges (no root, please) and
gets very happy when it finds your system in a clean, up-to-date state.
My GUESS here, before you attempt the build, you're supposed(?) to run a
"dummy", test 'chrome' executable:
alex[] ls -og
/usr/local/chromium/src/chrome/tools/test/reference_build/chrome_linux/chrome
-rwxr-xr-x 61576000 ...
which is distributed (as a courtesy? ) as part of the main tarball.
7a. If you run it in graphics mode (X11), it looks like a full-fledged chrome
browser (build 89207 - as opposed to 115909, my "real" build), so you can see
what to expect (or give up on building your own and use this demo build as a
binary distribution - like for Ubuntu, and thereby express one more time your
hate of and disdain for Micro$oft)
7b. If run in command mode (like where you'd attempt your build), it appears
to display its gripes about what's inadequate with your system, such as old
and/or missing libraries, packages and the like.
The corollary, if the output is not "clean" (clean = no ugly message
beyond the expected "cannot open display"), first do some work and straighten
up your system until you feel you can fly right.
-- TODO (as they say)
8. After the party music dies down, I'll play a little bit with the new
browser, to get the hang of it; it appears to use a somewhat different
paradigm (I like this word no end. I don't know exactly what is means, but I
feel it adds a sorely needed touch of class to this post) which may require a
little getting used to.
9. This I feel is very important and higher priority.
On the same machine, a Firefox build/install takes no more than ~ 35 min.
My chrome build was, like I said, 90 min. or so. A lot of bloat?
(I'm fully aware, _my_ bloat is somebody else's freedom fighter - but still
and all ...).
Most likely, there's plenty of stuff in there I will never need.
With Firefox one uses those "--with"s and "--disable"s and you feel like
you're in control.
Here, without some different human intervention, 'make' traverses the whole tree
you throw at it unimpeded and builds everything in sight with great gusto.
I've been left with the uneasy feeling I compiled into this executable even
Larry Page's kitchen sink.
At the very least I might try to prune the tree to the bare necessities.
Playing with them gyp files shouldn't be a bad idea either, I figure.
Wishing everybody einen guten Rutsch ins neue Jahr,
-- Alex
--
http://linuxfromscratch.org/mailman/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page