File pvm-3.4.5.dif of Package pvm

--- Makefile
+++ Makefile
@@ -6,7 +6,8 @@
 
 SHELL	=	/bin/sh
 
-AIMKSTR	=	-here -f ./conf/`./lib/pvmtmparch`.def -f ./Makefile.aimk
+ARCH   =       $(shell ./lib/pvmtmparch)
+AIMKSTR	=	-here -f ./conf/$(ARCH).def -f ./Makefile.aimk
 
 default:
 	./lib/aimk $(AIMKSTR) default
--- conf/LINUXPPC64.def
+++ conf/LINUXPPC64.def
@@ -0,0 +1,24 @@
+#
+# Notes on readline Usage:
+#
+#	If your Linux system has readline, then you may append the
+#	following flags to the defines below:
+#
+#		ARCHCFLAGS = . . .  -DHASREADLINE
+#		ARCHLIB = . . .  -lreadline
+#
+#	and recompile PVM.
+#
+#	On some Linux systems, readline requires ncurses, so you
+#	must also add "-lncurses" to the ARCHLIB define.
+#
+ARCHCFLAGS	=	-DRSHCOMMAND=\"/usr/bin/rsh\" \
+				-DNEEDENDIAN -DFDSETNOTSTRUCT -DHASERRORVARS -DNOTMPNAM \
+				 -DHASREADLINE
+ARCHDLIB	=
+ARCHDOBJ	=
+ARCHLIB		=	-lreadline -lncurses
+HASRANLIB	=	t
+AR			=	ar
+PVM_ARCH	=	LINUXPPC64
+MAKE		=	make
--- conf/LINUXPPC64.m4
+++ conf/LINUXPPC64.m4
@@ -0,0 +1,19 @@
+divert(-1)
+undefine(`len')
+#
+# append an underscore to FORTRAN function names
+#
+define(`FUNCTION',`$1_')
+#
+# FORTRAN character strings are passed as follows:
+# a pointer to the base of the string is passed in the normal
+# argument list, and the length is passed by value as an extra
+# argument, after all of the other arguments.
+#
+define(`ARGS',`($1`'undivert(1))')
+define(`SAVE',`divert(1)$1`'divert(0)')
+define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')')
+define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len')
+define(`STRING_LEN',`$1_len')
+define(`STRING_PTR',`$1_ptr')
+divert(0)
--- conf/LINUXS390.def
+++ conf/LINUXS390.def
@@ -0,0 +1,24 @@
+#
+# Notes on readline Usage:
+#
+#      If your Linux system has readline, then you may append the
+#      following flags to the defines below:
+#
+#              ARCHCFLAGS = . . .  -DHASREADLINE
+#              ARCHLIB = . . .  -lreadline
+#
+#      and recompile PVM.
+#
+#      On some Linux systems, readline requires ncurses, so you
+#      must also add "-lncurses" to the ARCHLIB define.
+#
+ARCHCFLAGS     =       -DRSHCOMMAND=\"/usr/bin/rsh\" \
+                               -DHASSTDLIB -DNEEDENDIAN -DFDSETNOTSTRUCT \
+			       -DHASERRORVARS -DHASREADLINE -DNOTMPNAM
+ARCHDLIB       =
+ARCHDOBJ       =
+ARCHLIB                =       -lreadline -lncurses
+HASRANLIB      =       t
+AR             =       ar
+PVM_ARCH       =       LINUXS390
+MAKE           =       make
--- conf/LINUXS390.m4
+++ conf/LINUXS390.m4
@@ -0,0 +1,19 @@
+divert(-1)
+undefine(`len')
+#
+# append an underscore to FORTRAN function names
+#
+define(`FUNCTION',`$1_')
+#
+# FORTRAN character strings are passed as follows:
+# a pointer to the base of the string is passed in the normal
+# argument list, and the length is passed by value as an extra
+# argument, after all of the other arguments.
+#
+define(`ARGS',`($1`'undivert(1))')
+define(`SAVE',`divert(1)$1`'divert(0)')
+define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')')
+define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len')
+define(`STRING_LEN',`$1_len')
+define(`STRING_PTR',`$1_ptr')
+divert(0)
--- lib/aimk
+++ lib/aimk
@@ -36,12 +36,20 @@
 done
 
 case "x$PVM_ROOT" in x )
-#	if [ -d $HOME/pvm3 ]; then
-#		PVM_ROOT=$HOME/pvm3
-#	else
+        if [ -d /usr/lib/pvm3 ]; then
+                PVM_ROOT=/usr/lib/pvm3
+        elif [ -d /usr/share/pvm3 ]; then
+                PVM_ROOT=/usr/share/pvm3
+        elif [ -d /usr/local/lib/pvm3 ]; then
+                PVM_ROOT=/usr/local/lib/pvm3
+        elif [ -d /usr/pvm/pvm3 ]; then
+                PVM_ROOT=/usr/pvm/pvm3
+        elif [ -d $HOME/pvm3 ]; then
+                PVM_ROOT=$HOME/pvm3
+        else
 		echo aimk: PVM_ROOT not defined >&2
 		exit 1
-#	fi
+	fi
 ;; esac
 
 case "x$PVM_ARCH" in x | xUNKNOWN )
--- lib/pvm
+++ lib/pvm
@@ -22,13 +22,21 @@
 	if [ -d $PVM_ROOT ]; then
 		export PVM_ROOT
 	else
-		if [ -d $HOME/pvm3 ]; then
+                if [ -d /usr/lib/pvm3 ]; then
+                        PVM_ROOT=/usr/lib/pvm3
+                elif [ -d /usr/share/pvm3 ]; then
+                        PVM_ROOT=/usr/share/pvm3
+                elif [ -d /usr/local/lib/pvm3 ]; then
+                        PVM_ROOT=/usr/local/lib/pvm3
+                elif [ -d /usr/pvm/pvm3 ]; then
+                        PVM_ROOT=/usr/pvm/pvm3
+                elif [ -d $HOME/pvm3 ]; then
 			PVM_ROOT=$HOME/pvm3
-			export PVM_ROOT
 		else
 			echo pvm: PVM_ROOT not defined >&2
 			exit 1
 		fi
+		export PVM_ROOT
 	fi
 ;; esac
 
--- lib/pvmd
+++ lib/pvmd
@@ -13,25 +13,33 @@
 #	03 Jun 1994  Manchek
 #
 
+
 case "x$PVM_ROOT" in x )
 	case "$0" in
 	/*) PVM_ROOT="$0" ;;
 	*) PVM_ROOT=`pwd`/"$0" ;;
 	esac
-	PVM_ROOT=`echo "$PVM_ROOT" | sed -e 's/\/lib\/pvmd//'`
+	PVM_ROOT=`echo "$PVM_ROOT" | sed -e 's/\/lib\/pvm//'`
 	if [ -d $PVM_ROOT ]; then
 		export PVM_ROOT
 	else
-		if [ -d $HOME/pvm3 ]; then
+                if [ -d /usr/lib/pvm3 ]; then
+                        PVM_ROOT=/usr/lib/pvm3
+                elif [ -d /usr/share/pvm3 ]; then
+                        PVM_ROOT=/usr/share/pvm3
+                elif [ -d /usr/local/lib/pvm3 ]; then
+                        PVM_ROOT=/usr/local/lib/pvm3
+                elif [ -d /usr/pvm/pvm3 ]; then
+                        PVM_ROOT=/usr/pvm/pvm3
+                elif [ -d $HOME/pvm3 ]; then
 			PVM_ROOT=$HOME/pvm3
-			export PVM_ROOT
 		else
-			echo pvmd: PVM_ROOT not defined >&2
+			echo pvm: PVM_ROOT not defined >&2
 			exit 1
 		fi
+		export PVM_ROOT
 	fi
 ;; esac
-
 #
 # these lines let you set environment variables on systems
 # where a shell profile doesn't get read when rshing in.
--- lib/wrapper
+++ lib/wrapper
@@ -0,0 +1,84 @@
+#! /bin/sh
+#
+#  Wrapper for pvm binaries on various OS systems
+#  Install this as e.g. pvmfoo in /usr/bin/ and this
+#  script tries to start
+#
+#     $PVM_ROOT/bin/$PVM_ARCH/pvmfoo
+#     $PVM_ROOT/lib/$PVM_ARCH/pvmfoo
+#
+#  Adapted from the pvm script for SuSE Linux: <werner@suse.de>
+#
+
+wrapped="`basename $0`"
+
+if test -z "$PVM_ROOT"; then
+    case "$0" in
+	/*) PVM_ROOT="$0"	;;
+	*)  PVM_ROOT="`pwd`/$0" ;;
+    esac
+    PVM_ROOT="`echo \"$PVM_ROOT\" | sed -e \"s:/lib/${wrapped}::\"`"
+    if [ -d $PVM_ROOT ]; then
+	export PVM_ROOT
+    else
+	if   test -d /usr/lib/pvm3 ; then
+	    PVM_ROOT=/usr/lib/pvm3
+	elif test -d /usr/share/pvm3 ; then
+	    PVM_ROOT=/usr/share/pvm3
+	elif test -d /usr/local/lib/pvm3 ; then
+	    PVM_ROOT=/usr/local/lib/pvm3
+	elif test -d /usr/pvm/pvm3 ; then
+	    PVM_ROOT=/usr/pvm/pvm3
+	elif test -d $HOME/pvm3 ; then
+	    PVM_ROOT=$HOME/pvm3
+	else
+	    echo pvm: PVM_ROOT not defined >&2
+	    exit 1
+	fi
+	export PVM_ROOT
+    fi
+fi
+
+#
+# these lines let you set environment variables on systems
+# where a shell profile doesn't get read when rshing in.
+#
+if test -f $PVM_ROOT/.pvmprofile ; then
+	. $PVM_ROOT/.pvmprofile
+fi
+if test -f $HOME/.pvmprofile ; then
+	. $HOME/.pvmprofile
+fi
+
+if test -z "$PVM_ARCH" -o "$PVM_ARCH" = "UNKNOWN" ; then
+    PVM_ARCH="`$PVM_ROOT/lib/pvmgetarch`"
+    if test -z "$PVM_ARCH"; then
+	echo pvm: can\'t set arch >&2
+	exit 1
+    fi
+fi
+
+if test "$1" = "-exe" ; then
+	sfx=".exe"
+	shift
+else
+	sfx=""
+fi
+
+err=""
+for d in bin lib ; do
+    program="${PVM_ROOT}/${d}/${PVM_ARCH}/${wrapped}${sfx}"
+    if test -x ${program} ; then
+	export PVM_ARCH
+	exec ${program} $@
+	exit 1
+    fi
+    err="$program $err"
+done
+
+for p in $err ; do
+    echo "${wrapped}: $p doesn't exist." >&2
+done
+echo "Make sure PVM is built and PVM_ROOT is set correctly" >&2
+exit 1
+
--- lib/xpvm
+++ lib/xpvm
@@ -14,22 +14,31 @@
 #	11 May 1995  Manchek, from Convex version
 #
 
+
 case "x$PVM_ROOT" in x )
 	case "$0" in
 	/*) PVM_ROOT="$0" ;;
 	*) PVM_ROOT=`pwd`/"$0" ;;
 	esac
-	PVM_ROOT=`echo "$PVM_ROOT" | sed -e 's/\/lib\/xpvm//'`
+	PVM_ROOT=`echo "$PVM_ROOT" | sed -e 's/\/lib\/pvm//'`
 	if [ -d $PVM_ROOT ]; then
 		export PVM_ROOT
 	else
-		if [ -d $HOME/pvm3 ]; then
+                if [ -d /usr/lib/pvm3 ]; then
+                        PVM_ROOT=/usr/lib/pvm3
+                elif [ -d /usr/share/pvm3 ]; then
+                        PVM_ROOT=/usr/share/pvm3
+                elif [ -d /usr/local/lib/pvm3 ]; then
+                        PVM_ROOT=/usr/local/lib/pvm3
+                elif [ -d /usr/pvm/pvm3 ]; then
+                        PVM_ROOT=/usr/pvm/pvm3
+                elif [ -d $HOME/pvm3 ]; then
 			PVM_ROOT=$HOME/pvm3
-			export PVM_ROOT
 		else
-			echo xpvm: PVM_ROOT not defined >&2
+			echo pvm: PVM_ROOT not defined >&2
 			exit 1
 		fi
+		export PVM_ROOT
 	fi
 ;; esac
 
--- man/man1/pvm_intro.1
+++ man/man1/pvm_intro.1
@@ -130,6 +130,12 @@
 LINUXSPARC
 Sparc running Linux
 .TP
+LINUX64
+IA64 running Linux
+.TP
+LINUXS390
+S390 running Linux
+.TP
 M88K
 Motorola M88100 running Real/IX
 .TP
--- shmd/sem.c
+++ shmd/sem.c
@@ -16,7 +16,7 @@
 #include <unistd.h>	/* needed for usleep */
 #include <stdio.h>
 
-#ifdef XXX_IMA_LINUX
+#ifdef LINUX
 /* Seems to be O.K. on latest Linux systems now. JAK - 9/25/01 */
 union semun forth_arg;		/* XXXX optional under all OSs except Linux ! */
 #endif
@@ -46,7 +46,7 @@
 
 int sem_is (int sem, int n)
 {
-#ifdef XXX_IMA_LINUX
+#ifdef LINUX
 	/* Seems to be O.K. on latest Linux systems now. JAK - 9/25/01 */
 	return (semctl( sem, n, GETVAL, forth_arg));
 #else
@@ -82,7 +82,7 @@
 	if((semid=semget (k, n, 0)) !=-1) {
 		printf("[init_sem] sem key %lx exists with id of %d\n",
 			(long) k, semid);
-#ifdef XXX_IMA_LINUX
+#ifdef LINUX
 		/* Seems to be O.K. on latest Linux systems now. JAK - 9/25/01 */
 		semctl (semid, 0, IPC_RMID, forth_arg);		/* existing sem destroy */
 #else
@@ -106,7 +106,7 @@
 void del_sem (int semid)
 {
 
-#ifdef XXX_IMA_LINUX
+#ifdef LINUX
 	/* Seems to be O.K. on latest Linux systems now. JAK - 9/25/01 */
 	semctl (semid, 0, IPC_RMID, forth_arg);		/* existing sem destroy */
 #else
--- src/Makefile.aimk
+++ src/Makefile.aimk
@@ -74,6 +74,8 @@
 
 LIBPREFIX	=	lib
 LIBPVM		=	$(LIBPREFIX)pvm3
+LIBVERSION     =       3
+SHLIBPVM       =       -shared -Wl,-soname,$(LIBPVM).so.$(LIBVERSION)
 
 #
 # GNU Regular Expression Defines - set if needed
@@ -212,7 +214,7 @@
 
 OS2TARGETS		=	$(LIBDIR)/pvmd3-os2 $(LIBDIR)/lib-os2
 
-all:	pvmd3$(EXESFX) $(LIBPVM).a
+all:	pvmd3$(EXESFX) $(LIBPVM).a $(LIBPVM).so
 
 all-shm:	pvmd3-shm lib-shm $(LIBPVM)s.a
 
@@ -222,7 +224,7 @@
 
 all-os2:	pvmd3-os2 lib-os2
 
-install:	$(LIBDIR) $(LIBDIR)/pvmd3$(EXESFX) $(LIBDIR)/$(LIBPVM).a
+install:	$(LIBDIR) $(LIBDIR)/pvmd3$(EXESFX) $(LIBDIR)/$(LIBPVM).a $(LIBDIR)/$(LIBPVM).so
 
 install-shm:	$(LIBDIR) $(SHMEMTARGETS)
 
@@ -243,6 +245,9 @@
 $(LIBDIR)/$(LIBPVM).a:	$(LIBPVM).a
 	cp $(LIBPVM).a $(LIBDIR)
 
+$(LIBDIR)/$(LIBPVM).so:        $(LIBPVM).so
+	cp $(LIBPVM).so $(LIBDIR)
+
 # libdir shm pvmd3 & libpvm3*.a
 
 $(LIBDIR)/pvmd3-shm:	pvmd3-shm
@@ -288,10 +293,22 @@
 		$(LOPT) $(ARCHDLIB)
 
 $(LIBPVM).a:	$(REGEXCONF) $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ)
-	rm -f $(LIBPVM).a
+	@echo -------------------------------
+	@echo --- Building static Library ---
+	@echo -------------------------------
+	rm -f $(LIBPVM).a $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ) $(REGEXDIR)/pvmregex.o $(REGEXDIR)/regex.o
+	$(MAKE) CFLOPTS="$(CFLOPTS)" $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ)
 	$(AR) cr $(LIBPVM).a $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ)
 	case x$(HASRANLIB) in xt ) echo ranlib; ranlib $(LIBPVM).a ;; esac
 
+$(LIBPVM).so:  regexconfig
+	@echo -------------------------------
+	@echo --- Building shared Library ---
+	@echo -------------------------------
+	rm -f $(LIBPVM).so $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ) $(REGEXDIR)/pvmregex.o $(REGEXDIR)/regex.o
+	$(MAKE) CFLOPTS="-fPIC $(CFLOPTS)" $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ)
+	$(CC) $(SHLIBPVM)  -o $(LIBPVM).so $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ) -lc
+
 # shm pvmd3 & libpvm3*.a
 
 pvmd3-shm:	$(REGEXCONF) $(DOBJ) $(SHMEMDOBJ)
--- src/patch4linux
+++ src/patch4linux
@@ -0,0 +1,89 @@
+--- Makefile
++++ Makefile	2000/02/22 16:08:17
+@@ -56,6 +56,8 @@
+ #                            REGEXCONF, REGEXCONFOS2, REGEXOBJS
+ #
+ 
++include $(PVM_ROOT)/conf/$(PVM_ARCH).def
++
+ SHELL		=	/bin/sh
+ PVMDIR		=	../..
+ SDIR		=	$(PVMDIR)/src
+@@ -73,19 +75,21 @@
+ 
+ LIBPREFIX	=	lib
+ LIBPVM		=	$(LIBPREFIX)pvm3
++LIBVERSION	=	3
++SHLIBPVM	=	-shared -Wl,-soname,$(LIBPVM).so.$(LIBVERSION)
+ 
+ #
+ # GNU Regular Expression Defines - set if needed
+ #
+ 
+-REGEXCONF		=
+-#REGEXCONF		=	regexconfig
++REGEXCONF	=
++#REGEXCONF	=	regexconfig
+ 
+ REGEXCONFOS2	=
+ #REGEXCONFOS2	=	regexconfig-os2
+ 
+-REGEXOBJS		=
+-#REGEXOBJS		=	pvmregex.o regex.o
++REGEXOBJS	=
++#REGEXOBJS	=	pvmregex.o regex.o
+ 
+ #
+ # PVM Daemon & Library Objects
+@@ -211,7 +215,7 @@
+ 
+ OS2TARGETS		=	$(LIBDIR)/pvmd3-os2 $(LIBDIR)/lib-os2
+ 
+-all:	pvmd3$(EXESFX) $(LIBPVM).a
++all:	pvmd3$(EXESFX) $(LIBPVM).a $(LIBPVM).so
+ 
+ all-shm:	pvmd3-shm lib-shm $(LIBPVM)s.a
+ 
+@@ -221,7 +225,7 @@
+ 
+ all-os2:	pvmd3-os2 lib-os2
+ 
+-install:	$(LIBDIR) $(LIBDIR)/pvmd3$(EXESFX) $(LIBDIR)/$(LIBPVM).a
++install:	$(LIBDIR) $(LIBDIR)/pvmd3$(EXESFX) $(LIBDIR)/$(LIBPVM).a $(LIBDIR)/$(LIBPVM).so
+ 
+ install-shm:	$(LIBDIR) $(SHMEMTARGETS)
+ 
+@@ -242,6 +246,9 @@
+ $(LIBDIR)/$(LIBPVM).a:	$(LIBPVM).a
+ 	cp $(LIBPVM).a $(LIBDIR)
+ 
++$(LIBDIR)/$(LIBPVM).so:        $(LIBPVM).so
++	cp $(LIBPVM).so $(LIBDIR)
++
+ # libdir shm pvmd3 & libpvm3*.a
+ 
+ $(LIBDIR)/pvmd3-shm:	pvmd3-shm
+@@ -287,9 +294,22 @@
+ 		$(LOPT) $(ARCHDLIB)
+ 
+ $(LIBPVM).a:	$(REGEXCONF) $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ)
+-	rm -f $(LIBPVM).a
++	@echo -------------------------------
++	@echo --- Building static Library ---
++	@echo -------------------------------
++	rm -f $(LIBPVM).a $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ) $(REGEXDIR)/pvmregex.o $(REGEXDIR)/regex.o
++	$(MAKE) CFLOPTS="$(CFLOPTS)" $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ)
+ 	$(AR) cr $(LIBPVM).a $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ)
+ 	case x$(HASRANLIB) in xt ) echo ranlib; ranlib $(LIBPVM).a ;; esac
++
++$(LIBPVM).so:  regexconfig
++	@echo -------------------------------
++	@echo --- Building shared Library ---
++	@echo -------------------------------
++	rm -f $(LIBPVM).so $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ) $(REGEXDIR)/pvmregex.o $(REGEXDIR)/regex.o
++	$(MAKE) CFLOPTS="-fPIC $(CFLOPTS)" $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ)
++	$(CC) $(SHLIBPVM)  -o $(LIBPVM).so $(LOBJ) $(LPVMSOCK) $(SOCKLOBJ) -lc
++
+ 
+ # shm pvmd3 & libpvm3*.a
+ 
--- src/tdpro.c
+++ src/tdpro.c
@@ -1138,6 +1138,24 @@
 
 		} else {						/* anywhere */
 			ht_merge(htp, hosts);
+ 
+                        /*
+                         * remove head nodes from Beowulf machine
+                         */
+                        {
+                                char *exlist = getenv("PVM_EXCLUDE");
+                                while (exlist) {
+                                        char *next = exlist;
+                                        while (*exlist && *exlist != ':')
+                                                exlist++;
+                                        if (*exlist)
+                                                *exlist++ = 0;
+                                        else
+                                                exlist = 0;
+                                        if (hp = nametohost(hosts, next))
+                                                ht_delete(htp, hp);
+                                }
+                        }
 		}
 	}