A new
amd64 test build is up (3/06), plus you can still get an old
i386 build from when v8 still worked on FreeBSD/i386. I build on FreeBSD 7,
FreeBSD 8 builds are also available. Recent builds have working HTML 5 video, you'll need Aragon's
new ALSA ports for sound. Starting with the current build 40826, I've removed MPEG-licensed codecs from the patched ffmpeg library that comes with Chromium (you can still watch HTML 5 videos at
Dailymotion). If you want those codecs, you can swap in the two ffmpeg files from previous builds or build them yourself. There are
OpenBSD builds also, where are the NetBSD porters? You can pitch in on an OpenSolaris port
here.
Funding further work: Now that Chromium works reasonably well for my personal use, it's difficult for me to justify putting much time into it, other than periodically updating to trunk. However, if you would like to donate towards fixing some of these remaining issues, such as the rendering flakiness or v8 issues on i386, you can do so by clicking on the button below. You can also enclose a message on which of the remaining bugs are most important to you.
To run: You'll need these ports installed- security/nss, x11-toolkits/gtk20, devel/gconf2, and devel/libexecinfo- plus you
need procfs setup,
read on for common errors before reporting them.
To build: I'm building
from the git repository with these
step-by-step build instructions, based on Ben's
original build instructions and patches. You can
apply my latest Chromium patch and then
some third party library svn diffs. These are the only two patches you should need, further build notes are
listed below. I first built Chromium for FreeBSD on the build server graciously provided by
John Companies.
If you'd like to pitch in or report errors not listed below, you can reach me at spree at jaggeri dot com.
Common errors (3/06)
Two processes don't stop when you exit, mounting fdescfs will take care of one of them. The rendered HTML in a tab will occasionally freeze up; I find the flaky tab works again if I switch to another tab and load a new page, then switch back to the tab that acted up. Dragging tabs will now crash the browser because of
a regression upstream. Chromium's ALSA driver can leave the speaker in an indeterminate state where it keeps repeating a certain sound: you can fix it by closing the tab that has a HTML 5 video loaded, by loading another HTML 5 video, or by restarting the browser if the first two don't work. On the rare occasion that Chromium crashes, you will need to clean up shared memory with
ipcrm -vW.
Build Modifications
- When rebuilding Chromium with python 2.6, os.chflags causes problems on zfs
- I used to work around this by deleting out/Release/gen or other directories generated by previous builds but that would cause much longer builds. I've now commented out the os.chflags line from /usr/local/lib/python2.6/shutil.py and it works fine.
Workarounds
- socketpair systemcall
- FreeBSD does not usually support SOCK_SEQPACKET yet. That's the same reason the linux Chromium build didn't run on FreeBSD with the f10 emulation layer, I have it fall back to SOCK_DGRAM to get it to work.
- SysV shared memory
- FreeBSD's SysV IPC shared memory implementation works differently than it does on linux, so the rendered HTML bitmaps were being stored in shared memory by the WebKit renderer but Chromium couldn't access them. I fixed this by moving the shmctl(shmkey, IPC_RMID, 0) system call to the destructor, rather than earlier on where it was being called in the linux build. However, there's a reason it was called so early, so that a crash would properly clean up shared memory. This change necessitates the aforementioned shared memory cleanup upon the rare Chromium crash on FreeBSD. It may be corrected by moving to a different shared memory implementation.
- sockaddr struct casting that caused SSL problem
- Apparently the sockaddr datastructure is defined differently in FreeBSD than linux, so where it could be directly cast and passed to NSS in linux, the same line caused problems in FreeBSD. I made the assignment more explicit to avoid this linuxism and SSL now works.