Bug Handlers

Last Updated: $Date: 2015-11-18 17:46:32 -0800 (Wed, 18 Nov 2015) $

Lists of bug handlers

  • opensourcetesting.org bug databases
  • hotscripts.com PHP bug trackers
  • fsf.org bug tracking systems list
  • testingfaqs.org Last update: 6/04
  • comp.software.config-mgmt Problem Management Tool Summary Last update: 9/02
  • Local links
  • Jira
  • Bugzilla
  • Mantis
  • Keystone
  • Gnats
  • Potential bug handlers
  • phpbt PHP replacement for bugzilla - Last devel release 11/04, download available
    Does not appear to support email/offline bug creation
  • dts PHP bug tracking system - not much activity, download available
  • Jitterbug Used with Samba, possibly dead? fsf.org jitterbug page
  • Debian bug tracking software 1998(!)
  • Introduction

    A bug handling system is used to track bugs through their life cycle.

    Bug Handler Features

  • Seriousness levels
  • Priority levels
  • Support for multiple products
  • differentiation between bugs, not bugs (the user was wrong), requests for enhancements (RFEs), duplicates
  • No passwords in cleartext
  • Email or offline interface - it should be easy to cc an alias and have email attached to a bug record.
  • Simple: possibility of having a simple interface for users.
  • Public and private databases
  • Protect Corporate IP
  • Allow developers to manage their ug list
  • Tight Eclipse Integration
  • Open Source, or at least source code available. Bug handlers come and go
  • In addition, for the CHESS website, we need to have tight integration with the existing Php and MySQL infrastructure. Ideally, users will not need to log on multiple times to use the bug handling system.

    The key to a bug database is that we need to _use_ it. Some bugs are transient, for example, "blah does not compile". These transient bugs need not go into the bug database. Long term bugs, which are sometimes requests for enhancements, should go into the bug database.


    Last updated in 11/2003
    Jira is a commercial J2EE based bug handling system.

    Jira Pricing indicates that there are three feature sets

    • Standard
    • Professional
    • Enterprise
    Each of the three feature sets, which is available for Academic features.
    • Deploy a single instance of JIRA in an school or university environment on 1 server
    • Unlimited projects, users and issues
    • Perpetual JIRA use
    • Free maintenance for 12 months - including free upgrades and free email support (9am-6pm weekdays, Australian Eastern Standard Time)
    Academic pricing: Standard: $600, Professional: $1200, Enterprise: $2400
    Commercial pricing is 2x the above.
    Only the Commercial license includes sources

    There is also Open Source pricing, which is available to Open Source orgs.

    • Established code base
    • Publicly available project website
    • Using an approved open source license

    Issues can be created via email: Jira Issue creation from email

    ISIS Jira page


    Last updated in 91/2011
    Bugzilla is a Perl/MySQL bug handling system that has fairly wide use, see http://bugzilla.mozilla.org

    Issues can be created via email: How do I set the email interface to submit/change bugs

  • Kepler uses Bugzilla
  • Eclipse uses Bugzilla
  • Bugzilla Integration Issues

    Last updated in 5/2005 Most of these issues have been handled.
    Well, bugzilla might be the leader for bug handling, but it has the following problems:
  • It send passwords back to the server in clear text
    See Adding SSLRequireSSL to httpd.conf will fix this.
  • Bug 241903 is fixed in Bugzilla 2.19.1 Re: Mapping SSL authenticated user to bugzilla user? 2004/08/16 in netscape.public.mozilla.webtools.
  • It uses cookies, and integrating it with the CHESS cookie system seems tricky
  • It is written in Perl, and the code is not very well written. There are few comments, and constants are sprinkled through out the code Ideally, I'd like to be able to easily tell the code to use a different cookie.
  • Bugzilla Installation

    Last updated in 11/2015
  • Download from http://www.mozilla.org/bugs/source.html
    Direct FTP: ftp://ftp.mozilla.org/pub/mozilla.org/webtools/
    11/2004: download bugzilla-2.19.1. We require 2.19.1 so that we can use the CHESS db authentication.
    5/2006: download bugzilla-2.23.1 - the latest version, which fails in checksetup.pl with:
    Your MySQL v3.23.58-log is too old.
       Bugzilla requires version 4.0.14 or later of MySQL.
    So, we were sticking with 2.19.1. Now that we have upgraded MySQL, we can upgrade to bugzilla-3.x
    12/2008: download bugzilla-3.2
    /usr/sfw/bin/wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-3.2.tar.gz

    1/2014: dowload bugzilla-4.4.1
    cd ~www/src
    wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-4.4.1.tar.gz

    11/2015: Download 5.0.1: As root:
    cd ~www/src
    wget https://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-5.0.1.tar.gz

    Untar it in /home/www
    cd ~www
    tar -zxf src/bugzilla-5.0.1.tar.gz

    If you are installing, create a link now. If you are upgrading, create the link later
    ln -s bugzilla-5.0.2 bugzilla
  • Back up the Mysql database. The reason is that checksetup may want to update the database.

    Locally, we use www/php/util/mysqldumpall.
    As the mysql user:

    su - mysql
    mkdir /home/www/mysqlarchive/bugzillaupgrade
    cd /home/www/mysqlarchive/bugzillaupgrade
  • As root, run checksetup.pl: First time installing:
        cd /home/www/bugzilla
        cd /home/www/bugzilla-5.0.1
    First install or update:
  • For bugzilla-3.0.3, install whatever required perl modules are missing.
    Previous releases required:
        /usr/bin/perl -MCPAN -e 'install Email::Send'
        /usr/bin/perl -MCPAN -e 'install Template'
        /usr/bin/perl -MCPAN -e 'install Email::MIME::Modifier'
        /usr/bin/perl -MCPAN -e 'install Date::Format'
    Problem with install Template
    cc -c    -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xarch=v8 -D_TS_ERRNO \
    -x03 -xspace -xildoff    -DVERSION=\"2.19\"  -DXS_VERSION=\"2.19\" \
    -KPIC "-I/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE"   Stash.c
    cc: unrecognized option `-KPIC'
    Solution: See Configuring CPAN, which suggests editing Perl's Config.pm. I had to edit /usr/perl5/5.8.4/lib/sun4-solaris-64int/Config.pm;
    cxh@carson 51% diff /usr/perl5/5.8.4/lib/sun4-solaris-64int/Config.pm.orig /usr/perl5/5.8.4/lib/sun4-solaris-64int/Config.pm
    < ccflags='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xarch=v8 -D_TS_ERRNO'
    < cccdlflags='-KPIC'
    > cccdlflags='-fPIC'
    < optimize='-xO3 -xspace -xildoff'
    > optimize='-O3'
    <     'ccflags' => '-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xarch=v8 -D_TS_ERRNO',
    >     'ccflags' => '-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO',
    1. Go to /export/home1/root/.cpan/build/Template-Toolkit-2.19
    2. Edit Makefile and xs/Makefile and change -KPIC to -fPIC and
      #OPTIMIZE = -xO3 -xspace -xildoff
      OPTIMIZE = -O3
    3. Then run
      make install

    Bugzilla issues

    MoreUtils.pm: Use of uninitialized value in scalar assignment at lib/sun4-solaris-64int/List/MoreUtils.pm line 24

    /usr/local/apache/logs/error_log contains lines like
    MoreUtils.pm: Use of uninitialized value in scalar assignment at lib/sun4-solaris-64int/List/MoreUtils.pm line 24.
    The file /home/www/bugzilla/lib/sun4-solaris-64int/List/MoreUtil\ s.pm contains
    eval {
        bootstrap List::MoreUtils $VERSION;
    } unless $ENV{LIST_MOREUTILS_PP};
    Bugzilla/Search/Quicksearch.pm contains
    use List::MoreUtils qw(firstidx);
    http://search.cpan.org/~adamk/List-MoreUtils-0.30/lib/List/MoreUtils.pm has a version 0.30. My version is 0.26

    Interestingly, running checksetup.pl produces the same messages:

    andrews.EECS.Berkeley.EDU:root: %C2> ./checksetup.pl --check-modules
    * This is Bugzilla 3.6.3 on perl 5.8.4
    * Running on SunOS 5.10 Generic_137137-09
    Checking perl modules...
    Checking for              CGI.pm (v3.21)   ok: found v3.49
    Checking for          Digest-SHA (any)     ok: found v5.45
    Checking for            TimeDate (v2.21)   ok: found v2.22
    Use of uninitialized value in scalar assignment at lib/sun4-solaris-64int/List/MoreUtils.pm line 24.
    Checking for            DateTime (v0.28)   ok: found v0.66
    Checking for   DateTime-TimeZone (v0.71)   ok: found v1.26
    Checking for                 DBI (v1.41)   ok: found v1.48
    Checking for    Template-Toolkit (v2.22)   ok: found v2.22
    Checking for          Email-Send (v2.00)   ok: found v2.190
    Argument "1.99_01" isn't numeric in subroutine entry at /usr/perl5/site_perl/5.8.4/Email/MIME/Header.pm line 8.
    Checking for          Email-MIME (v1.861)  ok: found v1.863
    Checking for Email-MIME-Encodings (v1.313)  ok: found v1.313
    Checking for Email-MIME-Modifier (v1.442)  ok: found v1.442
    Checking for                 URI (any)     ok: found v1.35
    Interestingly, there is no TimeDate module? I tried
    perl install-module.pl List:MoreUtils
    which got rid of the MoreUtils message. Unfortunately, upgrading to 1.906 of Email-MIME does not get rid of
    Argument "1.99_01" isn't numeric in subroutine entry at lib/Email/MIME/Heade
    r.pm line 8.
    Checking for          Email-MIME (v1.861)  ok: found v1.906
    I had a hard time installing Email-MIME, but eventually, after clearing out /.cpan:
    /usr/bin/perl -MCPAN -e shell
    install Email::MIME
    Line 8 of
    use Encode 1.9801;
    Looking at /usr/perl5/5.8.4/lib/sun4-solaris-64int/Encode.pm:
    # $Id: bughandlers.htm 171 2015-11-19 01:46:32Z cxh $
    package Encode;
    use strict;
    our $VERSION = "1.99_01";
    sub DEBUG () { 0 }
    use XSLoader ();
    /usr/bin/perl -MCPAN -e 'install Encode'
    installs the proper module and the error messages go away.

    Notes about Earlier Bugzilla Installs.

    1. For earlier versions of bugzilla Perl 5.6 was required, go to ftp://mirrors.xmission.com/sunfreeware/sparc/8 and get perl-5.8.3-sol8-sparc-local.gz (The regular version, not the shared library version)
      gunzip perl-5.8.3-sol8-sparc-local.gz
      pkgadd -d perl-5.8.3-sol8-sparc-local
      Note that this means we need to have /usr/local/bin in root's path before /bin


      A.1.9. My perl is not located at /usr/bin/perl, is there an easy way to change it everywhere it needs to be changed?

      Yes, the following bit of perl magic will change all the shebang lines. Be sure to change /usr/local/bin/perl to your path to the perl binary.

      perl -pi -e 's@#\!/usr/bin/perl@#\!/usr/local/bin/perl@' *cgi *pl
      I also had to do
      perl -pi -e 's@#\!/usr/bin/perl@#\!/usr/local/bin/perl@' */*cgi */*pl
    2. 2.5 Unix (not-root) installation notes suggest
      perl -pi -e
              's@use strict\;@use strict\; use lib \"/home/foo/perl/lib\"\;@'
              *cgi *pl Bug.pm processmail syncshadowdb
      I used
      perl -pi -e 's@use strict\;@use strict\; use lib \"/usr/local/lib/perl5\"\;@' *cgi *pl Bugzilla.pm processmail syncshadowdb
    3. Set up CPAN with
      perl -MCPAN -e shell
      For the CPAN build and cache directory? [/.cpan] question, I answered /usr/local/lib/perl5/root.cpan so as to avoid cluttering the root partition
    4. perl -MCPAN -e "install Bundle::Bugzilla"
    5. DBD::mysql did not install.
       /usr/local/bin/perl -MCPAN -e 'install "DBD::mysql"'

      See http://www.bugzilla.org/docs/2.18/html/installation.html#install-modules-dbd-mysql

      The installation process will ask you a few questions about the desired compilation target and your MySQL installation. For most of the questions the provided default will be adequate, but when asked if your desired target is the MySQL or mSQL packages, you should select the MySQL-related ones. Later you will be asked if you wish to provide backwards compatibility with the older MySQL packages; you should answer YES to this question. The default is NO.

      A host of 'localhost' should be fine. A testing user of 'test', with a null password, should have sufficient access to run tests on the 'test' database which MySQL creates upon installation.

      cd /usr/local/lib/perl5/root.cpan/build/DBD-mysql-2.9004
      /usr/local/bin/perl Makefile.PL --help
      /usr/local/bin/perl Makefile.PL --testuser=root --testpassword=xxx\;yyy  --testdb=bugzillatest
      make test
    6. Running make test failed
      Can't load '/export/home/gsrclocal/lib/perl5/root.cpan/build/DBD-mysql-2.9004/blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: ld.so.1: /usr/local/bin/perl: fatal: relocation error: file /export/home/gsrclocal/lib/perl5/root.cpan/build/DBD-mysql-2.9004/blib/arch/auto/DBD/mysql/mysql.so: symbol mysql_real_escape_string: referenced symbol not found at /usr/local/lib/perl5/5.8.3/sun4-solaris/DynaLoader.pm line 229.
      The problem is that /usr/local/mysql/lib/mysql contains a shared library that does not have the symbol

      My Fix:

      1. Run /usr/local/bin/perl Makefile.PL --testuser=root --testpassword=xxx\;yyy --testdb=bugzillatest
      2. Run make and then hit Control-C to stop the build
      3. Edit the makefile and change references to /usr/local/myslq/lib/mysql to /usr/local/mysql/lib.
      4. Run make then make test and then make install
    7. Whoops, no bugzillatest db, so create it using the mysql webpage, then run
      make test
      make install
    8. Run checksetup.pl again.
      cd /home/www/bugzilla
      Ignore that GD, XML::Parser and PatchReader are not installed
  • all versions of bugzilla: Edit /home/www/bugzilla/localconfig
  • Read the user and passwd from ~mysql/.my.cnf, update $db_user and $db_pass
  • Important: I changed $db_name from bugs to bugzilla
  • Change $webservergroup to oldapache
  • If you are upgrading, run a diff between the old and new localconfigs and update accordingly
  • Tighten up the permissions. As root:
    cd ~www/bugzilla-5.0.1
    chown -R root .
    chgrp -R oldapache .
    chmod -R g+rX .
  • Now that localconfig is updated with the proper path, rerun ./checksetup.pl.

    While upgrading to Bugzilla-3.0.2, I had to run contrib/recode.pl. For this to work,
    back up your database! I did:

    /usr/bin/perl -MCPAN -e 'install Data::Dump'
    /usr/bin/perl -MCPAN -e 'install Encode::Detect'
    ./contrib/recode.pl --guess --dry-run
    ./contrib/recode.pl --guess
  • Continue with installation steps in bugzilla/QUICKSTART
  • Edit httpd.conf and
    <Directory "/home/www/bugzilla">
        Options +ExecCGI
        AllowOverride Limit
        DirectoryIndex index.cgi
        #Options Indexes FollowSymLinks ExecCGI
        #AllowOverride None
        #Order allow,deny
        #Allow from all
    Note that SSLRequireSSL will require that we use SSL, which prevents passing passwords in clear text. and
    AddHandler cgi-script .cgi
  • Add these lines to rewrite.conf
    # bugzilla, the bug tracking system
    Alias /bugzilla/       "/home/www/bugzilla/"
    #RewriteRule ^/bugzilla$ /bugzilla/ [R,L]
    #RewriteRule ^/bugzilla/$ /home/www/gsrcwww/bugzilla/index.html [L]
    #RewriteRule ^/bugzilla/([^\.]*)\.cgi$ /home/www/gsrcwww/bugzilla/$1.cgi [L]
    RewriteRule ^/bugzilla$ https://%{HTTP_HOST}/bugzilla/ [R,L]
    # Force SSL for bugzilla
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/bugzilla$ https://%{HTTP_HOST}/bugzilla/\ [R,L]
    RewriteCond %{REQUEST_FILENAME} !^/bugzilla
  • If you are upgrading, create the link as www:
    cd ~www
    rm bugzilla
    ln -s bugzilla-5.0.1 bugzilla
  • Follow the steps in Database Authentication
  • Restart Apache, go to the website.
    If you have problems, look in /usr/local/apache/logs/error_log
  • Error:
    You don't have permission to access /bugzilla/ on this server
    Fix: look at the error log and adjust the permissions
    cd ~www/bugzilla
    chown -R root .
    chgrp -R apache .
    chmod -R g+rX .
  • Errors about missing templates:
    [Fri Mar 14 09:42:41 2008] [error] [client XX.YY.ZZ.AA] File does not exist: /\
    home/www/bugzilla/skins/custom/global.css, referer: https://HOST/bugzilla/
    [Fri Mar 14 09:42:41 2008] [error] [client XX.YY.ZZ.AA] File does not exist: /\
    home/www/bugzilla/skins/custom/index.css, referer: https://HOST/bugzilla/
    Solution: copy files from previous release.
  • More errors
  • Change #!/usr/bin/perl to #!/usr/local/bin/perl
  • Fix up use lib statements
  • How to Cache the bug list

    We can use wget to download the web pages that list the bugs
    1. The bugzilla website uses SSL, so we need a version of wget for Windows that includes SSL support from http://allserv.ugent.be/~bpuype/wget/
    2. We use cookies to log in to the website, so we must save our cookie file http://www.delorie.com/gnu/docs/wget/wget_9.html says:
      Mozilla and Netscape 6.x. Mozilla's cookie file is also named `cookies.txt', located somewhere under `~/.mozilla', in the directory of your profile. The full path usually ends up looking somewhat like `~/.mozilla/default/some-weird-string/cookies.txt'.
      Internet Explorer.
      You can produce a cookie file Wget can use by using the File menu, Import and Export, Export Cookies. This has been tested with Internet Explorer 5; it is not guaranteed to work with earlier versions.
    3. Run wget.
      -A "show_bug.cgi*"
      Limit the pages to only those that match show_bug.cgi*, which means the individual bug pages
      -A "buglist.cgi?status=__open__&product=$product"
      Limit the pages to only those that match, which means the individual bug summary page.
      --load-cookies cookies.txt
      Load the cookies file exported from your browser (see above)
      Do not ascent to the parent directory when retrieving recursively
      Retrieve recursively
      -l 1
      Only go one level deep
      https://$bugwebsite ...
      The URL of the summary page
      wget -A "show_bug.cgi*" \
          --load-cookies cookies.txt \
          -A "buglist.cgi?status=__open__&product=$product" \
          -np -r -l 1 -k  \
    Note that we could do more with restricting the links in the summary page so we get fewer other pages.


    1. Enable LDAP, but needed to install Net::LDAP I tried using LDAP, but had problems
      /usr/local/bin/perl -MCPAN -e 'install "Net::LDAP"'
      Build failed, had to do
      /usr/local/bin/perl -MCPAN -e 'install "Net::SSLeay"'
      cd /usr/local/lib/perl5/build/Net_*
      make install
    2. It looks like I'm not able to connect to the departmental LDAP server

    Database Authentication

    1. Bugzilla/Auth/Login/GSRC.pm contains code that uses the CHESS database for authentication.

      php/bugzilla contains the master copy of the additional files used for CHESS database authentication.

      Local help file, see http://chess.eecs.berkeley.edu/bugzilla/help.html
      Defines the gsrc_connect_main Perl subroutine that opens up the appropriate database
      Defines code that authenticates the user using the CHESS database.
      To set up the Bugzilla tree with these files, create symbolic links from the Bugzilla tree to the corresponding php/bugzilla file, for example:
      cd ~www/bugzilla
      ln -s ../php/bugzilla/help.html .
      Also, link a copy of the script that interfaces with the GSRC database:
      cd ~www/bugzilla/Bugzilla
      ln -s ../../php/bugzilla/Bugzilla/DBGSRC.pm
    2. Edit ~www/bugzilla/Bugzilla.pm:
      In the use section, add:
      use Bugzilla::DBGSRC;

      After the sub dbh, add:
      #CHESS start
      my $_gsrc_dbh;
      sub gsrc_dbh {
         if (!$_gsrc_dbh) {
              $_gsrc_dbh = Bugzilla::DBGSRC::gsrc_connect_main();
          return $_gsrc_dbh;
      my $_gsrc_dbh_auth;
      sub gsrc_dbh_auth {
          if (!$_gsrc_dbh_auth) {
              $_gsrc_dbh_auth = Bugzilla::DBGSRC::gsrc_connect_auth();
          return $_gsrc_dbh_auth;
      # CHESS end
      In Bugzilla.pm, find the _cleanup() method and insert:
          # CHESS start
          $_gsrc_dbh->disconnect if $_gsrc_dbh;
          undef $_gsrc_dbh;
          # CHESS end     
    3. Under Bugzilla-5.x and 3.x, create a link for Bugzilla/Auth/Login/GSRC.pm .
      cd ~www/bugzilla/Bugzilla/Auth/Login
      ln -s ../../../../php/bugzilla/Bugzilla/Auth/Login/GSRC.pm .
      Under Bugzilla-2.x, we used to create a link for Bugzilla/Auth/Login/WWW/CHESS.pm
      cd ~www/bugzilla/Bugzilla/Auth/Login/WW
      ln -s ~www/php/bugzilla/Bugzilla/Auth/Login/WWW .  
    4. Bugzilla-2.19Edit defparams.pl and add GSRC as an authentication choice.
         name => 'user_info_class',
         desc => 'Mechanism(s) to be used for gathering a user\'s login information.
                  More than one may be selected. If the first one returns nothing,
                  the second is tried, and so on.<br />
                  The types are:
                      Asks for username and password via CGI form interface.
                      Info for a pre-authenticated user is passed in system
                      environment variables.
                      Use the GSRC cookies and database.
         type => 's',
         choices => [ 'CGI', 'Env', 'Env,CGI', 'GSRC', 'GSRC,CGI' ],
         default => 'CGI',
         checker => \&check_multi
      Bugzilla-5.x to 3.x: edit ~www/bugzilla/Bugzilla/Config/Auth.pm and add GSRC and GSRC,CGI
       choices => [ 'CGI', 'Env', 'Env,CGI', 'GSRC', 'GSRC,CGI' ],
    5. Edit ~www/bugzilla/template/en/default/index.html.tmpl and in the Most Common Actions section, add a link to the help page:
      bugzilla 5.x - 3.x:
          [% IF user.login %]
          [% ELSE %]
          <li id="login"><a href="/projects/chess/login/?denied=1&referer=%2Fbugzilla"><b>Login</b><\
      /a> - To update bugs, you must have an account, see <a href="help.html"><i>Loca\
      l</i> help</a> for details.</li>
          [% END %]
          <li id="localhelp"><a href="help.html"><i>Local</i> Help</a></li>

      <a href="help.html">Help! Information about Bugzilla </a><br>
    6. Bugzilla-2.x: Edit Bugzilla/Config.pm, find the sub Param section and hardwire urlbase so it returns the appropriate home page:
          if ($param =~ /urlbase/) {
              my $http_host = $ENV{"HTTP_HOST"};
              return "https://$http_host/bugzilla/";                                  
      Also, update defparams.pl to mention that the parameter is ignored.
    7. Bugzilla 5.x: Update /home/www/bugzilla-5.0.1/data/params.json
      Bugzilla-4.x - 3.x Update ~www/bugzilla/data/params so that the user_info_class is set to GSRC. The diffs are below. It might be possible to just do a copy.
      This is important because otherwise when you go to the bugzilla site it will not know about the GSRC database
      <            'maintainer' => 'yourlogin@eecs.berkeley.edu',
      >            'maintainer' => 'THE MAINTAINER HAS NOT YET BEEN SET',
      <            'rememberlogin' => 'off',
      >            'rememberlogin' => 'on',
      <            'ssl' => 'authenticated sessions',
      <            'sslbase' => 'https://yourwebiste.eecs.berkeley.edu/bugzilla/',
      >            'ssl' => 'never',
      >            'sslbase' => '',
      <            'timezone' => 'PDT',
      >            'timezone' => '',
      <            'urlbase' => 'http://yourwebsite.eecs.berkeley.edu/bugzilla/',
      >            'urlbase' => '',
      <            'user_info_class' => 'GSRC',
      >            'user_info_class' => 'CGI',

    User accounts

    The way Bugzilla works in relationship to the CHESS site is a little tricky. Basically, when user is logged in to the the CHESS site and then logs in to the Bugzilla site, an account is created for the user in Bugzilla using their CHESS email address, not their CHESS username.

    If the user changes their email address on the CHESS site, then someone with Bugzilla administrator privis will need to go to the bugzilla user page and change the name of the user's bugzilla account.

    Also, the user will need to toss any bugzilla related cookies.

    Hiding Email addresses

    Bugzilla-3.4 and later hides email by default
  • Google "bugzilla hide email addresses" and find this mozilla.support.bugzilla thread, which refers to these two bugs:
  • Bug 218917 Allow login_name != email_address, so address isn't displayed (anti-spam effect too)
  • Bug 219021 Email addresses should only be displayed to logged in users
  • Bug 219021 Email addresses should only be displayed to logged in users refers to a patch that patches files in template/en/default/bug It is possible to do this by hand, without patching:
  • Search for mailto and wrap with
    [% IF user.login %]
    [% ELSE %]
    [% END %]
    I changed these files:
    template/en/default/bug/edit.html.tmpl (line 51, insert if user)
    template/en/default/reports/components.html.tmpl (line 76, 81, insert if user)
  • Change template/en/default/bug/activity/table.html.tmpl
    >         [% IF user.login %]
    >         [% ELSE %]
    >           <i>Hidden</i>, <a href="/projects/chess/login"><i>login</i></a> to see more.
    >         [% END %] 
    <                   [% change.removed FILTER html %]
    > 	         [% IF change.field == 'CC' %]
    >                    [% IF user.login %]
    >                      [% change.added FILTER html %]
    >                    [% ELSE %]
    > 	              <i>Hidden</i>, <a href="/projects/chess/login"><i>login</i></a> to see more.
    > 		   [% END %] 
    >                  [% ELSE %]
    >                      [% change.removed FILTER html %]
    >                  [% END %]
    <                   [% change.added FILTER html %]
    > 	         [% IF change.field == 'CC' %]
    >                    [% IF user.login %]
    >                      [% change.added FILTER html %]
    >                    [% ELSE %]
    > 	              <i>Hidden</i>, <a href="/projects/chess/login"><i>login</i></a> to see more.
    > 		   [% END %] 
    >                  [% ELSE %]
    >                      [% change.added FILTER html %]
    >                  [% END %]
  • Change bugzilla/template/en/default/list/table.html.tmp to hide the email addresses in the top level. At about line 200:
          [% ELSIF column == 'assigned_to' %]
            [% IF user.login %]
               [%- bug.$column.truncate(abbrev.$column.maxlength, abbrev.$column.el
    lipsis) FILTER html -%]
            [% ELSE %]
               <i>Hidden</i>, <a href="/projects/chess/login"><i>login<i></a> to see more.
            [% END %]
    right before:
       [% ELSE %]
            [%- bug.$column.truncate(abbrev.$column.maxlength, abbrev.$column.ellip
    sis) FILTER html -%]
          [% END %]
  • template/en/default/bug/edit.html.tmpl:
    >              [% IF user.login %]
    >              [% ELSE %]
    > 	      [% bug.assigned_to.name %]
    > 	     [% END %] 
    >          [% IF user.login %]
    >          [% ELSE %]
    > 	  [% bug.assigned_to.name %]
    > 	 [% END %] 
    >              [% IF user.login %]
    >              [% ELSE %]
    > 	      [% bug.qa_contact.name %]
    >    	     [% END %] 
    >          [% IF user.login %]
    >          [% ELSE %]
    > 	  [% bug.qa_contact.name %]
    > 	 [% END %] 
    >     [% IF user.login %]
    >     [% ELSE %]
    >      [% bug.reporter.name %]
    >     [% END %] 
    >        [% IF user.login %]
    >        [% ELSE %]
    >         [% user.name FILTER html %]</a>
    >        [% END %]
    >        [% IF user.login %]
    >        [% ELSE %]
    >         [% user.name FILTER html %]</a>
    >        [% END %]
  • template/en/default/bug/comments.html.tmpl
    >            [% IF user.login %]
    >            [% ELSE %]
    >               [% (comment.author.name || comment.author.login) FILTER html %]
    > 	   [% END %] 
  • template/en/default/attachment/list.html.tmpl
    >            [% IF user.login %]
    >             [% ELSE %]
    >               [% attachment.attacher.name %]
    >             [% END %]
  • Email creation of bugs

    Setup email creation of bugs

  • How do I set the email interface to submit/change bugs
  • Edit bugzill/contrib/bug_email.pl as per the bugzilla/contrib/README.Mailif
  • bugzilla.org developers mailing list message from 02/04 "bug_email.pl and bugzilla_append_email.pl"
  • How I did it.
  • Create a bugzilla account
  • Create a .procmailrc file
    :0 fhw
    | formail -I "From " -a "From "
    * ^Subject: .*\[Bug .*\]
    RESULT=|(cd $BUGZILLA_HOME && ./bugzilla_email_append.pl)
    # Feed mail to stdin of bug_email.pl
    :0 Ec
    #* !^Subject: .*[Bug .*]
    RESULT=|(cd $BUGZILLA_HOME && ./bug_email.pl )
    # write result to a logfile
    :0 c
    |echo `date '+%d.%m.%y %H:%M:  '` $RESULT >> $HOME/bug_email.log
    :0 c
    |echo "----------------------------------" >> $HOME/bug_email.log
    :0 c
    # Move mail to the inbox
  • Install procmail, I grabbed it from ftp://mirrors.xmission.com/sunfreeware/sparc/8
    gunzip procmail-3.22-sol8-sparc-local.gz
    pkgadd -d procmail-3.22-sol8-sparc-local
  • For our set up, create a link in /var/adm/sm.bin:
    cd /var/adm/sm.bin
    ln -s /usr/local/bin/procmail .
  • Create ~bugzilla/.forward:
    "|/var/adm/sm.bin/procmail #bugzilla"
  • Sending mail was failing, so I created a test message
    Message-Id: <200411162059.iAGKxfRR012293@maury>
    To: bugzilla@markov
    Subject: testing submission by email #7
    From: "Christopher Brooks" <cxh@eecs.berkeley.edu>
    Date: Tue, 16 Nov 2004 12:59:41 -0800
    @product        :  TestProduct
        @version        :  other
        @component      :  TestComponent
        @short_desc     :  Testing submission by email
        @rep_platform   :  All
        @bug_severity   :  normal
        @priority       :  P3
        @op_sys         :  Linux
    This is another test
    and ran it
    cat testmail | (cd /home/www/bugzilla/contrib/ && ./bug_email.pl -t)
  • The error message said MIME::Parser was missing, so I ran
    perl -MCPAN -e 'install MIME::Parser'
  • Looked in /usr/local/apache/logs/error_log and realized I had errors.
  • Adjusted .procmailrc to include
    Which showed that the bugzilla contrib directory could not be read, so I added the bugzilla user to the appropriate group.
  • /home/bugzilla/bug_email.log says:
    7.11.04 18:41: can't write to directory ./data/mimedump-tmp at ./bugzilla_emai\
    l_append.pl line 56.
    chmod g+ws /home/www/bugzilla/data/mimedump-tmp
  • bugzilla logs files

    Apache log
    Email bug interface appends to this
    Email bug interface appends to this, too

    Revised .procmailrc file

    :0 fhw
    | formail -I "From " -a "From "
    * ^Subject: .*\[Bug .*\].*
    RESULT=|(cd $BUGZILLA_HOME && ./bugzilla_email_append.pl 2>&1 )
    # Feed mail to stdin of bug_email.pl
    :0 Ec
    #* !^Subject: .*[Bug .*]
    RESULT=|(cd $BUGZILLA_HOME && ./bug_email.pl 2>&1 )
    # write result to a logfile
    :0 c
    |echo `date '+%d.%m.%y %H:%M:  '` $RESULT >> $HOME/bug_email.log
    :0 c
    |echo "----------------------------------" >> $HOME/bug_email.log
    :0 c
    # Move mail to the inbox

    Java Interface to Bugzilla

    One idea is to use mailto: to invoke the user's default email tool and send messages to the browser.

    See http://www.holub.com/newsletter/archive/003.html for info about invoking the mail program.

    One issue here is that we need to include the body http://www.ianr.unl.edu/internet/mailto.html has suggestions about using &body


     java -classpath $PTII ptolemy.actor.gui.BrowserLauncher mailto:bugzilla@chess
    $ java -classpath $PTII ptolemy.actor.gui.BrowserLauncher "mailto:astark1@unl.edu?&body=The message's first line. &body=Second line. &body=Third Line."

    http://jagzilla.sourceforge.net/ is a Java interface to Bugzilla that includes and Eclipse plugin

    Below here is from 2001
    1. Read the README and download the following
      Chart requires GD, which requires a bunch of libraries, which can be found at ftp://mirrors.xmission.com/sunfreeware/sparc/8 I downloaded:
      Download each of the files, gunzip and then do pkgadd -d filename
    2. Create /usr/bonsaitools/bin/perl
      mkdir -p /usr/bonsaitools/bin
      cd /usr/bonsaitools/bin
      echo "Bugzilla needs this" >> README
      ln -s /usr/local/bin/perl .
    3. Create the bugzilla database As the mysql user, be sure that ~mysql/.my.cnf contains the user name and password to connect to the database, and then do:
      su - mysql
      /usr/local/mysql/bin/mysqladmin create bugzilla
    4. Bugzilla needs AddHandler turned on for CGI Scripts and a Directory section with the ExecCGI option. The diffs to httpd.conf are:
      > <Directory "/home/www/bugzilla">
      >     Options Indexes FollowSymLinks ExecCGI
      >     AllowOverride None
      >     Order allow,deny
      >     Allow from all
      > </Directory>
      < #AddHandler cgi-script .cgi
      > AddHandler cgi-script .cgi
    5. rewrite.conf gets the following changes. The first one adds and alias, the excludes bugzilla from getting run through group.php3
      > ## bugzilla, the bug tracking system
      > #
      > Alias /bugzilla/       "/home/www/bugzilla/"
      > #RewriteRule ^/bugzilla$ /bugzilla/ [R,L]
      > #RewriteRule ^/bugzilla/$ /home/www/gsrcwww/bugzilla/index.html [L]
      > #RewriteRule ^/bugzilla/([^\.]*)\.cgi$ /home/www/gsrcwww/bugzilla/$1.cgi [L]
      > RewriteCond %{REQUEST_FILENAME} !^/bugzilla
    6. Error:
      Can't create data/params.13539 at defparams.pl line 53. 
      Fix: chmod a+w /home/www/bugzilla/data
    7. Error:
      Can't connect to database server. at globals.pl line 88. 

    Bugzilla and groups

    Last updated in 11/2007 Our goal is to set up Bugzilla group access using our workgroups
  • Bugzilla Groups and Group Security
  • The following tables in the bugzilla dbare used by groups:
    Maps bug_ids to groups_ids
    maps group ids to names
    maps user_ids to group_ids
    So, one possible solution is to upon login to get the list of website groups to which the user belongs and then to look in groups for groups with the same name and add the user to user_group_maps with the appropriate permissions.

    GSRC.pm now contains a subroutine does this.

    If the product name does not match a group name, then you can use the bugzilla groups facility to restrict a product to a certain set of users.

    The group must be added to each person:

    1. Either masquerade as the user or have the user log in and go to the bugzilla website http://chess.eecs.berkeley.edu/bugzilla. This will add the user to the bugzilla user database
    2. As a bugzilla admin, search for the user and then add them to the appropriate group.


    Last updated in 11/2004
    Mantis is a php/MySQL/web based bugtracking system that can be found on at http://www.mantisbt.org/

    Mantis is GPL'd

    Offline bug creation not yet supported (11/04)

    Mantis Integrations Issues

    Last updated in 4/2001
    With any package, there are two opposing forces:
    1. Write the thing from scratch and get it right, which smacks of not invented here.
    2. Spend a bunch of time integrating an already existing package.
    Integration issues
  • Does not use our current user id system, passwords are sent in clear text
  • Does not have our look and feel
  • Even if the user is logged out of the website, links like */ptolemy/bugs/mantis/login_page.php3 are still accessible
  • The bugs from one workgroup are visible to the bugs of another workgroup.
  • Advantage over gnats
  • Uses MySQL and Php, so it will integrate more easily
  • Disadvantage over gnats
  • No email interface.
  • Mantis Installation

    Last updated in 4/2001
    1. ftp://ftp.sourceforge.net/pub/sourceforge/mantisbt
    2. As the mysql user, be sure that ~mysql/.my.cnf contains the user name and password to connect to the database, and then do:
      cd /export/home/tools/mantis*
      /usr/local/mysql/bin/mysqladmin create bugtracker
      /usr/local/mysql/bin/mysql bugtracker < db_generate.sql
    3. To get things working, I added the following to /usr/local/apache/conf/rewrite.conf
      RewriteRule ^/mantis$ /mantis/ [R,L]
      RewriteRule ^/mantis/$ /home/www/php/mantis/index.php3 [L]
      RewriteRule ^/mantis/documentation.html$ /home/www/php/mantis/documentation.html [L]
      RewriteRule ^/mantis/([^\.]*)\.php$ /home/www/php/mantis/$1.php [L]
      RewriteRule ^/mantis/([^\.]*)\.php3$ /home/www/php/mantis/$1.php3 [L]
      RewriteRule ^/mantis/([^\.]*)\.txt$ /home/www/php/mantis/$1.txt [L]
      After editing php/subpages/bugs.php3 and adding
      and commenting out the line that sets $bugsurl, I modified rewrite.conf to look like:
      ## Redirects for mantis, the bug tracking system
      RewriteRule /bugs/mantis$ /bugs/mantis/ [R,L]
      RewriteRule /bugs/mantis/$ /home/www/php/mantis/index.php3 [L]
      RewriteRule /bugs/mantis/documentation.html$ /home/www/php/mantis/documentation\
      .html [L]
      RewriteRule /bugs/mantis/([^\.]*)\.php$ /home/www/php/mantis/$1.php [L]
      RewriteRule /bugs/mantis/([^\.]*)\.php3$ /home/www/php/mantis/$1.php3 [L]
      RewriteRule /bugs/mantis/([^\.]*)\.txt$ /home/www/php/mantis/$1.txt [L]
      RewriteRule /bugs/([^\.]*)\.php$ /home/www/php/mantis/$1.php [L]
      RewriteRule /bugs/([^\.]*)\.php3$ /home/www/php/mantis/$1.php3 [L]
      RewriteRule /bugs/([^\.]*)\.txt$ /home/www/php/mantis/$1.txt [L]


    Last updated 11/04
    Keystone is a PhP/MySQL bug handling system that was freely available to non-commercial users. Keystone is available from http://www.stonekeep.com/

    Keystone Integrations Issues

    Last updated in 4/2001


  • Uses primarily Php/MySQL, though Perl is used for handling email.
  • Logging messages are easy to turn on
  • Some look and feel configuration
  • Con

  • Does not use our current user id system, passwords are sent in cleartext. (This was not that hard to fix)
  • Only has one database for all workgroups, though we could add these tables under each worgroup database.
  • Does not have our look and feel
  • email is handled by Perl, installation is a little tricky.
  • Keystone Installation instructions

    Last updated in 4/2001
    1. Download from Keystone
    2. cd ~www/php; tar -zxf /export/home1/tools/downloads/keystone-0_74_00.tar.gz
      Note, keystone is checked in to cvs, if you have a source cvs account, try cvs -d :ext:source:/home/cvs co keystone
      There is also a table in the database
      gigascale:root: %C2> pwd
      gigascale:root: %C2> ls -l
      total 4
      -rw-r--r--   1 www            94 Apr 23  2001 README
      lrwxrwxrwx   1 www            23 Apr 23  2001 docs -> ../../php/keystone/docs
      lrwxrwxrwx   1 www            27 Apr 23  2001 graphics -> ../../php/keystone/graphics
      -rw-r--r--   1 www           224 Apr 23  2001 index.htm
      gigascale:root: %C2> cat README
      This is a bit of a hack so that we can look at the keystone
      docs without using rewrites or phpgigascale:root: %C2> cat index.htm
      <!--$Id: bughandlers.htm 171 2015-11-19 01:46:32Z cxh $-->
      <title>Keystone Documentation</title>
      <h1>Keystone Documentation</h1>
      <a href="docs/gsrc.html">Keystone Documentation</a>
      gigascale:root: %C2> 
    3. Update keystone.conf:
      cd keystone/conf
      cp keystone.conf.default keystone.conf
      cp colors.conf.default colors.conf
      Then in keystone.conf update sys_url, the database passwd (see ~mysql/.my.cnf), the company. Change yoursitename.com to mysite.org
    4. Create the database
      su - mysql
      /usr/local/mysql/bin/mysqladmin create keystone
      cd /home/www/php/keystone/struct
      for i in *.mysql; do /usr/local/mysql/bin/mysql keystone < $i; done
    5. Login! http://www.mysite.org/bugs/keystone/, username admin, password abc123 Note that now that we've integrated keystone into the CHESS website, the direct login is no longer working

    Localizing to the CHESS website

    Last updated in 4/2001
  • Modified /usr/local/lib/php3.ini to search search /home/www/php/keystone
    include_path    =   ".:/home/www/php:/home/www/php/keystone"         
  • Modified all includes: include "./ -> include\"keystone/\""
  • keystone/header.php3: include call to html_header:
    html_header("", $pageinfo[thirdrow], $pageinfo[thirdpos]);
  • Copied keystone/login.php3 to keystone/login_gsrc.php3 and heavily modified it to call the gsrc user_verify() method, but this changed is not really needed if we are calling keystone from within the gsrc code.
    LogIt("DEBUG","login.php3","Login called.  Checking.");
    // Verify the user using the CHESS database.
    $keystone_user = user_verify();
    // Reopen the keystone database so that subsequent calls to db_query work.
    LogIt("DEBUG","login.php3","user_verify() returned.  user= $keystone_user");
    $uinfo  =       db_query("select * from people where login='$keystone_user'");
    //LogIt("DEBUG","login.php3","uinfo is $uinfo");
    $udata  =       db_fetch_array($uinfo);
    if (db_numrows($uinfo)) {
            LogIt("DEBUG","login.php3","Lookup successful.  user is '$udata[fullnam\
    } else {
            LogIt("DEBUG","login.php3","Lookup FAILED.  no such user.  We should ba\
    il here.");
    $curruser = "$udata[login]";
  • login_gsrc.php3 was further modified to read the CHESS auth database and update the Keystone people database as necessary
  • keystone/nbrowse.php3:
    1. Fix includes and checks for keystone.conf and colors.conf by just including them directly
    2. include login_gsrc.php3 instead of login.php3.
    3. Disable resources and libraries by reading $sys_enable_resources and $sys_enable_library from keystone.con
    4. Commented out the logout and change password menu choices
  • Keystone Perl

    Last updated in 4/2001
    1. Download the perl modules
    2. Mail::Tools 1.15 from cpan.valueclick.com /perl/CPAN/modules/by-module
    3. DBD::DBI was already installed
    4. Text::Template from
    5. For each module, do:
      	perl Makefile.PL
              make test
              make install
    6. The database password had a ; in it, so I created a new user and changed the password.
      su - mysql
      /usr/local/mysql/bin/mysql mysql
      SET PASSWORD FOR keystone=PASSWORD('xxx');
    7. Ran the test:
      mysite:www: /home/www> cd php/keystone/perl
      mysite:www: keystone/perl> ./keymail.pl -h
      Keystone.pm:2 /export/home/www/php/keystone/perl/../conf/keystone.conf.default
      Keystone.pm:2 /export/home/www/php/keystone/perl/../conf/keystone.conf
      Keystone Command Line Utility                Keystone v0.74.00
      -h              This help text
      -status x View/Create slips with status 'x'
      -currtech tech View/Create slips with currtech 'tech'
      -brief            Only show the slip headers
      -full         Show full slip (default)
      -slip=xx        Select slip 'xx'
      -newslip        Specifies the rest of standard input is a
                     passed in as a new slip.
      -parent=pid     Specify 'pid' as the parent Slip ID
      -priority=pri        Specify 'pri' as the priority (1-9)
      -debug               Turn on debugging
      For more information, go to http://www.stonekeep.com
      or refer to the Keystone documentation.
      mysite:www: keystone/perl> 
    8. Add the following to /etc/aliases, then run newaliases
      ## Keystone bug handling system, see
      ## http://www.mysite.org/infrax/sysadmin/bughandlers.htm  
      ## created 20-Apr-2001 cxh
      keystone:             "|/home/www/php/keystone/perl/keymail.pl -mailinfo";
      keystone-submit:    "|/home/www/php/keystone/perl/keymail.pl -newslip -status=O -priority=8";
      keystone-followup:     "|/home/www/php/keystone/perl/keymail.pl -newfollowup -public"
    9. Copy the keymail file to sm.bin:
      cp /home/www/php/keystone/perl/keymail.pl /usr/adm/sm.bin
      cd /home/www/php/keystone/perl
      rm keymail.pl
      ln -s /usr/adm/sm.bin/keymail.pl . 
    10. Test the keymail.pl file from sm.bin
      ./keymail.pl -h
      I had to make the following changes:
      1. /usr/adm/sm.bin/keymail.pl, added the following
        	use lib '/home/www/php/keystone/perl';
      2. keymail.pl, Keystone.pm: Hardwire in the conf files:
            #my $path = $param{'path'} || "$FindBin::RealBin/../conf";
            # Hardwire this in so we can find it from /usr/adm/sm.bin -cxh
            my $path = "/home/www/php/keystone/conf";
    11. keystone.pl require Net::Domain, which I downloaded and installed from /perl/CPAN/modules/by-authors/Graham_Barr/libnet-1.0703.tar.gz
  • ©2002-2018 Chess