From d9e33a847881bf510c2933aa0801bfda16d89dae Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Thu, 27 Aug 2020 20:33:44 -0400 Subject: [PATCH] Deal with the consequences of an entry-point deprecation in Python. --- INSTALL.adoc | 37 ++++++------------------------------- NEWS | 3 +++ make_dungeon.py | 4 ++-- 3 files changed, 11 insertions(+), 33 deletions(-) diff --git a/INSTALL.adoc b/INSTALL.adoc index e60fc15..a51b8ac 100644 --- a/INSTALL.adoc +++ b/INSTALL.adoc @@ -1,45 +1,20 @@ = 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 - 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`. diff --git a/NEWS b/NEWS index b2be8f5..b71d906 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,8 @@ = Open Adventure project news = +Repository head:: + Update the dungeon maker to avoid a deprecation die to security issues + 1.8: 2019-04-19:: Minor typo and capitalization glitches in user-visible text fixed & documented. Save format has changed. diff --git a/make_dungeon.py b/make_dungeon.py index 63eee94..724b941 100755 --- a/make_dungeon.py +++ b/make_dungeon.py @@ -1,4 +1,4 @@ -#!/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. @@ -523,7 +523,7 @@ def get_travel(travel): 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"]] -- 2.31.1