Inform6unix package (now with PunyInform!) almost ready

Now that the last lousy bug of Standard Library 6.12.5 is hopefully squashed, I’ve pulled together the inform6unix package for a new release. This one is significant in that PunyInform (version 2.5) is included. I spent the past couple months reworking the installation process to allow for multiple libraries to easily and cleanly coexist on the same machine. To compile a game using PunyInform, simply type punyinform mygame.inf. This starts a wrapper script that sets up paths for the Inform6 compiler to find the PunyInform library files. I haven’t tagged it for release quite yet because there are a couple documentation issues to deal with. Please take do a git clone and let me know if I missed anything.

https://gitlab.com/DavidGriffith/inform6unix/

11 Likes

Very nice!

I did a git clone to my local RPi 4 and compiled according to the readme instructions. Everything went as expected. Using the punyinform command on my Jamjar WIP game compiled it perfectly.

Thank you very much!

3 Likes

Is this on RPi repository? If not, would you provide steps to install it on my RPi? I want to check this out. Thanks.

2 Likes

I have been using Termux to self-host both a gitea instance and a full build tree using this repo on my LineageOS phone. It’s extremely handy to be able to fire it up and make quick changes with gitnex from anywhere, while doing most of my work on my computer at home.

Many thanks to @DavidG for fixing the odd linker problem I encountered on Android!

This new version of inform6 is not yet on any official RPi repository.

You must have git installed on your RPi.
All of these actions are via a terminal command line as sudo.

Make a new directory. In my case I did it under my user working directory for inform6:

  1. mkdir i6_6.35_6.12.5

  2. cd to the new directory

  3. sudo git clone https://gitlab.com/DavidGriffith/inform6unix.git
    (this will clone the repository to your local directory)

  4. sudo make submodules

  5. sudo make install

QED - That should do the trick.

Let me know how it works on your installation.

2 Likes

Doing git clone https://gitlab.com/DavidGriffith/inform6unix.git will put the results in its own subdirectory: inform6unix. You don’t need to do the clone or build as root. You DO need to do the actual make install as root though.

1 Like

Or you can use a Makefile like this (for a punyinform project: yours may differ):

all: $(wildcard *.z?)

inform6unix/Makefile:
        git clone --recursive https://gitlab.com/DavidGriffith/inform6unix.git

dep: inform6unix/Makefile
        git -C inform6unix pull
        git -C inform6unix submodule update --init --recursive

inform6unix/inform: inform6unix/Makefile inform6unix/src/*.c
        $(MAKE) -C inform6unix

LIB=$(wildcard inform6unix/punyinform/lib/*.h)
INFORM=inform6unix/inform

%.z3: %.inf ${LIB} ${INFORM}
        ${INFORM} -ue -E1 -d2 -s +include_path=./inform6unix/punyinform/lib/ -v3 '$$small' $<

%.z5: %.inf ${LIB} ${INFORM}
        ${INFORM} -E1 -d2 -s +include_path=./inform6unix/punyinform/lib/ -v5 '$$small' $<

%.z8: %.inf ${LIB} ${INFORM}
        ${INFORM} -E1 -d2 -s +include_path=./inform6unix/punyinform/lib/ -v8 '$$small' $<

clean:
        rm -f *.z? *.out

.PRECIOUS: %.z3 %.z5 %.z8

Drop your foo.inf next to it, and type make foo.z3 or whatever you like, and future bare invocations of make should refresh it.

I also have some rules to run regtest.py tests on each fresh build, so that all I need to do is type make and I get to see if anything I’ve done has broken any of my requirements for the game.

You are correct. Sudo isn’t always necessary but it doesn’t hurt.

I prefer to force a directory. My RPi has an extensive file system and I need to keep it organized to my liking.

Thanks for keep i6 up to date. It is a major benefit to the community.

1 Like

As I understand it, the programs will be located in directory inform6unix. That’s probably somewhere in the program directory, like /usr/bin or do I have to have it on /usr/home?

I want to have it as either a replacement of preexisting inform command (which inform), or an extra that I can use alongside (inform vs inform6 vs punyinform). I definitely want to have my games on my user directory /usr/home/pi/projects/if/inform.

Where do I set up the bin directory for a whole system and update all path, as to enable all users to have access to it? Apt-get install does these things automatically, so I’ve been ignorant of the details.

Edit: or do I just link it from /usr/local instead of updating all path?

That’s actually kind of confusing to me. I like to download, install, and run separately instead of doing it with just one Makefile.

I’m not sure how this is more “confusing”. Put the Makefile in. Put the inf file in. Run make. Magic happens! Dependencies are resolved for you, whether you’re on a fully-fledged Unix like Linux or MacOS, or in a stranger environment like Termux on Android! But perhaps I don’t understand what it is you’re trying to do that causes this approach to become “more confusing” than doing each step by hand manually.

I mean sure, it’s good to have system packages for these things. I used to be in correspondence with Gary Preston who managed the Debian packages for inform6, and I do hope he can make use of this work. But I like the advantages of a pair of files you can hand to people who aren’t using Debian or Ubuntu, and ask them to build it to help with testing or debugging. It’s also nice on systems where I don’t have root, but want to run exactly the same build toolchain.

If you don’t want to install Inform6 somewhere other than /usr/local, you can change the value of PREFIX in the Makefile. When testing this package, I set this to /home/dave/local and it worked fine as long as /home/dave/local/bin/ was in the shell’s $PATH.

I agree the makefile above is confusing and unnecessarily complex.

If you use the cookbook method in my post above it will work as if you had installed from an RPi repository.

Or, you can wait until the RPi foundation and its Debian derivative catch up and do it as you would normally install RPi sofware using APT. In that case, it is likely to be awhile.

I don’t suppose some IFDB maintainer can put out IF repository that I can add to APT? Seems to me adding an entry to repository database would be easier that all the steps involved. But I don’t know.

I’ll remove pre-existing inform program and re-install this version per instruction and see what happens.

I tried to get the Debian people to import my package with Debianization stuff added. But they want to have the compiler, libraries, and additions all installed separately.

ramstrong,

You can just install the earlier version via terminal command line:

sudo apt-get install inform6-compiler inform6-library

That is a recent version that works perfectly. You would have to install the punyinform library separately if you would like to use it but the standard library is excellent.

BTW: where are you having issues with the git install?

Confusing how? You save the file and you type make. No step three.

Or are you saying you are unfamiliar with Makefiles, and couldn’t have written it yourself? In that case, I hate to tell you that this thread is about a package with a much longer Makefile.

Make files are confusing to people new to unix/linux. I could have but the install from git is simple and straight forward.

Please excuse me. I didn’t mean to criticize. I was trying to look at it from the perspective of some that is new to the command line which seems to be the case in this instance.

very respectfully, Jeff

OK, it’s just that from my perspective your list of five steps including advice to do compilation as root seemed fragile and complicated compared to “save a file and run one command”. I’m not offended, but I’m genuinely surprised.

I needed step " 3.5 cd inform6unix " before I can do the makes.

But it works, and Ruins compiles just fine. Thanks.

I had preexisting inform installed, not through APT apparently. I couldn’t purge it. But it seems to just overwrite the installation just fine.

I still have to see if Punyinform will work, but the command is there. So, thank you for the help.

Edit:
I’m happy to report that PunyInform works well.

1 Like