Good morning,
I am attempting to get the JS version of TW2 up and running with
Synchronet. Using the directions in the SYSOP.TXT file, I run the
following command:
/sbbs/exec/jsexec /sbbs/xtrn/tw2/twint500.js
That pops open a window with a blue-and-yellow screen, similar to SCFG,
that says TradeWars 2 Initialization at the top left, and the date & time
at the top right. The only thing in the middle of the screen is a very small blue-and-yellow box. There are no options listed in the box. The only thing I can do on that screen is press ESC twice to exit.
Shouldn't there be some options in there? :)
From the output in the lxterminal window, I am running JSexec v3.17a-Linux (rev 1.184) Compiled Nov 4 2017 13:52:09 with GCC 6.3.0; JavaScript-C 1.8.5 2011-03-31. JSON client is v1.29.
That pops open a window with a blue-and-yellow screen, similar to SCFG, that says TradeWars 2 Initialization at the top left, and the date & time at the top right. The only thing in the middle of the screen is a very small blue-and-yellow box. There are no options listed in the box. The only thing I can do on that screen is press ESC twice to exit.
I am attempting to get the JS version of TW2 up and running with Synchronet. Using the directions in the SYSOP.TXT file, I run the following command:
/sbbs/exec/jsexec /sbbs/xtrn/tw2/twint500.js
The problem you're describing was fixed on Nov-17: http://cvs.synchro.net/cgi-bin/viewcvs.cgi/src/sbbs3/js_uifc.c
So you just need to cvs-update and recompile. :-)
I added a section to ctrl/json-service.ini with..
[tw2]
dir=../xtrn/tw2/
and that seems to have gotten me past this..
If I recall correctly, some breaking changes were made to the UIFC API for >javascript a few years ago. Sounds like this script is a victim of that, and >it will need to be fixed. Probably not much a user (sysop) can do to work >around it, unless the game offers some kind of non-interactive setup process.
The problem you're describing was fixed on Nov-17: http://cvs.synchro.net/cgi-bin/viewcvs.cgi/src/sbbs3/js_uifc.c
So you just need to cvs-update and recompile. :-)
I still have the same issue, but it takes approx 1 minute to open the unpopulated TradeWars 2 Initialization window, where it was pretty instantaneous before.
That could be because if I follow the cvs update directions on the wiki, I eventually get to this step:
cd /sbbs/src/sbbs3; make RELEASE=1 symlinks
And get the following error:
make: *** No rule to make target 'symlinks'. Stop.
If I replace symlinks with install, it says there is nothing for it to do. The next step gives the same "no rule" error. The other steps all appeared to do what they were supposed to, although it was not much.
The comments in my copy of js_uifc.c are now dated 2017/11/17 10:03:07, so it does look like I have an updated copy, FWIW.
That would be nice. I much rather prefer editing an INI or CFG file over having a script or program build it for me. If it came with an example of either, I don't see them.
I added a section to ctrl/json-service.ini with..
[tw2]
dir=../xtrn/tw2/
and that seems to have gotten me past this..
I tried that, too. No improvements on this end. :)
That could be because if I follow the cvs update directions on the
wiki, I eventually get to this step:
cd /sbbs/src/sbbs3; make RELEASE=1 symlinks
And get the following error:
make: *** No rule to make target 'symlinks'. Stop.
If I replace symlinks with install, it says there is nothing for it to
do. The next step gives the same "no rule" error. The other steps all appeared to do what they were supposed to, although it was not much.
That could be because if I follow the cvs update directions on the wiki, I eventually get to this step:
cd /sbbs/src/sbbs3; make RELEASE=1 symlinks
And get the following error:
make: *** No rule to make target 'symlinks'. Stop.Did you run "cvs update" before that? That sounds like you don't have the latest src/sbbs3/GNUmakefile.
And when you run jsexec, what does it say the build date is?
That's an important step nevertheless, so keep those lines in place in your json-service.ini file. This tells your local JSON-DB server to host a 'tw2' module, and the game's configuration script will want to access that module when it does its thing.
Depending on what you want to accomplish, if you just want a release build, >"make" should do just fine. If you want DOSEMU support, "make USE_DOSEMU=1" is >good.. Check the wiki, there is only a mention of SYMLINK when you're >installing for the first time. Scroll down a bit and you'll see the "Upgrading"
section.
That could be because if I follow the cvs update directions on the wiki, I eventually get to this step:
cd /sbbs/src/sbbs3; make RELEASE=1 symlinks
And get the following error:
make: *** No rule to make target 'symlinks'. Stop.Did you run "cvs update" before that? That sounds like you don't have the latest src/sbbs3/GNUmakefile.
I ran the following, from the wiki:
export CVSROOT=:pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs
cvs update -d exec
cvs update -d src 3rdp
Then I ran the step quoted above.
And when you run jsexec, what does it say the build date is?
JSexec v3.17a-Linux (rev 1.184)
Compiled Nov 4 2017 13:52:09 with GCC 6.3.0
GNUmakefile in /src/sbbs3 is dated November 26, 2015, which sounds wrong for sure.
When I am looking at:
http://wiki.synchro.net/install:nix
The Updating section shows symlinks on the make lines, on Step 4 parts
1 and 2.
Maybe we are looking at different pages? :D
Nope. Same page. That must have been something added recently, as I've never seen or used "symlinks" on those lines before.
Hello Dumas,
On Mon Jan 01 2018 17:44:00, Dumas Walker wrote to ACCESSION:
When I am looking at:
http://wiki.synchro.net/install:nix
The Updating section shows symlinks on the make lines, on Step 4 parts 1 and 2.
Maybe we are looking at different pages? :D
Nope. Same page. That must have been something added recently, as I've never seen or used "symlinks" on those lines before.
The only time I use SYMLINK=1 is when compiling for the first time, or changing
between a RELEASE build and a DEBUG build, which I also haven't done for quite some time, so I haven't needed to redo symlinks in a long time. Once they're created for the first time, they don't go away unless you delete them. ;)
Nope. Same page. That must have been something added recently, as
I've never seen or used "symlinks" on those lines before.
I think it has been. I recently updated the BBS and I used symlinks on
the command line as the wiki said and everything went smoothly here..
Happy New Year, BTW.. :)
The only time I use SYMLINK=1 is when compiling for the first time,
or changing between a RELEASE build and a DEBUG build, which I also
haven't done for quite some time, so I haven't needed to redo
symlinks in a long time. Once they're created for the first time,
they don't go away unless you delete them. ;)
Right, but when people switch between release and debug builds or
copies and symlinks, those new targets can come in handy.
Hello Digital,
On Mon Jan 01 2018 23:42:10, Digital Man wrote to Accession:
The only time I use SYMLINK=1 is when compiling for the first time,
or changing between a RELEASE build and a DEBUG build, which I also
haven't done for quite some time, so I haven't needed to redo
symlinks in a long time. Once they're created for the first time,
they don't go away unless you delete them. ;)
Right, but when people switch between release and debug builds or copies and symlinks, those new targets can come in handy.
So does "SYMLINK=1" and "symlinks" effectively do the same thing then? If so, we're accomplishing the same goal just in different (yet similar) ways. ;)
So does "SYMLINK=1" and "symlinks" effectively do the same thing
then? If so, we're accomplishing the same goal just in different
(yet similar) ways. ;)
They're 2 different makefiles. The install/GNUmakefile (where
SYMLINK=1 option may be used) is normally only used for the initial install. The src/sbbs3/GNUmakefile is used for building sbbs (and lot
of the libraries and utilities) and now has "install" and "symlinks" targets. You don't need to recreate symlinks if they already exist and point where you want them to (but you already knew that). :-)
JSexec v3.17a-Linux (rev 1.184)Okay, that means it hasn't been built since Nov-4-2017, so it won't include the
Compiled Nov 4 2017 13:52:09 with GCC 6.3.0
fix for JS uifc.
What's likely happening is that the jsexec you're running is not the latest one
you built. If you run "locate jsexec" on your system, it should report to all >of the files named "jsexec" on your file system. My guess is, you have more >than one.
When you run jsexec, are you typing the absolute path (e.g. /sbbs/exec/jsexec) >or just letting your PATH pick the one to run? If you type "which jsexec", >it'll tell you which one is running (if any) if you just type "jsexec" without >the path.
My guess is that either the jsexec that's in your path is an old one or you're >specifying the path to /sbbs/exec/jsexec which is an old one. Or maybe it's a >symlink to src/sbbs3/gcc.linux.exe.debug/jsexec but you built a release binary >when you ran make (or vice versa).
I know this seems like a lot of hassle just to run a door game, but you should >get a handle on how you can can update sbbs (including jsexec) and actually >benefit from those updates. :-)
Maybe we are looking at different pages? :D
The only time I use SYMLINK=1 is when compiling for the first time, or changing
between a RELEASE build and a DEBUG build, which I also haven't done for quite >some time, so I haven't needed to redo symlinks in a long time. Once they're >created for the first time, they don't go away unless you delete them. ;)
you built. If you run "locate jsexec" on your system, it should report to all >of the files named "jsexec" on your file system. My guess is, you have more >than one.
You are right, but:
/opt/sbbs/exec/jsexec
/opt/sbbs/src/sbbs3/gcc.linux.exe.release/jsexec
/sbbs/exec/jsexec
/sbbs/src/sbbs3/gcc.linux.exe.release/jsexec
Those first two are old, from 2009, and are from a backup of a previous installation. The last two are a symlink and an actual build, from
November 4, 2017. I do not appear to have one more recent. I have tried running both "jsexec" and "/sbbs/exec/jsexec" during my attempts.
When you run jsexec, are you typing the absolute path (e.g. /sbbs/exec/jsexec) >or just letting your PATH pick the one to run? If you type "which jsexec", >it'll tell you which one is running (if any) if you just type "jsexec" without >the path.
I get no output from "which jsexec".
My guess is that either the jsexec that's in your path is an old one or you're >specifying the path to /sbbs/exec/jsexec which is an old one. Or maybe it's a >symlink to src/sbbs3/gcc.linux.exe.debug/jsexec but you built a release binary >when you ran make (or vice versa).
Apparently I did not build one when I ran make. :)
I know this seems like a lot of hassle just to run a door game, but you should >get a handle on how you can can update sbbs (including jsexec) and actually >benefit from those updates. :-)
Yes, I would like to get a handle on that, especially since I seem to have difficulty with it. Since you did not mention it, I am assuming that I should be following the directions, as stated, on the UNIX install wiki page under the "Updating" heading? That is what I have been trying.
Thanks for you assistance!
on edit: decided to try something on my own. I split the line:
cd /sbbs/src/sbbs3; make RELEASE=1 symlinks
into:
cd /sbbs/src/sbbs3
make RELEASE=1 symlinks
Still got the "symlinks" error.
So I ran "make RELEASE=1" in the
/sbbs/src/sbbs3 directory without "symlinks". Well, that caused *something* to happen! It ran 10-15 minutes, compiling this and that, befure ending with this new error:
make: *** No rule to make target 'base64.h', needed by 'gcc.linux.obj.release-mt/ js_file.o'. Stop.
Then you're missing an update. What was the "cvs update" command you ran when you updated?
It sounds like you're missing rev 1.42 of src/sbbs3/targets.mk
You need to perform a "make clean" first as that file has been moved. See "Clean Rebuild" at http://wiki.synchro.net/install:nix#updating
Then you're missing an update. What was the "cvs update" command you ran when you updated?
See below.
It sounds like you're missing rev 1.42 of src/sbbs3/targets.mk
Mine is dated December 31. Loading it up in mcview gives this info:
$Id: targets.mk,v 1.42 2017/12/13 21:25:21 rswindle Exp $
You need to perform a "make clean" first as that file has been moved. See "Clean Rebuild" at http://wiki.synchro.net/install:nix#updating
OK, here is a cut-and-paste from my lxterminal window:
$ export CVSROOT=:pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs
$ cvs update -d exec
$ cvs update -d src 3rdp
$ cd /sbbs/src/sbbs3
$ make RELEASE=1 USE_DOSEMU=1 clean
Deleting gcc.linux.obj.release/
Deleting gcc.linux.obj.release-mt/
Deleting gcc.linux.lib.release/
Deleting gcc.linux.exe.release/
$ cd scfg
$ make RELEASE=1 USE_DOSEMU=1 clean
Deleting gcc.linux.obj.release/
Deleting gcc.linux.obj.release-mt/
Deleting gcc.linux.lib.release/
Deleting gcc.linux.exe.release/
$ cd /sbbs/src/sbbs3
$ make RELEASE=1 USE_DOSEMU=1 symlinks
make: *** No rule to make target 'symlinks'. Stop.
$ make RELEASE=1 symlinks
make: *** No rule to make target 'symlinks'. Stop.
~/sbbs/src/sbbs3$ cvs status targets.mk ===================================================================
File: targets.mk Status: Up-to-date
Working revision: 1.42
Repository revision: 1.42 /cvsroot/sbbs/src/sbbs3/targets.mk,v
Commit Identifier: YArZCgUZpz38bMiA
You need to perform a "make clean" first as that file has been moved. See
"Clean Rebuild" at http://wiki.synchro.net/install:nix#updating
OK, here is a cut-and-paste from my lxterminal window:
$ export CVSROOT=:pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs
$ cvs update -d exec
$ cvs update -d src 3rdp
$ cd /sbbs/src/sbbs3
$ make RELEASE=1 USE_DOSEMU=1 clean
Deleting gcc.linux.obj.release/
Deleting gcc.linux.obj.release-mt/
Deleting gcc.linux.lib.release/
Deleting gcc.linux.exe.release/
$ cd scfg
$ make RELEASE=1 USE_DOSEMU=1 clean
Deleting gcc.linux.obj.release/
Deleting gcc.linux.obj.release-mt/
Deleting gcc.linux.lib.release/
Deleting gcc.linux.exe.release/
$ cd /sbbs/src/sbbs3
$ make RELEASE=1 USE_DOSEMU=1 symlinks
make: *** No rule to make target 'symlinks'. Stop.
$ make RELEASE=1 symlinks
make: *** No rule to make target 'symlinks'. Stop.
Okay, good. So the base64.h error went away. The symlinks build error is mysterious. What if you remove that from the make command-line?
~/sbbs/src/sbbs3$ cvs status targets.mk ===================================================================
File: targets.mk Status: Up-to-date
Working revision: 1.42
Repository revision: 1.42 /cvsroot/sbbs/src/sbbs3/targets.mk,v
Commit Identifier: YArZCgUZpz38bMiA
$ cvs status targets.mk
cvs status: No CVSROOT specified! Please use the `-d' option
cvs [status aborted]: or set the CVSROOT environment variable.
$ export CVSROOT=:pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs
$ cvs status targets.mk
cvs status: cannot open CVS/Entries for reading: No such file or directory cvs [status aborted]: no repository
Does that provide any clues? :)
You need to perform a "make clean" first as that file has been moved. See
"Clean Rebuild" at http://wiki.synchro.net/install:nix#updating
OK, here is a cut-and-paste from my lxterminal window:
$ export CVSROOT=:pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs
$ cvs update -d exec
$ cvs update -d src 3rdp
$ cd /sbbs/src/sbbs3
$ make RELEASE=1 USE_DOSEMU=1 clean
Deleting gcc.linux.obj.release/
Deleting gcc.linux.obj.release-mt/
Deleting gcc.linux.lib.release/
Deleting gcc.linux.exe.release/
$ cd scfg
$ make RELEASE=1 USE_DOSEMU=1 clean
Deleting gcc.linux.obj.release/
Deleting gcc.linux.obj.release-mt/
Deleting gcc.linux.lib.release/
Deleting gcc.linux.exe.release/
$ cd /sbbs/src/sbbs3
$ make RELEASE=1 USE_DOSEMU=1 symlinks
make: *** No rule to make target 'symlinks'. Stop.
$ make RELEASE=1 symlinks
make: *** No rule to make target 'symlinks'. Stop.
Okay, good. So the base64.h error went away. The symlinks build error is mysterious. What if you remove that from the make command-line?
The last time I tried it, it ran for 5-10 minutes before
giving the base64.h error. I later realized it had erased most of my executables from the sbbs3 directory tree. So I am a little leary to try
it again. :)
FYI, that was the first and only time I saw the base64.h error was when I ran "make RELEASE=1" without the "symlinks" included.
$ cvs status targets.mk
cvs status: No CVSROOT specified! Please use the `-d' option
cvs [status aborted]: or set the CVSROOT environment variable.
$ export CVSROOT=:pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs
$ cvs status targets.mk
cvs status: cannot open CVS/Entries for reading: No such file or directory cvs [status aborted]: no repository
Does that provide any clues? :)You didn't get the source using cvs in the first place?
Do you not have a src/sbbs3/CVS directory?
The last time I tried it, it ran for 5-10 minutes before
giving the base64.h error. I later realized it had erased most of my executables from the sbbs3 directory tree. So I am a little leary to try it again. :)
FYI, that was the first and only time I saw the base64.h error was when I ran "make RELEASE=1" without the "symlinks" included.
A "clean" fixed the base64.h error. It had nothing to do with including or excluding the "symlinks" argument.
$ cvs status targets.mk
cvs status: No CVSROOT specified! Please use the `-d' option
cvs [status aborted]: or set the CVSROOT environment variable.
$ export CVSROOT=:pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs
$ cvs status targets.mk
cvs status: cannot open CVS/Entries for reading: No such file or directory cvs [status aborted]: no repository
Does that provide any clues? :)You didn't get the source using cvs in the first place?
I did do so.
Do you not have a src/sbbs3/CVS directory?
Yes.
~/src/sbbs3/CVS$ ls
Entries Repository Root Tag
Should I have been in the /src/sbbs3 directory when I ran the cvs status command?
The last time I tried it, it ran for 5-10 minutes before
giving the base64.h error. I later realized it had erased most of my executables from the sbbs3 directory tree. So I am a little leary to try it again. :)
FYI, that was the first and only time I saw the base64.h error was when I ran "make RELEASE=1" without the "symlinks" included.
A "clean" fixed the base64.h error. It had nothing to do with including or excluding the "symlinks" argument.
Ok, so running without symlinks does cause all of the make steps listed in the wiki to complete with success, as does the update.js step. However, restarting synchronet after the compile does not work so good. It ends in
a segmentation fault. I had the output captured but apparently it got deleted when I had to restore from backup.
Just for fun, I did go back through the wiki and attempt to install all of the dependencies. apt-get reported that all were installed at at their newest versions - none missing.
Also, one thing I did see synchronet complain about before abending was the SBBSCTRL not being set. I find this confusing as the script that starts synchronet contains these three lines, before sbbs is called:
export HOME=/sbbs
export SBBSCTRL=/sbbs/ctrl
export SBBSNODE=/sbbs/node1
???
The instructions for debugging crashes (e.g. segfaults) on *nix are here: http://wiki.synchro.net/howto:gdb
It'd be helpful if you had a core file from the crash.
I think the problem is that I probably have to keep up with a cvs/make/etc. routine pretty regular in order not to get out of sync at some point. I am not a PC platform developer, or a bleeding edge user, so I would not be one to do so.
That is part of the reason I chose debian stable over slackware... I knew I'd wind up screwing up a "compile the packages yourself" distro because I would not keep up with every single release of my favorite packages. I figured out that a release with prebuild binaries and package/dependency management built in was going to be my friend. :)
The instructions for debugging crashes (e.g. segfaults) on *nix are here: http://wiki.synchro.net/howto:gdb
It'd be helpful if you had a core file from the crash.
The instructions for debugging crashes (e.g. segfaults) on *nix are here: http://wiki.synchro.net/howto:gdb
It'd be helpful if you had a core file from the crash.
OK, so after Al's encouragement, I decided to try a different approach. I set up a second sbbs directory, /opt/sbbs, and did a brand new install there. Afterwards, I ran my script that exports paths under /opt/sbbs and starts sbbs.
It came up without any apparent issue.
Then I created a symlink under the /opt/bbs "test" environment back to the /sbbs/data directory in "production." I did the same thing with the ctrl directory. When I refired /opt/sbbs/exec/sbbs, I get a segfault again... 26991.
From what I can tell, I have to compile a debug version in order to get core files to generate?
Or will changing the limits.conf settings cause the core
file to be created without using a debug version?
Sysop: | Ree |
---|---|
Location: | Toronto, ON |
Users: | 2 |
Nodes: | 10 (0 / 10) |
Uptime: | 142:55:02 |
Calls: | 369 |
Files: | 2 |
Messages: | 38,444 |