=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Doc/ox.sm1,v retrieving revision 1.1.1.1 retrieving revision 1.17 diff -u -p -r1.1.1.1 -r1.17 --- OpenXM/src/kan96xx/Doc/ox.sm1 1999/10/08 02:12:02 1.1.1.1 +++ OpenXM/src/kan96xx/Doc/ox.sm1 2001/08/22 03:23:25 1.17 @@ -1,3 +1,4 @@ +%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.16 2001/08/22 02:36:34 takayama Exp $ %%%%%%%%%%%% Configuration: Specify your server path %%%%% ox, ox_sm1, oxlog are contained in kxx.tgz %%%%% These should be under /usr/local/lib/sm1 or LOAD_SM1_PATH @@ -6,7 +7,19 @@ /oxpath.oxlog (bin/oxlog) def /oxpath.xterm (/usr/X11R6/bin/xterm -icon -e ) def /oxpath.null ( ) def -/oxpath.null00 ( >& /dev/null ) def %% cf oxNoX +/oxpath.null00 ( >& /dev/null ) def %%cf. oxNoX +/oxpath.null00-pure-sh ( 2>&1 >/dev/null) def %%TODO:It does not work in our case +%%%%%%%%%%%%% The following is used only for sm1connectr-ssh. +%%%%%%%%%%%%% Configure path for ox and ox_sm1 on your remote machine. +/oxpath.oxlog.xterm-ssh (/home/taka/OpenXM/bin/oxlog /usr/X11R6/bin/xterm -icon -e ) def +/oxpath.oxsm1-ssh (/home/taka/OpenXM/bin/ox_sm1) def +/oxpath.ox-ssh (/home/taka/OpenXM/bin/ox) def +/myhostname-ssh (yama.math.kobe-u.ac.jp) def +%% for debugging. +%/oxpath.oxlog.xterm-ssh ( ) def +%/oxpath.oxsm1-ssh (/home/nobuki/OpenXM/bin/ox_sm1) def +%/oxpath.ox-ssh (/home/nobuki/OpenXM/bin/ox) def +%/myhostname-ssh (localhost) def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Old full path. %/oxpath.ox (/home/nobuki/kxx/ox) def @@ -40,7 +53,7 @@ ox.version [(Version)] system_variable gt (Please get it from http://www.math.kobe-u.ac.jp/KAN) message error } { } ifelse -(ox.sm1, --- open sm1 protocol module 10/1,1999 (C) N.Takayama. oxhelp for help) message-quiet +(ox.sm1, ---OpenXM protocol module 08/22, 2001 (C) N.Takayama. oxhelp for help) message-quiet /ox.ccc load isArray { } @@ -60,7 +73,7 @@ ox.version [(Version)] system_variable gt /SM_popCMO 262 def /SM_executeFunction 269 def -/SM_DUMMY_sendcmo 280 def +/SM_DUMMY_sendcmo 2147418112 1 add def %%% SM_PRIVATE+1 /SM_sync_ball 281 def /SM_pops 265 def @@ -74,6 +87,7 @@ ox.version [(Version)] system_variable gt /SM_control_kill 1024 def /SM_control_reset_connection 1030 def +/SM_control_spawn_server 1027 def /Etag_error 257 def @@ -127,7 +141,7 @@ ox.version [(Version)] system_variable gt (oxhelp for this message, [(oxWatch) client] extension to start a log.) ([(oxSerial)] extension serial-number-of-out-going-ox-packet.) (oxpopcmo1, oxpopcmo2, sm1connect2, sm1connect3) - (sm1connectr ) + (sm1connectr ox_launch, ox_launch_nox) (oxNoX : set an environment to invoke oxlog without xterm and to call oxlog with >& /dev/null) $ ex 1. (ox.sm1) run oxNoX sm1connectr $ $ ex 2. (oxasir.sm1) run oxNoX (x^2-1). fctr pmat ; $ @@ -148,13 +162,13 @@ ox.verbose { oxhelp } { } ifelse /sm1connect2 { [oxpath.oxlog.xterm oxpath.ox ( -ox ) oxpath.oxsm1 oxpath.null - ( &)] cat system + ( &)] cat system-csh % (kterm -iconic -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_sm1 &) system % For MSRI, or Eterm, %(xterm -icon -e /u/nobuki/tmp/kxx/ox -ox /u/nobuki/tmp/Ox/ox_sm1 &) system (If you start the server automatically, you may have a trouble to) message (oxreset. In order to avoid this trouble, start the server by hand.) message - (sleep 5) system + (sleep 5) system-csh [(localhost) 1300 1200] oxconnect /ox.ccc set (The server is binded to the variable ox.ccc) message ox.ccc.init @@ -164,13 +178,13 @@ ox.verbose { oxhelp } { } ifelse [oxpath.oxlog.xterm oxpath.ox ( -ox ) oxpath.oxsm1 ( -data 2300 -control 2200 ) oxpath.null - ( &)] cat system -% (kterm -iconic -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_sm1 -data 2300 -control 2200 &) system + ( &)] cat system-csh +% (kterm -iconic -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_sm1 -data 2300 -control 2200 &) system-csh % For MSRI -%(xterm -icon -e /u/nobuki/tmp/kxx/ox -ox /u/nobuki/tmp/Ox/ox_sm1 -data 2300 -control 2200&) system +%(xterm -icon -e /u/nobuki/tmp/kxx/ox -ox /u/nobuki/tmp/Ox/ox_sm1 -data 2300 -control 2200&) system-csh (If you start the server automatically, you may have a trouble to) message (oxreset. In order to avoid this trouble, start the server by hand.) message - (sleep 5) system + (sleep 5) system-csh [(localhost) 2300 2200] oxconnect /ox.ccc2 set (The server is binded to the variable ox.ccc2) message } def @@ -181,8 +195,8 @@ ox.verbose { oxhelp } { } ifelse [oxpath.oxlog.xterm oxpath.ox ( -ox ) oxpath.oxsm1 ( -portfile ) ox.ccc.portfile oxpath.null - ( &)] cat system - (sleep 5) system + ( &)] cat system-csh + (sleep 5) system-csh [(oxReadPortFile) ox.ccc.portfile] extension /ox.ccc.control set ox.ccc.control message [(localhost) ox.ccc.control 1200] /ox.ccc set @@ -342,7 +356,7 @@ ox.verbose { oxhelp } { } ifelse /oxreset { /arg1 set [(oxReq) arg1 SM_control_reset_connection] extension pop - [(oxGetFromControl) arg1 ] extension pop +%% [(oxGetFromControl) arg1 ] extension pop [(oxGet) arg1] extension message } def @@ -472,7 +486,7 @@ def /exhausted 0 def % clear the busy flag. /busy [1 1 enginesN { pop 0 } for ] def - (date) system + (date) system-csh {{ exhausted 0 eq { 0 1 enginesN 1 sub { @@ -501,7 +515,7 @@ def } { } ifelse } for } loop } timer - (date) system + (date) system-csh (result is in result) message (Number of s-pairs checked is ) messagen result length message } def @@ -573,7 +587,7 @@ ox.verbose { [oxpath.oxlog.xterm oxpath.ox ( -reverse -ox ) oxpath.oxsm1 ( -data ) data ( -control ) control ( -pass ) pass oxpath.null - ( &)] cat system + ( &)] cat system-csh [(oxCreateClient2) peer 0 pass] extension /ox.ccc set %% 0 means connect from only localhost. (The server is binded to the variable ox.ccc) message @@ -582,6 +596,62 @@ ox.verbose { popVariables } def +/sm1connectr-ssh { + /arg1 set + [/in-sm1connectr /pass /peer /data /control /name /machine + /your-peer /comm + ] pushVariables + [ + /machine arg1 0 get def + /name arg1 1 get def + + /pass [(oxGenPass)] extension def + /peer [(oxGetPort) myhostname-ssh] extension def + /data peer 1 get toString def + /control peer 3 get toString def + peer message + [(ssh -f ) machine ( -l ) name ( ") + oxpath.oxlog.xterm-ssh oxpath.ox-ssh ( -reverse -ox ) oxpath.oxsm1-ssh + ( -host ) myhostname-ssh + ( -data ) data ( -control ) control ( -pass ) pass + oxpath.null + ( ") + ] cat /comm set + (Executing the command : ) messagen comm message message + comm system + (sleep 5) system-csh + [(oxCreateClient2) peer 1 pass] extension /your-peer set + /arg1 your-peer def + ] pop + popVariables + arg1 +} def +[(sm1connectr-ssh) +[([hostname login-name] sm1connectr-ssh client) + (Starting oxpath.oxsm1-ssh by the launcher oxpath.ox-ssh on the "hostname".) + (cf. oxNoX ) + (Set the following varialbes to appropriate values:) + (oxpath.oxlog.xterm-ssh oxpath.oxsm1-ssh oxpath.ox-ssh myhostname-ssh ) + $Example 1: $ + $ *** Path names on the remote machine dc1.math.kobe-u.ac.jp $ + $ /oxpath.oxlog.xterm-ssh (/home/taka/OpenXM/bin/oxlog /usr/X11R6/bin/xterm -icon -e ) def $ + $ /oxpath.oxsm1-ssh (/home/taka/OpenXM/bin/ox_sm1) def $ + $ /oxpath.ox-ssh (/home/taka/OpenXM/bin/ox) def $ + $ *** The machine name on which you are running sm1. $ + $ /myhostname-ssh (yama.math.kobe-u.ac.jp) def $ + $ [(dc1.math.kobe-u.ac.jp) (taka)] sm1connectr-ssh /ox.ccc set $ + $Example 2: $ + $ *** Path names on the remote machine dc2.math.kobe-u.ac.jp $ + $ *** We will not use X11 debug windows. $ + $ oxNoX $ + $ /oxpath.oxlog.xterm-ssh (/home/taka/OpenXM/bin/oxlog ) def $ + $ /oxpath.oxsm1-ssh (/home/taka/OpenXM/bin/ox_sm1) def $ + $ /oxpath.ox-ssh (/home/taka/OpenXM/bin/ox) def $ + $ *** the machine name on which you are running sm1. $ + $ /myhostname-ssh (dc1.math.kobe-u.ac.jp) def $ + $ [(dc2.math.kobe-u.ac.jp) (taka)] sm1connectr-ssh /ox.ccc set $ +]] putUsages + /addSlash { /arg1 set [/in-addSlash /ss /aaa /ans] pushVariables @@ -627,6 +697,19 @@ ox.verbose { } { } ifelse } { } ifelse + %% Else first try to find it in OpenXM_HOME + [(getenv) (OpenXM_HOME)] extension /tname set + tname isString + { + tname addSlash /tname set + [tname (lib/sm1/)] cat /tname set + [(stat) [tname fname] cat] extension + 0 get isInteger %% The file was found. + { /fullname [tname fname] cat def + /getPathNameSm1.LLL goto + } { } ifelse + } { } ifelse + %% Else try to find it in /usr/local/lib/sm1 [(stat) [(/usr/local/lib/sm1/) fname] cat] extension 0 get isInteger %% The file was found. @@ -637,8 +720,11 @@ ox.verbose { %% Otherwise error. [(getPathNameSm1: The file ) fname ( could not be found ) - (neigher in LOAD_SM1_PATH=) + (neigher in LOAD\_SM1\_PATH=) [(getenv) (LOAD_SM1_PATH)] extension + ( nor in OpenXM\_HOME/lib/sm1=) + [(getenv) (OpenXM_HOME)] extension + (/lib/sm1) ( nor in /usr/local/lib/sm1) ] cat /getPathNameSm1.errorMessage set getPathNameSm1.errorMessage message @@ -653,8 +739,9 @@ ox.verbose { [(getPathNameSm1) [([fname] getPathNameSm1 fullname) (string fname, fullname) - (This command searches the fname in /usr/local/lib/sm1 and LOAD_SM1_PATH) - (and returns the fullname.) + (This command searches the fname in LOAD_SM1_PATH, ) + (OpenXM_HOME/lib/sm1, and /usr/local/lib/sm1) + (It returns the fullname.) ]] putUsages /getPathNameAsir { @@ -669,13 +756,6 @@ ox.verbose { /getPathNameAsir.LLL goto } { } ifelse - %% Else first try to find it in /usr/local/lib/asir - [(stat) [(/usr/local/lib/asir/) fname] cat] extension - 0 get isInteger %% The file was found. - { /fullname [(/usr/local/lib/asir/) fname] cat def - /getPathNameAsir.LLL goto - } { } ifelse - %% Else try to find it in ASIR_LIBDIR [(getenv) (ASIR_LIBDIR)] extension /tname set tname isString @@ -688,10 +768,19 @@ ox.verbose { } { } ifelse + %% Else try to find it in /usr/local/lib/asir + [(stat) [(/usr/local/lib/asir/) fname] cat] extension + 0 get isInteger %% The file was found. + { /fullname [(/usr/local/lib/asir/) fname] cat def + /getPathNameAsir.LLL goto + } { } ifelse + %% Otherwise error. - [ (getPathNameAsir: The file ) fname + [ (getPathNameAsir: The file ) + fname (ox_asir) eq + {(ox\_asir)} { fname }ifelse ( could not be found ) - (neigher in /usr/local/lib/asir nor in ASIR_LIBDIR. ) + (neigher in /usr/local/lib/asir nor in ASIR\_LIBDIR. ) ] cat /getPathNameAsir.errorMessage set getPathNameAsir.errorMessage message ] pop popVariables getPathNameAsir.errorMessage error @@ -710,5 +799,226 @@ ox.verbose { ]] putUsages +/ox_launch_nox { + /@@@.ox_launch_nox 1 def + ox_launch_aux +} def +/ox_launch { + /@@@.ox_launch_nox 0 def + ox_launch_aux +} def -initializePathNamesForOx %% This should be +/ox_launch_aux { + /arg1 set + [/in-launch_nox /pass /peer /data /control /name /machine + /your-peer /comm /remoteOpenXMbin /remoteServer /myhost + /argNumber /aaa + ] pushVariables + [ + /aaa arg1 def + /argNumber aaa length def + /machine aaa 0 get def + machine (localhost) eq argNumber 5 lt and { + aaa 1 get ox_launch_localhost /your-peer set + /LLL.end goto + } { + /remoteOpenXMbin aaa 1 get def + /remoteServer aaa 2 get def + /name aaa 3 get def + /myhost aaa 4 get def + } ifelse + + /pass [(oxGenPass)] extension def + /peer [(oxGetPort) myhost] extension def + /data peer 1 get toString def + /control peer 3 get toString def + peer message + [(ssh -f ) machine ( -l ) name ( ") + + @@@.ox_launch_nox { + } { + remoteOpenXMbin(/oxlog ) + ( /usr/X11R6/bin/xterm -icon -e ) + } ifelse + + ( ) remoteOpenXMbin (/ox ) + ( -reverse -ox ) remoteServer + ( -host ) myhost + ( -data ) data ( -control ) control ( -pass ) pass + oxpath.null + ( ") + ] cat /comm set + (Executing the command : ) messagen comm message message + comm system + (sleep 5) system-csh + [(oxCreateClient2) peer 1 pass] extension /your-peer set + /LLL.end + /arg1 your-peer def + ] pop + popVariables + arg1 +} def + +[(ox_launch) +[( [remote remote-OpenXM-bin remote-ox-server remote-login-name myhostname] ) + ( ox_launch client ) + $or $ + $ [(localhost) ox-server-name] ox_launch client$ + (Example 1: ) + $ [(tau.math.kobe-u.ac.jp) (/home/taka/OpenXM/bin) $ + $ (/home/taka/OpenXM/src/ox_math/ox_math) (taka) (dc4.math.kobe-u.ac.jp) $ + $ ] ox_launch /@@@.oxmath set $ +]] putUsages + +[(ox_launch_nox) +[( [remote remote-OpenXM-bin remote-ox-server remote-login-name myhostname] ) + ( ox_launch_nox client ) + (Example 1: ) + $ [(tau.math.kobe-u.ac.jp) (/home/taka/OpenXM/bin) $ + $ (/home/taka/OpenXM/src/ox_math/ox_math) (taka) (dc4.math.kobe-u.ac.jp) $ + $ ] ox_launch_nox /@@@.oxmath set $ +]] putUsages + +/system-csh { + /arg1 set + [/in-system-csh /com /com2] pushVariables + [ + /com arg1 def + [(/bin/csh -c ") com (")] cat + /com2 set + %%com2 message + com2 system + ] pop + popVariables +} def + +/ox_launch_localhost { + /arg1 set + [/in-ox_launch_localhost /pass /peer /data /control /oxserver + /my-peer] pushVariables + [ + /oxserver arg1 def + /pass [(oxGenPass)] extension def + /peer [(oxGetPort) (localhost)] extension def + /data peer 1 get toString def + /control peer 3 get toString def + peer message + [oxpath.oxlog.xterm oxpath.ox ( -reverse -ox ) oxserver + ( -data ) data ( -control ) control ( -pass ) pass + oxpath.null + ( &)] cat system-csh + [(oxCreateClient2) peer 0 pass] extension /my-peer set + %% 0 means connect from only localhost. + (The server is binded to the variable ox.ccc) message + /arg1 my-peer def + ] pop + popVariables + arg1 +} def + +%% Test code for oxCreateControl_RFC_101 +/sm1StartControl101 { + [/in-sm1connectr /pass /peer /data /control ] pushVariables + [ + /pass [(oxGenPass)] extension def + /peer [(oxGetPort1) (localhost)] extension def + /data peer 1 get toString def + peer message + [(/home/nobuki/OpenXM/src/oxc/oxc) + ( -c ) pass ( -h ) (localhost) ( -p ) data ( -x ) + oxpath.null + ( &)] cat system-csh + + [(oxCreateControl_RFC_101) peer 0 pass] extension /ox.ccc set + %% 0 means connect from only localhost. + (The server is binded to the variable ox.ccc) message + ox.ccc + ] pop + popVariables +} def + +/sm1StartEngine101 { + [/in-sm1StartEngine101 /peer /data /control /engineID] pushVariables + [ + /peer [(oxGetPort1) (localhost)] extension def + /data peer 1 get def + + ox.ccc data oxpushcmo + ox.ccc (/home/nobuki/OpenXM/bin/ox_sm1) oxpushcmo + [(oxPushCMD) ox.ccc SM_control_spawn_server] extension + ox.ccc oxpopcmo /engineID set + [(oxCreateEngine_RFC_101) peer 0 (Empty) engineID] extension + /ox.ddd set + (The engine is binded to the variables ox.ddd) message + ] pop + popVariables + arg1 +} def + +/OxWorkDirCreated false def +/oxWorkDir { + [/in-oxWorkDir /workHome /work] pushVariables + [ + [(getenv) (OpenXM_tmp)] extension tag 0 eq { + /workHome [ + [(getenv) (HOME)] extension + (/OpenXM_tmp) + ] cat def + }{ + /workHome + [(getenv) (OpenXM_tmp)] extension + def + }ifelse + /work [workHome (/) [(getpid)] extension toString] cat def + + OxWorkDirCreated not { + [(stat) workHome] extension 0 get tag 0 eq { + [(Working directory ) workHome ( will be created.)] cat + message + [(mkdir ) workHome] cat system + }{ + } ifelse + + [(stat) work] extension 0 get tag 0 eq { + [(Working directory ) work ( will be created.)] cat + message + [(mkdir ) work] cat system + }{ + } ifelse + /OxWorkDirCreated true def + }{ } ifelse + /arg1 work def + ] pop + popVariables + arg1 +} def +[(oxWorkDir) + [(oxWorkDir returns a name of working directory for OpenXM processes.) + (If the working direcotry does not exist, it creates ~/OpenXM_tmp/[pid].) + (The name can be changed by setting a value to the environmental variable) + (OpenXM_tmp. cf. oxNewFileName) + ] +] putUsages + +/OxFileName 0 def +/oxNewFileName { + [/in-oxNewFileName /name] pushVariables + [ + /name [(work) OxFileName toString] cat def + /OxFileName OxFileName 1 add def + /arg1 name def + ] pop + popVariables + arg1 +} def +[(oxNewFileName) + [(oxNewFileName returns a unique file name for a working file.) + (cf. oxWorkDir) + ] +] putUsages + +[(ostype)] extension 0 get +(windows) eq { +}{ + initializePathNamesForOx %% This should be +} ifelse