Subject: [alpine-devel] Re: [ANN] Dwarf Fortress 40.04 available for sabotage/musl (was: DF 34.11 available)

From: John Spencer <[email-masked]>
Date: Sat, 26 Jul 2014 14:12:02 +0200

DF 40.04 for musl is now available on 
http://ftp.barfooze.de/pub/sabotage/bin/

it was created from branch 4004_nogl of [2]
(and mayday package from updated master of [3]).

it again comes in three flavors:

$ sha512sum df_linux_4004-musl_nogl.tar.xz
fa40c0568a963baaf6fb9025fd94a52ba29916ddfff4f49d0b129f1093f301cb9a5512b0e45b99d0986758b766773a6f1bd8f6a54d12d968ac6b8eee66fb48b8 
  df_linux_4004-musl_nogl.tar.xz

base package (vanilla); containing only original DF files plus 
musl-linked libgraphics.so and libstdc++.so.
for usage on i386 musl systems with all required libs installed (openal, 
alsa,sdl,libx11,ncurses...)

NOTE: sdl must be patched to create thread stacks of at least 128KB, see
http://bugzilla.libsdl.org/show_bug.cgi?id=2019
(already the case on sabotage linux)

$ sha512sum df_linux_4004-musl_nogl-alllibs.tar.xz
5d57e068202f16e84a84b1ccb6220bdf6e9228cc1ceff9f5877043b5925c6991b98af9f32c0e979afe76df060e1ada1a75d2d3356d1972222b268f40ab6b1c05 
  df_linux_4004-musl_nogl-alllibs.tar.xz

same as above but with all dependent 32bit libraries included in libs/; 
can be used on x86_64 without further ado (given that kernel has 
CONFIG_IA32_EMULATION turned on).

  $ sha512sum df_linux_4004-musl_nogl_mayday-allibs.tar.xz
10f557cb04fa8e581785c029d0156d57f2f7d5d532fbe5f4b37febf5ee98cec63f601403f839f50fc8ac8f99ba5c89b8cafd117f3b14ef8cb0add9645f61d1a2 
  df_linux_4004-musl_nogl_mayday-allibs.tar.xz

same as above but with mayday tileset from [3].

have Fun,
--JS

P.S.: it should be possible to update to DF 40.05 and newer versions, 
once they come out by dropping libstdc++.so and libgraphics.so from the 
vanilla tarball into the df_linux dir (plus the modified start shell 
script);
and maybe even (if there are no changes in the RAW dir, which is likely 
- diff -r can tell you) to just copy an updated "Dwarf Fortress.exe" 
into df_linux_4004-musl_nogl's libs/ dir.

John Spencer wrote:
> dwarf fortress[0] is a very well known freeware game available for 
> linux, however only for glibc based systems, and i386 (32bit) only.
> 
> the graphics part of it is opensource, available here: [1]
> i forked it and applied a couple of patches to remove GTK+ and
> OpenGL dependencies, so it works with plain SDL and stdio[2].
> 
> using this trimmed down libgraphics.so, it's possible to run
> the GLibc linked binary thanks to musl's ABI compatibility
> (either by patching the DT_INTERP with patchelf to point to
> musl's dynlinker, or by launching /lib/ld-musl-i386.so.1 $binary,
> we do the latter in order to not touch the original binaries).
> 
> the libgraphics.so was additionally linked against ncurses, so
> it can be used even in a raw terminal if no X server is available.
> to use the ncurses driver, change the driver from "2D" to "TEXT"
> in data/init/init.txt.
> 
> i've uploaded 3 full DF tarballs containing this custom
> libgraphics.so to
> 
> http://ftp.barfooze.de/pub/sabotage/bin/
> 
> dwarf_fortress_34_11_linux_musl.tar.xz :
> equivalent to the original df_34_11_linux.tar.bz2 from upstream.
> only libgraphics.so and libstdc++.so/libgcc_s.so has been swapped
> out for sabotage ones to reduce the incompatibility surface.
> note that libstdc++.so from GCC >= 4.6 is not compatible with the
> game binary.
> sha512 checksum: 
> 44f7c50732959064709b15a737a61ba12232fa820e9416498b314a0ef79d97a67bb8953ae3b49e76ff72454be3e9765ac33234e3bd394b011a09e1a5deb7ea92 
> 
> 
> dwarf_fortress_34_11_linux_musl_including_all_deps.tar.xz :
> same as above, however all needed 32bit libraries have been added.
> that way this tarball can be extracted on a x86_64 or i386 system
> and started without further ado.
> sha512:
> 25698f960f11d6a367617a024b9358e58cbd2a4adc317c341fcd2bd86271d906b0b8ad62a5f03a0f6bfe7f246dd4a539cfeae36d8d13ce1ef0422c0cf6d10ffd 
> 
> 
> 
> dwarf_fortress_34_11_linux_musl_including_all_deps_and_mayday_tileset.tar.xz 
> :
> same as above, plus the graphical tileset "mayday".
> mayday support has been added using the patch/script available on [3].
> sha512:
> 711c85ab09cfdb5a330bd17d13e44cb62d00fde7db6b42746b8b1da0d41baff8081e0d9b1a4aaaea14006f2be0afb7aeea75306853139fd281ec6f1c4a2bddd5 
> 
> 
> so, now that even DF works on musl, there's no reason waiting any longer 
> to switch completely :-)
> 
> have lots of Fun,
> --JS
> 
> [0] http://www.bay12games.com/dwarves/
> [1] https://github.com/Baughn/Dwarf-Fortress--libgraphics-
> [2] https://github.com/rofl0r/df-libgraphics/tree/nogl
> [3] https://github.com/rofl0r/df-mayday
> 

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---

---

From: Paul Onyschuk <[email-masked]>
Date: Sat, 26 Jul 2014 19:02:05 +0200

On Sat, 26 Jul 2014 14:12:02 +0200
John Spencer <[email-masked]> wrote:

> same as above but with all dependent 32bit libraries included in
> libs/; can be used on x86_64 without further ado (given that kernel
> has CONFIG_IA32_EMULATION turned on).
> 

Works fine under Alpine Edge x86_64, though some adjustments are
needed.  PaX needs some tuning:

$ paxctl -c -r ./libs/libc.so

Since 32-bit musl won't load binary, when RANDMMAP is set.  There is
also small problem with sound.  Alsa is looking for it's own files in
wrong place:

ALSA lib conf.c:3707:(snd_config_update_r) Cannot access
file /share/alsa/alsa.conf

Setting ALSA_CONFIG_PATH to /usr/share/alsa/alsa.conf seems to affect
only alsa.conf, alsa will be still opening
/share/alsa/cards/aliases.conf.  Dirty workaround for sound in DF:

$ mkdir -p /share && ln -s /usr/share/alsa /share

-- 
Paul Onyschuk

---

---

From: John Spencer <[email-masked]>
Date: Wed, 22 Oct 2014 17:01:18 +0200

now available for 40.13

$ sha512sum df_linux_4013_musl_nogl-allibs*.xz
49e122c5ce4d8f2ee5ebe11524aa44797b40d6367a98395128a1897f1983a450cc0ecdc6a4510a123122cc41c11ce29455daa09ec0c20d384fa851656b73d74b 
  df_linux_4013_musl_nogl-allibs-mayday.tar.xz
2045af3edea8afa85e61ba39d97950e679ed995b694cc7ceab2b906bf04359c68fb308da8b8940fa572c3f711ff0184a2af39ac53ca061cab800f75515f25691 
  df_linux_4013_musl_nogl-allibs.tar.xz

i dropped the "vanilla" tarball this time. if you want the vanilla 
version, just remove all the .so's from libs/ except the ones that were 
in the previous vanilla version.

see below for download URL and further details.

Have Fun,
--JS

John Spencer wrote:
>> so, now that even DF works on musl, there's no reason waiting any 
>> longer to switch completely :-)
>>
>> have lots of Fun,
>> --JS
>>

---