Lib Discussion => Heaven 7 Symposium => Topic started by: Kaylus on March 23, 2020, 02:49:36 am

Title: Compiling on modern Linux
Post by: Kaylus on March 23, 2020, 02:49:36 am
Hey everyone,

I was actually looking to get both Heaven 7 (v4 and Avatar) compiled recently; to get them working with anything past 3.3 will take a massive amount of work I think but I can't seem to get them working on any version of 3.3 - It appears like it might be related to the XERQ/ERQ utils. I've tried on AWS Linux (Redhat/Centos essentially), Ubuntu 18, and OSX - every time I get similar outcomes:

* When logging in as soon as the selection is made to login the driver segfaults but untraceably (unknown ??)
* Sometimes on v4 (depending on driver build) it crashes on the lsword.c heartbeat, but commenting that out goes back to the above.

Has anyone managed to get this running recently? I'd like to take a stab at cleaning it up but hoping I can shortcut past the segfault bit ;-)

Title: Re: Compiling on modern Linux
Post by: Lash on May 21, 2020, 06:50:50 am
Sorry, couldn't get it running.

Tried ldmud 3.6.2 with h7v3.1.1. (the h7v3.2.1 tgz file I have is corrupt or i would have tried that). Compiled ldmud with the H7 library installed in the /mud/H7 directory as instructed. I separately used both the H7 specific config files supplied with the driver and the h7v3.2.1 release package for compilation. While both compile and install, I've experienced the same problem as you at logon. When checking the error logs there are errors thrown requiring strict type checking. There are a LOT of files that require strict checking defined by pragma strict_types in the h7v3.1.1 mudlib. Maybe if strict type checking were removed or commented out it would work?

Title: Re: Compiling on modern Linux
Post by: Lash on May 22, 2020, 10:19:08 pm
So, I found a heaven7_4a2_pkg-004.tar.gz lying around in my compressed mud backup files.
It is bundled with the ldmud-3.3.718 driver. I compiled it and got it to run:

1. un-packaged the file. has a top directory of heaven7 containing the ldmud driver
    directory and the heaven7 mudlib in the directory called "lib"
    I changed the name of the driver directory from ldmud-3.3.718 to simply "ldmud"

2. copied the lib directory into the ldmud driver directory (ldmud/lib)

3. copied the h7_settings file from /lib/secure to the ldmud driver directory /src/settings

4. changed into driver directory /src and typed ./configure h7_settings

5. Makefile was generated and edited it so that prefix pointed to my ldmud
    driver directory (/home/ccoker/heaven7/ldmud) the rest of the settings were fine

6. make install-all

7. cd /ldmud/bin

8. ./ldmud 4242 &

9. wouldn't load because it could not find ACCESS.ALLOW and crapped out - had
    to copy from /secure to top /lib directory

10. restarted ./ldmud 4242 &

11. game loop started and I could log in

That's all

Title: Re: Compiling on modern Linux
Post by: Lash on May 25, 2020, 03:54:44 pm
Just to beat a dead horse I did some investigation into this.

The older bundled lib i mentioned earlier crapped out again.
However, I know it worked pretty well back in the day and even coded some areas for it. Turns out that was on an old Gateway running Ubuntu
14 on a 32 bit system. Under my current Linux Mint  19.2 64 bit the older bundle works sporadically at best as the OP pointed out.

However, I fired up the old box and recompiled it and got it running. It was a pain in the ass then and it is now. I forgot you had to manually copy the erq and indent utility files from their respective directories after they were compiled (make install-utils command didn't) and move them to the bin directory holding the ldmud executable file. That wasn't really clear from the instructions. Once done, just issue the ./ldmud <whateverport> command and the thing works.

The good news is that once everything was compiled and running on the old box I just copied the whole shebang (the whole mud directory) to my current computer and low and behold it runs well. I mean, it's not the latest driver and all, but it runs the heaven7_4a2_pkg-004 mud lib. Just to be clear I am using the executable files created on the older machine. Since everything is built into the executable I had to recreate the directory structure on the newer box so the program could find the mudlib. Trying to recompile from scratch was a no-go.

So, if one just wants to fire up the Heaven7 lib and play with it there is a way to do it so that it runs stably. But getting it to run to make it into an actual robust playable mud? I don't know - seems like a stretch. Also, even the mudlibs that are built for the ldmud driver are having a mess of problems with memory allocation resulting in segmentation faults as seen in some of their recent forum posts.

Oh yeah, you can always run the dos version of heaven7 under dos box....works great!