Instructions for Setting Up DXR
--Jmdesp 17:33, 3 April 2010 (EDT)
The instructions belows are outdated. Instead, you'd better just :
- hg clone http://hg.mozilla.org/webtools/dxr/ dxr
and then read and apply the content of the dxr/README file It's similar to what's below here, but with newer versions of the scripts, more functionalities (callgraph!), and full steps up to putting your DXR web site online.
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
- make install
- 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 --js-name=mozjs
-
note use of --js-name=mozjs (see bug 478103)Pretty sure you can leave this out now.
-
- 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
- Get xref post-processing scripts (see bug 435814)
- 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"
- cd ~/dxr/tools/xref-scripts
- chmod +x *.pl
- ./build_db.sh