= Installing Open Adventure =
-The instructions below assume your system uses Python 3 by default,
-but the actual Python code in Open Adventure is 2/3-agnostic. Adjust
-the example commands below accordingly.
+Installation now requires Python3 due to a security issue
+with the YAML library.
-1. Install PyYAML for Python 3 (which requires Python 3) and libedit
-from http://thrysoee.dk/editline/ (aka: editline) on your system.
+1. Install libedit from http://thrysoee.dk/editline/ (aka: editline)
+on your system.
+
-On Debian and Ubuntu: `apt-get install python3-yaml libedit-dev`.
+On Debian and Ubuntu: `apt-get install libedit-dev`.
+
-On Fedora: `dnf install python3-PyYAML libedit-devel`.
-+
-If you are using MacPorts on OS X: `port install py3{5,6}-yaml`, as
-appropriate for your Python 3 version.
+On Fedora: `dnf install libedit-devel`.
+
You can also use pip to install PyYAML: `pip3 install PyYAML`.
2. Change to the top-level directory of the source code (e.g., `cd open-adventure`).
3. Build with `make`.
-+
-If make returns the following message:
-+
-------------------------------------------------
-Traceback (most recent call last):
- File "./make_dungeon.py", line 13, in <module>
- import sys, yaml
-ImportError: No module named yaml
-------------------------------------------------
-+
-try editing make_dungeon.py to change `#!/usr/bin/env python` to
-read `#!/usr/bin/env python3`
-+
-If you still get the error, use the following command to install yaml with pip:
-+
-------------------------------------------------
-pip install pyyaml
-------------------------------------------------
-+
-Make sure you have `pip` installed on your system. If not, you should
-install it first. See https://pip.pypa.io/en/stable/installing/
4. Optionally run a regression test on the code with `make check`.
-#!/usr/bin/env python
+#!/usr/bin/env python3
# This is the open-adventure dungeon generator. It consumes a YAML description of
# the dungeon and outputs a dungeon.h and dungeon.c pair of C code files.
if __name__ == "__main__":
with open(YAML_NAME, "r") as f:
- db = yaml.load(f)
+ db = yaml.safe_load(f)
locnames = [x[0] for x in db["locations"]]
msgnames = [el[0] for el in db["arbitrary_messages"]]