diff --git a/cmake/prebuilt-armhf-toolchain.cmake b/cmake/prebuilt-armhf-toolchain.cmake index 1c40aeb9..1980389d 100644 --- a/cmake/prebuilt-armhf-toolchain.cmake +++ b/cmake/prebuilt-armhf-toolchain.cmake @@ -28,6 +28,7 @@ file(WRITE "${toolchain_dir}/toolchain.cmake" "set(CMAKE_CXX_COMPILER \"\${CMAKE_CURRENT_LIST_DIR}/bin/arm-none-linux-gnueabihf-g++\")\n" "set(CMAKE_SYSTEM_NAME \"Linux\")\n" "set(CMAKE_SYSTEM_PROCESSOR \"arm\")\n" + "set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\n" ) set(CMAKE_TOOLCHAIN_FILE "${toolchain_dir}/toolchain.cmake" CACHE STRING "" FORCE) diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index ed33c93b..499311b2 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -3,20 +3,23 @@ ## Launch Sequence ### Common -1. The launcher forks itself +1. The launcher forks itself. 1. The child process continues the launch sequence. 2. The original process monitors the child process for crashes. ### Client -1. The launcher is started by the user - 1. The launcher starts several Zenity dialogs to configure MCPI-Reborn -2. The launcher replaces itself with MCPI - 1. MCPI-Reborn components are loaded using ``LD_PRELOAD`` and ``LD_LIBRARY_PATH`` - 2. If the Media Layer Proxy is enabled, the Media Layer Proxy Client is started as a sub-process +1. The launcher is started by the user. + 1. The launcher starts several Zenity dialogs to configure MCPI-Reborn. + 1. If the corresponding environmental variable for a setting is specified, it will be used instead of the dialog. + 2. If a setting is cached, then the dialog's default value will be the cached value instead of the normal default. + 3. When configuration has been completed, the settings specified will be cached. +2. The launcher replaces itself with MCPI. + 1. MCPI-Reborn components are loaded using ``LD_PRELOAD`` and ``LD_LIBRARY_PATH``. + 2. If the Media Layer Proxy is enabled, then the Media Layer Proxy Client is started as a sub-process. ### Server -1. The launcher is started by the user -2. The launcher replaces itself with MCPI +1. The launcher is started by the user. +2. The launcher replaces itself with MCPI. ## Components @@ -25,7 +28,8 @@ This component configures the various environmental variables required for MCPI- The environmental variables configured by this component includes: * ``LD_PRELOAD`` -* ``LD_LIBRAR_PATH`` +* ``LD_LIBRARY_PATH`` +* ``GCONV_PATH`` * ``MCPI_FEATURE_FLAGS`` * ``MCPI_RENDER_DISTANCE`` * ``MCPI_USERNAME`` @@ -64,7 +68,7 @@ It is made of two parts: While proxying all Media Layer Core API calls across UNIX pipes does hurt performance, it is better than emulating the entire graphics stack. -Using this in server-mode is redundant. +Using this in server-mode is redundant (but is possible). #### Extras This sub-component contains code that must always be linked directly to MCPI. @@ -75,7 +79,7 @@ This is always compiled for ARM. This sub-component includes headers for SDL, GLES, and EGL allowing easy (cross-)compilation. ### Mods -This component links directly to MCPI and patches it to modify its behavior. +This component patches MCPI to modify its behavior. It's loaded using ``LD_PRELOAD``. This is always compiled for ARM. @@ -95,8 +99,7 @@ This component contains all MCPI symbols. MCPI-Reborn has several dependencies: * MCPI (Bundled) * GLFW (Only In Client Mode; Bundled) - * Open GL ES 2.0 - * EGL + * OpenGL ES 2.0 * OpenAL (Only In Client Mode) * ZLib (Required By LibPNG; Bundled) * LibPNG (Bundled) diff --git a/docs/INSTALL.md b/docs/INSTALL.md index d409934c..49e68c7f 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -7,15 +7,15 @@ Download packages [here](https://jenkins.thebrokenrail.com/job/minecraft-pi-rebo * Debian Buster/Ubuntu 18.04 Or Higher * QEMU User-Mode * Debian/Ubuntu: ``sudo apt install qemu-user`` - * Arch: ``sudo pacman -Sy qemu-user`` + * Arch: ``sudo pacman -S qemu-user`` * Client-Only Dependencies * Graphics Drivers * GTK+ 3 * Debian/Ubuntu: ``sudo apt install libgtk-3-0`` - * Arch: ``sudo pacman -Sy gtk3`` + * Arch: ``sudo pacman -S gtk3`` * OpenAL * Debian/Ubuntu: ``sudo apt install libopenal1`` - * Arch: ``sudo pacman -Sy openal`` + * Arch: ``sudo pacman -S openal`` ### Running Follow [these](https://docs.appimage.org/introduction/quickstart.html#how-to-run-an-appimage) instructions. diff --git a/launcher/src/client/cache.cpp b/launcher/src/client/cache.cpp index 0c9075b0..a340d00f 100644 --- a/launcher/src/client/cache.cpp +++ b/launcher/src/client/cache.cpp @@ -46,7 +46,7 @@ launcher_cache load_cache() { stream.read((char *) &cache_version, 1); if (stream.eof() || cache_version != (unsigned char) CACHE_VERSION) { if (!stream.eof()) { - WARN("Invalid Launcher Cache Version (Expected: %i, Actual: %i)", CACHE_VERSION, cache_version); + WARN("Invalid Launcher Cache Version (Expected: %i, Actual: %i)", (int) CACHE_VERSION, (int) cache_version); } else { WARN("Unable To Read Launcher Cache Version"); } diff --git a/libreborn/src/util/exec.c b/libreborn/src/util/exec.c index 358df34a..95b97bea 100644 --- a/libreborn/src/util/exec.c +++ b/libreborn/src/util/exec.c @@ -38,7 +38,7 @@ __attribute__((noreturn)) void safe_execvpe(const char *const argv[], const char int ret = execvpe(argv[0], (char *const *) argv, (char *const *) envp); if (ret == -1) { if (errno == ENOENT && strcmp(argv[0], "qemu-qrm")) { - ERR("Unable to find QEMU! To install on Ubuntu/Debian, run \"sudo apt install qemu-user\". To install on Arch Linux, run \"sudo pacman -Sy qemu-user\"."); + ERR("Unable to find QEMU! To install on Ubuntu/Debian, run \"sudo apt install qemu-user\". To install on Arch Linux, run \"sudo pacman -S qemu-user\"."); } ERR("Unable To Execute Program: %s: %s", argv[0], strerror(errno)); } else {