##########################################################################

#                                                                        #
# © Copyright IBM Corporation 2002, 20010 All rights reserved.           #
#                                                                        #
# This program and the accompanying materials are made available under   #
# the terms of the Common Public License v1.0 which accompanies this     #
# distribution, and is also available at http://www.opensource.org       #
# Contributors:                                                          #
#                                                                        #
# William Spurlin - Initial version and framework                        #
#                                                                        #

##########################################################################

ClearCase::CtCmd is an interface to IBM Rational ClearCase. For support, contact support@rational.com. For installation instructions, see INSTALL.

ClearCase::CtCmd is supported on all platforms that IBM Rational ClearCase supports.

##########################################################################

#                                                                        #
# Documentation                                                          #
#                                                                        #

##########################################################################

ClearCase::CtCmd is self-documenting through the Perl POD (Plain Old Documentation) facility. After installation, "perldoc ClearCase::CtCmd" will display the self-documentation. Before installation the command "perldoc -F CtCmd.pm" may be used from the installation directory.

##########################################################################

#                                                                        #
# Signals                                                                #
#                                                                        #

##########################################################################

ClearCase::CtCmd does not save/restore user signal handlers upon entrance/exit. Users are, of course, able to explictly restore their signal handlers with the $SIG{<signal>} = <handler ref> mechanism after each invocation of ClearCase::CtCmd::exec(), but user signal handlers are modified by the ClearCase libraries called by ClearCase::CtCmd, except that with ClearCase versions greater than 5.0, if the signal handler for signals 1, 2, 3 or 15 is set to SIG_IGN ( that is, $SIG{[1|2|3|15]} = 'IGNORE' ) the signal handler will be saved during and after an invocation of ClearCase::CtCmd::exec.

##########################################################################

#                                                                        #
# Limitations                                                            #
#                                                                        #

##########################################################################

# libperl.so

On Solaris and presumably other Unix/Linux, /usr/atria/shlib/libperl.<shared object extension> on ClearCase v5.0 can conflict with the user's perl installation if the user's perl is built as a wrapper around a shared object of the same name, e. g., "libperl.so". With IBM Rational ClearCase v6.x and newer, the perl library is name libratlperl.so, removing this conflict.

Workarounds
  1. Do not build Perl as a shared object.

    pro: Simple con: Requires user to rebuild Perl. Since libperl.so is shared,

    loses advantage of significantly less memory use when there are multiple Perl interpreters running.

  2. Build a shared Perl using some name other than "libperl.<shared object extension>."

    pro: Simple. Run Configure/modify the config.sh useshrplib,

    libperl and dflt variables, assigning some name other than "libperl.so" to libperl. "libperl561.so" does nicely. con: Requires user to rebuild Perl.

  3. Another workaround is for the user (where, for example, a shared Perl is installed in /opt/perl_5.6.1) to:
    1. From the CtCmd directory, run "perl Makefile.PL; make".
    2. copy /usr/atria/shlib/libperl.so to ./blib/arch/auto/ClearCase/CtCmd/liboldperl.so
    3. run the following command:

LD_RUN_PATH="/usr/atria/shlib:/usr/lib:/var/tmp/CtCmd" ld -G -L/usr/atria/shlib -L/usr/local/lib CtCmd.o -Lblib/arch/auto/ClearCase/CtCmd -R/usr/ucblib -R/usr/atria/shlib -R/shlib -R/opt/perl_5.6.1/lib/sun4-solaris/auto/ClearCase/CtCmd -R/opt/perl/5.6.1/lib/site_perl/auto/ClearCase/CtCmd -Rblib/arch/auto/ClearCase/CtCmd -o blib/arch/auto/ClearCase/CtCmd/CtCmd.so -lzuba -L/var/tmp/CtCmd -latriacmdsyn -latriacmd -latriasumcmd -latriasum -latriamsadm -latriamntrpc -latriacm -latriavob -latriaview -latriacm -latriadbrpc -latriatirpc -latriaxdr -latriamvfs -latriatbs -latriaadm -latriasplit -latriacredmap -latriaks -lezrpc -lrpcsvc -latriaccfs -latriasquidad -latriasquidcore -lc -lw -lCrun -loldperl

(The above will have to be on one line.)

Now, in lieu of "make test",

4. perl -Iblib/lib -Iblib/arch t/t1_createArch.t

5. perl -Iblib/lib -Iblib/arch t/t2_tstArch.t

6. perl -Iblib/lib -Iblib/arch t/t3_cleanArch.t

will run the test suite verbosely and clean up, hopefully with no failures.

7. Copy the contents of ./blib/arch/auto/ClearCase/CtCmd/ (three files ending in .so ) to
/opt/perl_5.6.1/lib/sun4-solaris/auto/ClearCase/CtCmd . Directories will have to be created first.

8. Copy blib/lib/ClearCase/CtCmd.pm to /opt/perl_5.6.1/lib/sun4-solaris/ClearCase/CtCmd.pm . Directories will have to be created.

# AIX

On AIX platforms, with IBM Rational ClearCase v7.x, you must edit /usr/opt/perl5/lib[64]/5.8.2/aix-thread-multi/Config.pm and change

lib_ext = ".a"

to

lib_ext = ".so"

before doing "perl Makefile.PL", otherwise perl will look for libraries with the ".a" extension.