
#!/bin/sh

# Copyright (c) Members of the EGEE Collaboration. 2004 
# See http://eu-egee.org/partners/ for details on the copyright holders
# For license conditions see the license file or http://eu-egee.org/license.html

# glite-wn_installer v. 1.1.1
#
# The glite-wn_installer installs the gLite Standard Worker Node
#
# Usage: glite-wn_installer [-u|-v|--help]
#        -u          uninstall
#        -v          print version
#        --help      print script usage info
# Return codes: 0 - Ok
#               1 - if a file could not be downloaded

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

#Parse the RPMLIST to strip out the RPMS that are already installed
function parseRPMList()
{
        newRPMLIST=""
        localRPMLIST=`rpm -qa`
        for i in $RPMLIST
        do
                g=`echo $i | sed -e 's/\.i386\.rpm//g'`
                g=`echo $g | sed -e 's/\.noarch\.rpm//g'`
                if [ -z "`echo $localRPMLIST | grep $g`" ]; then
                        newRPMLIST="${newRPMLIST} $i"
                else
                        echo "$i is already installed. It will be skipped."
                fi
        done
                                                                                                                                                             
        RPMLIST=$newRPMLIST
}
function parseUserRPMList()
{
        newRPMLIST=""
        localRPMLIST=`rpm -qa --dbpath $basedir/.rpm`
        for i in $RPMLIST
        do
                g=`echo $i | sed -e 's/\.i386\.rpm//g'`
                g=`echo $g | sed -e 's/\.noarch\.rpm//g'`
                if [ -z "`echo $localRPMLIST | grep $g`" ]; then
                        newRPMLIST="${newRPMLIST} $i"
                else
                        echo "$i is already installed. It will be skipped."
                fi
        done
                                                                                                                                                             
        RPMLIST=$newRPMLIST
}

#Parse the SCRIPTLIST to execute all scripts
function parseScriptList()
{
        for i in $SCRIPTLIST
        do
        		if [ "$INSTALL" = "true" ]; then
        			if -n $basedir; then
        				$i --basedir $basedir
        			else
	                	$i
	                fi
	            else
	            	$i -u
	            fi
        done
}

#Downloads and install the module RPMS
function install()
{

	INSTALL=true
	
	version
	echo
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo x Please wait, downloading the gLite Standard Worker Node... x
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo

    mkdir -p glite-wn
    cd glite-wn

	# Download global dependencies	
	
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/glite-essentials-cpp-1.1.1-1_EGEE.i386.rpm
if [ ! -f "glite-essentials-cpp-1.1.1-1_EGEE.i386.rpm" ]
then
	echo 
	echo ERROR: glite-essentials-cpp-1.1.1-1_EGEE.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-essentials-cpp-1.1.1-1_EGEE.i386.rpm"
			
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/gpt-VDT1.2.2rh9-1.i386.rpm
if [ ! -f "gpt-VDT1.2.2rh9-1.i386.rpm" ]
then
	echo 
	echo ERROR: gpt-VDT1.2.2rh9-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST gpt-VDT1.2.2rh9-1.i386.rpm"
			
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/vdt_globus_essentials-VDT1.2.2rh9-1.i386.rpm
if [ ! -f "vdt_globus_essentials-VDT1.2.2rh9-1.i386.rpm" ]
then
	echo 
	echo ERROR: vdt_globus_essentials-VDT1.2.2rh9-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST vdt_globus_essentials-VDT1.2.2rh9-1.i386.rpm"
			
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/CGSI_gSOAP_2.6-1.1.8-2.slc3.i386.rpm
if [ ! -f "CGSI_gSOAP_2.6-1.1.8-2.slc3.i386.rpm" ]
then
	echo 
	echo ERROR: CGSI_gSOAP_2.6-1.1.8-2.slc3.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST CGSI_gSOAP_2.6-1.1.8-2.slc3.i386.rpm"
			
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/perl-Authen-SASL-2.08-1.1.el3.rf.noarch.rpm
if [ ! -f "perl-Authen-SASL-2.08-1.1.el3.rf.noarch.rpm" ]
then
	echo 
	echo ERROR: perl-Authen-SASL-2.08-1.1.el3.rf.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST perl-Authen-SASL-2.08-1.1.el3.rf.noarch.rpm"
			
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/perl-Digest-HMAC-1.01-11.1.noarch.rpm
if [ ! -f "perl-Digest-HMAC-1.01-11.1.noarch.rpm" ]
then
	echo 
	echo ERROR: perl-Digest-HMAC-1.01-11.1.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST perl-Digest-HMAC-1.01-11.1.noarch.rpm"
			
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/perl-Digest-SHA1-2.01-15.1.i386.rpm
if [ ! -f "perl-Digest-SHA1-2.01-15.1.i386.rpm" ]
then
	echo 
	echo ERROR: perl-Digest-SHA1-2.01-15.1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST perl-Digest-SHA1-2.01-15.1.i386.rpm"
			
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/perl-MIME-Lite-2.117-2.1.el3.rf.noarch.rpm
if [ ! -f "perl-MIME-Lite-2.117-2.1.el3.rf.noarch.rpm" ]
then
	echo 
	echo ERROR: perl-MIME-Lite-2.117-2.1.el3.rf.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST perl-MIME-Lite-2.117-2.1.el3.rf.noarch.rpm"
			
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/perl-Net-Jabber-2.0-1.1.el3.rf.noarch.rpm
if [ ! -f "perl-Net-Jabber-2.0-1.1.el3.rf.noarch.rpm" ]
then
	echo 
	echo ERROR: perl-Net-Jabber-2.0-1.1.el3.rf.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST perl-Net-Jabber-2.0-1.1.el3.rf.noarch.rpm"
			
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/perl-Net-XMPP-1.0-1.1.el3.rf.noarch.rpm
if [ ! -f "perl-Net-XMPP-1.0-1.1.el3.rf.noarch.rpm" ]
then
	echo 
	echo ERROR: perl-Net-XMPP-1.0-1.1.el3.rf.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST perl-Net-XMPP-1.0-1.1.el3.rf.noarch.rpm"
			
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/perl-SOAP-Lite-0.60a-1.1.el3.rf.noarch.rpm
if [ ! -f "perl-SOAP-Lite-0.60a-1.1.el3.rf.noarch.rpm" ]
then
	echo 
	echo ERROR: perl-SOAP-Lite-0.60a-1.1.el3.rf.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST perl-SOAP-Lite-0.60a-1.1.el3.rf.noarch.rpm"
			
		
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/perl-XML-Stream-1.22-1.1.el3.rf.noarch.rpm
if [ ! -f "perl-XML-Stream-1.22-1.1.el3.rf.noarch.rpm" ]
then
	echo 
	echo ERROR: perl-XML-Stream-1.22-1.1.el3.rf.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST perl-XML-Stream-1.22-1.1.el3.rf.noarch.rpm"
			
	

	# Download glite-wn-service scripts from repository
		
	cd ..
			
	cd glite-wn
		

	# Download glite-wn-service dependencies RPMS from repository
		

	# Download glite-wn-service RPMS from repository
		
			    
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-config-1.0.1-1.noarch.rpm
if [ ! -f "glite-config-1.0.1-1.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-config-1.0.1-1.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-config-1.0.1-1.noarch.rpm"
			
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-wn-config-1.1.1-1.noarch.rpm
if [ ! -f "glite-wn-config-1.1.1-1.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-wn-config-1.1.1-1.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-wn-config-1.1.1-1.noarch.rpm"
			
			

	# Download glite-io-client-service scripts from repository
		
	cd ..
			
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/installers/glite-io-client_installer.sh
if [ ! -f "glite-io-client_installer.sh" ]
then
	echo 
	echo ERROR: glite-io-client_installer.sh could not be downloaded!
	exit 1
fi
chmod u+x glite-io-client_installer.sh
SCRIPTLIST="$SCRIPTLIST ./glite-io-client_installer.sh"
			
	cd glite-wn
		

	# Download glite-io-client-service dependencies RPMS from repository
		

	# Download glite-io-client-service RPMS from repository
		

	# Download glite-rgma-client-service scripts from repository
		
	cd ..
			
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/installers/glite-rgma-client_installer.sh
if [ ! -f "glite-rgma-client_installer.sh" ]
then
	echo 
	echo ERROR: glite-rgma-client_installer.sh could not be downloaded!
	exit 1
fi
chmod u+x glite-rgma-client_installer.sh
SCRIPTLIST="$SCRIPTLIST ./glite-rgma-client_installer.sh"
			
	cd glite-wn
		

	# Download glite-rgma-client-service dependencies RPMS from repository
		

	# Download glite-rgma-client-service RPMS from repository
		

	# Download lb-client-service scripts from repository
		
	cd ..
			
	cd glite-wn
		

	# Download lb-client-service dependencies RPMS from repository
		
			

	# Download lb-client-service RPMS from repository
		
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-common-1.1.4-1.i386.rpm
if [ ! -f "glite-lb-common-1.1.4-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-lb-common-1.1.4-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-lb-common-1.1.4-1.i386.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-client-1.0.1-1.i386.rpm
if [ ! -f "glite-lb-client-1.0.1-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-lb-client-1.0.1-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-lb-client-1.0.1-1.i386.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-client-interface-1.0.2-1.i386.rpm
if [ ! -f "glite-lb-client-interface-1.0.2-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-lb-client-interface-1.0.2-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-lb-client-interface-1.0.2-1.i386.rpm"
			
				
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-wms-utils-jobid-1.0.0-1.i386.rpm
if [ ! -f "glite-wms-utils-jobid-1.0.0-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-wms-utils-jobid-1.0.0-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-wms-utils-jobid-1.0.0-1.i386.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-wms-utils-exception-1.0.1-1.i386.rpm
if [ ! -f "glite-wms-utils-exception-1.0.1-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-wms-utils-exception-1.0.1-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-wms-utils-exception-1.0.1-1.i386.rpm"
			
			

	# Download wms-checkpointing scripts from repository
		
	cd ..
			
	cd glite-wn
		

	# Download wms-checkpointing dependencies RPMS from repository
		
			

	# Download wms-checkpointing RPMS from repository
		
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-wms-checkpointing-1.0.0-1.i386.rpm
if [ ! -f "glite-wms-checkpointing-1.0.0-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-wms-checkpointing-1.0.0-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-wms-checkpointing-1.0.0-1.i386.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-wms-common-1.0.2-1.i386.rpm
if [ ! -f "glite-wms-common-1.0.2-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-wms-common-1.0.2-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-wms-common-1.0.2-1.i386.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-wms-brokerinfo-access-1.0.0-1.i386.rpm
if [ ! -f "glite-wms-brokerinfo-access-1.0.0-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-wms-brokerinfo-access-1.0.0-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-wms-brokerinfo-access-1.0.0-1.i386.rpm"
			
			

	# Download data-apis scripts from repository
		
	cd ..
			
	cd glite-wn
		

	# Download data-apis dependencies RPMS from repository
		
			

	# Download data-apis RPMS from repository
		
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-data-api-perl-1.1.1-1.noarch.rpm
if [ ! -f "glite-data-api-perl-1.1.1-1.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-data-api-perl-1.1.1-1.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-api-perl-1.1.1-1.noarch.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-data-catalog-api-java-2.0.0-6.noarch.rpm
if [ ! -f "glite-data-catalog-api-java-2.0.0-6.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-data-catalog-api-java-2.0.0-6.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-catalog-api-java-2.0.0-6.noarch.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-data-catalog-api-perl-2.0.0-2.noarch.rpm
if [ ! -f "glite-data-catalog-api-perl-2.0.0-2.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-data-catalog-api-perl-2.0.0-2.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-catalog-api-perl-2.0.0-2.noarch.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-catalog-cli-1.4.3-1.i386.rpm
if [ ! -f "glite-data-catalog-cli-1.4.3-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-catalog-cli-1.4.3-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-catalog-cli-1.4.3-1.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-catalog-fas-api-c-2.0.0-1.i386.rpm
if [ ! -f "glite-data-catalog-fas-api-c-2.0.0-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-catalog-fas-api-c-2.0.0-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-catalog-fas-api-c-2.0.0-1.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-catalog-file-api-c-2.0.0-1.i386.rpm
if [ ! -f "glite-data-catalog-file-api-c-2.0.0-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-catalog-file-api-c-2.0.0-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-catalog-file-api-c-2.0.0-1.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-catalog-fireman-api-c-2.0.0-2.i386.rpm
if [ ! -f "glite-data-catalog-fireman-api-c-2.0.0-2.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-catalog-fireman-api-c-2.0.0-2.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-catalog-fireman-api-c-2.0.0-2.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-data-catalog-interface-2.0.0-6.noarch.rpm
if [ ! -f "glite-data-catalog-interface-2.0.0-6.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-data-catalog-interface-2.0.0-6.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-catalog-interface-2.0.0-6.noarch.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-catalog-meta-api-c-2.0.0-1.i386.rpm
if [ ! -f "glite-data-catalog-meta-api-c-2.0.0-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-catalog-meta-api-c-2.0.0-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-catalog-meta-api-c-2.0.0-1.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-catalog-replica-api-c-2.0.0-1.i386.rpm
if [ ! -f "glite-data-catalog-replica-api-c-2.0.0-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-catalog-replica-api-c-2.0.0-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-catalog-replica-api-c-2.0.0-1.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-catalog-storageindex-api-c-2.0.0-1.i386.rpm
if [ ! -f "glite-data-catalog-storageindex-api-c-2.0.0-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-catalog-storageindex-api-c-2.0.0-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-catalog-storageindex-api-c-2.0.0-1.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-globus-rls-api-perl-1.0.0-3.i386.rpm
if [ ! -f "glite-data-globus-rls-api-perl-1.0.0-3.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-globus-rls-api-perl-1.0.0-3.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-globus-rls-api-perl-1.0.0-3.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-srm-api-c-1.0.0-5.i386.rpm
if [ ! -f "glite-data-srm-api-c-1.0.0-5.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-srm-api-c-1.0.0-5.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-srm-api-c-1.0.0-5.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-srm-api-perl-1.0.0-1.i386.rpm
if [ ! -f "glite-data-srm-api-perl-1.0.0-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-srm-api-perl-1.0.0-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-srm-api-perl-1.0.0-1.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-transfer-api-c-2.0.0-1.i386.rpm
if [ ! -f "glite-data-transfer-api-c-2.0.0-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-transfer-api-c-2.0.0-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-transfer-api-c-2.0.0-1.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-data-transfer-api-java-2.0.0-2.noarch.rpm
if [ ! -f "glite-data-transfer-api-java-2.0.0-2.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-data-transfer-api-java-2.0.0-2.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-transfer-api-java-2.0.0-2.noarch.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-data-transfer-api-perl-2.0.0-2.noarch.rpm
if [ ! -f "glite-data-transfer-api-perl-2.0.0-2.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-data-transfer-api-perl-2.0.0-2.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-transfer-api-perl-2.0.0-2.noarch.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-transfer-cli-1.0.2-1.i386.rpm
if [ ! -f "glite-data-transfer-cli-1.0.2-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-transfer-cli-1.0.2-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-transfer-cli-1.0.2-1.i386.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-data-transfer-interface-2.0.0-4.noarch.rpm
if [ ! -f "glite-data-transfer-interface-2.0.0-4.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-data-transfer-interface-2.0.0-4.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-transfer-interface-2.0.0-4.noarch.rpm"
			
	
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-data-ui-1.1.0-1.i386.rpm
if [ ! -f "glite-data-ui-1.1.0-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-data-ui-1.1.0-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-data-ui-1.1.0-1.i386.rpm"
			

			
	# Install all RPMS
	echo
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo x Please wait, installing the gLite Standard Worker Node... x
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo
	cd ..
	parseScriptList
	cd glite-wn
	parseRPMList
	if [ ! -z "$RPMLIST" ]; then
		if [ `id -u` == 0 ]; then		
			rpm -Uvh $RPMLIST
			rpm_return=$?
		else
			echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
			echo x User installation
			echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
			if [ !  -d $basedir/.rpm ]; then
				mkdir -p $basedir/.rpm
				#cp -R /var/lib/rpm/* $basedir
				rpm --initdb --dbpath $basedir/.rpm
				
				touch $basedir/.rpm/packages.sort
			fi
			rpm -qa | sort > $basedir/.rpm/packages.sort~
			diff  $basedir/.rpm/packages.sort $basedir/.rpm/packages.sort~ > /dev/null
			if [ $? != 0 ]; then
					#######################################
					#	Create system.rpm file
					#######################################
					echo Installer is inspecting your installation. It might take a while
					# creation of the system.rpm file
	
					for package in `rpm -qa`
					do
	        			#echo $package
	        			rpm -q --provides $package >> /tmp/provides
					done
					datestamp=`date +%Y%m%d%H%M`
					###############
					#       Create .spec file
					##############
					echo "Summary:Provides root installed symbols" > system.spec
					echo "Name:system" >> system.spec
					echo "Version:0.1.0" >> system.spec
					echo "Release:$datestamp" >> system.spec
					echo "Copyright:Open Source EGEE License" >> system.spec
					echo "Vendor:EU EGEE project" >> system.spec
					echo "Group:System/Application" >> system.spec
					echo "BuildArch:noarch" >> system.spec
					echo "BuildRoot:%{_builddir}/%{name}-%{version}" >> system.spec
					echo "Source:system.tar.gz" >> system.spec
					echo "Provides:/bin/sh" >> system.spec
					echo "Provides:/usr/bin/env" >> system.spec
                    echo "Provides:/usr/bin/perl" >> system.spec
                    echo "Provides:/bin/env" >> system.spec
                    echo "Provides:/sbin/ldconfig" >> system.spec
                    echo "Provides:/sbin/install-info" >> system.spec
                    echo "Provides:/bin/bash" >> system.spec
                    echo "Provides:/bin/csh" >> system.spec

					grep -v ">" /tmp/provides | sort | uniq > /tmp/provides.uniq
					sed -e 's/\(.*\)/Provides:\1/g' /tmp/provides.uniq >> system.spec
					
					echo "%define debug_package %{nil}" >> system.spec

					echo "%description" >> system.spec
					echo "gLite WN installation" >> system.spec
					#echo "%prep" >> system.spec
					#echo "%setup -c" >> system.spec
					#echo "%build" >> system.spec
					#echo "%install" >> system.spec
					echo "%clean" >> system.spec
					echo "%pre" >> system.spec
					echo "%post" >> system.spec
					echo "%preun" >> system.spec
					echo "%postun" >> system.spec
					echo "%files" >> system.spec
					echo "%changelog" >> system.spec
					echo >> system.spec

					if [ -f $HOME/.rpmmacros ]; then
						mv $HOME/.rpmmacros $HOME/.rpmmacros~
					fi
					echo %_topdir        $basedir/.rpm/rpmbuild >> $HOME/.rpmmacros
					mkdir -p $basedir/.rpm/rpmbuild/SPECS
					mkdir -p $basedir/.rpm/rpmbuild/SOURCES
					mkdir -p $basedir/.rpm/rpmbuild/BUILD
					mkdir -p $basedir/.rpm/rpmbuild/RPMS
					touch $basedir/.rpm/rpmbuild/SOURCES/system.tar.gz
					rpmbuild -bb system.spec
					if [ -f $HOME/.rpmmacros~ ]; then
						mv $HOME/.rpmmacros~ $HOME/.rpmmacros
					fi
					
					######################################
					#	Update system.rpm file in the database
					######################################
					rpm -U --dbpath $basedir/.rpm $basedir/.rpm/rpmbuild/RPMS/noarch/system-0.1.0-$datestamp.noarch.rpm
					######################################
					#	Update package.list file
					#######################################
					mv $basedir/.rpm/packages.sort~ $basedir/.rpm/packages.sort
					#########################################
					#	Cleanup of not needed files
					#########################################
					rm -rf $basedir/.rpm/rpmbuild
					rm -f /tmp/provides /tmp/provides.uniq
			fi 
			
			parseUserRPMList
			if [ ! -z "$RPMLIST" ]; then
				rpm -Uvh --relocate /opt/glite=$basedir\
					 --relocate /opt/globus=$basedir\
					 --relocate /opt/gpt=$basedir\
			 		--relocate /usr=$basedir/usr\
			 		--relocate /etc=$basedir/etc\
			 		--noscripts --dbpath $basedir/.rpm $RPMLIST
				rpm_return=$?
			else
				echo All required RPMS are already installed
				rpm_return=0
			fi
			
			if [ $rpm_return != 0 ]; then
				break
			fi
			###############################################
			#	Fixed hardcoded absolute path in .la files
			###############################################
			for la in `find $HOME/$prefix -name "*.la"`
			do
    			REPL=`echo ${la} | sed -e 's/\(.*\)\/.*$/\1/g'`
    			sed -i~ -e "s|^libdir=.*|libdir=${REPL}|g"  ${la} 
			done
		fi
	else
		echo All required RPMS are already installed
		rpm_return=0
	fi
	if [ "$rpm_return" == "0" ]; then
		echo
		echo Done!
		echo
		echo Before using the WN, please create or update the configuration
		echo file /opt/glite/etc/config/glite-wn.cfg.xml and run the configuration
		echo script /opt/glite/etc/config/scripts/glite-wn-config.py. A template
		echo is provided in /opt/glite/etc/config/templates/glite-wn.cfg.xml
	else
		echo
		echo An error occurred while installing the WN RPMS.
		echo Most likely one or more of the RPMS to be installed require
		echo additional dependencies or are older than already installed packages.
		echo Please refer to the rpm error message above for more details.
	fi
	echo
	echo For more information refer to the gLite Installation and User Guides
	echo or to the gLite web site \(http:\/\/www.glite.org\)
	echo Please report problems and comments to the gLite Team at
	echo project-eu-egee-glite-bugs@cern.ch

	cd ..

	
}


###############################################################################
function uninstall()
{
	INSTALL=false
	
	version

	# Global dependencies	
	
		
RPMLIST="$RPMLIST glite-essentials-cpp-1.1.1-1_EGEE"
					
		
RPMLIST="$RPMLIST gpt-VDT1.2.2rh9-1"
					
		
RPMLIST="$RPMLIST vdt_globus_essentials-VDT1.2.2rh9-1"
					
		
RPMLIST="$RPMLIST CGSI_gSOAP_2.6-1.1.8-2.slc3"
					
		
RPMLIST="$RPMLIST perl-Authen-SASL-2.08-1.1.el3.rf"
					
		
RPMLIST="$RPMLIST perl-Digest-HMAC-1.01-11.1"
					
		
RPMLIST="$RPMLIST perl-Digest-SHA1-2.01-15.1"
					
		
RPMLIST="$RPMLIST perl-MIME-Lite-2.117-2.1.el3.rf"
					
		
RPMLIST="$RPMLIST perl-Net-Jabber-2.0-1.1.el3.rf"
					
		
RPMLIST="$RPMLIST perl-Net-XMPP-1.0-1.1.el3.rf"
					
		
RPMLIST="$RPMLIST perl-SOAP-Lite-0.60a-1.1.el3.rf"
					
		
RPMLIST="$RPMLIST perl-XML-Stream-1.22-1.1.el3.rf"
					
	

	# glite-wn-service scripts from repository
		

	# glite-wn-service dependencies RPMS from repository
		

	# glite-wn-service RPMS from repository
		
			    
RPMLIST="$RPMLIST glite-config-1.0.1-1"
                                        
			
				
RPMLIST="$RPMLIST glite-wn-config-1.1.1-1"
                                        
			

	# glite-io-client-service scripts from repository
		
SCRIPTLIST="$SCRIPTLIST ./glite-io-client_installer.sh"
			

	# glite-io-client-service dependencies RPMS from repository
		

	# glite-io-client-service RPMS from repository
		

	# glite-rgma-client-service scripts from repository
		
SCRIPTLIST="$SCRIPTLIST ./glite-rgma-client_installer.sh"
			

	# glite-rgma-client-service dependencies RPMS from repository
		

	# glite-rgma-client-service RPMS from repository
		

	# lb-client-service scripts from repository
		

	# lb-client-service dependencies RPMS from repository
		
			

	# lb-client-service RPMS from repository
		
				
RPMLIST="$RPMLIST glite-lb-common-1.1.4-1"
                                        
				
RPMLIST="$RPMLIST glite-lb-client-1.0.1-1"
                                        
				
RPMLIST="$RPMLIST glite-lb-client-interface-1.0.2-1"
                                        
				
				
RPMLIST="$RPMLIST glite-wms-utils-jobid-1.0.0-1"
                                        
				
RPMLIST="$RPMLIST glite-wms-utils-exception-1.0.1-1"
                                        
			

	# wms-checkpointing scripts from repository
		

	# wms-checkpointing dependencies RPMS from repository
		
			

	# wms-checkpointing RPMS from repository
		
				
RPMLIST="$RPMLIST glite-wms-checkpointing-1.0.0-1"
                                        
				
RPMLIST="$RPMLIST glite-wms-common-1.0.2-1"
                                        
				
RPMLIST="$RPMLIST glite-wms-brokerinfo-access-1.0.0-1"
                                        
			

	# data-apis scripts from repository
		

	# data-apis dependencies RPMS from repository
		
			

	# data-apis RPMS from repository
		
				
RPMLIST="$RPMLIST glite-data-api-perl-1.1.1-1"
                                        
	
				
RPMLIST="$RPMLIST glite-data-catalog-api-java-2.0.0-6"
                                        
	
				
RPMLIST="$RPMLIST glite-data-catalog-api-perl-2.0.0-2"
                                        
	
				
RPMLIST="$RPMLIST glite-data-catalog-cli-1.4.3-1"
                                        
	
				
RPMLIST="$RPMLIST glite-data-catalog-fas-api-c-2.0.0-1"
                                        
	
				
RPMLIST="$RPMLIST glite-data-catalog-file-api-c-2.0.0-1"
                                        
	
				
RPMLIST="$RPMLIST glite-data-catalog-fireman-api-c-2.0.0-2"
                                        
	
				
RPMLIST="$RPMLIST glite-data-catalog-interface-2.0.0-6"
                                        
	
				
RPMLIST="$RPMLIST glite-data-catalog-meta-api-c-2.0.0-1"
                                        
	
				
RPMLIST="$RPMLIST glite-data-catalog-replica-api-c-2.0.0-1"
                                        
	
				
RPMLIST="$RPMLIST glite-data-catalog-storageindex-api-c-2.0.0-1"
                                        
	
				
RPMLIST="$RPMLIST glite-data-globus-rls-api-perl-1.0.0-3"
                                        
	
				
RPMLIST="$RPMLIST glite-data-srm-api-c-1.0.0-5"
                                        
	
				
RPMLIST="$RPMLIST glite-data-srm-api-perl-1.0.0-1"
                                        
	
				
RPMLIST="$RPMLIST glite-data-transfer-api-c-2.0.0-1"
                                        
	
				
RPMLIST="$RPMLIST glite-data-transfer-api-java-2.0.0-2"
                                        
	
				
RPMLIST="$RPMLIST glite-data-transfer-api-perl-2.0.0-2"
                                        
	
				
RPMLIST="$RPMLIST glite-data-transfer-cli-1.0.2-1"
                                        
	
				
RPMLIST="$RPMLIST glite-data-transfer-interface-2.0.0-4"
                                        
	
				
RPMLIST="$RPMLIST glite-data-ui-1.1.0-1"
                                        

			
		
	# Uninstall all RPMS
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo x  Please wait, uninstalling the gLite Standard Worker Node...   x
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo
	$SCRIPTLISTUn
	rpm -ev $RPMLIST
	if [ "$?" == "0" ]; then
		echo
		echo Done!
	else
		echo
		echo An error occurred while removing the WN RPMS.
		echo Most likely one or more of the RPMS to be removed have
		echo dependent packages.
		echo Please refer to the rpm error message above for more details.
	fi
}

###############################################################################
function usage()
{
	echo 
	echo Copyright \(c\) Members of the EGEE Collaboration. 2004 
	echo See http://eu-egee.org/partners/ for details on the copyright holders
	echo For license conditions see the license file or http://eu-egee.org/license.html
	echo 
	echo glite-wn_installer v. 1.1.1
	echo 
	echo The glite-wn_installer installs the gLite Standard Worker Node
	echo 
	echo Usage: glite-wn_installer \[-u\|-v\|--help\]
	echo -u          uninstall
	echo -v          print version
	echo --help      print script usage info
	echo 
	echo Return codes:
	echo 0 - Ok
	echo 1 - if a file could not be downloaded
	echo 
}

###############################################################################
function version
{
	echo 
	echo Copyright \(c\) Members of the EGEE Collaboration. 2004 
	echo See http://eu-egee.org/partners/ for details on the copyright holders
	echo For license conditions see the license file or http://eu-egee.org/license.html
	echo 
	echo glite-wn_installer v. 1.1.1
	echo 
}


RPMLIST=
SCRIPTLIST=
SCRIPTLISTUn=

###############################################################################
# Main

TEMP=`getopt -o uvh --long uninstall,version,help,basedir: \
     -n 'glite-wn_installer.sh' -- "$@"`

if [ $? != 0 ] ; then echo "Terminating..." ; exit 1 ; fi

# Note the quotes around `$TEMP': they are essential!
eval set -- "$TEMP"

if [ `id -u` != 0 ]; then
	export basedir=$HOME/glite_wn
fi

while true ; do
        case "$1" in
                -u|--uninstall) uninstall
                				exit 0
                				;;
                -v|--version)	version
                				exit 0
                				;;
                -h|--help)		usage
                				exit 0
                				;;
                --basedir) 		export basedir=$2
                				echo Setting base directory to $prefix
                				shift 2; break ;;
#                *) echo "Internal error!" ; exit 1 ;;
				*) break ;;
        esac
done

install

exit 0
	
