All -

I wanted to pass along this to all the ooRexx developers. I have been helping Chuck overcome some problems getting ooRexx working on zSeries (Suse). I believe that we have overcome all the problems with building the executables and libraries (in 31-bit mode). Chuck is going to do some more testing but is looks like we can add zSeries to out list of platforms down the road.

Mark H. -

Could you look into the spec file issues for me? Are the changes Chuck had to make portable to other platforms?

Thanks,
W. David Ashley
IBM Linux Technology Center
Linux Installation & Open Object Rexx Teams
IBM Phone: 512-838-0609 T/L 678-0609
Mobile Phone: 512-289-7506

----- Forwarded by David Ashley/Austin/IBM on 04/05/2006 03:25 PM -----
Chuck Tribolet/Almaden/IBM

04/05/2006 03:02 PM

To
David Ashley/Austin/IBM@IBMUS
cc
object.rexx@gmail.com
Subject
Re: Fw: ooRexx zSeries ErrorLink




MAJOR progress.  I got an rpm built (after some hacking) on 31-bit, and the RPM installs and will run a "Hello World" program on 64-bit.

What I had to hack was in oorexx.spec.  I had to change all the /usr/local/man/man1/*.1 entries to /usr/local/man/man1/*.1.gz and I had to add /usr/local/share/ooRexx/readme.  I don't understand why these were necessary -- it looks like they should have affected other platforms also.

It might be possible to modify ./configure and/or Makefile to compile and link for 31-bit on 64-bit.  I tried adding -m31 CFLAGS, CPPFLAGS, FFLAGS, and LDFLAGS in Makefile, but it blows up with the following because in 64-bit zLinux, gcc-lib is under /usr/lib64, and worse, is (I presume) compiled to run in 64-bit mode, and g++ can't handle the .o files (I tried some hacks).

g++ -shared -nostdlib /usr/lib/gcc-lib/s390-suse-linux/3.3.3/../../../crti.o /usr/lib/gcc-lib/s390-suse-linux/3.3.3/crtbeginS.o  .libs/librexx_la-SOMObjectNative.o .libs/librexx_la-SOMProxyNative.o .libs/librexx_la-SOMUtilities.o .libs/librexx_la-ASCIIDBCSStrings.o .libs/librexx_la-ArrayClass.o .libs/librexx_la-ClassClass.o .libs/librexx_la-DirectoryClass.o .libs/librexx_la-IntegerClass.o .libs/librexx_la-ListClass.o .libs/librexx_la-MessageClass.o .libs/librexx_la-MethodClass.o .libs/librexx_la-MutableBufferClass.o .libs/librexx_la-NumberStringClass.o .libs/librexx_la-NumberStringMath.o .libs/librexx_la-NumberStringMath2.o .libs/librexx_la-ObjectClass.o .libs/librexx_la-QueueClass.o .libs/librexx_la-RelationClass.o .libs/librexx_la-StackClass.o .libs/librexx_la-StemClass.o .libs/librexx_la-StringClass.o .libs/librexx_la-StringClassBit.o .libs/librexx_la-StringClassConversion.o .libs/librexx_la-StringClassMisc.o .libs/librexx_la-StringClassSub.o .libs/librexx_la-StringClassUtil.o .libs/librexx_la-StringClassWord.o .libs/librexx_la-SupplierClass.o .libs/librexx_la-TableClass.o .libs/librexx_la-BuiltinFunctions.o .libs/librexx_la-ExpressionCompoundVariable.o .libs/librexx_la-ExpressionDotVariable.o .libs/librexx_la-ExpressionFunction.o .libs/librexx_la-ExpressionMessage.o .libs/librexx_la-ExpressionOperator.o .libs/librexx_la-ExpressionStack.o .libs/librexx_la-ExpressionStem.o .libs/librexx_la-ExpressionVariable.o .libs/librexx_la-IndirectVariableReference.o .libs/librexx_la-AddressInstruction.o .libs/librexx_la-AssignmentInstruction.o .libs/librexx_la-CallInstruction.o .libs/librexx_la-CommandInstruction.o .libs/librexx_la-DoBlock.o .libs/librexx_la-DoInstruction.o .libs/librexx_la-DropInstruction.o .libs/librexx_la-ElseInstruction.o .libs/librexx_la-EndIf.o .libs/librexx_la-EndInstruction.o .libs/librexx_la-ExitInstruction.o .libs/librexx_la-ExposeInstruction.o .libs/librexx_la-ForwardInstruction.o .libs/librexx_la-GuardInstruction.o .libs/librexx_la-IfInstruction.o .libs/librexx_la-InterpretInstruction.o .libs/librexx_la-LabelInstruction.o .libs/librexx_la-LeaveInstruction.o .libs/librexx_la-MessageInstruction.o .libs/librexx_la-NopInstruction.o .libs/librexx_la-NumericInstruction.o .libs/librexx_la-OptionsInstruction.o .libs/librexx_la-OtherwiseInstruction.o .libs/librexx_la-ParseInstruction.o .libs/librexx_la-ParseTarget.o .libs/librexx_la-ParseTrigger.o .libs/librexx_la-ProcedureInstruction.o .libs/librexx_la-QueueInstruction.o .libs/librexx_la-RaiseInstruction.o .libs/librexx_la-ReplyInstruction.o .libs/librexx_la-ReturnInstruction.o .libs/librexx_la-RexxInstruction.o .libs/librexx_la-SayInstruction.o .libs/librexx_la-SelectInstruction.o .libs/librexx_la-SignalInstruction.o .libs/librexx_la-ThenInstruction.o .libs/librexx_la-TraceInstruction.o .libs/librexx_la-UseInstruction.o .libs/librexx_la-Clause.o .libs/librexx_la-InstructionParser.o .libs/librexx_la-Scanner.o .libs/librexx_la-SourceFile.o .libs/librexx_la-Token.o .libs/librexx_la-ActivityTable.o .libs/librexx_la-DBCSSupport.o .libs/librexx_la-ErrorMessages.o .libs/librexx_la-ExternalFunctions.o .libs/librexx_la-FileSystem.o .libs/librexx_la-MemorySupport.o .libs/librexx_la-MiscSystem.o .libs/librexx_la-RexxMain.o .libs/librexx_la-RexxQueues.o .libs/librexx_la-StoredMetaData.o .libs/librexx_la-SystemCommands.o .libs/librexx_la-ThreadSupport.o .libs/librexx_la-TimeSupport.o .libs/librexx_la-UseridFunction.o .libs/librexx_la-ValueFunction.o .libs/librexx_la-VariablePool.o .libs/librexx_la-DeadObject.o .libs/librexx_la-FloatUtilities.o .libs/librexx_la-GlobalData.o .libs/librexx_la-GlobalNames.o .libs/librexx_la-Initialization.o .libs/librexx_la-MemorySegment.o .libs/librexx_la-MemoryStats.o .libs/librexx_la-NativeRoot.o .libs/librexx_la-RexxActivation.o .libs/librexx_la-RexxActivationStack.o .libs/librexx_la-RexxActivity.o .libs/librexx_la-RexxBehaviour.o .libs/librexx_la-RexxBuffer.o .libs/librexx_la-RexxCode.o .libs/librexx_la-RexxCollection.o .libs/librexx_la-RexxCompoundElement.o .libs/librexx_la-RexxCompoundTable.o .libs/librexx_la-RexxCompoundTail.o .libs/l
ibrexx_la-RexxConstants.o .libs/librexx_la-RexxEnvelope.o .libs/librexx_la-RexxHashTable.o .libs/librexx_la-RexxInternalStack.o .libs/librexx_la-RexxListTable.o .libs/librexx_la-RexxLocalVariables.o .libs/librexx_la-RexxMemory.o .libs/librexx_la-RexxMisc.o .libs/librexx_la-RexxNativeActivation.o .libs/librexx_la-RexxNativeMethod.o .libs/librexx_la-RexxSOMCode.o .libs/librexx_la-RexxSOMProxy.o .libs/librexx_la-RexxSmartBuffer.o .libs/librexx_la-RexxStartup.o .libs/librexx_la-RexxVariable.o .libs/librexx_la-RexxVariableDictionary.o .libs/librexx_la-Setup.o .libs/librexx_la-Utilities.o .libs/librexx_la-Version.o .libs/librexx_la-StreamCommandParser.o .libs/librexx_la-StreamNative.o .libs/librexx_la-LocalProcessData.o  -L/usr/lib/gcc-lib/s390-suse-linux/3.3.3 -L/usr/lib/gcc-lib/s390-suse-linux/3.3.3/../../../../s390-suse-linux/lib -L/usr/lib/gcc-lib/s390-suse-linux/3.3.3/../../.. /usr/lib/libstdc++.so -lm -lc -lgcc_s /usr/lib/gcc-lib/s390-suse-linux/3.3.3/crtendS.o /usr/lib/gcc-lib/s390-suse-linux/3.3.3/../../../crtn.o  -m31 -m31 -Wl,-soname -Wl,librexx.so.3 -o .libs/librexx.so.3.0.0
g++: /usr/lib/gcc-lib/s390-suse-linux/3.3.3/../../../crti.o: No such file or directory
g++: /usr/lib/gcc-lib/s390-suse-linux/3.3.3/crtbeginS.o: No such file or directory
g++: /usr/lib/gcc-lib/s390-suse-linux/3.3.3/crtendS.o: No such file or directory
g++: /usr/lib/gcc-lib/s390-suse-linux/3.3.3/../../../crtn.o: No such file or directory
make: *** [librexx.la] Error 1

Chuck Tribolet
triblet@almaden.ibm.com (IBM business)
triblet@garlic.com (Personal)
http://www.almaden.ibm.com/cs/people/triblet



David Ashley/Austin/IBM

04/05/2006 09:29 AM

To
Chuck Tribolet/Almaden/IBM@IBMUS
cc
object.rexx@gmail.com
Subject
Re: Fw: ooRexx zSeries ErrorLink




Chuck -

Oops! Right. There is no zLinux RPM. Must be having a "senior moment" :-)

Building an rpm is pretty easy on Red Hat and is probably similar on Suse. On Red Hat, you copy the source distribution tar file and the rpm spec file (ours is in the source file distribution or the CVS tree and is named oorexx.spec) to the /usr/src/redhat/SOURCES subdir (you will probably need to be root to do this part). Then run rpmbuild (you can do this as a normal user). The rpm will be placed into the /usr/src/redhat/RPMS subdir tree somewhere.

For option 2, all the libraries ansd executables are place in the main source subdir after the make is done. Either move them or create symlinks to them in /usr/bin and /usr/lib.

Thanks,
W. David Ashley
IBM Linux Technology Center
Linux Installation & Open Object Rexx Teams
IBM Phone: 512-838-0609 T/L 678-0609
Mobile Phone: 512-289-7506



Chuck Tribolet/Almaden/IBM

04/05/2006 11:04 AM

To
David Ashley/Austin/IBM@IBMUS
cc
object.rexx@gmail.com
Subject
Re: Fw: ooRexx zSeries ErrorLink




I like option 1, but will need some guidance.  What's the incantation?

Option 2 would work, but I don't know what "all the libraries and executables" are.

Option 3: I don't think there is a standard zLinux oREXX  rpm, at least not until I do option 1.  ;-)



Chuck Tribolet
triblet@almaden.ibm.com (IBM business)
triblet@garlic.com (Personal)
http://www.almaden.ibm.com/cs/people/triblet



David Ashley/Austin/IBM

04/05/2006 08:49 AM

To
Chuck Tribolet/Almaden/IBM@IBMUS
cc
object.rexx@gmail.com
Subject
Re: Fw: ooRexx zSeries ErrorLink




Chuck -

I believe you are correct in you assumption about 31-bit vs 64-bit dependencies during the make install step. I will not be pretty but there are 3 possibilities for getting around this problem.

1. Make an rpm (in 31-bit mode). I think that will allow the rpm to be installed on the 64-bit machine. I can help you with this if you do not knoe how.
2. After the 31-bit make, sign on as root and move all the libraries and executables to /usr/lib and /usr/bin respectfully.
3. Download the standard Linux rpm from SourceForge and try installing that.

Obviously option 3 is the easiest to try first. Actually, if this does not work then option 1 also has little chance of working.

Note that the rpm and the make install command both have a problem. The executables are placed into /usr/local/bin. Unfortunately, daemons started from the standard Linux daemon startup do not have /usr/local/bin in the PATH. So you will need to create symlinks in /usr/bin for all the ooRexx executables in /usr/local/bin if you intend to run ooRexx scripts from a daemon process (like cron). This does not affect scripts started from a user process.

Thanks,
W. David Ashley
IBM Linux Technology Center
Linux Installation & Open Object Rexx Teams
IBM Phone: 512-838-0609 T/L 678-0609
Mobile Phone: 512-289-7506



Chuck Tribolet/Almaden/IBM

04/05/2006 10:21 AM

To
David Ashley/Austin/IBM@IBMUS
cc
Subject
Re: Fw: ooRexx zSeries ErrorLink




OK, built a 31-bit system.  Both 31-bit and 64-bit are pretty vanilla SLES9 SP3.  Here's what I did:

On 31-bit:

Untar the source to a directory on an NFS server.
cd to the source directory on the NFS server
./configure
make clean
make
make install
REXX works on the 31-bit machine.
make clean
make
 
Now switch to the 64-bit machine.

cd to the source directory on the NFS server.
./rexx -i   This worked (it was trapping when compiled on 64-bit).  
make install   This wants to recompile EVERYTHING in 64-bit mode.  I'm not sure why, and Makefiles are a mystery to me.  I suspect there's a dependency on some system file or something.

Both machines have RW access to the NFS directory.  Both machines have clocks in close synch so its not a mis-set clock problem.

Any ideas?

Once I can get the 31-bit code compiled elsewhere to work on 64-bit, I can look at making the 64-bit machine compile for 31-bit mode.  I tried this a bit the other day, and seemed to be missing some libraries.





Chuck Tribolet
triblet@almaden.ibm.com (IBM business)
triblet@garlic.com (Personal)
http://www.almaden.ibm.com/cs/people/triblet



Chuck Tribolet/Almaden/IBM

04/03/2006 08:30 AM

To
David Ashley/Austin/IBM@IBMUS
cc
Subject
Re: Fw: ooRexx zSeries ErrorLink




Thanks.  First I gotta get a modern 31-bit system built (my real job needs it anyway).  Watch this space.


Chuck Tribolet
triblet@almaden.ibm.com (IBM business)
triblet@garlic.com (Personal)
http://www.almaden.ibm.com/cs/people/triblet



David Ashley/Austin/IBM

04/03/2006 08:29 AM

To
Chuck Tribolet/Almaden/IBM@IBMUS
cc
Subject
Re: Fw: ooRexx zSeries ErrorLink




Chuck -

I would be very interested in helping you with any problems you might have with compiling ooRexx as a 31-bit app. Please keep me informed as to you progress.

Thanks,
W. David Ashley
IBM Linux Technology Center
Linux Installation & Open Object Rexx Teams
IBM Phone: 512-838-0609 T/L 678-0609
Mobile Phone: 512-289-7506



Chuck Tribolet

04/03/06 09:27 AM


        To:        David Ashley/Austin/IBM@IBMUS
        cc:        
        Subject:        Re: Fw: ooRexx zSeries ErrorLink


It would be good if the 3.1 release at least gave a friendly "sorry, this doesn't work in 64-bit" message.

Another possibility is that I think the 64-bit zLinux supports running 31-bit apps.  I can try compiling on an equivalent 31-bit zLinux system, and moving the executable over to 64-bit.  In fact I could solve my problem by converting the machine where I want to run REXX to 31-bit.



Chuck Tribolet
triblet@almaden.ibm.com (IBM business)
triblet@garlic.com (Personal)
http://www.almaden.ibm.com/cs/people/triblet



David Ashley/Austin/IBM

04/01/2006 12:52 PM

To
Chuck Tribolet/Almaden/IBM@IBMUS
cc
Subject
Fw: ooRexx zSeries Error




Chuck -

As you can see from Rick's reply, the current version of ooRexx is limites to 32 bit environments. There are fundemantal problems with the code in 64 bit environments. This means that you will need to wait for version 4.0 to come out. This is a total reorg of the code and removal of the 32 bit limitations. Unfortunately, we are only about half way through our effort on that release and we don't really have a projected date for that release.

And don't be confused. There will be a 3.1 release of ooRexx but it is only bug fixes for the 3.0 code and does not address the 64 bit issues. Watch the announcements on the SourceForge and ooRexx websites. We are trying to keep more up to date information on both sites.

Thanks,
W. David Ashley
IBM Linux Technology Center
Linux Installation & Open Object Rexx Teams
IBM Phone: 512-838-0609 T/L 678-0609
Mobile Phone: 512-289-7506

----- Forwarded by David Ashley/Austin/IBM on 04/01/06 02:43 PM -----
"Rick McGuire" <object.rexx@gmail.com>

03/31/06 04:39 PM

       
        To:        David Ashley/Austin/IBM@IBMUS
        cc:        
        Subject:        Re: ooRexx zSeries Error



The traceback shows 64-bit addresses.  There's no way this will work on the old code base.

On 3/31/06, David Ashley < dashley@us.ibm.com> wrote:
Rick -

Please take a look at the ooRexx Help Forum. There is a new entry from an IBMer trying to use ooRexx on zSeries with Suse Linux. The interpreter compiles and installs but seg faults on startup. He posted a traceback on the error. Let's get together and see if we can help him.

Thanks,

W. David Ashley
IBM Linux Technology Center
Linux Installation & Open Object Rexx Teams
IBM Phone: 512-838-0609 T/L 678-0609
Mobile Phone: 512-289-7506