Index | Thread | Search

From:
Thomas Frohwein <tfrohwein@fastmail.com>
Subject:
New: rigg - program to run independent games with unveil
To:
ports@openbsd.org
Cc:
brynet@gmail.com
Date:
Sat, 27 Apr 2024 22:20:31 -0400

Download raw body.

Thread
Hi,

This is a port of rigg, a tool for running games based on intermediate/
interpreted language engines on OpenBSD that I created. It improves
over what we have currently with fnaify:

- By default, it uses unveil to only allow access to a subset of the
  filesystem (notably no read or write access to $HOME or $HOME/.ssh).
- It also unveil with zero permissions to hide conflicting bundled
  libraries, so that they don't interfere with execution. (fnaify on
  the other hand has to rename/move those files)
- It's more focused, not trying to manage custom environment variables
  or flags for the execution.

The principle is that it's a binary that can invoke mono and hashlink
via their libraries (see [1] for mono example). It can replace many of
the use cases for fnaify in ports. Ultimately, there is a plan for a
project (IndieRunner) to supersede fnaify completely with use of rigg
where appropriate. rigg can run the following games and more: Crystal
Project, Dead Cells, Hacknet, Northgard, Nuclear Blaze, Opus Magnum,
Owlboy, Salt and Sanctuary, SpaceChem, Terraria.

I'm attaching RogueLegacy.log that shows the rigg -v output, including
all the unveil's that the game runs with.

I had to create a do-install target, will figure out for next release
why the included install target inherited from bsd.prog.mk fails in the
port.

`make test` fails currently in the port system. This has simple mono
assemblies to demonstrate visibility and invisibility of directories.
I'll work on fixing this for the next release. `make test` works
outside the ports tree (after installation), for those who want to
check this.

ok to import?

[1] https://www.mono-project.com/docs/advanced/embedding/
parsing Dllmap
initializing mono jit for RogueLegacy.exe
opening executable: RogueLegacy.exe

unveil: /usr/local/share/FNA             "r"
unveil: /usr/lib                         "r"
unveil: /usr/local/lib                   "r"
unveil: /usr/X11R6                       "r"
unveil: /usr/share                       "r"
unveil: /etc                             "r"
unveil: /dev                             "rw"
unveil: /tmp                             "rwc"
unveil: .                                "rwc"
unveil: /home/thfr/.config               "rwc"
unveil: /home/thfr/.local/share          "rwc"
unveil: /home/thfr/.cache/mesa_shader_ca "rwc"
unveil: /home/thfr/.mono                 "rwc"
unveil: /home/thfr/.sndio                "rwc"
unveil: /home/thfr/.Xauthority           "rw"
unveil: /home/thfr/.XCompose             "rwc"
unveil: /home/thfr/.Xdefaults            "rwc"
unveil: FNA.dll                          ""
unveil: FNA.dll.config                   ""
unveil: Mono.Posix.dll                   ""
unveil: Mono.Security.dll                ""
unveil: System.Configuration.dll         ""
unveil: System.Core.dll                  ""
unveil: System.Data.dll                  ""
unveil: System.Drawing.dll               ""
unveil: System.Numerics.dll              ""
unveil: System.Runtime.Serialization.dll ""
unveil: System.Security.dll              ""
unveil: System.Xml.Linq.dll              ""
unveil: System.Xml.dll                   ""
unveil: System.dll                       ""
unveil: mscorlib.dll                     ""
unveil: (null)                           "(null)"

executing mono jit with the following arguments: "RogueLegacy.exe"

cleaning up...