a4 - A Perforce codeline automation system Legal Notice ----- ------ Copyright (c) 2002-2003 WIS Technologies, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. The author may be contacted at , , or c/o NVIDIA, 2701 San Tomas Expwy, Santa Clara, CA 95050. Description ----------- A4 is a suite of Perl packages and utilities that automate the use of Perforce according to a number of conventions. See the a4intro(1) man page (http://a-4.sourceforge.net/docs/a4intro.html) for more information. Installation ------------ NOTE: This release contains packages that are *not* officially accepted into the module namespace. Therefore, you should define the PREFIX variable to point to some directory *not* in the normal Perl include path, and have any additional Perl scripts that make use of this module put that directory *first* in the include path using the 'lib' module that is supplied with Perl. This is a standard (well, sort of) Perl module. To install: % perl -MCPAN -e 'install "BSD::Resource"' % perl -MCPAN -e 'install "File::Spec"' % perl -MCPAN -e 'install "File::Temp"' % perl -MCPAN -e 'install "Getopt::Long"' % perl -MCPAN -e 'install "Net::Telnet"' % perl -MCPAN -e 'install "P4"' % perl -MCPAN -e 'install "P4::Client"' % perl -MCPAN -e 'install "Storable"' % perl Makefile.PL # preferably "perl Makefile.PL PREFIX=/...", etc. % make % make test % make install # don't override make variables here! If you don't have write privilege to your Perl install, or if you don't want to modify it, then you need to customize you user CPAN configuration. See the etc/MyConfig.pm file included in this distribution. You may either apply the same 'makepl_agrs' to the subsequent "perl Makefile.PL", or you can specify your private Perl library as the 'reflibs' configuration variable, for example: % reflib=$HOME/tools/lib/perl5 % perl Makefile.PL PREFIX=$HOME/a4 reflibs="qw($reflib)" \ FULLPERL="/usr/bin/perl -I $reflib/i686-linux -I $reflib" The "Makefile.PL" step will automatically configure the module for you. It may ask questions about your configuration preferences. You can specify those answers, as well as many other things, by providing additional variable assignments on the command line. See "A4/Config.pm.PL" for details. After it's installed, run the "a4suid" script in the INSTALLSCRIPT directory (PREFIX/bin by default) if it is both applicable and appropriate for the system. See the a4suid(1) man page for details. In order to use A4 locking (required by "a4 submit" and "a4 edit" [TBD]), you need to have the A4 database server (a4d) listen at the port determined (by default) by adding 1 to the perforce server port. If you're using inetd(8) for this, then your entry should look something like this: a4d stream tcp nowait perforce a4d can be a directory inside the perforce repository. You need to create a file called "host" inside that contains the name of the host on which the a4d server is authorized to run. Since this is an ASCII service, you can test it out by telnet(1)'ing to it. You should also copy "a4quickstart.html" to some location that is readily accessible to prospective users of this program. NOTE: A4 is built with an awareness of its install location. Therefore, bad things can happen if you override installation variables on the "make" command line. You need to do that on the "perl Makefile.PL" command line instead. If you need to change the configuration, then you must "make clean" and then start over. NOTE: Some of the tests assume that the P4PORT environment variable points to an active Perforce server, even if you specify the p4port configuration variable. I'm not sure about the minimum version of Perl with which this module will work. It has been developed under Perl 5.6.0. It does make extensive use of 'our' and advanced 'tie'ing features, so any version much older than that is unlikely to work. My goal is to support UNIX-ish servers and both UNIX-ish and Windows clients. I don't plan on going out of my way to support anything else. The program has not yet been tested at all under Windows (but feel free to try). Submitting Patches ---------- ------- Bug reports are more likely to receive attention if they are accompanied by a patch to fix the problem. The program has been carefully designed and documented so as to make that within the capability of a typical Perl programmer. Please do not submit changes to generated files ("lib/Tie/Sig.pm" and "A4/Config.pm" in particular). Change the corresponding source file (listed in the "MANIFEST" file) instead. Please append '."_name"' to the sprintf that defines $version in "Makefile.PL", where "name" is a short name for your patch, and include that in your patch. The recommended way to generate a patch is to use "diff -Naur" against an unmodified directory of the base VERSION, after you have run "make realclean" in both directories. Include the patch version name in the patch filename. Version Date Notes ------- ---- ----- 0.01777 2/11/03 Initial ALPHA release. Everything is subject to change. 0.03109 4/27/03 Perl 5.8.0 signal fixes. Added -v opt. p4sync() fixes. 0.04738 7/31/03 Fixes for Perforce 2002.2. Improved syncview and sync. Client connections are cached. Added "nonsource". 0.04846 8/08/03 Added AltRoots support. Added P4::Run::P4 class. 0.0969335 12/12/03 Improved install flow and on-line help. Added -vname.