Beta release of Inform App for Linux

Thanks for tracking down that the problem is that file URIs are allowed to have apostrophes. I think I started to look into this bug when you mentioned it last time, in order to report it to GTK, but fell flat at reproducing it. When I tried to make a minimal example, though, gtk_recent_manager_add_full seemed to accept apostrophes just fine. I tracked the bug down to something in my code after all, and have pushed a fix.

Sorry, I can’t make head nor tail of why the Inform compiler is being executed during the build process. I apologize for the lack of clear instructions on what to copy where. I’ve also pushed an update to inform7-ide/INSTALL.md at main · ptomato/inform7-ide · GitHub

1 Like

Oh, you were the one wrapping the names in single quotes! Your fix should do the trick.

The problem is visible in the file quite clearly: the line in the recently_used.xbel file looks sort of like

url=‘Nathanael’s File’

Then, when going to load the names of the recently used files, it reads the apostrophe as the closing quote delimiter and barfs because it can’t parse the rest of the file.

I was just assuming that the recent_manager was managing the recently_used.xbel file, but seems like you were putting the single-quoted strings in it. Thanks for fixing the problem!


Thanks for updating the build instructions… I’m still having some copy-over trouble. I see how to copy the retrospective directory, but it looks like I have to copy some stuff into “intools” too?

Aha, I may have figured it out – it looks like I have to cp ../inform7-ide/build-aux/make-integration-settings.mk .. before I can make forceintegration ?

With that, it launches after typing ./build-aux/run_uninstalled.sh, though all the images are missing and it can’t find the documentation. Also, Inform7 can’t find its kits. Good enough for testing the UI though, I guess.

Thanks again. I look forward to the next beta / release candidate. I’m hoping to actually start updating my extensions.

Under bash, there’s the backslash escape, e.g.

ls agatha\'s\ folly\ \(as\ example\ of\ escapism\)\ with\ \$\$\$

(who got the cite around the ’ ? :wink: )

of course, this breaks winsozz compatibility, for obvious (and pathetic) reasons, but we’re talking about Linux IDE, so I guess it’s a viable suggestion for a solution of this issue…

Best regards from Italy,
dott. Piergiorgio

1 Like

Apologies, I blanked on adding make-integration-settings.mk to the instructions. I’ve done so now. Sounds like your copy of Inform is plagued by an incomplete installation from one of the previous attempts? Maybe this could be solved by cleaning out inform7/intools and the Extensions, HTML, Inter, Languages, Miscellany, and Pipelines directories inside inform7-ide/data/ and re-running make forceintegration in Inform.

1 Like

This did the trick. Thanks again!

…or maybe it didn’t. The pictures and the documentation is now back, but every time I try to actually compile a game, I get:

/home/neroden/programming/inform-build/inform7-ide/_install/usr/local/libexec/inform7-ide/inform7 \
	-internal /home/neroden/programming/inform-build/inform7-ide/_install/usr/local/share/inform7-ide -format=Inform6/32d -project /home/neroden/programming/inform-projects/Secondary Scratchpad.inform
Inform 7 v10.1.0 has started.
inform7: fatal error: cannot find kit 'BasicInformKit'

Checking out the _install folder, I find

/home/programming/inform-build/inform7-ide/_install/usr/local/share/inform7-ide/Inter/BasicInformKit

Exists but there are no files in it.

Checking

/home/neroden/programming/inform-build/inform7-ide/data/Inter

I find the same problem: the directories for the kits are all there, but they’re empty.

Apparently they didn’t get installed / copied with make forceintegration ?

Update: I think I may have figured this out. make forceintegration was stating:

sh: 1: rsync: not found
sh: 1: rsync: not found
sh: 1: rsync: not found
sh: 1: rsync: not found
sh: 1: rsync: not found

After installing rsync, it seems to be copying over correctly.

Either the dependency on rsync should be documented or it should be eliminated. This appears to be an Inform 7 issue.

What distro you use ?

in my Debian system, rsync is installed by default.

Best regards from Italy,
dott. Piergiorgio.

I also use Debian. It’s perfectly trivial for me to install rsync, and I did. But on general security principles I tend to delete any package which is potentially network-exposed which I’m not using, so I had it uninstalled previously.

It isn’t required to be present under Linux Standard Base or POSIX or the Single Unix Specification; dependencies on rsync must be specified explicitly under Debian.

So, it’s all going pretty well but I managed to trigger a segfault in inform7-ide. I think I triggered the segfault by changing an extension file in the Extensions folder using an external editor while inform7-ide was running; I could be wrong, it might have been something else, but I suspect that was it.

I think I’ve pinned this bug down further.

I now think it has to do with renaming an extension file from “Tab Removal.i7x” to “Tab Removal-v2.i7x” while inform7-ide is already running and while a story which does Include Tab Removal by Nathanael Nerode is open and has been compiled once. Attempting to recompile the story gave me a hard freeze-up of the program this time (stopped with control-C at the command line where I’d launched the program).

This is an interesting issue created by Inform’s new ability to read extension files with version names in the title. I assume there’s some sort of stale cache issue.

…actually, I’m realizing there’s also a more general cache issue here. When extensions are edited and changed – my usual workflow, lots of extension editing – the newly-edited versions don’t show up in the index until I quit and restart. Is there a way to trigger a rebuild?

OK, another recurrent bug. So, having launched the IDE with ./build-aux/run_uninstalled.sh… basically every time I quit, after all the windows close, I end up frozen at the command line and have to hit control-C. Not sure why.

Thanks for your work, Philip @ptomato – I am successfully using the IDE to edit all my extensions to update them for v10.

Unfortunately, my current test cycle is “load the test project, run it, edit the extension, save the extension, quit the IDE, hit ^C to kill it, relaunch the IDE for the next test cycle, check what the extension looks like in the new index”, because the IDE does not seem to be cleanly handling extension changes while it’s running. I’m not sure exactly what’s going on.

It would be nice if I could edit an extension file, either in the IDE or in another program, and then have it picked up by the index, perhaps by hitting some sort of “reload index” button. This would be particularly valuable when I’m trying to debug the examples included in the extension to make sure they’ll click-paste properly; I have to restart the IDE every single time to get an updated HTML page.

This isn’t happening for me, so maybe it only triggers if you do something particular while the program is open?

Quite likely. If so, it is almost certainly related to editing extensions (which are used by the main game I have been compiling) while the program is open. Which is, as I said, my major workflow. I think it closes cleanly if I haven’t edited any extensions while the program is open, but I almost never do that.


Or not. I’m able to reproduce it without doing that, though it’s not every time.

Testing… oh, I think I’ve got it! I run the program (invoking “frotz” or whatever), I do not quit the running game, and then I quit inform7-ide. I suspect it’s waiting for “frotz” to die, when it should kill it.

…I can reproduce it even after quitting out of the running game. :sigh: If I haven’t pressed play at all, though, the program quits cleanly.

OK, if after I get to “The game has finished” I hit return again, blanking the Story screen, then I can quit cleanly. If the Story screen is still showing anything it doesn’t quit cleanly. So I think it has to do with not properly killing the subprocess for “frotz” or “glulxe” or whatever.


I should probably also explain why I want to be able to update the documentation index while the IDE is running. It’s for testing the examples embedded in my extension documentation. I want to test that they copy-paste and compile properly. Right now, after each edit to one of those examples, that means quitting and restarting the IDE. If there was just a “rebuild all the extension documentation” button it would save a lot of time.

Nat, this happens also to me if I forget quitting the running game, also in glulx stories. the seriousness of the issue back in 6M62 whose forced me to froze glulx works for three years was that happens also just after the compilation.
(that is, I suspect, only one instance of frotz.so/git.so/glulxe.so)

Perhaps has something to do with the 'terps being .so files ?

anyway, this is the current state of /usr/lib/x86_64-linux-gnu/inform7-ide/ :

/usr/lib/x86_64-linux-gnu/inform7-ide/:
totale 5312
-rw-r--r-- 1 root root   86280 14 mar 14.39 frotz.so
-rw-r--r-- 1 root root   99888 14 mar 14.39 git.so
-rw-r--r-- 1 root root   89192 14 mar 14.39 glulxe.so
-rwxr-xr-x 1 root root  378736 14 mar 14.39 inblorb
-rwxr-xr-x 1 root root  539704 14 mar 14.39 inform6
-rwxr-xr-x 1 root root 4228496 14 mar 14.39 inform7
drwxr-xr-x 5 root root    4096 17 mag 14.18 retrospective

/usr/lib/x86_64-linux-gnu/inform7-ide/retrospective:
totale 12
drwxr-xr-x 2 root root 4096 17 mag 14.18 6L02
drwxr-xr-x 2 root root 4096 17 mag 14.18 6L38
drwxr-xr-x 2 root root 4096 17 mag 14.18 6M62

/usr/lib/x86_64-linux-gnu/inform7-ide/retrospective/6L02:
totale 2144
-rwxr-xr-x 1 root root   85576 14 mar 14.39 cBlorb
-rwxr-xr-x 1 root root 2105544 14 mar 14.39 ni

/usr/lib/x86_64-linux-gnu/inform7-ide/retrospective/6L38:
totale 2160
-rwxr-xr-x 1 root root   85576 14 mar 14.39 cBlorb
-rwxr-xr-x 1 root root 2121968 14 mar 14.39 ni

/usr/lib/x86_64-linux-gnu/inform7-ide/retrospective/6M62:
totale 2124
-rwxr-xr-x 1 root root   85576 14 mar 14.39 cBlorb
-rwxr-xr-x 1 root root 2086064 14 mar 14.39 ni

Best regards from Italy,
dott. Piergiorgio.

1 Like

Because, as discussed on inform 7 v10 debate on the huge mass of unused code, I want to edit the switches used by the IDE in launching inform6, allowing the omission of unused routines (whose reduced the story file by over 100k, a thing whose can even render inform7 again viable for .z8) but I can’t find where in the installed directories (and ~/Inform) I should edit.

Aside the question above, I give a suggestion: giving in the edit/preferences/advanced the customisation of the switches of at least inform 6. (Linux users, by definition, know what they are doing… :wink: )

Best regards from Italy,
dott. Piergiorgio.

1 Like

This one I can’t reproduce either. I will look into it.

1 Like

Is there any downside to just making it do the size-reducing thing all the time? Or, at least, always for release? Which command-line switch is that?

(I’m a Linux user and I dislike “advanced” preferences, FWIW)

1 Like

currently I use this for compiling i7 sources from console (command line):

inform/inform7/Tangled/inform7 -release -project <nome>.inform/

inform/inform6/Tangled/inform6 -w -G -~D '$OMIT_UNUSED_ROUTINES=1' <nome>.inform/Build/auto.inf -o <nome>.inform/Build/<nome>.ulx

the power of $OMIT_UNUSED_ROUTINES is not to be underestimated: this is my main I7 testing/messing arena:

-rw-r–r-- 1 pigi pigi 2578991 24 mag 17.47 auto.inf
-rw-r–r-- 1 pigi pigi 8452 24 mag 17.47 ‘Debug log.txt’
-rw-r–r-- 1 pigi pigi 14742489 24 mag 17.47 gameinfo.dbg
-rw-r–r-- 1 pigi pigi 588544 19 mag 22.25 gate_dojinshi.ulx
-rw-r–r-- 1 pigi pigi 747008 24 mag 17.47 output.ulx
-rw-r–r-- 1 pigi pigi 17652 24 mag 17.47 Problems.html

output.ulx is the binary from Inform7-ide and gate_dojinshi.ulx is the (admittely NOT up-to date with the source…) binary from the command line, using the two lines above in a simple shell script. as you can see, the economy is a consistent one, whose can even allow using I7 again for (small) z8 IFs, as a simple lab compiled with the commandlines above showed:

-rw-r–r-- 1 pigi pigi 527872 8 mag 11.35 lab.ulx
-rw-r–r-- 1 pigi pigi 335360 7 mag 21.09 lab.z8

(prolly the sources are a bit different, being the lab…)

oh, mag = abbreviation of Maggio, May in Italian…

I don’t have found downsides, but I’m focused on compiler/IDE bugs, and aside what reported here, I don’t have found much.

OTOH, you haven’t replied to my question: where in the hell, I can edit the commandline passed fron the ide to inform7 and inform6 ?

(hope you haven’t committed the serious mistake of hardcoding it in the IDE source… albeit is an error even Lord Inform itself committed…)

Best regards from Italy,
dott. Piergiorgio.

I think you can directly add this kind of command line option in the source:

Use OMIT_UNUSED_ROUTINES of 1.

At least it worked in 6L38.

That still works in 10.x. But Graham has said that that is seriously deprecated. It was primarily intended to deal with the I6 compiler’s memory limits (MAX_PROP_TABLE_SIZE) but those no longer exist. I think he also indicated that it was a nasty hack in the inter code.

There are also I6 options that use a different syntax (single-letter switches, the new trace options). These cannot be generated with I7’s “Use” statement. So it wasn’t ever a complete solution.

In 9.x, you could do this: (spacing and line breaks must be exact)

Include (-!% $OMIT_UNUSED_ROUTINES=1
-) before "Output.i6t";

This allows any command-line switch at all, which is sometimes helpful in surprising ways. However, this version of the “Include” statement is no more – as is Output.i6t, for that matter.

In the meantime, you can always replace the inform7 binary with a shell script that prepends some lines to auto.inf and then calls the real inform7 binary. :/

3 Likes

(Referring to OMIT_UNUSED_ROUTINES…)

This option is pretty well-tested, but it’s not as well-tested as the rest of the I6 compiler. I think it would be okay if I7 used it all the time. However, I’d really want a way to turn it off just in case it causes a problem for some games.

So, either way, we still need to think about ways for I7 code to tweak I6 compiler settings.

2 Likes