The getops.pl issues has now been fixed in the latest release of ECCE
(there were initially some issues with getops.pl being deprecated. Fixed now)
This post on the NWChem/ECCE forum got me interested in trying to build ECCE on Fedora 18.
I'm presuming that you just clicked your way through the fedora 18 installation so that e.g. java-1.7.0-openjdk is already installed. Note that the default partitioning scheme in Fedora may lead to a very small (<1 Gb) /tmp partition, which may prevent you from building properly, so be aware.
Building form source will solve at the very least :
* the issues of there being no 32 bit binary (build your own)
* issues with ubuntu libraries (libXfixes) if you try to install an older 32 bit binary
You'll also have access to the source code which means that you could -- at least in theory -- contribute to the project by doing bug fixes.
Building is easy once you've got all dependencies figured out. The initial run of the build script misses the detection of two required sets of packages: openGL libs, and perl-Digest-MD5
Go to http://ecce.emsl.pnl.gov/using/download.shtml, fill out the form, and download the source code on the next page (ecce-v6.4-src.tar.gz). Create the folder ~/tmp (mkdir ~/tmp) and put ecce-v6.4-src.tar.bz2 in ~/tmp
tar xvf ecce-v6.4-src.tar.bz2 cd ecce-v6.4/ export ECCE_HOME=`pwd` cd build/ sudo yum install vim csh gcc gcc-c++ gcc-gfortran java-1.7.0-openjdk-devel python-devel ant gtk2-devel libjpeg-turbo-devel libtool ImageMagick libXt-devel xterm mesa-libGLU-devel kernel-devel perl-Digest-Perl-MD5 perl-Digest-MD5
(if you're doing this in virtualbox, the way to get openGL libs is via the virtualbox guest additions, and in order to build those you'll need the kernel headers (kernel-devel package) for the currently running kernel)
The script will see if all the requirements are met by stating what version is needed and echoing the currently installed version of different dependencies. Presumably all of the requirements will be met after installing the dependencies in step 2. At the very end you'll be asked
Do you want to skip these checks for future build_ecce invocations (y/n)? Y
Answer Y. The run build_ecce again and again...
./build_ecceThis step will fail if you don't have openGL libs installed.Xerces built./build_ecceMesa OpenGL built./build_eccewxWidgets built
./build_ecceThis step will fail withrunning build_ext wxPython built./build_ecceApache HTTP server built./build_ecceMaking combined tar file ecce.v6.4.tar Copying NWChem binary distribution nwchem-6.1.1-binary-rhel5-gcc4.1.2-m64.tar.bz2 Copying NWChem common distribution nwchem-6.1.1-binary-common.tar.bz2 Concatenating install script and combined tar file ecce.v6.4.tar create_ecce_bin finished ECCE built and distribution created in /home/verahill/tmp/ecce-v6.4
if you don't have perl-Digest-MD5 installed.make: Leaving directory `/home/verahill/tmp/ecce-v6.4/src/apps/vizthumbnail' make: Leaving directory `/home/verahill/tmp/ecce-v6.4/src/apps' Can't locate Digest/MD5.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /home/verahill/tmp/ecce-v6.4/build/create_ecce_bin line 37. BEGIN failed--compilation aborted at /home/verahill/tmp/ecce-v6.4/build/create_ecce_bin line 37.
You can now install ecce:
cd .. ./install_ecce.v6.4.csh
and follow the instructions. This post has an overview of the installation process, as do several of the posts here: http://verahill.blogspot.com.au/p/compilinginstalling-software-for.html
getops.pl has been deprecated in perl 5 -- see under incompatible changes on this page: http://fedoraproject.org/wiki/Features/perl5.16
Luckily, the fix is simple:
Assuming that you install ECCE in ~/ecce-v6.4
cd ~/ecce-v6.4/apps/scripts sed -i 's/require "getopts.pl";/use Getopt::Std;/g' *sed: couldn't edit codereg: not a regular fileset -i 's/Getopts/getops/g' * cd parsers/ sed -i 's/require "getopts.pl";/use Getopt::Std;/g' * set -i 's/Getopts/getops/g' *
While getopts.pl has been deprecated, Getopt::Std supplies both a getop() and a getopts() function. I've done a little bit of testing (vib calcs, energy calcs) and so far everything looks great.
If you're still having issues, make sure that Getopt is in /usr/share/perl5
You can now have fun with ECCE