From 1400e9525c39648bf036d31188769250184cde3b Mon Sep 17 00:00:00 2001 From: poikilos <7557867+poikilos@users.noreply.github.com> Date: Fri, 25 Aug 2023 08:11:09 -0400 Subject: [PATCH] Recommend `sudo ldconfig` (Fix #616) & revert arch-dependent changes that didn't fix the issue anyway. --- .gitignore | 2 + projects-local/copy_projects_to_here.txt | 17 ++++++++ readme.md | 50 +++++++++++++++++++----- utilities/run-any | 12 ++++-- 4 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 projects-local/copy_projects_to_here.txt diff --git a/.gitignore b/.gitignore index 9c72b70..02b3a15 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,5 @@ linux-minetest-kit.zip /docker/libraries-devuan-chimaera/install-minetest-build-deps.sh /debug.txt linux-minetest-kit/ +/projects-local/* +!/projects-local/copy_projects_to_here.txt diff --git a/projects-local/copy_projects_to_here.txt b/projects-local/copy_projects_to_here.txt new file mode 100644 index 0000000..c5ce5f1 --- /dev/null +++ b/projects-local/copy_projects_to_here.txt @@ -0,0 +1,17 @@ +This folder exists so you can copy `code-workspace` files from projects +to here then modify them to suit your needs. Files other than this text +file will be ignored by git to prevent git pull issues, so backup any +`code-workspace` files or other files you add to this folder. + +Edit `code-workspace` files to include your relative path to minetest, +but you must leave the path to `run-any` intact unless you change it to +an absolute path which is required to put your `run-any` +`code-workspace` file somewhere else (This subfolder is here so relative +paths in the included code-workspaces for run-any will work when copied +here) + +The purpose is: +- You can click on paths in your IDE to jump to the Lua code. + - outputinspector unmangles errors if installed as described in readme.md. +- For details and troubleshooting, see "run-any" in readme.md: + diff --git a/readme.md b/readme.md index e462e84..251d56f 100644 --- a/readme.md +++ b/readme.md @@ -32,7 +32,7 @@ The official game server (world) is called **center** (or "Center of the Sun"). The address and port for that and other worlds are listed at [minetest.io](https://minetest.io). -To better understand what the issue board covers, see +To better understand what the **Issues** section covers, see [Project Status](#project-status) below. For notes on current development discussions, see the @@ -61,6 +61,16 @@ universal to gaming and intuitively expected (such as is clear from vision biology in the case of tone mapping). * See also overrides/worlds/CenterOfTheSun/world.conf +The EnlivenMinetest repo has tools for: +- building ENLIVEN game for Minetest + - ENLIVEN is designed to be built from other sources instead of being monolithic. + - It needs to be reworked as of August 2023; only bucket_game build works currently. + - The copy in "releases" only works in versions close to 0.4.13. +- building Minetest +- installing Minetest (some features may be superceded by + , which is pre-alpha as of Aug 2023) +- Some specific tools are listed in the [Scripts](#scripts) section below. + **Q**: "Why not make it compatible with versions from the .net site to get [feature x]?" **A**: The Minetest 5 (.net site) core devs have decided to reduce @@ -206,26 +216,50 @@ Disable or remove these Bucket_Game mods/features potentially (not matching them * https://github.com/Poikilos/EnlivenMinetest/issues/594 -## Building Minetest +## Scripts +### Building Minetest This project is mostly for building ENLIVEN, but there are some scripts here to help build the engine as well: See [doc/building-minetest.md](doc/building-minetest.md). +### run-any +`run-any` is a shim to run binaries (instead of compile) in VSCode. The +purpose is: +- You can click on errors in the VSCode shell to navigate to the line(s) of + Lua involved in a crash. +- If you clone/extract + [outputinspector](https://github.com/Poikilos/outputinspector) + to the same parent folder as EnlivenMinetest, `run-any` will use it to + convert paths in Lua tracebacks to clickable paths. For example: + - `...../games/ENLIVEN/mods/coderfood/unified_foods/hunger.lua:342: in function ...` + - becomes: + `/home/user/minetest/games/ENLIVEN/mods/coderfood/unified_foods/hunger.lua:342: in function ...` + (If paths including working directory are set correctly such as in + `code-workspace` if using VSCode) + - See also "tests" directory in + [outputinspector](https://github.com/Poikilos/outputinspector) +- If you have a missing library error in Linux when running using VSCode + (even when `run-any` works outside of VSCode), try `sudo ld-config` & see: + - [projects-local/copy_projects_to_here.txt](projects-local/copy_projects_to_here.txt) + - +- A future version of `run-any` may require outputinspector such as if the main + function is moved to a submodule there. + ## Configuration Files (configuring the build of ELIVEN [the mod set only, not binaries]) You can place zero or more of the following variables in -$HOME/.config/EnlivenMinetest/scripting.rc: -``` +`$HOME/.config/EnlivenMinetest/scripting.rc`: +```bash CUSTOM_SCRIPTS_PATH MT_POST_INSTALL_SCRIPT_2 # relative to CUSTOM_SCRIPTS_PATH REPO_PATH # Set this if your copy of the repo is not ~/git/EnlivenMinetest ENABLE_CLIENT # =true if you want install-mts.sh to install the client. ``` - If ~/minetest/bin/minetest is present, that has the same effect as - `ENABLE_CLIENT=true`. + `ENABLE_CLIENT=true` You can place a script called mts.sh in your home (or -CUSTOM_SCRIPTS_PATH) directory to run it after install (you can put +`CUSTOM_SCRIPTS_PATH`) directory to run it after install (you can put archive-minetestserver-debug.sh there too to run first). A suggested use is to put a line in mts.sh that starts the server, so that the server starts after the installation or upgrade is complete. @@ -337,6 +371,7 @@ README.txt in Minetest's doc folder which is provided in releases. application), ENLIVEN subgame (including optional child-friendly changes for schools), other files, and licenses of added files. + ## Development For future plans and how you can contribute or build the game (Lua) or package (Lua+engine+conf) see [doc/development.md](doc/development.md) and [issues](https://github.com/Poikilos/EnlivenMinetest/issues). @@ -387,9 +422,6 @@ On 1/22/22 3:21 AM, Robert Kiraly wrote: `` Ok can do. - - - Issues where discussion was requested by RJK: - #500 diff --git a/utilities/run-any b/utilities/run-any index 2f6afc0..728de10 100755 --- a/utilities/run-any +++ b/utilities/run-any @@ -118,7 +118,12 @@ def show_and_return(cmd, enable_collect=False, cwd=None, shell=False): else: if cmd.startswith(bin_rel): cmd = "./" + cmd[len(bin_rel):] - pre_bin = "export LD_LIBRARY_PATH=/usr/lib64 " # doesn't fix #616 + # pre_bin = "export LD_LIBRARY_PATH=/usr/lib64 " # doesn't fix #616 + # Somehow #616 gone, even shell, force_shell, force_env False & no pre_bin + # Maybe restart computer or run `sudo ldconfig` but I did neither + # (unless installing a package triggered it--I installed lsb before the + # problem went away I think). + pre_bin = "" force_shell = False # ^ Either True/False succeeds in bash, either way LD_LIBRARY_PATH # fails in vscode: @@ -129,7 +134,7 @@ def show_and_return(cmd, enable_collect=False, cwd=None, shell=False): # even if run-any is run from bash prompt manually) if platform.system() == "Linux": if isinstance(cmd, list): - pre_bin = "LD_LIBRARY_PATH=/usr/lib64; export LD_LIBRARY_PATH; " # doesn't fix #616 + # pre_bin = "LD_LIBRARY_PATH=/usr/lib64; export LD_LIBRARY_PATH; " # doesn't fix #616 # ^ adding "export " causes bad identifier error later in command cmd = ["bash", "-c", "cd '" + cwd + "'; " + pre_bin + shlex.join(cmd)] else: @@ -170,7 +175,8 @@ def show_and_return(cmd, enable_collect=False, cwd=None, shell=False): # ^ known good path in working bash that can run run-any # os.environ['PATH'] = good_path # still doesn't fix issue #616 this_env = os.environ.copy() - if platform.system() == "Linux": + force_env = False + if force_env and platform.system() == "Linux": # For diagnosing issue #616 LD_LIBRARY_PATH = "/usr/lib64" if "LD_LIBRARY_PATH" not in this_env: