Instructions for Setting Up DXR
Revision as of 20:54, 11 February 2009 by David.humphrey (talk | contribs)
This page describes the steps necessary to manually create a working DXR. The goal of this is to eventually be able to automate the process as part of an RPM for Fedora.
- mkdir ~/dxr
- mkdir ~/dxr/tools
- Setup a working Mozilla build environment:
- su -c "yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development'"
- su -c "yum install mercurial autoconf213"
- Setup a working GCC+plugins build environment
- su -c "yum install mpfr-devel"
- Get Mozilla source code (needed for indexing, but also for SpiderMonkey)
- mkdir ~/dxr/mozilla-central
- cd ~/dxr/mozilla-central
- hg clone http://hg.mozilla.org/mozilla-central/ mozilla
- Build SpiderMonkey
- cd ~/dxr/tools
- link or copy js/ from the mozilla-central tree (cp -R ~/dxr/mozilla-central/mozilla/js/ ./js)
- cd ~/dxr/tools/js/src
- autoconf-2.13
- mkdir build-release
- cd build-release
- ../configure --prefix=~/dxr/tools/SpiderMonkey
- make
- cd ..
- Build GCC 4.3.0 with Plugin Support
- mkdir ~/dxr/tools/gcc-dehydra
- cd ~/dxr/tools/gcc-dehydra
- Obtain GCC 4.3 sources - wget ftp://ftp.nluug.nl/mirror/languages/gcc/releases/gcc-4.3.0/gcc-4.3.0.tar.bz2
- tar jxvf gcc-4.3.0.tar.bz2
- cd gcc-4.3.0/
- hg init .
- hg clone http://hg.mozilla.org/users/tglek_mozilla.com/gcc-moz-plugin-mq .hg/patches
- (for file in `cat .hg/patches/series`; do cat .hg/patches/$file; done) |patch -p1
- cd ..
- mkdir gcc-build
- cd gcc-build
- build for proper arch:
- (32 bit) ../gcc-4.3.0/configure --without-libstdcxx --enable-checking --disable-bootstrap CFLAGS="-g3 -O0" --enable-languages=c,c++ --enable-__cxa_atexit --prefix=$PWD/../installed
- (x86_64) ../gcc-4.3.0/configure --without-libstdcxx --enable-checking --disable-bootstrap CFLAGS="-g3 -O0 -m64" --enable-languages=c,c++ --disable-multilib --enable-__cxa_atexit --prefix=$PWD/../installed
- make
- make install
- cd .. (note: ./installed now contains the built gcc)
- Build Dehydra
- hg clone http://hg.mozilla.org/users/tglek_mozilla.com/dehydra-gcc/
- cd dehydra-gcc
- ./configure --js-libs=/home/dave/dxr/tools/SpiderMonkey/lib --js-headers=/home/dave/dxr/tools/SpiderMonkey/include --js-name=mozjs
- make
NOTE: running |make check| causes a known failure that can be ignored for now:
[dave@Germany dehydra-gcc]$ make check make -C test check make[1]: Entering directory `/home/dave/dxr/tools/gcc-dehydra/dehydra-gcc/test' python unit_test_harness.py dehydra "/home/dave/dxr/tools/gcc-dehydra/gcc-build/gcc/cc1plus -quiet -O1 -ftest-coverage -fplugin=../gcc_%s.so -o /dev/null -fplugin-arg=%s %s" ...x.................................. Test Failure: Test command: /home/dave/dxr/tools/gcc-dehydra/gcc-build/gcc/cc1plus -quiet -O1 -ftest-coverage -fplugin=../gcc_dehydra.so -o /dev/null -fplugin-arg=test_numinfo.js numinfo.cc Failure msg: Expected 'OK' output; got 'ERR TestCase Error: 0ul != 0u' Unit Test Suite Summary: 37 passed 1 failed 0 error(s) make[1]: *** [check_dehydra] Error 1 make[1]: Leaving directory `/home/dave/dxr/tools/gcc-dehydra/dehydra-gcc/test' make: *** [check] Error 2
- TODO: add post-processing steps to create xref -- see bug 435814
- Get xref post-processing scripts
- mkdir ~/dxr/tools/xref-scripts
- cd ~/dxr/tools/xref-scripts
- wget https://bug435814.bugzilla.mozilla.org/attachment.cgi?id=325316 -O class_schema.sql
- wget https://bug435814.bugzilla.mozilla.org/attachment.cgi?id=325314 -O build_db.sh
- Adjust paths for build_db.sh script:
SOURCEROOT=$HOME/dxr/mozilla-central/mozilla OBJDIR=${SOURCEROOT}/objdir-opt DEHYDRAROOT=$HOME/dxr/tools/xref-scripts DBROOT=$HOME/dxr/xref-db DBBACKUP=${DBROOT}-old
- wget https://bug435814.bugzilla.mozilla.org/attachment.cgi?id=325317 -O fix_paths.pl
- wget https://bug435814.bugzilla.mozilla.org/attachment.cgi?id=325318 -O process_xref.pl
- wget https://bug435814.bugzilla.mozilla.org/attachment.cgi?id=325320 -O moz_types.js
- Patch xpidl to generate xref info
- cd ~/dxr/mozilla-central
- wget https://bug435814.bugzilla.mozilla.org/attachment.cgi?id=323401 -O xpidl-xref-build.diff
- cd mozilla
- patch -p1 < ../xpidl-xref-build.diff
- cd ..
- wget https://bug435814.bugzilla.mozilla.org/attachment.cgi?id=337530 -O xpidl_xref.c
- cp xpidl_xref.c mozilla/xpcom/typelib/xpidl
- Create a mozconfig to work with dehydra
. $topsrcdir/browser/config/mozconfig mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-opt mk_add_options MOZ_MAKE_FLAGS=-j9 ac_add_options --enable-optimize --disable-debug ac_add_options --disable-tests # build with gcc+dehydra instead of normal g++ export CXX=$HOME/dxr/tools/gcc-dehydra/installed/bin/g++ export CXXFLAGS="-fplugin=$HOME/dxr/tools/gcc-dehydra/dehydra-gcc/gcc_dehydra.so -fplugin-arg=$HOME/dxr/tools/xref-scripts/moz_types.js"
- run build_db.sh