**tmux Support for Linux**
The `run` script with `cos_117.cfg` spawns xterms for consoles, which works well on desktops but not on VPS/servers without X forwarding or for users preferring SSH/shell/mosh.
To resolve, this commit adds tmux support via:
+ run_tmux - Script that manages a cray simulator session.
+ cos_117_tmux.cfg - Modified config that spawns tmux windows instead of xterms.
Benefits:
- Organizes cray simulator and consoles as tmux windows in a tmux session.
- Allows attaching, detaching, and exiting without stopping the simulator.
- Console windows can be scripted to pass input / output for development.
Usage:
```
run_tmux start
run_tmux attach
or execute `run_tmux` and select from menu.
```
Full Usage:
```
Usage: run_tmux {start|stop|restart|kill|attach|status}
start - Start the Cray simulator session
stop - Stop the Cray simulator session
restart - Restart the Cray simulator session
kill - Kill the Cray simulator session (unsafe)
attach - Attach to the Cray simulator session
status - List running Cray simulator and consoles
Use keys 'Ctrl b <0 to ...>' to move to specific windows
Use keys 'Ctrl b n' to move to the next window
Use keys 'Ctrl b p' to move to the previous window
Use keys 'Ctrl b d' to detach from the simulator session.
```
Tests:
- The script was checked in shellcheck with minimal issues detected.
- Tested on Ubuntu 22.04.3 LTS (aarch64)
- Tested on Arch Linux (x86_64)
**Experimental tmux Support for Linux**
The `run` script with `cos_117.cfg` spawns xterms for consoles, which works well on desktops but not on VPS/servers without X forwarding or for users preferring SSH/shell/mosh.
To resolve, this commit adds tmux support via:
+ tmux_run - Script that manages a cray simulator session.
+ cos_117_tmux.cfg - Modified config that spawns tmux windows instead of xterms.
Benefits:
- Organizes cray simulator and consoles as tmux windows in a tmux session.
- Allows attaching, detaching, and exiting without stopping the simulator.
Usage:
```
tmux_run start
tmux_run attach
or execute `tmux_run` and select from menu.
```
Full Usage:
```
Usage: tmux_run {start|stop|restart|kill|attach|status}
start - Start the Cray simulator session
stop - Stop the Cray simulator session
restart - Restart the Cray simulator session
kill - Kill the Cray simulator session (unsafe)
attach - Attach to the Cray simulator session
status - List running Cray simulator and consoles
Use keys 'Ctrl b <0 to ...>' to move to specific windows
Use keys 'Ctrl b n' to move to the next window
Use keys 'Ctrl b p' to move to the previous window
Use keys 'Ctrl b d' to detach from the simulator session.
```
Tests:
All options work as intended, except repeated starts/stops may cause race conditions, requiring the `kill` option.
The script passed shellcheck with no issues detected.
The original static linking works on distributions like Ubuntu that provide static libraries, but it would fail on some distributions like Arch Linux that primarily provide dynamic libraries.
This commit adds dynamic linking support to accommodate these distributions.
Usage:
```
make LINK_TYPE=dynamic build
```
Fixes build error:
```
g++ -std=c++14 -c -ffunction-sections -fdata-sections -g -Wall -Wno-unused-local-typedefs -Wno-reorder -fno-strict-aliasing -Wno-unused-variable -Wno-unused-result -Wno-psabi -Werror -gdwarf-2 -O3 -I. -I../sim_lib -I../httpd -DCRAY_HOST_SYSTEM=linux -D_FILE_OFFSET_BITS=64 cray_channels.cpp -c -g -o ../_obj/linux_release/cray_channels.o
In file included from sim_iop_con.h:22,
from sim_iop.h:24,
from cray_mainframe.h:18,
from cray_channels.cpp:8:
console.h:106:31: error: field ‘mReceiveBuf’ has incomplete type ‘boost::array<char, 1>’
106 | boost::array<char, 1> mReceiveBuf;
| ^~~~~~~~~~~
In file included from /usr/include/boost/lexical_cast/detail/converter_lexical.hpp:52,
from /usr/include/boost/lexical_cast/try_lexical_convert.hpp:32,
from /usr/include/boost/lexical_cast.hpp:33,
from /usr/include/boost/date_time/format_date_parser.hpp:14,
from /usr/include/boost/date_time/date_generator_parser.hpp:20,
from /usr/include/boost/date_time/date_facet.hpp:25,
from /usr/include/boost/date_time/gregorian/gregorian_io.hpp:16,
from /usr/include/boost/date_time/gregorian/gregorian.hpp:31,
from /usr/include/boost/date_time/posix_time/time_formatters.hpp:12,
from /usr/include/boost/date_time/posix_time/posix_time.hpp:24,
from /usr/include/boost/date_time/local_time/local_time.hpp:11,
from /usr/include/boost/date_time.hpp:15,
from logger.h:17,
from cray_logger.h:5,
from cray_channels.h:18,
from cray_channels.cpp:7:
/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp:88:11: note: declaration of ‘class boost::array<char, 1>’
88 | class array;
| ^~~~~
make[1]: *** [../engine.mak:217: ../_obj/linux_release/cray_channels.o] Error 1
```
- Updated to boost 1.82
- Fixed TAP driver enumeration change
- Added .bat files to start simulator
- Updated to platform tolset v143
- Removed NuGET boost dependency
- Added gitignore to hide most stuff that we don't want to track
- Removed profile from putty command line
- Changed TAP driver name to what is the default with OpenVPN install
"COS FRONT-END PROTOCOL INTERNAL REFERENCE MANUAL SM-0042", and make it
compatible with the implementation in DtCyber, the CDC Cyber 6000 series
emulator.
I've commented the loop out that was causing the infinite recursion.
Not sure why the code was there, I thought it had to do with
sluggish console. I don't see that though with the code removed,
so let's hope this is sufficient. That would be easy...