Difference between revisions of "Code Indexer"

From CDOT Wiki
Jump to: navigation, search
(IRC Talk about CVSUP)
(Almost a complete re-do)
Line 10: Line 10:
 
==Project Contributor(s)==
 
==Project Contributor(s)==
  
==Project News and Details==
+
==Options==
====Status====
+
* Help with [http://lxr.mozilla.org/ LXR]/[http://landfill.mozilla.org/mxr-test/ MXR]/[http://www.mozilla.org/bonsai.html Bonsai] development.
* Waiting to see about a license for fisheye
+
* Make a sort-of branch respectful version of [[OpenGrok]]
* OpenGrok has rudimentary (ie a kludge) support for branching.
+
* [Re]write major portions of how [[OpenGrok]] deals with history and changesets and the likes, this is my personal preference.
 +
* Try to fit [http://www.cenqua.com/fisheye/index.html Fisheye] into the current development model, but it seems this might be more like finding a problem for a solution. That is not to say this is a very good tool!
  
====Candidates====
+
==Links==
======Serious Candidates======
 
* [http://lxr.mozilla.org/ LXR]/[http://landfill.mozilla.org/mxr-test/ MXR]/[http://www.mozilla.org/bonsai.html Bonsai] - Not working on setting one up because there is already one
 
* [[OpenGrok]] - As this is becoming my main focus, I am breaking it out into its own page.
 
* [http://www.cenqua.com/fisheye/index.html Fisheye] - Commercial Solution that is free (as in beer) for open source projects.
 
======Others======
 
* [http://savannah.nongnu.org/projects/horus Horus] - Not really what is needed, but its a nice interface for programming students own code.  I will not be actively doing anything to it.
 
* [http://sourceforge.net/projects/sourcenav/ Sourcenav] - investigating this project
 
* [http://gonzui.sourceforge.net Gonzui] - Fairly basic on second examination
 
* [http://google.com/codesearch Google Code Search] - No way to specify the Mozilla project only
 
 
 
====Links====
 
 
* [https://sparc.senecacollege.ca/portal.php?project&pid=23 Official Blurb] just in case I forget what I am doing :P
 
* [https://sparc.senecacollege.ca/portal.php?project&pid=23 Official Blurb] just in case I forget what I am doing :P
 
* [http://matrix.senecac.on.ca/~jhford/ John's School Page]
 
* [http://matrix.senecac.on.ca/~jhford/ John's School Page]
 
* [http://cvs2svn.tigris.org CVS2SVN] Tool to convert CVS to SVN.  Will be used to test SVN interop.
 
* [http://cvs2svn.tigris.org CVS2SVN] Tool to convert CVS to SVN.  Will be used to test SVN interop.
* [http://en.wikipedia.org/wiki/Apache_Tomcat Tomcat on Wikipedia]
+
* [http://developer.mozilla.org/en/docs/Mozilla_Source_Code_Via_CVS Devmo:CVS Checkout]
* [http://developer.mozilla.org/en/docs/Mozilla_Source_Code_Via_CVS CVS Checkout]
+
* [http://developer.mozilla.org/en/docs/Rsyncing_the_CVS_Repository Devmo: Rsyncing the CVS]
* [http://developer.mozilla.org/en/docs/Rsyncing_the_CVS_Repository Rsyncing the CVS]
+
* [http://developer.mozilla.org/en/docs/CVS_Tags Devmo: CVS Tags] - to get the branches to checkout
 
* [http://www.ubuntuforums.org/showthread.php?t=219985 Tomcat5 on Ubuntu]
 
* [http://www.ubuntuforums.org/showthread.php?t=219985 Tomcat5 on Ubuntu]
 
* [http://www.onjava.com/pub/a/onjava/2003/06/25/tomcat_tips.html Tomcat Tips]
 
* [http://www.onjava.com/pub/a/onjava/2003/06/25/tomcat_tips.html Tomcat Tips]
Line 40: Line 30:
 
* [http://atucker.typepad.com/blog/2005/11/a_new_source_br.html Blog Entry] on OpenGrok
 
* [http://atucker.typepad.com/blog/2005/11/a_new_source_br.html Blog Entry] on OpenGrok
 
* [http://ubuntuforums.org/showthread.php?t=124431 Java5 on Ubuntu] - "sudo update-alternatives --config java" and "apt-get remove --purge java-gcj-compat"
 
* [http://ubuntuforums.org/showthread.php?t=124431 Java5 on Ubuntu] - "sudo update-alternatives --config java" and "apt-get remove --purge java-gcj-compat"
* [http://tomcat.apache.org/tomcat-4.1-doc/security-manager-howto.html Tomcat4 Doc] - possibilities for setting up catalina.policy correctly
 
* [http://developer.mozilla.org/en/docs/CVS_Tags CVS Tags] - to get the branches to checkout
 
* [http://tomcat.apache.org/tomcat-5.5-doc/ssi-howto.html Tomcat SSI Howto]
 
* [http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html#CVSUP-CONFIG-VERS CVSUP Guide for FreeBSD]
 
 
* [http://www.mozilla.org/docs/jargon.html Mozilla Jargon]
 
* [http://www.mozilla.org/docs/jargon.html Mozilla Jargon]
* [http://www.deitel.com/CodeSearchEngines/CodeSearchEngines_ResourceCenter_MerobaseOpenGrokCodeProject.html link 45]
+
* [http://www.deitel.com/CodeSearchEngines/CodeSearchEngines_ResourceCenter_MerobaseOpenGrokCodeProject.html Misc]
 
 
==Notes on Accessing Test Server==
 
If you want to access the test server through anything other than port 80, you are going to have to type in the following address into a browser and note the IP address you get in your address bar.  This is because I have dynamic DNS.  Everything, including the source itself, will be in the http root for easy access to the files.  This is not optimal, and will not stay this way once things advance.
 
 
 
[http://superfind.bounceme.net Superfind] - Will resolve as www.no-ip.com computer, which is why you have to use a browser to get the IP
 
 
 
====Services====
 
<table>
 
<tr>
 
<td>'''Service'''</td><td>'''Port'''</td>
 
</tr>
 
<tr>
 
<td>OpenGrok</td><td>8180 or 80</td>
 
</tr>
 
<tr>
 
<td>Fisheye</td><td>81</td>
 
</tr>
 
</table>
 
 
 
==Questions==
 
Please edit in an answer if you know
 
  
 
==Pulling CVS==
 
==Pulling CVS==
Line 78: Line 43:
 
my $src_root = "/var/mozilla";
 
my $src_root = "/var/mozilla";
  
# Where is your make executable (Mozilla needs 3.80, nothing else)
+
# Where you want to you the HTML for the branch info
my $make = "/home/jhford/oldmake/make";
+
# This could be SSI'd, but that is a lot of work to set
 +
# up with the ubuntu packages
 +
my $branchlistpath = "${src_root}/branches.html";
  
# Where is your run.sh for opengrok???
+
# Where is your run.sh for opengrok? (or equivalent script to start the indexer)
 
my $opengroker = "/var/opengrok/run.sh";
 
my $opengroker = "/var/opengrok/run.sh";
 +
 +
# Where is your server?
 +
my $cvsserver = ':pserver:anonymous@hera.senecac.on.ca:/cvsroot';
  
 
# Branches to be pulled
 
# Branches to be pulled
 
my @branches = (
 
my @branches = (
   "HEAD",  
+
   "HEAD",
   "REFLOW_20061031_BRANCH",  
+
   "MOZILLA_1_8_BRANCH",  
 
   "MOZILLA_1_8_0_BRANCH",  
 
   "MOZILLA_1_8_0_BRANCH",  
   "MOZILLA_1_8_BRANCH",  
+
  "AVIARY_1_0_1_20050124_BRANCH",
   "MOZILLA_1_7_BRANCH",  
+
  "REFLOW_20061031_BRANCH"
   "AVIARY_1_0_1_20050124_BRANCH"
+
);
 +
 
 +
# Descriptions for each branch, don't delete old ones for the sake of deleting them
 +
my %descriptions = (
 +
  "HEAD" => "Trunk - development branch",
 +
   "MOZILLA_1_8_BRANCH" => "Firefox 2.0 - development branch",
 +
  "MOZILLA_1_8_0_BRANCH" => "Firefox 1.5 - maintainance branch",
 +
   "MOZILLA_1_7_BRANCH" => "Firefox 1.0 - maintainance branch",
 +
   "AVIARY_1_0_1_20050124_BRANCH" => "Suite - maintainance branch",
 +
  "REFLOW_20061031_BRANCH" => "Reflow Refactoring"
 
);
 
);
  
 +
# Open the file or
 +
open BRANCHLIST, ">$branchlistpath" or die "Could not open file";
 +
 +
# Number of branches, twice, once for the line, once for the description
 +
my $branchcount = ($#{branches} + 1) * 2;
 +
 +
# Print the begining of the select block 
 +
print BRANCHLIST "<select class=\"q\" name=\"branch\" size=\"${branchcount}\" value=\"\" onClick=\"document.cookie = document.sbox.branch.selectedIndex;\"  />\n";
 +
 +
# Clear out what ever source was there
 
system ("rm -rf ${src_root}/*");
 
system ("rm -rf ${src_root}/*");
  
 
foreach (@branches){
 
foreach (@branches){
 +
# Download the makefile, then checkout from the makefile
 
   system("
 
   system("
 
     mkdir ${src_root}/$_;
 
     mkdir ${src_root}/$_;
 
     cd ${src_root}/$_;
 
     cd ${src_root}/$_;
     cvs -d :pserver:anonymous:anonymous\x40cvs-mirror.mozilla.org:/cvsroot co -r $_ mozilla/client.mk;
+
     cvs -d ${cvsserver} co -r $_ mozilla/client.mk;
 
     make -f ${src_root}/${_}/mozilla/client.mk checkout MOZ_CO_PROJECT=all;
 
     make -f ${src_root}/${_}/mozilla/client.mk checkout MOZ_CO_PROJECT=all;
 
   ");
 
   ");
 +
  # This is for an attempt at doing something, it is mostly useless
 +
  print BRANCHLIST "\t<optgroup label=\"$descriptions{$_}\" />\n";
 +
  print BRANCHLIST "\t<option> $_ </option>\n";
 
}
 
}
 +
 +
print BRANCHLIST "</select>\n";
  
 
system ("bash $opengroker");
 
system ("bash $opengroker");
 +
  
 
</pre>
 
</pre>

Revision as of 00:08, 9 November 2006

Project Name

Source Code Indexing Service Analysis

Project Description

Mozilla’s source code is enormous—millions of lines of C, C++, JavaScript, Perl, Python, Java, C#, etc. Developers currently use the lxr system to quickly search and browse it on-line: http://lxr.mozilla.org. Mozilla is planning a move from CVS to Subversion for revision control, and at the same time wants to evaluate other source indexing services. Two BSD students are working to setup, document, and test other potential services (e.g., fisheye, opengrok, mxr) on one of the Seneca-Mozilla servers (see below). In each case this requires configuration changes and some scripting to get the services to properly integrate with Mozilla’s other on-line tools. When the test services are installed and synched with the live source tree, Mozilla will point its developers to them and get feedback—the students will help collect and synthesize this feedback.

Project Leader(s)

John Ford (John64)

Project Contributor(s)

Options

  • Help with LXR/MXR/Bonsai development.
  • Make a sort-of branch respectful version of OpenGrok
  • [Re]write major portions of how OpenGrok deals with history and changesets and the likes, this is my personal preference.
  • Try to fit Fisheye into the current development model, but it seems this might be more like finding a problem for a solution. That is not to say this is a very good tool!

Links

Pulling CVS

This code will pull the CVS for the branches specified in @branches

#!/usr/bin/perl
use strict;
use warnings;

# Pull CVS from the mozilla project server
my $src_root = "/var/mozilla";

# Where you want to you the HTML for the branch info
# This could be SSI'd, but that is a lot of work to set
# up with the ubuntu packages
my $branchlistpath = "${src_root}/branches.html";

# Where is your run.sh for opengrok? (or equivalent script to start the indexer)
my $opengroker = "/var/opengrok/run.sh";

# Where is your server?
my $cvsserver = ':pserver:anonymous@hera.senecac.on.ca:/cvsroot';

# Branches to be pulled
my @branches = (
  "HEAD",
  "MOZILLA_1_8_BRANCH", 
  "MOZILLA_1_8_0_BRANCH", 
  "AVIARY_1_0_1_20050124_BRANCH",
  "REFLOW_20061031_BRANCH" 
);

# Descriptions for each branch, don't delete old ones for the sake of deleting them
my %descriptions = (
  "HEAD" => "Trunk - development branch",
  "MOZILLA_1_8_BRANCH" => "Firefox 2.0 - development branch",
  "MOZILLA_1_8_0_BRANCH" => "Firefox 1.5 - maintainance branch",
  "MOZILLA_1_7_BRANCH" => "Firefox 1.0 - maintainance branch",
  "AVIARY_1_0_1_20050124_BRANCH" => "Suite - maintainance branch",
  "REFLOW_20061031_BRANCH" => "Reflow Refactoring"
);

# Open the file or
open BRANCHLIST, ">$branchlistpath" or die "Could not open file";

# Number of branches, twice, once for the line, once for the description
my $branchcount = ($#{branches} + 1) * 2;

# Print the begining of the select block  
print BRANCHLIST "<select class=\"q\" name=\"branch\" size=\"${branchcount}\" value=\"\" onClick=\"document.cookie = document.sbox.branch.selectedIndex;\"  />\n";

# Clear out what ever source was there
system ("rm -rf ${src_root}/*");

foreach (@branches){
# Download the makefile, then checkout from the makefile
  system("
    mkdir ${src_root}/$_;
    cd ${src_root}/$_;
    cvs -d ${cvsserver} co -r $_ mozilla/client.mk;
    make -f ${src_root}/${_}/mozilla/client.mk checkout MOZ_CO_PROJECT=all;
  ");
  # This is for an attempt at doing something, it is mostly useless
  print BRANCHLIST "\t<optgroup label=\"$descriptions{$_}\" />\n";
  print BRANCHLIST "\t<option> $_ </option>\n"; 
}

print BRANCHLIST "</select>\n";

system ("bash $opengroker");