- General information
- Data readiness
- Grid
- Infrastructure
- Offline Software
- Production
Additional software components
Submitted by jeromel on Thu, 2007-12-27 16:25
Under:
Scope & audience
Described in Setting up your computing environment, OPTSTAR is the environment variable pointing to an area which will supplement the operating system installation of libraries and program. This area is fundamental to the STAR software installation as it will contain needed libraries, approved software component version, shared files, configuration and so on.
The following path should contain all software components as sources for you to install a fresh copy on your cluster:
/afs/rhic.bnl.gov/star/common
Note that this path should allow anyuser to read so there is no need for an AFS token. The note below are sparse and ONLY indicate special instructions you need to follow if any. In the absence of special instructions, the "standard" instructions are to be followed. None of the explanations below are aimed to target a regular user but aimed to target system administrator or software infrastructure personnel.
General
The directory tree /afs/rhic.bnl.gov/star/common contains packages installed on our farm in addition of the default distribution software packages coming with the operating system. At BNL, all packages referred here are installed in the AFS tree
/opt/star -> /afs/rhic.bnl.gov/@sys/opt/star/
Be aware of the intent explained in Setting up your computing environment as per the difference between $XOPTSTAR and OPTSTAR.
OPTSTAR will either
- at BNL or to a remote site: be used to indicate and access the local software BUT may be supported through a soft-link to the same AFS area as showed above whereas @sys will expand to the operating system of interest (see Setting up your computing environment as well for a support matrix)
- at a remote site, will point to a LOCAL (that is, non-networked) installation of the software components. This space could be anywhere on your local cluster but obviously, will have to be shared and visible from all nodes in your cluster.
XOPTSTAR
The emergence of $XOPTSTAR started from 2003 to provide better support for software installation to remote institutions. Many packages add path information to their configuration (like the infamous .la files) and previously installed in $OPTSTAR, remote sites had problems loading libraries for a path reason. Hence, and unless specified otherwise below, $XOPTSTAR will be used preferably at BNL for installation the software so remote access to the AFS repository and copy will be made maximally transparent.
In 2005, we added an additional tree level reflecting the possibility of multiple compilers and possible mismatch between fs sysname setups and operating system versions. Hence, you may see path like OPTSTAR=/opt/star/sl44_gcc346 but this structure is a detail and if the additional layer does not exist for your site, later login will nonetheless succeed. This additional level is defined by the STAR login environment $STAR_HOST_SYS. In the next section, we explained how to set this up from a "blank" site (i.e. a site without the STAR environment and software installed).
On remote sites where you decide to install the software components locally, you should use $OPTSTAR in the configure or make statements.
32 bits versus 64 bits
If you want to support native 64 bits on 64 bits, do not forget to pass/force -m64 -fPIC to the compiler and -m64 to the linker. If however you want to build a cross platform (64 bit/32 bit kernels compatible) executables and libraries, you will on the contrary need to force -m32 (use -fPIC). Even if you build the packages from a 32 bit kernel node, be aware that many applications and package save a setup including compilation flags (which will have to be using -m32 if you want a cross platform package). There are many places below were I do not specify this.
Often, using CFLAGS="-m32 -fPIC" CXXFLAGS="-m32 -fPIC" LDFLAGS="-m32" would do the trick for a force to 32 bits mode (similarly for -m64). You need to use such option for libraies and packages even if you assemble on a 32 bits kernel node as otherwise, the package may build extension later not compatible as cross-platform support.
Basic starting point
From a blank node on remote site, be sure to have $OPTSTAR defined. You can do this by hand for example like this
% setenv OPTSTAR /usr/local
or
% mkdir -p /opt/star % setenv OPTSTAR /opt/star
are two possibilities. The second, being the default location of the software layer, will be automatically recognized by the STAR group login scripts. From this point, a few pre-requisites are
- you have to have a system with "a" compiler - we support gcc but also icc on Linux
- you should have the STAR group login scripts at hand (it could be from AFS). The STAR login scripts will NOT redefine $OPTSTAR if already defined.
Execute the STAR login. This will define $STAR_HOST_SYS appropriately. Then
% cd $OPTSTAR % mkdir $STAR_HOST_SYS % stardev
the definition of $OPTSTAR will change to the version dependent structure, adding $STAR_HOST_SYS to the path definition (the simple presence of the layer made the login script redefine it).
Software repository directory layout
Note the following layout :
perl Perl specific directory tree. Should be installed
first really (so many things depends on perl
nowadays). Installation order was
perl-5.6.1.tar.gz -- Moved to 5.8.0 starting from RH8
perl-5.8.0.tar.gz -- Solaris and True64 upgraded 2003
perl-5.8.4.tar.gz -- 2004, Scientific Linux
perl-5.8.9.tar.gz -- SL5+
All default arguments apart from install prefix which value is
the value of $OPTSTAR. A few questions are about /opt/star/$STAR_HOST_SYS/bin
which may not exist at first (answer y always). Other questions follows
Do you want to install perl as /usr/bin/perl? [y] n
What is your e-mail address? [jeromel@rplay18.rcf.bnl.gov] jeromel@bnl.gov
If you build a 32 bits support on a 64 bit node, you may also answer
Try to use maximal 64-bit support, if available? [y] n
and add -m32 for compilation option and linker option.
The answer to the question related to where per executable should be
installed is [n] for distribution 5.8.9 . You still need to watch for
those related to if you want to continue since the bin directory is not
created yet.
The modules are installed using a bundle script (install_perlmods
located in /afs/rhic.bnl.gov/star/common/bin/).
It needs some work to get it generalized but the idea is that it
contains the dependencies and installation order . To install,
you can do the following (we assume install_perlmods is in the path
for simplicity and clarity)
0 first chose a work place where you would unpack the needed
modules. Let's assume this is /home/xxx/myworkplace
1 Check things out by running install_perlmods with arguments 0 as
follow
% install_perlmods 0 /home/xxx/myworkplace
It will tell you the list of modules you need to unpack. If
they are already unpacked and /home/xxx/myworkplace contains
all needed package directories, skip to step 3.
2 You can unpack manually OR use the command
% install_perlmods 1 /home/xxx/myworkplace
to do this automatically. Note that you could have skipped step
1 and do that from the start (if confident enough).
3 The steps above should have created a file named
/home/xxx/myworkplace/perlm-install-XXX.csh where XXX is the OS
you are working on. Note that the same install directory may
therefore be used for ALL platform on your cluster. However,
versionning is not (yet) supported.
Execute this script after checking its content. It will run
(hopefully smoothly) the perl Makerfile.PL and make / make install
commands.
Note that you could have also used
% install_perlmods 2 /home/xxx/myworkplace
and skipp step 1 & 2. In this mode, it unpacks and proceeds with
compilation. To do only if you have absolute blind faith in the
process (I don't and have written those scripts ;-) ).
-- below for a very specific set of machines
for consistency however, we used to have them on the Linux
side as well.
GD-1.33
GD-2.35 (SL4.4+) [answer N for support of animated GIF]
GD-2.43 (SL5+) The package will auto-detect all
GDTextUtil-0.80
GDGraph-1.33
GIFgraph-1.20
Image::Magick is usually installed from the ImageMagick directory
rather than the downloaded module (this way, module and package
match exactly ; other combo lead to disaster).
After you install perl, and your setup is local (in /opt/star) you may want to do the following
% cd /opt/star % ln -s $STAR_HOST_SYS/* . % % # prepare for later directories packages will create % ln -s $STAR_HOST_SYS/share . % ln -s $STAR_HOST_SYS/include . % ln -s $STAR_HOST_SYS/info . % ln -s $STAR_HOST_SYS/etc . % ln -s $STAR_HOST_SYS/libexec . % ln -s $STAR_HOST_SYS/qt . % ln -s $STAR_HOST_SYS/jed . %
While some of those directories will not yet exist, this will create a base set of directories (without the additional compiler / OS version) supporting future upgrades via the "default" set of directories. In other words, any future upgrade of compilers for example leading to a different $STAR_HOST_SYS will still lead as well to a functional environment as far as compatibility exists. Whenever compatibility will be broken, you will need of course to re-create a new $STAR_HOST_SYS tree.
At this stage, you should install as much of the libraries in $OPTSTAR and re-address the perl modules later as some depends on installed libraries necessary for the STAR environment to be functional.
Others/ [PLEASE READ, SOME PACKAGE MAY HAVE EXCEPTION NOTES]
Needed on Other platform (but there on Linux). Unless specified
otherwise, the packages were build with the default values.
make-3.80
tar-1.13
flex-2.5.4
xpm-3.4k
libpng-1.0.9
mysql-3.23.43 on Solaris
mysql-3.23.55 starting from True64 days (should be tried as
an upgraded version of teh API)
BEWARE mysql-4.0.17 was tried and is flawed.
We also use native distribution MySQL
mysql-4.1.22 *** IMPORTANT *** Actually this was an upgrade
on SL4.4 (not necessary but the default 4.1.20
has some bugs)
<gcc-2.95.2>
dejagnu-1.4.1
gdb-5.2
texinfo-4.3
emacs-20.7
findutils-4.1
fileutils-4.1
cvs-1.11 -- perl is needed before hand as it folds
it in generated scripts
grep-2.5.1a Started on Solaris 5.9 in 2005 as ROOT would complain
about too old version of egrep
This may be needed if not installed on your system. It is part of a needed
autoconf/automake deployement.
m4-1.4.1
autoconf-2.53
automake-1.6.3
libtool-1.5.8
Linux only
valgrind-2.2.0
valgrind-3.2.3 (was for SL 4.4 until 2009)
valgrind-3.4.1 SL 4.4+
General/ The installed packages/sources for diverse
software layers. The order of installation was
ImageMagick-5.4.3-9.tar.gz On RedHat 8+, not needed for SL/RHE but see below
ImageMagick-6.5.3-10.tar.gz Used on SL5 as default revision is "old" (6.2.8)
slang-1.4.5 On RedHat 8+, ATTENTION: not needed for SL/RHE
lynx2-8-2
lynx2-8-5 Starting from SL/RHE
xv-3.10a
nedit-5.2-src ATTENTION: No need on SL/RHE (installed by default)
pythia5
pythia6
qt-x11-free-3.1.0
qt-x11-free-3.3.1 Starting with SL/RHE
qt-x11-opensource-4.4.3 Deployed from i386_sl4 and i386_sl305 (after dropping SL3.0.2)
text2c
icalc
dejagnu-1.4.1 Optional / Dropped from SL3.0.5
gdb-5.1.91 For RH lower versions - Not RedHat , 8+
gdb-6.2 (patched) Done for SL3 only (do not install on others)
gsl-1.13 Started from SL5 and back ported to SL4
chtext
jed-0.99-16
jed-0.99.18 Used from SL5+
doxygen-1.3.5
doxygen-1.3.7 Starting with SL/RHE
doxygen-1.5.9 Use this for SL5+ - this package has a dependence in qt
astyle_1.15.3 Started from SL3/RHE upon user request
astyle_1.19 SL4.4 and above
astyle_1.23 SL5 and above
unixODBC-2.2.6 (depend on Qt) Was experimental Linux only for now.
NOT ON SL5+
MyODBC-3.51.06 Was Experimental on Linux
MyODBC-3.51.12 Started from SL4.4 (but really needed for mysql 4.1+)
mysql-connector-odbc-3.51.12 <-- new name starting from 51.12. BEWARE.
NOT ON SL5+
log4cxx 0.9.7 This should be general
log4cxx 0.10.7 Started at SL5 - this is now from Apache
apr-1.3.5 and depend on the Apache Portable Runtime (apr) package
aprt-util-1.3.7
valkyrie-1.4.0 Added to SL3 as a GUI companion to valgrind (requires Qt3)
Not installed in SL5 for now (Qt4 only) so ignore
Not necessary (installed anyway)
chksum
pine4.64 Added at SL4.4 as removed from base install at BNL
Retired
xemacs-21.5.15 << Linux only -- This was temporary and removed
Other directories are
WorkStation/ contains packages such as OpenAFS or OpenOffice Linux
WebServer/ mostly perl modules needed for our WebServer
Linux/ Linux specific utilities (does not fit in General) or
packages tested under Linux only.
Some notes about packages :
Most of them are pretty straight forward to install (like ./configure
make ; make install (changing the base path /usr/local to $OPTSTAR).
With configure, this is done using either
./configure --prefix=$OPTSTAR
./configure --prefix=$XOPTSTAR
Specific notes follows and include packages which are NOT yet official
but tried out.
- Beware that the Msql-Mysql-modules perl module requires a hack
I have not quite understood yet how to make automatic (the
advertized --blabla do not seem to work) on platforms supporting
the client in OPTSTAR
INC = ... -I$(XOPTSTAR)/include/mysql ...
H_FILES = $(XOPTSTAR)/include/mysql/mysql.h
OTHERLDFLAGS = -L$(XOPTSTAR)/lib/mysql
LDLOADLIBS = -lmysqlclient -lm -lz
- GD-2+
Do NOT select support for animated GIF. This will fail on standard
SL distributions (default gd lib has no support for that).
- ImageMagick : really easy to install but however, the PerlMagick
part should be installed separatly (the usual perl module way). I
used the distribution's module. Therefore, that perl-module is
not in perl/Installed/ as the other perl-modules.
The copy of PerlMagick to /bin/ by default will fail so you may
want to additionally do
% make install-info
% make install-data-html
which comes later depending on version.
- lynx2-8-2 / lynx2-8-5
Note: First, I tried lynx2-8-4 and the make file / configure
is a real disaster. For 2-8-2/2-8-5, follow the notes
below
General :
% ./configure --prefix=$XOPTSTAR {--with-screen=slang}
Do not forget to
% make install-help
% make install-doc
caveat 1 -- Linux (lynx 2-8-2 only, fixed at 2-8-5)
$OPTSTAR/lib/lynx.cfg was modified as follow
96,97c96,97
< #HELPFILE:http://www.crl.com/~subir/lynx/lynx_help/lynx_help_main.html
< HELPFILE:file://localhost/opt/star/lib/lynx_help/lynx_help_main.html
---HELPFILE:http://www.crl.com/~subir/lynx/lynx_help/lynx_help_main.html
#HELPFILE:file://localhost/PATH_TO/lynx_help/lynx_help_main.html
For using curses (needed under Linux, otherwise, the screen looks funny),
one has to do a few manipulation by hand i.e.
. start with ./configure --prefix=$XOPTSTAR --with-screen=slang
. edit the makefile and add -DUSE_SLANG to SITE_DEFS
. change CPPFLAGS from /usr/local/slang to $OPTSTAR/include [when slang is local]
Version 2-8-5 has this issue fixed.
. Change LIBS -lslang to -L$OPTSTAR/lib -lslang
. You are ready now
There is probably an easier way but as usual, I gave up after close
to 15mnts reading, as much struggle and complete flop at the end ..
caveta 2 -- Solaris/True64 :
We did not build with slang but native (slang screws colors up)
text2c, chksum, chtext
Those packages can be assembled simply by using the following command:
% make clean && make install PREFIX=$OPTSTAR
WARNING: no 32 bit image support on 64 bit OS is provided at this time. Build the image under a 32 bits OS and copy. We will update this help ASAP as applies.
xv-3.10a
This package distributed already patched and in pirinciple, only a 'make' should suffice.
However, if you need to re-generate the makefile (may be needed for new architectures), use
% xmkmf
Then, the patches is as follow
% sed "s|/usr/local|$OPTSTAR|" MakeFile >Makefile.new % mv Makefile.new Makefile
and in xv.h, line 119 becomes
# if !defined(__NetBSD__) && ! defined(__USE_BSD)
After xmkmf, you will need to
% make depend
before typing make. This may generate some warnings. Ignore then.
However, I had to fix diverse caveats depending on situations ...
Caveat 1 - no tiff library found
Go into the tiff/ directory and do
% cd tiff % make -f Makefile.gcc % cd ..
to generate the mkg3states (itself creating the g3states.h file) as it did not work.
Caveat 2 - tiff and gcc 4.3.2 in tiff/
With gcc 4.3.2 I created an additional .h file named local_types.h and force the definition of a few of the u_* types but using define statements (I know, it is bad). The content of that file is as follows
#ifndef _LOCAL_TYPES_ #define _LOCAL_TYPES_ #if !defined(u_long) # define u_long unsigned long #endif #if !defined(u_char) # define u_char unsigned char #endif #if !defined(u_short) # define u_short unsigned short #endif #if !defined(u_int) # define u_int unsigned int #endif #endif
and it needs to be included in tiff/tif_fax3.h and tiff/tiffiop.h .
Caveat 3 -- no jpeg library?
In case you have a warning about jpeg such as No rule to make target `libjpeg.a', do the following as well:
% cd jpeg % ./configure % make % cd ..
Normal build
Now, you should be ready to build the main program (I am not sure why some depencies fail on some platform and did not bother to fix).
% make % make install BINDIR=$OPTSTAR/bin
Note
- xv is licensed so the usage as to remain stricly for your users' amusement only. If you use this package for doing any work, you are violating the law. Please, read the license agreement at http://www.trilon.com/xv/pricing.html
- Nedit. There is no install provided. I did % make linux % cp source/nc source/nedit $OPTSTAR/bin/ % cp doc/nc.man $OPTSTAR/man/man1/nc.1 % cp doc/nedit.man $OPTSTAR/man/man1/nedit.1 % make dec % make solaris
Pythia libraries
The unpacking is "raw". So, go in a working directory where the .tar.gz are, and do the following (for linux)
% mkdir Pythia && cd Pythia && tar -xzf ../pythia5.tar.gz % ./makePythia.linux % mv libPythia.so $OPTSTAR/lib/ % cd .. % % mkdir Pythia6 && cd Pythia6 && tar -xzf ../pythia6.tar.gz % test -e main.c && rm -f main.c % ./makePythia6.linux % mv libPythia6.so $OPTSTAR/lib % % rm -fr Pythia Pythia6
Substitute linux with solaris for Solaris platform. On Solaris, Pythia6 requires gcc to build/link.
On SL5, 64 bits note
Depending on whether you compile a native 64 bit library support or a cross-platform 32/64, you will need to handle it differently.
For a 64 bits platform, I had to edit the makePythia.linux and -fPIC to the options for a so the binaries main.c . I did not provide a patched package mainly because v5 is not really needed in STAR. For pythia6 caveat: On SL5, 64 bits, use makePythia6.linuxx8664 file. You will need to chmod +x first as it was not executable in my version.
On 64 bit platform to actually build a cross-platform version, I had instead to use the normal build but make sure to add -m32 to compilation and linker options and -fPIC to compilation option.
True64
% chmod +x ./makePythia.alpha && ./makePythia.alpha Pythia6
% chmod +x ./makePythia6.alpha && ./makePythia6.alpha
The following script was used to split the code which was too big
#!/usr/bin/env perl
$filin = $ARGV[0];
open(FI,$filin);
$idx = $i = 0;
while( defined($line = <FI>) ){
chomp($line); $i++;
if ($i >= 500 && $line =~ /subroutine/){
$i = 0;
$idx++;
}
if ($i == 0){
close(FO);
open(FO,">$idx.$filin");
print "Opening $idx.$filin\n";
}
print FO "$line\n";
}
close(FO);
close(FI);
Qt 4
Starts the same than Qt3 i.e. assuming that SRC=/afs/rhic.bnl.gov/star/common/General/Sources/ and $x and $y stands for major and minor versions of Qt
% cd $WHEREVER % tar -xzf $SRC/qt-x11-opensource-src-4.$x.$y.tar.gz % ./configure --prefix=$XOPTSTAR/qt4.$x -qt-sql-mysql -no-exceptions -no-glib -no-rpath
To build a 32/64 bits version on a 64 bits OS or forcing a 32 bits exec (shared mode) on a 32 bits OS, use a configure target i.e.
% ./configure -platform linux-g++-32 [...] % ./configure -platform linux-g++-64 [...]
Note: We added mysql support in Qt4 and Qt can now be compiled in a separate directory and installed properly (at last!). If the mysql support gives you trouble on a 64 bit OS attempting to build a 32 bit image, drop the option and move on.
On some systems (SL3.0.2 for sure), I also used
- -no-openssl as there were include problems with ssl.h and krb5.h
- -qt-libtiff as the default system included header did not agree with Qt code
- -platform linux-icc could be used for icc based compiler
Compiling
% make % make install % cd $OPTSTAR % ln -s qt4.$x ./qt4
We also created a qt3 link was created for all SL44 on which both 3 and 4 existed.
Qt 3
Horribly packaged, the easiest is to unpack in $OPTSTAR, cd to qt-x11-free-3.X.X (where X.X stands for the current sub-version deployed on our node), run the configure script, make the package, then make clean. Then, link
% cd $OPTSTAR && ln -s qt-x11-free-3.X.X qt
Later release can be build that way with changing the soft-link without removing the preceeding version entirely. Before building, do the following (if you had previous version of Qt installed). This is not necessary if you install the package the first time around. Please, close windows after compilation to ensure STAR path sanity.
% cd $OPTSTAR/qt % setenv QTDIR `pwd` % setenv LD_LIBRARY_PATH `pwd`/lib:$LD_LIBRARY_PATH % setenv PATH `pwd`/bin:$PATH
To configure the package, then use one of:
- Linux gcc: ./configure --prefix=`pwd` -no-xft -thread
- Linux icc: ./configure --prefix=`pwd` -no-xft -thread -platform linux-icc
- True64 : ./configure --prefix=`pwd` -no-xft -thread
- Solaris: ./configure --prefix=`pwd` -no-xft
In case of thread, the regular version is build first then the threaded version (so far, they have different names and no Soft links).
You may also want to edit $QTDIR/mkspecs/default/qmake.conf and replace the line
QMAKE_RPATH = -Wl,-rpath,
by
QMAKE_RPATH =
By doing so, you would disable the rpath shared library loading and rely on LD_LIBRARY_PATH only for loading your Qt related libraries. This has the advantages that you may copy the Qt3 libraries along your project and isolate onto a specific machine without the need to see the original installation directory.
- Flex is usually not needed but some OS have pre-GNU flex not adequate so I would recommend to deploy flex-2.5.4 anyway (the latest version since Linux 2001) - Xpm (Solaris) % xmkmf % make Makefiles % make includes % make I ran the install command by hand changing the path (cut and paste) Had to % cd lib % installbsd -c -m 0644 libXpm.so $OPTSTAR/lib % installbsd -c -m 0644 libXpm.a $OPTSTAR/lib % cd .. % cd sxpm/ % installbsd -c sxpm $OPTSTAR/bin % cd ../cxpm/ % installbsd -c cxpm $OPTSTAR/bin % Onsolaris, the .a was not there, add to % cd lib && ar -q libXpm.a *.o && cp libXpm.a $OPTSTAR/lib % cd .. Additionally needed % if ( ! -e $OPTSTAR/include) mkdir $OPTSTAR/include % cp lib/xpm.h $OPTSTAR/include/ - libpng ** Solaris ** % cat scripts/makefile.solaris | sed "s/-Wall //" > scripts/makefile.solaris2 % cat scripts/makefile.solaris2 | sed "s/gcc/cc/" > scripts/makefile.solaris3 % cat scripts/makefile.solaris3 | sed "s/-O3/-O/" > scripts/makefile.solaris2 % cat scripts/makefile.solaris2 | sed "s/-fPIC/-KPIC/" > scripts/makefile.solaris3 % % make -f scripts/makefile.solaris3 will eventually fail related to libucb. No worry, this can be sorted out (http://www.unixguide.net/sun/solaris2faq.shtml) by including /usr/ucblib in the -L list % cc -o pngtest -I/usr/local/include -O pngtest.o -L. -R. -L/usr/local/lib \ -L/usr/ucblib -R/usr/local/lib -lpng -lz -lm % make -f scripts/makefile.solaris3 install prefix=$OPTSTAR ** True64 ** Copy the make file but most likely, a change like ZLIBINC = $(OPTSTAR)/include ZLIBLIB = $(OPTSTAR)/lib in the makefile is neeed. pngconf.h and png.h needed for installation and either .a or .a + .so cp pngconf.h png.h $OPTSTAR/include/ cp libpng.* $OPTSTAR/lib - mysql client (Solaris) % ./configure --prefix=$XOPTSTAR --without-server {--enable-thread-safe-client} (very smooth) The latest option is needed to create the libmysqlclient_r needed by some applications. While this so is build with early version of MySQL, version 4.1+ requires the configure option explicitly. - dejagnu-1.4.1 [Solaris specific]
the install program was not found.
% cd doc/ && cp ./runtest.1 $OPTSTAR/man/man1/runtest.1
% chmod 644 $OPTSTAR/man/man1/runtest.1 - Jed Note: the below tweak may not be needed on SL/RHE % ./configure --prefix=$OPTSTAR Edit the configure script and add $OPTSTAR (possibly /opt/star) to it as follow. JD_Search_Dirs="$JD_Search_Dirs \ $includedir,$libdir \ /opt/star/include,/opt/star/lib \ /usr/local/include,/usr/local/lib \ /usr/include,/usr/lib \ /usr/include/slang,/usr/lib \ /usr/include/slang,/usr/lib/slang" All fine afterward % make % make xjed % make install I had to make some hack on AIX (well, who wants to run on AIX in the first place right ?? but since AIX do not have any emacs etc ...jed is great) as follow * make a copy of unistd.h and comment the sleep() prototype * modify file.c to include the local version (replace <> by "") * modify main.c to include sys/io.h (and not io.h) and comment out direct.h Voila (works like a charm, don't ask). 64 bit issue. It tried to do something along the line of -L/usr/X11R6/lib64 -lX11 but did not find 64 bits X11 libs. - emacs Was repacked with leim package (instead of keeping both separatly) in addition of having a patch in src/s/sol2.h for solaris as follow #define HAVE_VFORK 1 #endif +/* Newer versions of Solaris have bcopy etc. as functions, with + prototypes in strings.h. They lose if the defines from usg5-4.h + are visible, which happens when X headers are included. */ +#ifdef HAVE_BCOPY +#undef bcopy +#undef bzero +#undef bcmp +#ifndef NOT_C_CODE +#include <strings.h> +#endif +#endif + Nothing to do differently here. This is just a note to keep track of changes found from community mailing lists. % ./configure --prefix=$OPTSTAR --without-gcc - Xemacs (Solaris) % ./configure --without-gcc --prefix=$OPTSTAR Other solution, forcing Xpm % ./configure --without-gcc --prefix=$OPTSTAR --with-xpm --site-prefixes=$OPTSTAR Possible code problem : /* #include <X11/xpm.h> */ #include <xpm.h> - gcc-2.95 On Solaris was used as a base compiler % ./configure --prefix=$OPTSTAR % make bootstrap o Additional gcc on Linux Had to do it in multiple passes (you do not need to do the first pass elsewhere ; this is just because we started without a valid node). A gcc version < 2.95.2 had to be used. I used a 6.1 node to assemble it and install in a specific AFS tree (cross version) % cd /opt/star && ln -s /afs/rhic/i386_linux24/opt/star/alt . Move to the gcc source directory % ./configure --prefix=/opt/star/alt % make bootstrap % make install install may fail in AFS land. Edit gcc/Makefile and remove "p" option to the tar options TAROUTOPTS . For it work under 7.2, go on a 7.2 node and % cp /opt/star/alt/include/g++-3/streambuf.h /opt/star/alt/include/g++-3/streambuf.h-init % cp -f /usr/include/g++-3/streambuf.h /opt/star/alt/include/g++-3/streambuf.h ... don't ask ... o On Solaris, no problems % ./configure --prefix=/opt/star/alt etc ... - Compress-Zlib-1.12 --> zlib-1.1.4 If installed in $OPTSTAR, % setenv ZLIB_LIB $OPTSTAR/lib % setenv ZLIB_INCLUDE $OPTSTAR/include - findutil Needed a patch in lib/fnmatch.h for True64 as follow : + addition of defined(__GNUC__) on line 49 + do a chmod +rw lib/fnmatch.h first #if !defined (_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 2 || defined (_GNU_SOURCE) || defined(__GNUC__) - unixODBC
./configure --prefix=$XOPTSTAR [CC=icc CXX=icc]
- MyODBC
Linux % ./configure --prefix=$XOPTSTAR --with-unixODBC=$XOPTSTAR [CC=icc CXX=icc]
Others % ./configure --prefix=$XOPTSTAR --with-unixODBC=$XOPTSTAR --with-mysql-libs=$XOPTSTAR/lib/mysql
--with-mysql-includes=$XOPTSTAR/include/mysql --with-mysql-path=$XOPTSTAR
Note : Because of an unknown issue, I had to use --disable-gui on True64
as it would complain about not finding the X include ... GUI is
not important for ODBC client anyway but whenever time allows ...
Deploy instructions at http://www.mysql.com/products/myodbc/faq_toc.html - doxygen Installation would benefit from some smoothing + note the space between prefix and $OPTSTAR % ./configure --prefix $OPTSTAR % make % make install as usual but % make docs which will fail due to missing eps2pdf program. Will create however the HTML files you will need to copy somewhere. % cp -r html $WhereverTheyShouldGo for example % cp -r html /afs/rhic.bnl.gov/star/doc/www/comp/sofi/doxygen
WARNING: On a 64 bit OS, I have not found a way to force building
a 32 bits image for compatibility between 32/64 OS. Will update this
help ASAP whenever a fix will appear.
* CLHEP1.8 *** Experimental only ***
printVersion.cc needs a correction #include <string> to <string.h>
for True64 which is a bit strict in terms of compilation.
On Solaris, 2 caveats
o gcc was used (claim that CC is used but do not have the include)
o install failed running a "kdir" command instead of mkdir so do a
% make install MKDIR='mkdir -p'
Using icc was not tried and this package when then removed. - mysqlcc ./configure --prefix=$OPTSTAR --with-mysql-include=$OPTSTAR/include/mysql --with-mysql-lib=$OPTSTAR/lib/mysql The excutable do not install itself so, one needs to % cp -f mysqlcc $OPTSTAR/bin/
gdb (patch)
in gdb/linux-nat.c
/*
and go (no, I will not explain).
fprintf_filtered (gdb_stdout,
"Detaching after fork from child process %d.\n",
child_pid);
*/
astyle
Versions below 1.23
Find where the code really unpacks. There are no configure for this package.
% cd astyle_1.15.3 ! or % cd astyle/src % make % cp astyle $OPTSTAR/bin/
Version 1.15.3
The package comes as a zip archive. Be aware that unpacking extracts files in the current directory. So, the package was remade for convenience. Although written in C++, this executable will perform as expected under icc environment. On SL4 and for versions, gcc 3.4.3, add -fpermissive to the Makefile CPPFLAGS.
Version 1.23
Directory structure changes but easier to make the package so use instead
% cd astyle_1.23/src/ % make -f ../buildgcc/Makefile % cp ../bin/astyle $OPTSTAR/bin/ % cd ..
Documentation
A crummy man page was added (will make it better later if really important). It was generted as follow and provided for convenience in the packages for STAR (do not overwrite because I will not tell you what to do to make the file a good pod):
% cd doc/ % lynx -dump astyle.html >astyle.pod
[... some massage beyond the scope of this help - use what I provided ...]
% pod2man astyle.pod >astyle.man % cp astyle.man $OPTSTAR/man/man1/astyle.1
valgrind
MUST be installed using $XOPTSTAR because there is an explicit reference to the install path. Copying to a local /opt/star would therefore not work. For icc, use the regular command as this is a self-contained program without C++ crap and can be copied from gcc/icc directory. The command is
% ./configure --prefix=$XOPTSTAR
Version 2.2
A few hacks were made on the package, a go-and-learn experience as problems appeared
coregrind/vg_include.h
123c123
< #define VG_N_RWLOCKS 5000
---
#define VG_N_RWLOCKS 500
coregrind/vg_libpthread.vs 195a196 > __pthread_clock_gettime; __pthread_clock_settime;
to solve problems encountered with large programs and pthread.
APR
apr is a straight forward installation:
% ./configure --prefix=$OPTSTAR
apr-util needs to have one more argument i.e.
% ./configure --prefix=$OPTSTAR --with-apr=$OPTSTAR
log4cxx
log4cxx 0.10.x
This distribution is part of the Apache project and requires APR library (see above).
The package was taken nearly as-is apart from the following patches:
- inputstreamreader.cpp, socketoutputstream.cpp, console.cxx - requires adding #include <string.h> on top as memmove, mencpy are no longer implicit but declared in string.h
After installing APR and using the patches as indicated, use
% ./configure --prefix=$XOPTSTAR --with-apr=$XOPTSTAR % make % make install
Note that a .la file will be created (hence the use of XOPTSTAR as indicated at the beginning of this document).
log4cxx 0.9.5
There is a bug on Linux so, start with commenting all lines related to HAVE_LINUX_ATOMIC_OPERATIONS in configure.in before the below. Finally, two code had to be patched are now repacked
- filewatchdog.cpp line 21: comment #ifdef WIN32 and the associated #endif
- cocketimpl.cpp line 41: add #include <errno.h>
For ODBC support, one needs
% setenv CPPFLAGS "-I$XOPTSTAR/include" % setenv LDFLAGS "-L$XOPTSTAR/lib"
log4cxx 0.9.7
Also need to do the below or it will not even find the libs at configure.
% setenv CPPFLAGS "-I$XOPTSTAR/include" % setenv LDFLAGS "-L$XOPTSTAR/lib"
On Scientific Linux 4.4 aka Linux 2.6 replace as follows
#AC_CHECK_FUNCS(gettimeofday ftime setenv) AC_CHECK_FUNCS(setenv)
Linux 7.3 distributions note
On Version 7.3 of Linux, this is hard to install. You will need to upgrade m4, autoconf to at the least the versions specified for "other platforms". It won't compile easily with gcc 2.96 though. But it can using
% ./configure --prefix=$OPTSTAR CC=/usr/bin/gcc3 CXX=/usr/bin/g++3
if you have all gcc 3 ready.
Finally, if you install log4cxx from a new Linux version (especially one having a different version of autoconf tools), you better start from a fresh directory and not attempt to use the 'clean' target (it will fail).
Summay then:
Linux gcc (general instructions, all log4cxx)
% ./autogen.sh % ./configure --prefix=$OPTSTAR [--with-ODBC=unixODBC]
Linux icc
% setup icc % ./configure --prefix=$XOPTSTAR CC=icc CXX=icc [--with-ODBC=unixODBC]
If icc is the second target, you should use 'make clean' before the configure.
Solaris
Does not configure (need the autoconf tools)
True64
Not tried yet
libxml2
Platform: so far needed to update RH 8.0 only, add to propagate to other platform in 2006 due to a component dependence issue.
% ./configure --without-python --prefix=$XOPTSTAR
pine
Re-added at BNL since SL4.4 because it was removed from the base installation, this may not be needed for your site (install from RPM, it exists).
Scientific Linux (don't get fooled by the targets)
% ./build lrh % cp bin/pine bin/pico $OPTSTAR/bin/
GSL - GNU Scientific Library
The install is straight forward with the usual configure but on 64 bit machine, you will need to add the CCFLAGS and LDFLAGS as showed below
% ./configure --prefix=$OPTSTAR ! default bits % ./configure --prefix=$OPTSTAR CFLAGS="-m32 -fPIC" LDFLAGS="-m32" ! 32 bits % ./configure --prefix=$OPTSTAR CFLAGS="-m64 -fPIC" LDFLAGS="-m64" ! 64 bits % make % make install
