#!/bin/sh ################################################################# # # # Copyright 2009, 2013 Fidelity Information Services, Inc # # # # This source code contains the intellectual property # # of its copyright holder(s), and is made available # # under a license. If you do not know the terms of # # the license, please stop and do not read further. # # # ################################################################# . ./arch.gtc # Path to the correct echo program if [ $arch = "sun" -o $arch = "solaris" ]; then echo=/usr/5bin/echo # Solaris 11 does not have /usr/5bin/echo if [ ! -f $echo ]; then echo=/usr/bin/echo fi elif [ $arch = "linux" ]; then echo="/bin/echo -e" else echo=/bin/echo fi # add path to strip for solaris if [ $arch = "sun" -o $arch = "solaris" ]; then PATH="$PATH:/usr/ccs/bin" export PATH fi # Options to ps psopts="-ea" # GTCM definitions if [ -f gtcm_server ]; then deliver_gtcm="yes" else deliver_gtcm="no" fi if [ -f gtcm_gnp_server ]; then deliver_gtcm_gnp="yes" else deliver_gtcm_gnp="no" fi # create symbolic links if utf8 directory exists. Ignore the "file exists" errors for the .o files # which exist in both directories. if [ -d utf8 ]; then (cd utf8; ln -s ../* . 2> /dev/null) fi # Native shared library extension. if [ $arch = "hp" -a `uname -m` != "ia64" ]; then ext=".sl" elif [ $arch = "zos" ]; then ext=".dll" else ext=".so" fi # Flags to build shared libraries of M routines if [ "dux" = $arch ] ; then ldflags="-shared -taso -lc" ; ldcmd="ld" # Tru64 UNIX elif [ "hp" = $arch ] ; then ldflags="-b" ; ldcmd="ld" # HP-UX - all platforms elif [ "ibm" = $arch ] ; then ldflags="-brtl -G -bexpfull -bnoentry -b64" ; ldcmd="ld" # AIX elif [ "linux" = $arch ] ; then ldflags="-shared" ; ldcmd="ld" # Linux - all platforms elif [ "solaris" = $arch ] ; then ldflags="-G -64" ; ldcmd="ld" # Solaris SPARC elif [ "zos" = $arch ] ; then ldflags="-q64 -W c,DLL,XPLINK,EXPORTFULL -W l,DLL,XPLINK" ; ldcmd="xlc" # z/OS else echo "Shared libary ldflags not set for this platform"; exit 1 fi # Binaries binaries="mupip mumps libgtmshr$ext lke dse geteuid ftok semstat2" # Normal scripts - executed by anyone nscripts="gtmbase lowerc_cp" # z/OS needs to copy the exports file if [ $arch = "zos" ]; then nscripts="$nscripts gtmshr_symbols.x" fi # Root scripts - only executed by root rscripts="gtmstart gtmstop" if [ $deliver_gtcm = "yes" ]; then rscripts="$rscripts gtcm_run gtcm_slist" binaries="$binaries gtcm_server gtcm_pkdisp gtcm_play gtcm_shmclean" fi if [ $deliver_gtcm_gnp = "yes" ]; then binaries="$binaries gtcm_gnp_server" fi # Other files hlpfiles="*help.dat *help.gld *.h" if [ $arch = "sco" ]; then ofiles="$hlpfiles esnecil" elif [ $arch = "sun" -o $arch = "solaris" ]; then ofiles="$hlpfiles libgtmrpc.a" binaries="$binaries gtm_svc" else ofiles="$hlpfiles" fi # Files that need to have $gtm_dist, $echo, etc. set in them. pathmods="gtmbase.gtc gtmstart.gtc gtmstop.gtc gtmcshrc.gtc gtmprofile.gtc gtm.gtc gtmprofile_preV54000.gtc gdedefaults.gtc" if [ $deliver_gtcm = "yes" ]; then pathmods="$pathmods gtcm_run.gtc gtcm_slist.gtc" fi # geteuid is no longer executable in distribution so change it chmod 755 ./geteuid if [ "`./geteuid`" != "root" ] ; then $echo "You must run Configure as root." exit fi $echo " GT.M Configuration Script" $echo "Copyright 2009, 2013 Fidelity Information Services, Inc. Use of this" $echo "software is restricted by the provisions of your license agreement." $echo "" # Native super user and group if [ $arch = "zos" ]; then # because z/OS has no predefined notion of root or bin # use uid 0 for super user and group defowner=0 rootuser=0 bingroup=0 else rootuser=root bingroup=bin defowner=bin fi # create temporary file to test for valid user and group names touch tmp_owngrp $echo "What user account should own the files? ($defowner) \c" read resp if [ "$resp" = "" ] ; then owner=$defowner else owner=$resp fi chown $owner tmp_owngrp 2> /dev/null if [ 0 != "$?" ] ; then $echo $owner is not a valid user name - exiting! rm tmp_owngrp exit fi $echo "What group should own the files? ($bingroup) \c" read resp if [ "$resp" != "" ] ; then bingroup=$resp fi chgrp $bingroup tmp_owngrp 2> /dev/null if [ 0 != "$?" ] ; then $echo $bingroup is not a valid group name - exiting! rm tmp_owngrp exit 1 fi $echo "Should execution of GT.M be restricted to this group? (y or n) \c" read resp if [ "$resp" = "Y" -o "$resp" = "y" ] ; then group=$bingroup fi rm tmp_owngrp $echo "In what directory should GT.M be installed? \c" read gtmdist # if gtmdist is relative then need to make it absolute if [ `$echo $gtmdist | grep -c '^/'` -eq 0 ] ; then gtmdist=`pwd`/$gtmdist fi $echo "" if [ -d $gtmdist ]; then $echo "Directory $gtmdist exists. If you proceed with this installation then" $echo "some files will be over-written. Is it ok to proceed? (y or n) \c" read resp if [ "$resp" = "Y" -o "$resp" = "y" ] ; then chmod 0755 $gtmdist chown $owner $gtmdist chgrp $bingroup $gtmdist else exit fi else $echo "Directory $gtmdist does not exist. Do you wish to create it as part of" $echo "this installation? (y or n) \c" read resp if [ "$resp" = "Y" -o "$resp" = "y" ] ; then mkdir -p $gtmdist/plugin/r $gtmdist/plugin/o chmod 0755 $gtmdist chown $owner $gtmdist chgrp $bingroup $gtmdist else exit fi fi if [ ! -w $gtmdist ]; then $echo "Directory $gtmdist is not writeable, so exiting" exit fi server_id=42 $echo "" $echo "Installing GT.M...." $echo "" # Create $gtmdist/utf8 if this platform can support "UTF-8" mode. # keep the utf8 libicu search code in gtm_test_install.csh in sync with the following! if [ -d "utf8" ]; then unset gtm_icu_version # If package has utf8 directory, see if system has libicu and locale # Setup library path (in prep for looking for libicu and crypto libs) if [ "$arch" = "hp" ] ; then is64bit_gtm=`file mumps | grep "IA64" | wc -l` elif [ "$arch" = "zos" ] ; then is64bit_gtm=1 else is64bit_gtm=`file mumps | grep "64-bit" | wc -l` fi # please keep in sync with sr_unix/set_library_path.csh if [ $is64bit_gtm -eq 1 ] ; then library_path="/usr/local/lib64 /usr/local/lib /usr/lib64 /usr/lib /usr/lib/x86_64-linux-gnu /lib64 /lib /usr/local/ssl/lib" #BYPASSOK line length else library_path="/usr/local/lib32 /usr/local/lib /usr/lib32 /usr/lib /usr/lib/i386-linux-gnu /lib32 /lib" fi $echo "Should UTF-8 support be installed? (y or n) \c" read resp if [ "$resp" = "Y" -o "$resp" = "y" ] ; then would_like_utf8=1 $echo "Should an ICU version other than the default be used? (y or n) \c" read resp if [ "$resp" = "Y" -o "$resp" = "y" ] ; then $echo "Enter ICU version (at least ICU version 3.6 is required. Enter as .): \c" read gtm_icu_version icu_ver=`$echo $gtm_icu_version | sed 's/\.//'` majmin=`$echo $icu_ver | cut -f 1 -d "."` if [ "$majmin" -lt "36" ] ; then $echo "WARNING: ICU version $gtm_icu_version is less than 3.6. \c" $echo "UTF-8 support will not be installed" would_like_utf8=0 doutf8=0 fi fi else would_like_utf8=0 doutf8=0 fi # Look for libicu libraries found_icu=0 icu_ext=".so" if [ $arch = "ibm" ] ; then icu_ext=".a" elif [ $arch = "hp" ] ; then icu_ext=".sl" fi if [ "$would_like_utf8" -eq 1 ] ; then for libpath in $library_path do icu_lib_found=0 if [ "$gtm_icu_version" = "" -a -f "$libpath/libicuio$icu_ext" ] ; then icu_lib_found=1 # Find the actual version'ed library to which libicuio.{so,sl,a} points to icu_versioned_lib=`ls -l $libpath/libicuio$icu_ext | awk '{print $NF}'` # Find out vital parameters if [ $arch = "ibm" -o $arch = "zos" ]; then # From the version'ed library(eg. libicuio36.0.a) extract out # 36.0.a full_icu_ver_string=`$echo $icu_versioned_lib | sed 's/libicuio//g'` # Extract 36 from 36.0.a majmin=`$echo $full_icu_ver_string | cut -f 1 -d '.'` else full_icu_ver_string=`$echo $icu_versioned_lib | sed 's/libicuio\.//g'` majmin=`$echo $full_icu_ver_string | cut -f 2 -d '.'` fi elif [ "$gtm_icu_version" != "" ] ; then # If the user specified a desired version number, then check if the ICU # library with that version number exists. # AIX and z/OS reference ICU as libicuioVERSION.{so,a} # The other platforms reference the libraries as libicuio.{sl,so}.VERSION if [ -f "$libpath/libicuio$majmin$icu_ext" -o -f "$libpath/libicuio$icu_ext.$majmin" ] ; then icu_lib_found=1 else icu_lib_found=0 fi fi if [ $icu_lib_found -eq 1 ] ; then # Figure out the object mode(64 bit or 32 bit) of ICU libraries on the target machine if [ $arch = "linux" -o $arch = "sun" -o $arch = "solaris" ] ; then icu_full_ver_lib=`ls -l $libpath/libicuio$icu_ext.$majmin 2>/dev/null | awk '{print $NF}'` is64bit_icu=`file $libpath/$icu_full_ver_lib 2>/dev/null | grep "64-bit" | wc -l` elif [ $arch = "hp" ] ; then icu_full_ver_lib=`ls -l $libpath/libicuio$icu_ext.$majmin 2>/dev/null | awk '{print $NF}'` is64bit_icu=`file $libpath/$icu_full_ver_lib 2>/dev/null | grep "IA64" | wc -l` elif [ $arch = "ibm" ] ; then icu_full_ver_lib=`ls -l $libpath/libicuio$majmin$icu_ext 2>/dev/null | awk '{print $NF}'` is64bit_icu=`nm -X64 $libpath/$icu_full_ver_lib 2>/dev/null | head -n 1 | wc -l` elif [ $arch = "zos" ] ; then icu_full_ver_lib=`ls -l $libpath/libicuio$majmin$icu_ext 2>/dev/null | awk '{print $NF}'` is64bit_icu=`file $libpath/$icu_full_ver_lib 2>/dev/null | grep "amode=64" |head -n1 |wc -l` fi # Make sure both GTM and ICU are in sync with object mode compatibility (eg both are 32 bit/64 bit ) if [ "$is64bit_gtm" -eq 1 -a "$is64bit_icu" -ne 0 ] ; then found_icu=1 elif [ "$is64bit_gtm" -ne 1 -a "$is64bit_icu" -eq 0 ] ; then found_icu=1 else found_icu=0 fi # If we have everything we want, then save the libpath that contains the proper ICU library and # set the gtm_icu_version if [ "$found_icu" -eq 1 -a "$majmin" -ge 36 ] ; then save_icu_libpath="$libpath" minorver=`expr $majmin % 10` majorver=`expr $majmin / 10` gtm_icu_version="$majorver.$minorver" export gtm_icu_version break fi fi done if [ "$found_icu" -eq 0 ] ; then if [ "$majmin" != "" ] ; then $echo "WARNING: ICU version $gtm_icu_version not found. Not installing UTF-8 support." else $echo "WARNING: Default ICU version not found. Not installing UTF-8 support." fi fi # Look for locale utflocale=`locale -a | grep -i .utf | sed 's/.lp64$//' | grep '8$' | head -n 1` if [ "$utflocale" = "" ] ; then $echo "WARNING: UTF8 locale not found. Not installing UTF-8 support." fi # If both libicu and locale are on system then install UTF-8 support if [ "$found_icu" -ne 0 -a "$utflocale" != "" ] ; then doutf8=1 else doutf8=0 fi fi else # If utf8 dir does not exist in package, can't install UTF-8 support doutf8=0 fi #if gdedefaults exists on z/OS then remove it so tagging will occur correctly if [ $arch = "zos" -a -f gdedefaults ] ; then rm gdedefaults fi # Modify the scripts as necessary for target configuration cat << SEDSCRIPT > sedin$$ s|ARCH|$arch|g s|ECHO|"$echo"|g s|GTMDIST|$gtmdist|g s|SERVERID|$server_id|g SEDSCRIPT for i in $pathmods do dest=`basename $i .gtc` sed -f sedin$$ $i > $dest if [ "$doutf8" -ne 0 ]; then cd utf8 if ( test -f "$dest" ) then rm $dest; fi ln -s ../$dest $dest cd .. fi done rm sedin$$ #on z/OS gdedefaults must be tagged ascii to be used by GTM. if [ $arch = "zos" ]; then iconv -T -f IBM-1047 -t ISO8859-1 gdedefaults > t.gdedefaults mv t.gdedefaults gdedefaults fi if [ "$doutf8" -ne 0 ]; then if [ ! -d $gtmdist/utf8 ]; then mkdir -p $gtmdist/utf8 $gtmdist/plugin/o/utf8 fi fi # copy debug files if necessary if [ $arch = "zos" ] ; then for i in `ls *.mdbg 2> /dev/null` ; do cp $i $gtmdist rm -f $i done fi # Install COPYING if it is applicable file=COPYING if [ -f $file ]; then cp $file $gtmdist if [ "$doutf8" -ne 0 ]; then ln -s ../$file $gtmdist/utf8/$file fi fi # Install README.txt if it is applicable file=README.txt if [ -f $file ]; then cp $file $gtmdist if [ "$doutf8" -ne 0 ]; then ln -s ../$file $gtmdist/utf8/$file fi fi # Install custom_errors_sample.txt if it is applicable file=custom_errors_sample.txt if [ -f $file ]; then cp $file $gtmdist if [ "$doutf8" -ne 0 ]; then ln -s ../$file $gtmdist/utf8/$file fi fi # Install the .cshrc and .profile files cp gdedefaults gtmprofile gtmprofile_preV54000 gtm gtmcshrc $gtmdist chmod 0444 $gtmdist/gdedefaults chown $owner $gtmdist/gdedefaults chmod 0755 $gtmdist/gtmprofile chown $owner $gtmdist/gtmprofile chmod 0755 $gtmdist/gtmprofile_preV54000 chown $owner $gtmdist/gtmprofile_preV54000 chmod 0755 $gtmdist/gtm chown $owner $gtmdist/gtm chmod 0755 $gtmdist/gtmcshrc chown $owner $gtmdist/gtmcshrc # Install the normal scripts for i in $nscripts do cp $i $gtmdist chmod 0755 $gtmdist/$i chown $owner $gtmdist/$i done # Install the root scripts for i in $rscripts do cp $i $gtmdist chmod 0744 $gtmdist/$i chown $rootuser $gtmdist/$i done # Install the normal binaries for i in $binaries do if [ $arch = "sun" -o $arch = "linux" ]; then install -g $bingroup -o $owner -m 644 $i $gtmdist elif [ $arch = "ibm" ]; then /usr/bin/install -f $gtmdist -M 644 -O $owner -G $bingroup $i elif [ -x /usr/sbin/install ]; then /usr/sbin/install -f $gtmdist -m 644 -u $owner -g $bingroup $i $gtmdist elif [ $arch = "zos" ]; then cp $i $gtmdist/ chmod 644 $gtmdist/$i chown $user:$bingroup $gtmdist/$i else install -f $gtmdist -m 644 -u $owner -g $bingroup $i $gtmdist fi # strip $gtmdist/$i >/dev/null 2>&1 done # Install other individual files for i in $ofiles do cp $i $gtmdist chown $owner $gtmdist/$i done if [ $arch = "sun" ]; then ranlib -t $gtmdist/libgtmrpc.a fi # For linux systems, attempt to execute the chcon command to allow use of the libgtmshr shared library. This # command is required on many modern SELinux based systems but depends on the filesystem in use (requires context # support). For that reason, we attempt the command and if it works, great. If it doesn't, oh well we tried. if [ -f /usr/bin/chcon ]; then chcon -t texrel_shlib_t $gtmdist/libgtmshr$ext > /dev/null 2>&1 fi # Create $gtmdist/plugin/gtmcrypt directory if this platform supports encryption # Define variables to denote plugin and gtmcrypt directory names plugin="plugin" plugin_gtmcrypt="$plugin/gtmcrypt" # Gtmcrypt files used to build (and install) gtmcryptbldfiles="install.sh build.sh" # Gtmcrypt Binaries gtmcryptbinaries="maskpass" # Gtmcrypt shared library gtmcryptsharedlibs="libgtmcrypt_openssl_BLOWFISHCFB$ext libgtmcrypt_openssl_AES256CFB$ext" gtmcryptsharedlibs="$gtmcryptsharedlibs libgtmcrypt_gcrypt_AES256CFB$ext libgtmcrypt$ext" # Gtmcrypt scripts gtmcryptscripts="add_db_key.sh gen_sym_key.sh encrypt_sign_db_key.sh gen_keypair.sh pinentry-gtm.sh" gtmcryptscripts="$gtmcryptscripts import_and_sign_key.sh gen_sym_hash.sh show_install_config.sh" # Gtmcrypt related M file gtmcryptmfile="pinentry.m" # Gtmcrypt source files gtmcryptsrcfiles="gtmcrypt_ref.c gtmcrypt_ref.h gtmcrypt_interface.h maskpass.c" gtmcryptsrcfiles="$gtmcryptsrcfiles gtmcrypt_dbk_ref.c gtmcrypt_dbk_ref.h gtmcrypt_pk_ref.c gtmcrypt_pk_ref.h" gtmcryptsrcfiles="$gtmcryptsrcfiles gtmcrypt_sym_ref.h $gtmcryptbldfiles $gtmcryptmfile" # Other Gtmcrypt related files gtmcryptofiles="gtmcrypt.tab" dogtmcrypt=0 if [ -d "$plugin_gtmcrypt" ]; then dogtmcrypt=1 # Create plugin directory and gtmcrypt directory mkdir -p $gtmdist/plugin/gtmcrypt chmod 0755 $gtmdist/plugin chown $owner $gtmdist/plugin chgrp $bingroup $gtmdist/plugin chmod 0755 $gtmdist/plugin/gtmcrypt chown $owner $gtmdist/plugin/gtmcrypt/ chgrp $bingroup $gtmdist/plugin/gtmcrypt #Install the plugin related scripts for i in $gtmcryptscripts do cp $plugin_gtmcrypt/$i $gtmdist/$plugin_gtmcrypt/$i chmod 0755 $gtmdist/$plugin_gtmcrypt/$i chown $owner $gtmdist/$plugin_gtmcrypt/$i chgrp $bingroup $gtmdist/$plugin_gtmcrypt/$i done # Install the plugin binaries for i in $gtmcryptbinaries do if [ $arch = "sun" -o $arch = "linux" ]; then install -g $bingroup -o $owner -m 755 $plugin_gtmcrypt/$i $gtmdist/$plugin_gtmcrypt elif [ $arch = "ibm" ]; then /usr/bin/install -f $gtmdist/$plugin_gtmcrypt -M 755 -O $owner -G $bingroup $plugin_gtmcrypt/$i elif [ $arch = "zos" ]; then cp $plugin_gtmcrypt/$i $gtmdist/$plugin_gtmcrypt chmod 755 $gtmdist/$plugin_gtmcrypt/$i chown $user:$bingroup $gtmdist/$plugin_gtmcrypt/$i elif [ -x /usr/sbin/install ]; then /usr/sbin/install -f $gtmdist/$plugin_gtmcrypt -m 755 -u $owner -g $bingroup \ $plugin_gtmcrypt/$i $gtmdist/$plugin_gtmcrypt else install -f $gtmdist/$plugin_gtmcrypt -m 755 -u $owner -g $bingroup \ $plugin_gtmcrypt/$i $gtmdist/$plugin_gtmcrypt fi done # Install the different flavors of encryption plugin (OpenSSL and Gcrypt) for i in $gtmcryptsharedlibs do # Install only files (and not symlinks) that exist # CMake builds generate only one library - GCRYPT with AES256CFB if [ -L $plugin/$i -o ! -f $plugin/$i ]; then continue elif [ $arch = "sun" -o $arch = "linux" ]; then install -g $bingroup -o $owner -m 755 $plugin/$i $gtmdist/$plugin elif [ $arch = "ibm" ]; then /usr/bin/install -f $gtmdist/$plugin -M 755 -O $owner -G $bingroup $plugin/$i elif [ $arch = "zos" ]; then cp $plugin/$i $gtmdist/$plugin chmod 755 $gtmdist/$plugin/$i chown $user:$bingroup $gtmdist/$plugin/$i elif [ -x /usr/sbin/install ]; then /usr/sbin/install -f $gtmdist/$plugin -m 755 -u $owner -g $bingroup $plugin/$i $gtmdist/$plugin else install -f $gtmdist/$plugin -m 755 -u $owner -g $bingroup $plugin/$i $gtmdist/$plugin fi done # Install the Symbolic link only if one exists (tarball has it, CMake builds do not) if [ -L $plugin/libgtmcrypt$ext ]; then currentlink=`ls -l $plugin/libgtmcrypt$ext | awk '{print $NF}'` ln -s $currentlink $gtmdist/$plugin/libgtmcrypt$ext fi # Install the plugin related M file cp $plugin_gtmcrypt/$gtmcryptmfile $gtmdist/$plugin_gtmcrypt/$gtmcryptmfile chmod 0644 $gtmdist/$plugin_gtmcrypt/$gtmcryptmfile chown $owner $gtmdist/$plugin_gtmcrypt/$gtmcryptmfile chgrp $bingroup $gtmdist/$plugin_gtmcrypt/$gtmcryptmfile # Install other plugin files for i in $gtmcryptofiles do cp $plugin_gtmcrypt/$i $gtmdist/$plugin_gtmcrypt chmod 0644 $gtmdist/$plugin_gtmcrypt/$i chown $owner $gtmdist/$plugin_gtmcrypt/$i chgrp $bingroup $gtmdist/$plugin_gtmcrypt/$i done # Install gpgagent.tab # This is an external call table so the path to the shared library has to be adjusted echo "$gtmdist/plugin/libgtmcrypt.so" > $gtmdist/$plugin/gpgagent.tab cat $plugin/gpgagent.tab | sed 1d >> $gtmdist/$plugin/gpgagent.tab # Tar the source files (cd $plugin_gtmcrypt; chmod 0644 $gtmcryptsrcfiles; chown $owner $gtmcryptsrcfiles; chgrp $bingroup $gtmcryptsrcfiles) (cd $plugin_gtmcrypt; chmod 0555 $gtmcryptbldfiles; chown $owner $gtmcryptbldfiles; chgrp $bingroup $gtmcryptbldfiles) (cd $plugin_gtmcrypt; tar -cvf source.tar $gtmcryptsrcfiles >/dev/null 2>&1; mv source.tar $gtmdist/$plugin_gtmcrypt) (cd $gtmdist/$plugin_gtmcrypt; chmod 0644 source.tar; chown $owner source.tar; chgrp $bingroup source.tar) fi # Install GDE, GTMHELP, and all the percent routines cp *.o *.m $gtmdist # Install a mirror image (using soft links) of $gtmdist under $gtmdist/utf8 if this platform can support "UTF-8" mode. if [ "$doutf8" -ne 0 ]; then cd utf8 for file in * do # Skip directories if [ -d $file ]; then continue fi # Skip gtmsecshr/dir if [ "$file" = "gtmsecshr" -o "$file" = "gtmsecshrdir" ]; then continue fi # Install .o files base="`basename $file .o`" if [ "$base" != "$file" ]; then cp $file $gtmdist/utf8 else # Soft link everything else if [ -f $gtmdist/utf8/$file ]; then rm -f $gtmdist/utf8/$file fi if [ -f $gtmdist/$file ]; then ln -s ../$file $gtmdist/utf8/$file fi fi done if [ "$dogtmcrypt" -ne 0 ]; then ln -s ../plugin $gtmdist/utf8/plugin fi cd .. fi $echo "" $echo "All of the GT.M MUMPS routines are distributed with uppercase names." $echo "You can create lowercase copies of these routines if you wish, but" $echo "to avoid problems with compatibility in the future, consider keeping" $echo "only the uppercase versions of the files." $echo "" $echo "Do you want uppercase and lowercase versions of the MUMPS routines? (y or n)\c" read resp if [ "$resp" = "Y" -o "$resp" = "y" ] ; then $echo "" $echo "Creating lowercase versions of the MUMPS routines." (cd $gtmdist; ./lowerc_cp *.m) if [ "$doutf8" -ne 0 ]; then (cd $gtmdist/utf8; ./lowerc_cp *.m) fi fi # Change mode to executable for mumps and libgtmshr to do the compiles chmod 755 $gtmdist/mumps $gtmdist/libgtmshr$ext gtmroutines=$gtmdist gtmgbldir=$gtmdist/mumps.gld gtm_dist=$gtmdist export gtm_dist export gtmroutines export gtmgbldir $echo "" $echo "Compiling all of the MUMPS routines. This may take a moment." $echo "" # Ensure we are NOT in UTF-8 mode gtm_chset="M" export gtm_chset (cd $gtmdist; ./mumps -noignore *.m; $echo $?>compstat ; \ if [ "$is64bit_gtm" -eq 1 -o "linux" != $arch ] ; then $ldcmd $ldflags -o libgtmutil$ext *.o ; fi ) # Now work on UTF-8 mode if [ "$doutf8" -ne 0 ]; then # Enclose UTF-8 operations inside a subshell. This avoids changing the current M mode execution ( # Ensure we ARE in UTF-8 mode utflocale=`locale -a | grep -i en_us | grep -i utf | grep '8$' | head -n 1` if [ $arch = "zos" ]; then utflocale=`locale -a | grep -i en_us | grep -i utf | sed 's/.lp64$//' | grep '8$' | head -n 1` fi if [ $utflocale = "" ]; then utflocale="C" fi if [ $arch != "zos" ]; then # don't set LC_CTYPE to avoid random error messages from EBCDIC utilities LC_CTYPE=$utflocale export LC_CTYPE else gtm_chset_locale=$utflocale export gtm_chset_locale fi unset LC_ALL gtm_chset="UTF-8" export gtm_chset if [ $arch = "ibm" ]; then export LIBPATH=$save_icu_libpath elif [ $arch = "zos" ]; then # on z/OS LIBPATH is the only library search path so we should preserve it export LIBPATH=${save_icu_libpath}:${LIBPATH} else LD_LIBRARY_PATH=$save_icu_libpath export LD_LIBRARY_PATH fi (gtm_dist=$gtmdist/utf8; export gtm_dist; cd $gtm_dist; ./mumps -noignore *.m; $echo $?>>$gtmdist/compstat; \ if [ $is64bit_gtm -eq 1 -o "linux" != $arch ] ; then $ldcmd $ldflags -o libgtmutil$ext *.o ; fi ) ) fi # Change mode to executable for the normal binaries for i in $binaries do chmod 755 $gtmdist/$i done chmod 0644 $gtmdist/*.m chmod 0644 $gtmdist/*.o chown $owner $gtmdist/*.m chown $owner $gtmdist/*.o chown $owner $gtmdist/*.txt chgrp $bingroup $gtmdist/*.m chgrp $bingroup $gtmdist/*.o chgrp $bingroup $gtmdist/*.txt if [ "$doutf8" -ne 0 ]; then chmod 0644 $gtmdist/utf8/*.m chmod 0644 $gtmdist/utf8/*.o chown $owner $gtmdist/utf8 chown $owner $gtmdist/utf8/*.m chown $owner $gtmdist/utf8/*.o chown $owner $gtmdist/utf8/*.txt chgrp $bingroup $gtmdist/utf8/*.m chgrp $bingroup $gtmdist/utf8/*.o chgrp $bingroup $gtmdist/utf8/*.txt fi if [ "$dogtmcrypt" -ne 0 ]; then chmod 0644 $gtmdist/plugin/gtmcrypt/*.m chown $owner $gtmdist/plugin/gtmcrypt/*.m chgrp $bingroup $gtmdist/plugin/gtmcrypt/*.m fi gtm_dist=$gtmdist export gtm_dist if [ -f $gtm_dist/libgtmutil$ext ] ; then gtmroutines=$gtm_dist/libgtmutil$ext else gtmroutines=$gtmdist fi export gtmroutines other_object_files="CHK2LEV.o CHKOP.o GENDASH.o GENOUT.o GETNEAR.o GTMHLPLD.o LOAD.o LOADOP.o" other_object_files="$other_object_files LOADVX.o MSG.o TTTGEN.o TTTSCAN.o UNLOAD.o GTMDefinedTypesInit.o" csh_script_files="" if [ $arch = "zos" ]; then other_object_files="$other_object_files GENEXPORT.o" fi # make database files read only chmod 0444 $gtmdist/*.dat chmod 0444 $gtmdist/*.gld # $other_object_files, $csh_script_files should be removed unconditionally savedir=`pwd` # temporarily change to $gtmdist cd $gtmdist \rm -rf $other_object_files $csh_script_files lowerc_cp if [ -d utf8 ]; then cd utf8 \rm -rf $other_object_files $csh_script_files lowerc_cp fi # change back to original directory cd $savedir # Optionally remove .o files if they are in a shared library if [ -f $gtm_dist/libgtmutil$ext ] ; then chown ${owner}:${bingroup} $gtm_dist/libgtmutil$ext $echo "" $echo "Object files of M routines placed in shared library $gtm_dist/libgtmutil$ext" $echo "Keep original .o object files (y or n)? \c" read resp if [ "n" = $resp -o "N" = $resp ] ; then rm -f $gtm_dist/*.o $gtm_dist/utf8/*.o ; fi $echo "" if [ -f $gtm_dist/utf8/libgtmutil$ext ] ; then chown ${owner}:${bingroup} $gtm_dist/utf8/libgtmutil$ext fi fi # change group ownership of all files if group restricted # otherwise change to the default as some files were created with root group if [ "$group" != "" ] ; then chgrp -R $group $gtmdist if [ "zos" = $arch ]; then chmod -Rh o-rwx $gtmdist else chmod -R o-rwx $gtmdist fi else chgrp -R $bingroup $gtmdist fi # Install real gtmsecshr with special permissions in $gtmdist/gtmsecshrdir tgtmsecshrdir=$gtmdist/gtmsecshrdir mkdir $tgtmsecshrdir chmod 700 $tgtmsecshrdir chgrp $bingroup $tgtmsecshrdir # Install gtmsecshr and the wrapper with special permissions if [ $arch = "sun" -o $arch = "linux" ]; then install -m 4555 -o root -g $bingroup gtmsecshr $gtmdist install -m 4500 -o root -g $bingroup gtmsecshrdir/gtmsecshr $tgtmsecshrdir/gtmsecshr elif [ $arch = "ibm" ]; then /usr/bin/install -f $gtmdist -M 4555 -O root -G $bingroup gtmsecshr /usr/bin/install -f $tgtmsecshrdir -M 4500 -O root -G $bingroup gtmsecshrdir/gtmsecshr elif [ -x /usr/sbin/install ]; then /usr/sbin/install -f $gtmdist -m 4555 -u root -g $bingroup gtmsecshr $gtmdist /usr/sbin/install -f $tgtmsecshrdir -m 4500 -u root -g $bingroup gtmsecshrdir/gtmsecshr $tgtmsecshrdir elif [ $arch = "zos" ]; then cp gtmsecshr $gtmdist/gtmsecshr cp gtmsecshrdir/gtmsecshr $tgtmsecshrdir/gtmsecshr chown $rootuser:$bingroup $gtmdist/gtmsecshr $tgtmsecshrdir/gtmsecshr chmod 4555 $gtmdist/gtmsecshr chmod 4500 $tgtmsecshrdir/gtmsecshr else install -f $gtmdist -m 4555 -u root -g $bingroup gtmsecshr $gtmdist install -f $tgtmsecshrdir -m 4500 -u root -g $bingroup gtmsecshrdir/gtmsecshr $tgtmsecshrdir fi strip $gtmdist/gtmsecshr > /dev/null 2>&1 strip $tgtmsecshrdir/gtmsecshr > /dev/null 2>&1 if [ -d $gtmdist/utf8 ]; then # Delete the gtmsecshr symlink if [ -f $gtmdist/utf8/gtmsecshr -o -h $gtmdist/utf8/gtmsecshr ]; then rm -f $gtmdist/utf8/gtmsecshr fi ln $gtmdist/gtmsecshr $gtmdist/utf8/gtmsecshr || \ echo ln $gtmdist/gtmsecshr $gtmdist/utf8/gtmsecshr # Delete the gtmsecshrdir symlink if [ -f $gtmdist/utf8/gtmsecshrdir -o -h $gtmdist/utf8/gtmsecshrdir ]; then rm -f $gtmdist/utf8/gtmsecshrdir fi mkdir -p $gtmdist/utf8/gtmsecshrdir chmod 0500 $gtmdist/utf8/gtmsecshrdir ln $gtmdist/gtmsecshrdir/gtmsecshr $gtmdist/utf8/gtmsecshrdir/gtmsecshr || \ echo ln $gtmdist/gtmsecshrdir/gtmsecshr $gtmdist/utf8/gtmsecshrdir/gtmsecshr fi # change group ownership of wrapper if group restricted # also remove user privileges for wrapper if group changed if [ "$group" != "" ] ; then chgrp $group $gtmdist/gtmsecshr $echo "" $echo "Removing world permissions from gtmsecshr wrapper since group restricted to \"$group\"" chmod 4550 $gtmdist/gtmsecshr fi # leave nothing writeable chmod a-w $gtmdist chmod a-w $gtmdist/* if [ -d $gtmdist/utf8 ]; then chmod a-w $gtmdist/utf8/* fi if [ -d $gtmdist/plugin ]; then chmod a-w $gtmdist/plugin/* fi if [ -d $gtmdist/plugin/gtmcrypt ]; then chmod a-w $gtmdist/plugin/gtmcrypt/* fi # if we had a mumps error then remove executable bit recursively and exit # this could include compile and/or library load errors if [ 0 != `grep -c '[1-9]' $gtm_dist/compstat` ]; then $echo "" $echo "GT.M installation FAILED – please review error messages" $echo "" chmod -R a-x $gtmdist exit 1 fi rm -f $gtmdist/compstat $echo "" $echo "Installation completed. Would you like all the temporary files" $echo "removed from this directory? (y or n) \c" read resp if [ "$resp" = "Y" -o "$resp" = "y" ] ; then \rm -rf $binaries $pathmods $rscripts $nscripts $dirs configure \ *.gtc gtm* gde* GDE*.o _*.m _*.o mumps.dat mumps.gld geteuid $other_object_files $csh_script_files lowerc_cp\ esnecil *.hlp core *.h libgtmrpc.a *.m *help.dat *help.gld COPYING README.txt \rm -rf GETPASS.o plugin PINENTRY.o GTMHELP.o custom_errors_sample.txt if [ -d utf8 ]; then \rm -rf utf8 fi fi