Gargoyle 2010.1 release candidate

48 views
Skip to first unread message

Ben Cressey

unread,
Sep 24, 2010, 6:39:22 PM9/24/10
to garglk-dev
Latest builds are available here:

Note:
Because of significant changes to the default configuration, please replace any existing copies of garglk.ini with the distributed one before applying your customizations.

Library changes:
* Runs on Mac
* Graphical launcher on Linux
* Loads fonts from underlying OS
* Faster image loading and text rendering
* Dynamic, expanding scroll buffer
* Mouse and trackpad scroll support
* Assorted bug fixes

Interpreter changes:
* Frotz now supports Unicode, Z-Machine Standard 1.1
* Updated Agility, Git, Glulxe, and JACL to latest version
* Various 64-bit fixes


Most of these changes have already appeared in unofficial, preview builds distributed upon request to testers, so I feel pretty good about the overall build quality. Still, please don't hesitate to test the release candidate and drag it through its paces. I'd like to get the final files out before IFComp starts up, and I'm especially interested in bug reports from Comp authors.

Stuart Allen

unread,
Sep 27, 2010, 12:31:27 AM9/27/10
to garglk-dev
Hi Ben

Thanks as always for your efforts with Gargoyle. This RC compiled and
installed perfectly for me under Ubuntu, and so far all the games I
have played have worked perfectly too. I'll keep you posted if I
notice anything odd though.

Regards,
Stuart

> --
> You received this message because you are subscribed to the Google Groups
> "garglk-dev" group.
> To post to this group, send email to gargl...@googlegroups.com.
> To unsubscribe from this group, send email to
> garglk-dev+...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/garglk-dev?hl=en.
>

Sylvain Beucler

unread,
Sep 27, 2010, 1:02:00 PM9/27/10
to Ben Cressey, garglk-dev
Wow, I see it's been a year since I made the 'gargoyle-free' package
:)

I'll try and update the package, let's see if I spot any issue.

Btw, the ifcomp has already started from what I can see (sept. 1st),
did you mean you want gargoyle ready for the ifcomp *judging* opening
(oct. 1st)? We'll get more input from players than authors I think.

- Sylvain

Sylvain Beucler

unread,
Sep 27, 2010, 3:22:56 PM9/27/10
to Ben Cressey, garglk-dev
Here's my progress/remark so far:


- Somebody (you?) mentioned that the Alan interpreted was about to be
released under a free license. Any news on that front?


- To be compliant with the FHS, gargoyle should be installed this way under Unix:

/usr/games/gargoyle
/usr/lib/gargoyle/libgarglk.so
/usr/lib/gargoyle/frotz
/usr/lib/gargoyle/nitfol
/usr/lib/gargoyle/git
/usr/lib/gargoyle/glulxe
...

(or, we could install libgarglk.so in /usr/lib, but then that's a
public library with all the precise versioning requirements)

Previously the launcher.sh took care of setting LD_LIBRARY_PATH
accordingly, but that was not a very clean solution.

Do you know of a (Jam) way to make 'gargoyle' look in
/usr/lib/gargoyle? I believe this is related to the 'rpath' linking
feature.

For instance that's what Gnash does:
$ ldd /usr/bin/gtk-gnash
linux-vdso.so.1 => (0x00007fffcad2b000)
libgnashrender-0.8.8.so => /usr/lib/gnash/libgnashrender-0.8.8.so (0x00007f2f28bc9000)
libgnashmedia-0.8.8.so => /usr/lib/gnash/libgnashmedia-0.8.8.so (0x00007f2f28939000)
...
libcairo.so.2 => /usr/lib/libcairo.so.2 (0x00007f2f26bbb000)

Some users also asked that that I install things this way:
/usr/games/gargoyle
/usr/games/frotz
/usr/games/nitfol
/usr/games/git
/usr/games/glulxe
/usr/lib/gargoyle/libgarglk.so
...

That way they could either let gargoyle chose the default
interpreter ('gargoyle stuff.z5'), or they could chose it directly
('frotz stuff.z5').

If that's really too much complicated, the alternative is that I
install everything in /usr/lib/gargoyle/ and make
/usr/games/gargoyle a simple shell wrapper around
/usr/lib/gargoyle/gargoyle, but that's less nice.

Hope that makes sense :)


- You may remember that I removed the non-free LuxiMono fonts in the
Debian package, and replaced it with the (free) DejaVu Sans Mono.

I saw the nice new "BUNDLEFONTS=no" switch in Jamrules and used it,
getting rid of my earlier patch along the way :)

However gargoyle now complains that it cannot be loaded:

$ LD_LIBRARY_PATH=. ./git
fatal: FT_New_Face: LuxiMonoRegular: 0x1

I see that there's a 'fontreplace' function, is it supposed to
handle that? Not sure if it should work, or if I should contribute
a patch?


- terps/nitfol/z_io.c.org is not used and causing some issues in my
package building - would you agree to remove it? (it's removed by
'jam clean' btw)


- In the interpreters updates:


> * Frotz now supports Unicode, Z-Machine Standard 1.1
> * Updated Agility, Git, Glulxe, and JACL to latest version

I see that terps/status.txt only show updates for git, glulxe and
jacl - are frotz and agility the same version than in the previous
gargoyle?


Cheers!

--
Sylvain

Ben Cressey

unread,
Sep 27, 2010, 4:32:37 PM9/27/10
to Sylvain Beucler, garglk-dev
On Mon, Sep 27, 2010 at 12:22 PM, Sylvain Beucler <be...@beuc.net> wrote:

 Do you know of a (Jam) way to make 'gargoyle' look in
 /usr/lib/gargoyle?  I believe this is related to the 'rpath' linking
 feature.

Is it possible for the package to add a file to /etc/ld.so.conf.d instead? That would point ldconfig to /usr/lib/gargoyle without messing around with rpath.

Alternatively, there's a new static linking option in jam; if you define STATIC=1 in the environment, jam will bundle interpreter + library together in a single binary. This increases the size by around 500 KB per interpreter, but sidesteps the shared library issues altogether.

 
 That way they could either let gargoyle chose the default
 interpreter ('gargoyle stuff.z5'), or they could chose it directly
 ('frotz stuff.z5').

The terp selection through the garglk.ini config file now works under Linux. If everything gets routed through the gargoyle launcher, you can override the default interpreter on a per-game or per-type basis.

That avoids the need to put the interpreters directly in the path, which can cause problems if git is installed, or interpreters linked to other Glk libraries are already around.

 
- You may remember that I removed the non-free LuxiMono fonts in the
 Debian package, and replaced it with the (free) DejaVu Sans Mono.

 I saw the nice new "BUNDLEFONTS=no" switch in Jamrules and used it,
 getting rid of my earlier patch along the way :)

Setting the BUNDLEFONTS switch to no causes the BUNDLED_FONTS flag to be undefined when building Gargoyle, which alters the behavior of config.c:

#ifdef BUNDLED_FONTS
char *gli_conf_monofont = "";
char *gli_conf_propfont = "";
#else
char *gli_conf_monofont = "Luxi Mono";
char *gli_conf_propfont = "Bitstream Charter";
#endif

You should be able to patch config.c and change gli_conf_monofont and gli_conf_propfont to fonts that fontconfig can locate on the system. I recommend "Liberation Mono" for monofont and "Linux Libertine O" for propfont. These match up with the default values in garglk.ini, so if you change them you should also change garglk.ini to keep things sensible.

The Gargoyle package would then depend on ttf-liberation and ttf-linux-libertine, to guarantee those fonts exist on the system.

I've just committed a patch that adjusts these values, along with the default font sizes, to correspond with the garglk.ini values. (See attached.)


- terps/nitfol/z_io.c.org is not used and causing some issues in my
 package building - would you agree to remove it?  (it's removed by
 'jam clean' btw)

Fixed this in trunk, thanks! By all means, remove it.
 
- In the interpreters updates:
 > * Frotz now supports Unicode, Z-Machine Standard 1.1
 > * Updated Agility, Git, Glulxe, and JACL to latest version

 I see that terps/status.txt only show updates for git, glulxe and
 jacl - are frotz and agility the same version than in the previous
 gargoyle?

I will bump the minor version number for both Frotz and Agility. They are indeed different versions.

Thanks for your work on this!

Regards,
Ben
config_fonts.patch

Ben Cressey

unread,
Sep 27, 2010, 4:34:54 PM9/27/10
to Sylvain Beucler, Eric Forgeot, garglk-dev
On Mon, Sep 27, 2010 at 12:22 PM, Sylvain Beucler <be...@beuc.net> wrote:
 
- Somebody (you?) mentioned that the Alan interpreted was about to be
 released under a free license.  Any news on that front?
 
I haven't heard anything new from the Alan or Hugo developers.

Eric, did either of them get back to you? Neither seemed hostile to a free license so it's possible they've warmed sufficiently to the idea over the last year.


Thanks,
Ben

Eric Forgeot

unread,
Sep 27, 2010, 4:48:35 PM9/27/10
to gargl...@googlegroups.com
No. If I remember well, they weren't really against the idea, but they wanted to think about this, and didn't talk again about it.

Ben Cressey

unread,
Sep 27, 2010, 4:50:47 PM9/27/10
to Sylvain Beucler, garglk-dev
On Mon, Sep 27, 2010 at 1:32 PM, Ben Cressey <bcre...@gmail.com> wrote:

Alternatively, there's a new static linking option in jam; if you define STATIC=1 in the environment, jam will bundle interpreter + library together in a single binary. This increases the size by around 500 KB per interpreter, but sidesteps the shared library issues altogether.

And of course that's with bundled fonts on; if you disable those, you get a more modest 250 KB library. Which may not be worth worrying about.

Sylvain Beucler

unread,
Sep 27, 2010, 5:08:07 PM9/27/10
to Ben Cressey, garglk-dev
Hi,

On Mon, Sep 27, 2010 at 01:32:37PM -0700, Ben Cressey wrote:
> On Mon, Sep 27, 2010 at 12:22 PM, Sylvain Beucler <be...@beuc.net> wrote:
> > Do you know of a (Jam) way to make 'gargoyle' look in
> > /usr/lib/gargoyle? I believe this is related to the 'rpath' linking
> > feature.
> >
>
> Is it possible for the package to add a file to /etc/ld.so.conf.d instead?
> That would point ldconfig to /usr/lib/gargoyle without messing around with
> rpath.

Well that's technically possible but it doesn't sound like a good
idea. Only 3 Debian packages out of the ~30000 do that, that seem to
be reserved for low-level stuff (like 32/64bit stuff).

I can look into it but I have the feeling it's not meant for
package-specific libraries.

Linking to /usr/lib/mypackage is something easy enough to do with the
autotools so I guess that's why it's the standard solution.

> Alternatively, there's a new static linking option in jam; if you define
> STATIC=1 in the environment, jam will bundle interpreter + library together
> in a single binary. This increases the size by around 500 KB per
> interpreter, but sidesteps the shared library issues altogether.

Static linking gets in the way of library updates (namely security
updates). So it's generally not an option :)

> > That way they could either let gargoyle chose the default
> > interpreter ('gargoyle stuff.z5'), or they could chose it directly
> > ('frotz stuff.z5').
>
> The terp selection through the garglk.ini config file now works under Linux.
> If everything gets routed through the gargoyle launcher, you can override
> the default interpreter on a per-game or per-type basis.
>
> That avoids the need to put the interpreters directly in the path, which can
> cause problems if git is installed, or interpreters linked to other Glk
> libraries are already around.

Well, Debian provides a framework called 'alternatives' to deal with
that issue.

However if hacking garglk.ini is the way to go, it's probably better
to go with the simple shellwrapper + pointing people to garglk.ini.


> > - You may remember that I removed the non-free LuxiMono fonts in the
> > Debian package, and replaced it with the (free) DejaVu Sans Mono.
> >
> > I saw the nice new "BUNDLEFONTS=no" switch in Jamrules and used it,
> > getting rid of my earlier patch along the way :)
>
> Setting the BUNDLEFONTS switch to no causes the BUNDLED_FONTS flag to be
> undefined when building Gargoyle, which alters the behavior of config.c:
>
> #ifdef BUNDLED_FONTS
> char *gli_conf_monofont = "";
> char *gli_conf_propfont = "";
> #else
> char *gli_conf_monofont = "Luxi Mono";
> char *gli_conf_propfont = "Bitstream Charter";
> #endif
>
>
> You should be able to patch config.c and change gli_conf_monofont and
> gli_conf_propfont to fonts that fontconfig can locate on the system. I
> recommend "Liberation Mono" for monofont and "Linux Libertine O" for
> propfont. These match up with the default values in garglk.ini, so if you
> change them you should also change garglk.ini to keep things sensible.

Nice - 2 questions:

- Is there a standard place (system-wide, like /etc/garglk.ini) to
install garglk.ini to? Currently it's just installed as
documentation, so gargoyle relies on its built-in config.

- While trying to get gargoyle to work before you answered, and
trying to support "DejaVu Sans Mono", I needed to search for
":style=Book" for the regular font:

if (!strlen(fontpath))
{
strcpy(fontname, font);
strcat(fontname, ":style=Book");
findfont(fontname, fontpath);
}

Is it worth adding (in fontreplace())?


Oh, I see that my font tests from last year are still available :)
http://www.beuc.net/tmp/gargoyle/moonwatch/


> The Gargoyle package would then depend on ttf-liberation and
> ttf-linux-libertine, to guarantee those fonts exist on the system.

Good point.
I'm not sure I would have thought of updating them :)
(it was ttf-dejavu-core + ttf-dejavu-extra)


> I've just committed a patch that adjusts these values, along with the
> default font sizes, to correspond with the garglk.ini values. (See
> attached.)

Great, I'll test this.

--
Sylvain

Sylvain Beucler

unread,
Sep 27, 2010, 5:10:19 PM9/27/10
to Ben Cressey, garglk-dev

Oooh, you mean partial static linking, I misread.
I gotta test :)

--
Sylvain

Sylvain Beucler

unread,
Sep 27, 2010, 5:52:07 PM9/27/10
to Ben Cressey, garglk-dev

That looks pretty good and simple. I think I'll use STATIC=1.

In a different topic, I see that launchgtk.c looks for the
interpreters in directory where 'gargoyle' is installed. So at first
glance, I'll need to install the interpreters in '/usr/games/' too.

--
Sylvain

Dannii

unread,
Sep 27, 2010, 10:02:51 PM9/27/10
to garglk-dev
Would this mean it would conflict with the frotz package? I don't like
the sound of that...

On Sep 28, 7:52 am, Sylvain Beucler <b...@beuc.net> wrote:
> On Mon, Sep 27, 2010 at 11:10:19PM +0200, Sylvain Beucler wrote:
> > On Mon, Sep 27, 2010 at 01:50:47PM -0700, Ben Cressey wrote:

Ben Cressey

unread,
Sep 27, 2010, 11:54:49 PM9/27/10
to Sylvain Beucler, garglk-dev
On Mon, Sep 27, 2010 at 2:52 PM, Sylvain Beucler <be...@beuc.net> wrote:
In a different topic, I see that launchgtk.c looks for the
interpreters in directory where 'gargoyle' is installed.  So at first
glance, I'll need to install the interpreters in '/usr/games/' too.

Oops, I definitely missed this.

Maybe the best thing to do would be to patch launchgtk.c and hardcode the path to /usr/games in the winpath function. That will avoid the issue that Dannii mentions re: frotz.

Is there a standard place (system-wide, like /etc/garglk.ini) to
 install garglk.ini to?  Currently it's just installed as  
documentation, so gargoyle relies on its built-in config.

/etc/garglk.ini is the "standard" place, but if that conflicts with the Debian standard for such things, you can patch the two places that reference it, in config.c and launcher.c

While trying to get gargoyle to work before you answered, and
 trying to support "DejaVu Sans Mono", I needed to search for
 ":style=Book" for the regular font:

Yes, that's definitely worth adding. I'll get it patched tomorrow.

I've also emailed the Alan and Hugo developers to see if they've given the licensing question any more thought. It would be great to get that resolved.

Thanks for your help, everyone!

P.F. Chimento

unread,
Sep 28, 2010, 3:13:26 AM9/28/10
to garglk-dev
On Sep 28, 4:02 am, Dannii <curiousdan...@gmail.com> wrote:
> Would this mean it would conflict with the frotz package? I don't like
> the sound of that...

Maybe it would be better to avoid conflicts by prefixing the
interpreter names, like 'gargoyle-frotz', 'gargoyle-git', etc. That's
what I had to do in Gnome Inform 7 at one point, because the regular
gargoyle binaries and the special embeddable ones had the same name,
and it was causing crashes on some people's systems.
--
Philip Chimento

Sylvain Beucler

unread,
Sep 28, 2010, 3:33:56 PM9/28/10
to Ben Cressey, garglk-dev
Hi,

On Mon, Sep 27, 2010 at 08:54:49PM -0700, Ben Cressey wrote:
> On Mon, Sep 27, 2010 at 2:52 PM, Sylvain Beucler <be...@beuc.net> wrote:
>
> > In a different topic, I see that launchgtk.c looks for the
> > interpreters in directory where 'gargoyle' is installed. So at first
> > glance, I'll need to install the interpreters in '/usr/games/' too.
> >
>
> Oops, I definitely missed this.
>
> Maybe the best thing to do would be to patch launchgtk.c and hardcode the
> path to /usr/games in the

> winpath<http://code.google.com/p/garglk/source/browse/trunk/garglk/launchgtk.c#147>function.


> That will avoid the issue that Dannii mentions re: frotz.

I try to keep the patches to the minimum, but maybe that's just the
way to go for now (assuming your meant "hardcoding to
/usr/lib/gargoyle" :)).


> /etc/garglk.ini is the "standard" place, but if that conflicts with the
> Debian standard for such things, you can patch the two places that reference

> it, in config.c<http://code.google.com/p/garglk/source/browse/trunk/garglk/config.c#460>and
> launcher.c<http://code.google.com/p/garglk/source/browse/trunk/garglk/launcher.c#260>
> .

/etc/garglk.ini is the standard place in the FHS, and in Debian :)


> I've also emailed the Alan and Hugo developers to see if they've given the
> licensing question any more thought. It would be great to get that resolved.

Great!

--
Sylvain

Ben Cressey

unread,
Sep 30, 2010, 12:56:44 PM9/30/10
to philip....@gmail.com, garglk-dev
On Tue, Sep 28, 2010 at 12:13 AM, P.F. Chimento <philip....@gmail.com> wrote:
Maybe it would be better to avoid conflicts by prefixing the
interpreter names, like 'gargoyle-frotz', 'gargoyle-git', etc. That's
what I had to do in Gnome Inform 7 at one point, because the regular
gargoyle binaries and the special embeddable ones had the same name,
and it was causing crashes on some people's systems.

I am more open to this idea now, but to do it properly it will need some support in the code and in the build files. Otherwise garglk.ini directives for the normal name of the interpreter will not be matched by the expanded name. I'd like to keep the ini portable between platforms, since that's how I use it.

I've opened an issue on the tracker. I won't be able to get to it this release but it should be straightforward to add to an interim release.

Regards,
Ben

Ben Cressey

unread,
Sep 30, 2010, 4:17:48 PM9/30/10
to garglk-dev
I've uploaded what should be the final release files now, barring any blunders on my part. I'll put some announcements out soon, once I've caught up on the project admin side.

Last minute changes:

* Alan 3 interpreter updated to 3.0a8; sound and graphics added.
* Git updated to 1.2.8.
* fontgtk.c fix on Linux (thanks Sylvain!)
* Version bumps for Frotz and Agility
* More style fixes for Frotz
* Gargoyle.desktop contributed by Eric, for a desktop icon on Linux.

Unfortunately, no license changes have been approved for either Alan or Hugo, so those interpreters continue to be off-limits for a GPL compliant package.

Thanks for your help, everyone!

Sylvain Beucler

unread,
Oct 1, 2010, 3:20:28 PM10/1/10
to Ben Cressey, garglk-dev
Hi,

> * Gargoyle.desktop contributed by Eric, for a desktop icon on Linux.

When packaging the .desktop file, the 'lintian' tool reported a few
issues:

- it needs to use '\n' rather than '\r\n' end-of-lines (per
http://standards.freedesktop.org/desktop-entry-spec/1.0/ar01s02.html)

- 'lintian' freaks out on the attempt to script-ify the .desktop file
with a '#!' line.x

I converted to Unix-style newlines and removed the sheband '#!' line
in the packaging.

--
Sylvain


Reply all
Reply to author
Forward
0 new messages