Instructions for Setting Up DXR

From CDOT Wiki
Revision as of 17:33, 3 April 2010 by Jmdesp (talk | contribs) (noting the READM in DXR HG should be used now and not those steps)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

--Jmdesp 17:33, 3 April 2010 (EDT)

The instructions belows are outdated. Instead, you'd better just :

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"
  • 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)

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
SOURCEROOT=$HOME/dxr/mozilla-central/mozilla
OBJDIR=${SOURCEROOT}/objdir-opt
DEHYDRAROOT=$HOME/dxr/tools/xref-scripts
DBROOT=$HOME/dxr/xref-db
DBBACKUP=${DBROOT}-old
  • 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