This commit is contained in:
TheBrokenRail 2023-11-24 03:07:06 -05:00
parent 7969fb2127
commit 177c5262a6
13 changed files with 87 additions and 24 deletions

View File

@ -6,8 +6,7 @@ on:
- master - master
tags: tags:
- '*' - '*'
tags-ignore: - '!flatpak'
- flatpak
jobs: jobs:
build: build:

7
.gitmodules vendored
View File

@ -7,10 +7,6 @@
[submodule "dependencies/LIEF/src"] [submodule "dependencies/LIEF/src"]
path = dependencies/LIEF/src path = dependencies/LIEF/src
url = https://github.com/lief-project/LIEF.git url = https://github.com/lief-project/LIEF.git
[submodule "dependencies/qemu/src"]
path = dependencies/qemu/src
url = https://gitlab.com/qemu-project/qemu.git
ignore = dirty
[submodule "media-layer/core/gles/dependencies/gles-compatibility-layer"] [submodule "media-layer/core/gles/dependencies/gles-compatibility-layer"]
path = dependencies/gles-compatibility-layer/src path = dependencies/gles-compatibility-layer/src
url = https://gitea.thebrokenrail.com/minecraft-pi-reborn/gles-compatibility-layer.git url = https://gitea.thebrokenrail.com/minecraft-pi-reborn/gles-compatibility-layer.git
@ -20,3 +16,6 @@
[submodule "dependencies/utf8cpp/src"] [submodule "dependencies/utf8cpp/src"]
path = dependencies/utf8cpp/src path = dependencies/utf8cpp/src
url = https://github.com/nemtrif/utfcpp.git url = https://github.com/nemtrif/utfcpp.git
[submodule "archives"]
path = archives
url = https://gitea.thebrokenrail.com/minecraft-pi-reborn/archives.git

View File

@ -1 +1 @@
2.5.1 2.5.2

1
archives Submodule

@ -0,0 +1 @@
Subproject commit f878bb1299f3c9506737f311cb01749e41e3f9dd

View File

@ -1,25 +1,21 @@
# Pick URL # Pick Archive
set(toolchain_version "13.2.rel1")
execute_process(COMMAND uname -m OUTPUT_VARIABLE arch OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND uname -m OUTPUT_VARIABLE arch OUTPUT_STRIP_TRAILING_WHITESPACE)
if(arch STREQUAL "x86_64") if(arch STREQUAL "x86_64")
set(toolchain_url "https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz") set(toolchain_file "arm-gnu-toolchain-${toolchain_version}-x86_64-arm-none-linux-gnueabihf.tar.xz")
set(toolchain_sha256 "f5f3c1cfcb429833d363e8fec31bb1282974b119ca8169d6277ce8a549e26d54")
elseif(arch STREQUAL "aarch64" OR arch STREQUAL "armv8b" OR arch STREQUAL "armv8l") elseif(arch STREQUAL "aarch64" OR arch STREQUAL "armv8b" OR arch STREQUAL "armv8l")
set(toolchain_url "https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-aarch64-arm-none-linux-gnueabihf.tar.xz") set(toolchain_file "arm-gnu-toolchain-${toolchain_version}-aarch64-arm-none-linux-gnueabihf.tar.xz")
set(toolchain_sha256 "ac2806f4c1ba772817aded18a5b730b5004592b1f1224d8296de69942e3704bd")
else() else()
message(FATAL_ERROR "Unable To Download Prebuilt ARMHF Toolchain") message(FATAL_ERROR "Unable To Download Prebuilt ARMHF Toolchain")
endif() endif()
# Download If Needed # Download If Needed
include(FetchContent) include(FetchContent)
set(FETCHCONTENT_QUIET FALSE)
FetchContent_Declare( FetchContent_Declare(
prebuilt-armhf-toolchain prebuilt-armhf-toolchain
URL "${toolchain_url}" URL "file://${CMAKE_CURRENT_LIST_DIR}/../archives/${toolchain_file}"
URL_HASH "SHA256=${toolchain_sha256}"
) )
FetchContent_MakeAvailable(prebuilt-armhf-toolchain) FetchContent_MakeAvailable(prebuilt-armhf-toolchain)
set(FETCHCONTENT_QUIET TRUE)
set(toolchain_dir "${prebuilt-armhf-toolchain_SOURCE_DIR}") set(toolchain_dir "${prebuilt-armhf-toolchain_SOURCE_DIR}")
# Force Toolchain # Force Toolchain

View File

@ -2,12 +2,15 @@ project(qemu)
## QEMU ## QEMU
# Version
set(QEMU_VERSION "8.1.3")
# Build # Build
include(ProcessorCount) include(ProcessorCount)
ProcessorCount(NPROC) ProcessorCount(NPROC)
include(ExternalProject) include(ExternalProject)
ExternalProject_Add(qemu ExternalProject_Add(qemu
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src" URL "file://${CMAKE_CURRENT_SOURCE_DIR}/../../archives/qemu-${QEMU_VERSION}.tar.xz"
CONFIGURE_COMMAND CONFIGURE_COMMAND
"${CMAKE_COMMAND}" "-E" "env" "${CMAKE_COMMAND}" "-E" "env"
"PKG_CONFIG_LIBDIR=$ENV{PKG_CONFIG_LIBDIR}" "PKG_CONFIG_LIBDIR=$ENV{PKG_CONFIG_LIBDIR}"
@ -34,4 +37,5 @@ ExternalProject_Get_property(qemu BINARY_DIR)
install(PROGRAMS "${BINARY_DIR}/qemu-arm" DESTINATION "${MCPI_BIN_DIR}") install(PROGRAMS "${BINARY_DIR}/qemu-arm" DESTINATION "${MCPI_BIN_DIR}")
# License # License
install(FILES src/COPYING DESTINATION "${MCPI_LEGAL_DIR}/qemu") ExternalProject_Get_property(qemu SOURCE_DIR)
install(FILES "${SOURCE_DIR}/COPYING" DESTINATION "${MCPI_LEGAL_DIR}/qemu")

@ -1 +0,0 @@
Subproject commit 78385bc738108a9b5b20e639520dc60425ca2a5a

View File

@ -1,5 +1,11 @@
# Changelog # Changelog
**2.5.2**
* Add ``3D Chest Model`` Feature Flag (Enabled By Default)
* Stop Using Jenkins
* Replace ``iconv``
* Replace LibPNG
**2.5.1** **2.5.1**
* Allow Overriidng Custom Skin Server Using ``MCPI_SKIN_SERVER`` Environmental Variable * Allow Overriidng Custom Skin Server Using ``MCPI_SKIN_SERVER`` Environmental Variable
* Fix Bug With SDK Generation * Fix Bug With SDK Generation

View File

@ -1,7 +1,7 @@
# Installation # Installation
## AppImage ## AppImage
Download packages [here](https://jenkins.thebrokenrail.com/job/minecraft-pi-reborn/job/master/lastSuccessfulBuild/artifact/out/). Download packages [here](https://gitea.thebrokenrail.com/minecraft-pi-reborn/minecraft-pi-reborn/releases).
### System Requirements ### System Requirements
* Debian Buster/Ubuntu 18.04 Or Higher * Debian Buster/Ubuntu 18.04 Or Higher

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 164 KiB

View File

@ -88,6 +88,14 @@ static void load(char **ld_preload, char *folder) {
#define MCPI_BINARY "minecraft-pi" #define MCPI_BINARY "minecraft-pi"
#define QEMU_BINARY "qemu-arm" #define QEMU_BINARY "qemu-arm"
#ifndef __ARM_ARCH
#define USE_QEMU
#endif
#define REQUIRED_PAGE_SIZE 4096
#define _STR(x) #x
#define STR(x) _STR(x)
// Exit Handler // Exit Handler
static void exit_handler(__attribute__((unused)) int signal_id) { static void exit_handler(__attribute__((unused)) int signal_id) {
// Pass Signal To Child // Pass Signal To Child
@ -96,6 +104,45 @@ static void exit_handler(__attribute__((unused)) int signal_id) {
_exit(EXIT_SUCCESS); _exit(EXIT_SUCCESS);
} }
// Debug Information
static void run_debug_command(const char *const command[], const char *prefix) {
int status = 0;
char *output = run_command(command, &status, NULL);
if (output != NULL) {
// Remove Newline
size_t length = strlen(output);
if (length > 0 && output[length - 1] == '\n') {
output[length - 1] = '\0';
}
// Print
DEBUG("%s: %s", prefix, output);
free(output);
}
if (!is_exit_status_success(status)) {
ERR("Unable To Gather Debug Information");
}
}
static void print_debug_information() {
// System Information
const char *const command[] = {"uname", "-a", NULL};
run_debug_command(command, "System Information");
// Version
DEBUG("Reborn Version: v%s", MCPI_VERSION);
// Architecture
const char *arch = "Unknown";
#ifdef __x86_64__
arch = "AMD64";
#elif defined(__aarch64__)
arch = "ARM64";
#elif defined(__arm__)
arch = "ARM32";
#endif
DEBUG("Reborn Target Architecture: %s", arch);
}
// Pre-Bootstrap // Pre-Bootstrap
void pre_bootstrap(int argc, char *argv[]) { void pre_bootstrap(int argc, char *argv[]) {
// Set Debug Tag // Set Debug Tag
@ -181,6 +228,17 @@ void pre_bootstrap(int argc, char *argv[]) {
act_sigterm.sa_flags = SA_RESTART; act_sigterm.sa_flags = SA_RESTART;
act_sigterm.sa_handler = &exit_handler; act_sigterm.sa_handler = &exit_handler;
sigaction(SIGTERM, &act_sigterm, NULL); sigaction(SIGTERM, &act_sigterm, NULL);
// Check Page Size (Not Needed When Using QEMU)
#ifndef USE_QEMU
long page_size = sysconf(_SC_PAGESIZE);
if (page_size != REQUIRED_PAGE_SIZE) {
ERR("Invalid page size! A page size of %ld bytes is required, but the system size is %ld bytes.", REQUIRED_PAGE_SIZE, page_size);
}
#endif
// Debug Information
print_debug_information();
} }
// Copy SDK Into ~/.minecraft-pi // Copy SDK Into ~/.minecraft-pi
@ -443,16 +501,18 @@ void bootstrap(int argc, char *argv[]) {
new_args[argv_start] = new_mcpi_exe_path; new_args[argv_start] = new_mcpi_exe_path;
// Non-ARM Systems Need QEMU // Non-ARM Systems Need QEMU
#ifndef __ARM_ARCH #ifdef USE_QEMU
argv_start--; argv_start--;
new_args[argv_start] = QEMU_BINARY; new_args[argv_start] = QEMU_BINARY;
// Use 4k Page Size
set_and_print_env("QEMU_PAGESIZE", STR(REQUIRED_PAGE_SIZE));
#endif #endif
// Setup Environment // Setup Environment
setup_exec_environment(1); setup_exec_environment(1);
// Pass LD_* Variables Through QEMU // Pass LD_* Variables Through QEMU
#ifndef __ARM_ARCH #ifdef USE_QEMU
char *qemu_set_env = NULL; char *qemu_set_env = NULL;
#define pass_variable_through_qemu(name) string_append(&qemu_set_env, "%s%s=%s", qemu_set_env == NULL ? "" : ",", name, getenv(name)); #define pass_variable_through_qemu(name) string_append(&qemu_set_env, "%s%s=%s", qemu_set_env == NULL ? "" : ",", name, getenv(name));
for_each_special_environmental_variable(pass_variable_through_qemu); for_each_special_environmental_variable(pass_variable_through_qemu);

View File

@ -4,7 +4,6 @@ set -e
# Prepare # Prepare
NAME='minecraft-pi-reborn' NAME='minecraft-pi-reborn'
BRANCH='master'
# Build # Build
./scripts/setup.sh "$1" "$2" -DMCPI_IS_APPIMAGE_BUILD=ON ./scripts/setup.sh "$1" "$2" -DMCPI_IS_APPIMAGE_BUILD=ON
@ -30,7 +29,7 @@ case "$2" in
'amd64') APPIMAGE_ARCH='x86_64';; 'amd64') APPIMAGE_ARCH='x86_64';;
esac esac
ARCH="${APPIMAGE_ARCH}" appimagetool \ ARCH="${APPIMAGE_ARCH}" appimagetool \
--updateinformation "zsync|https://jenkins.thebrokenrail.com/job/minecraft-pi-reborn/job/${BRANCH}/lastSuccessfulBuild/artifact/out/${NAME}-latest-$2.AppImage.zsync" \ --updateinformation "zsync|https://gitea.thebrokenrail.com/minecraft-pi-reborn/minecraft-pi-reborn/releases/download/latest/${NAME}-latest-$2.AppImage.zsync" \
--runtime-file "build/appimage/runtime-$2" \ --runtime-file "build/appimage/runtime-$2" \
--comp xz \ --comp xz \
"./out/$1-$2" \ "./out/$1-$2" \