Under UNIX, Scmbug is available in the form of Debian and RPM packages. The provided packages are:
scmbug-common: common libraries.
scmbug-doc: documentation.
scmbug-tools: tools that can install the integration glue in an SCM repository and enhance the experience of integrating SCM with bug-tracking.
scmbug-server: the integration daemon.
![]() | If you believe your system meets the package dependencies, but installing packages fails due to missing dependencies, installation of the packages is still possible. Installation of RPM packages can be forced as shown in Figure 8-2, and installation of Debian packages can be forced as shown in Figure 8-3. |
Under Windows, the entire Scmbug system is available in the form of a single .zip file. It must be manually installed in C:/Program Files/Scmbug. It requires ActiveState ActivePerl installed in C:/Perl/bin/perl, and a temporary directory called C:/Temp.
Source code distributions are also available. Figure 8-4 shows how the system can be configured and installed from source. It is possible to choose a different destination of the libraries and binaries of Scmbug both in UNIX and Windows systems at configuration time. It is also possible to build the system without documentation. If you are configuring from source code, running './configure --help' can provide more information.
Figure 8-4. Installation of the system from source.
bash$ ./configure bash$ make bash$ su bash# make install-common bash# make install-doc bash# make install-tools bash# make install-server
![]() | Installing all these packages will NOT automatically integrate an SCM repository with a bug-tracking system. It will only install the basic software needed to do so. A user must configure the Integration Daemon and start it as shown in Figure 8-5. Then, a user must run the Glue Installer to install the Scmbug integration in an SCM repository. |
![]() | When specifying paths in Windows, either in the glue installer, the glue configuration file, or the integration daemon, paths should have directories separated with a forward (/) slash. |
![]() | There are various dependencies on the packages provided. Both dependencies on other packages, and on Perl modules. If they are ignored, the Integration Daemon and the Integration Tools will detect the missing dependency and refuse to execute. |
Installation of documentation, including this manual, requires installing the package scmbug-doc.
The common libraries require instaling the Perl module Log::Log4perl for logging, as shown in Figure 8-6.
Figure 8-6. XML::Simple installation.
Installation in UNIX systems:
bash$ su bash# perl -MCPAN -e "install Log::Log4perl"
Installation in Windows systems:
C:\> ppm PPM - Programmer's Package Manager version 3.1. Copyright (c) 2001 ActiveState Corp. All Rights Reserved. ActiveState is a devision of Sophos. Entering interactive shell. Using Term::ReadLine::Stub as readline library. Type 'help' to get started. ppm> install Log-Log4perl
Installation of the Integration Tools requires installing the packages scmbug-common and scmbug-tools. It also requires a diffing tool. For Windows, one such binary (diff.exe) is available in GnuWin32.
Running the VDD Generator additionally requires installing the xsltproc, and docbook-utils packages. It is uncertain where one could get these packages for Windows. An xsltproc distribution for Windows seems to be available from Igor Zlatkovic's website, but we have yet to locate a docbook-utils package for Windows. eDE seems to be usable under Windows, but he have yet to try it. However, both xsltproc and docbook-utils are provided by Cygwin.
Running the Merger requires instaling the Perl module XML::Simple (for an activity_get_bugs), as shown in Figure 8-7.
Figure 8-7. XML::Simple installation.
Installation in UNIX systems:
bash$ su bash# perl -MCPAN -e "install XML::Simple"
Installation in Windows systems:
C:\> ppm PPM - Programmer's Package Manager version 3.1. Copyright (c) 2001 ActiveState Corp. All Rights Reserved. ActiveState is a devision of Sophos. Entering interactive shell. Using Term::ReadLine::Stub as readline library. Type 'help' to get started. ppm> install XML-Simple
Installation of the Web Reports requires configuring a webserver in a way similar to the Apache configuration shown in Figure 8-8.
Installation of the daemon requires installing the packages scmbug-common and scmbug-server. Additionally, it requires installing the Perl modules Mail::Sendmail (for policy Mail notification) and XML::Simple (for an activity_get_vdd issued by the VDD Generator), as shown in Figure 8-9. If an SCM to bug-tracking username mapping is configured based on variable mapping_ldap, as described in Section 4.4.8, the Perl module Net::LDAP must also be installed.
Figure 8-9. Mail::Sendmail, XML::Simple installation.
Installation in UNIX systems:
bash$ su bash# perl -MCPAN -e "install Mail::Sendmail" bash# perl -MCPAN -e "install XML::Simple"
Installation in Windows systems:
C:\> ppm PPM - Programmer's Package Manager version 3.1. Copyright (c) 2001 ActiveState Corp. All Rights Reserved. ActiveState is a devision of Sophos. Entering interactive shell. Using Term::ReadLine::Stub as readline library. Type 'help' to get started. ppm> install Mail-Sendmail ppm> install XML-Simple
The file /etc/scmbug/daemon.conf holds the configuration of the daemon.
The daemon can be started in different execution modes. These are defined in the daemon configuration file using the daemon_mode variable and are:
Threaded. Multiple threads are created to handle incoming connections. This was observed to work well under Windows but cause a significant slowdown under UNIX. For more information see bug 264.
Forked. Multiple processes are created to handle incoming connections. This was observed to work well under UNIX and most Windows systems. The daemon unexpectedly dies during some connections in Windows. For a while, it was believed that this was due to an outdated ActiveState Perl or running a version of the DBI < 1.50, but there seems to be more to the problem. For more information see bug 597, bug 264, and bug 646.
Automatically detected. Automatically chooses between a threaded or forked mode.
Integration with multiple bug-tracking systems can be accomplished by starting multiple daemons listening at different ports.
For reasons explained in Section 6.1, the integration daemon requires local presence of the source code used to run a Bugzilla instance. It also requires access to the database used to store Bugzilla's data. It is recommended that the daemon is installed on the same machine Bugzilla runs, but this is not required. If the daemon is installed on the same machine Bugzilla runs, Scmbug will force the Bugzilla version cache (which is a local file) to be regenerated when activity_tag integration requests are processed.
![]() | On Windows, DBI version 1.50 or greater is required, and can be installed as shown in Figure 8-10. Earlier versions have threading issues. |
Integration with Mantis requires access to the database used to store Mantis' data. At a minimum, it requires installing the DBI Perl module, as shown in Figure 8-10.
![]() | On Windows, DBI version 1.50 or greater is required. Earlier versions have threading issues. |
Figure 8-10. DBI installation.
Installation in UNIX systems:
bash$ su bash# perl -MCPAN -e "install DBI"
Installation in Windows systems:
C:\> ppm PPM - Programmer's Package Manager version 3.1. Copyright (c) 2001 ActiveState Corp. All Rights Reserved. ActiveState is a devision of Sophos. Entering interactive shell. Using Term::ReadLine::Stub as readline library. Type 'help' to get started. ppm> install DBI
Figure 8-11. DBD::mysql installation.
Installation in UNIX systems:
bash$ su bash# perl -MCPAN -e "install DBD::mysql"
Installation in Windows systems:
C:\> ppm PPM - Programmer's Package Manager version 3.1. Copyright (c) 2001 ActiveState Corp. All Rights Reserved. ActiveState is a devision of Sophos. Entering interactive shell. Using Term::ReadLine::Stub as readline library. Type 'help' to get started. ppm> install DBD-mysql
For reasons explained in Section 6.3, the integration daemon requires local presence of the source code used to run a RequestTracker instance. It has not yet been investigated if it also requires local access to the database used to store RequestTracker's data.