Skip to content
Open
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
43ac0bb
tmp
Desour Jul 7, 2025
a49930f
clean up a bit
Desour Jul 7, 2025
c8b6fea
refactor safeLoadFile
Desour Jul 20, 2025
5e0bf81
do hash checks
Desour Jul 20, 2025
2e8db91
add all the files
Desour Jul 29, 2025
94114ca
try to fix CI
Desour Jul 29, 2025
956f4f7
try to fix server-only builds
Desour Jul 29, 2025
935e4ef
tmp
Desour Jul 29, 2025
aa4b698
(trivial) add a const
Desour Oct 8, 2025
90004b8
move shebang check into a new safeLoadFileContent
Desour Oct 8, 2025
b28f15c
Just print a warning on hash mismatch
Desour Oct 8, 2025
941cd66
use abs paths for comparison
Desour Oct 8, 2025
b2987c6
remove hash param
Desour Oct 8, 2025
8a8e473
disallow stdin
Desour Oct 8, 2025
9797ce9
simplify file reading code
Desour Oct 8, 2025
4a13e9a
oopsi, remove include
Desour Oct 8, 2025
460f08a
remove old func
Desour Oct 8, 2025
b7377be
remove unnecessary include
Desour Oct 8, 2025
559d271
dont need to pulbicate FileUniquePtr anymore
Desour Oct 8, 2025
bdcf531
use global var instead of fun
Desour Oct 9, 2025
85b43e5
try to fix macos
Desour Oct 9, 2025
94f095a
github, would you please take the commits into the PR?
Desour Oct 9, 2025
f0c5835
try with more *actual* force
Desour Oct 9, 2025
e3a6607
make BUILTIN_SRCS relative
Desour Oct 11, 2025
45adac7
remove debug prints
Desour Oct 11, 2025
cc5bf69
use relative paths in GenerateBuiltinFilesList.cmake
Desour Oct 11, 2025
27c4995
don't add / to BUILTIN_BASE_PATH
Desour Oct 11, 2025
ef6bc53
try to get rid of GenerateBuiltinFilesCpp
Desour Oct 11, 2025
32421db
Revert "try to get rid of GenerateBuiltinFilesCpp"
Desour Oct 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,9 @@ endif()

add_subdirectory(lib/tiniergltf)

# Builtin
add_subdirectory(builtin)

# Subdirectories
# Be sure to add all relevant definitions above this
add_subdirectory(src)
Expand Down
24 changes: 24 additions & 0 deletions builtin/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
add_subdirectory(async)
add_subdirectory(client)
add_subdirectory(common)
add_subdirectory(emerge)
add_subdirectory(fstk)
add_subdirectory(game)
add_subdirectory(mainmenu)
add_subdirectory(pause_menu)
add_subdirectory(profiler)

set(BUILTIN_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/init.lua
${BUILTIN_ASYNC_SRCS}
${BUILTIN_CLIENT_SRCS}
${BUILTIN_COMMON_SRCS}
${BUILTIN_EMERGE_SRCS}
${BUILTIN_FSTK_SRCS}
${BUILTIN_GAME_SRCS}
${BUILTIN_MAINMENU_SRCS}
${BUILTIN_PAUSE_MENU_SRCS}
${BUILTIN_PROFILER_SRCS}
PARENT_SCOPE)

set(BUILTIN_BASE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/ PARENT_SCOPE)
4 changes: 4 additions & 0 deletions builtin/async/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
set(BUILTIN_ASYNC_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/game.lua
${CMAKE_CURRENT_SOURCE_DIR}/mainmenu.lua
PARENT_SCOPE)
6 changes: 6 additions & 0 deletions builtin/client/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
set(BUILTIN_CLIENT_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/chatcommands.lua
${CMAKE_CURRENT_SOURCE_DIR}/init.lua
${CMAKE_CURRENT_SOURCE_DIR}/misc.lua
${CMAKE_CURRENT_SOURCE_DIR}/register.lua
PARENT_SCOPE)
19 changes: 19 additions & 0 deletions builtin/common/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
add_subdirectory(settings)

set(BUILTIN_COMMON_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/after.lua
${CMAKE_CURRENT_SOURCE_DIR}/chatcommands.lua
${CMAKE_CURRENT_SOURCE_DIR}/filterlist.lua
${CMAKE_CURRENT_SOURCE_DIR}/information_formspecs.lua
${CMAKE_CURRENT_SOURCE_DIR}/item_s.lua
${CMAKE_CURRENT_SOURCE_DIR}/math.lua
${CMAKE_CURRENT_SOURCE_DIR}/menu.lua
${CMAKE_CURRENT_SOURCE_DIR}/metatable.lua
${CMAKE_CURRENT_SOURCE_DIR}/misc_helpers.lua
${CMAKE_CURRENT_SOURCE_DIR}/mod_storage.lua
${CMAKE_CURRENT_SOURCE_DIR}/register.lua
${CMAKE_CURRENT_SOURCE_DIR}/serialize.lua
${CMAKE_CURRENT_SOURCE_DIR}/strict.lua
${CMAKE_CURRENT_SOURCE_DIR}/vector.lua
${BUILTIN_COMMON_SETTINGS_SRCS}
PARENT_SCOPE)
9 changes: 9 additions & 0 deletions builtin/common/settings/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
set(BUILTIN_COMMON_SETTINGS_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/components.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_change_mapgen_flags.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_settings.lua
${CMAKE_CURRENT_SOURCE_DIR}/generate_from_settingtypes.lua
${CMAKE_CURRENT_SOURCE_DIR}/init.lua
${CMAKE_CURRENT_SOURCE_DIR}/settingtypes.lua
${CMAKE_CURRENT_SOURCE_DIR}/shadows_component.lua
PARENT_SCOPE)
5 changes: 5 additions & 0 deletions builtin/emerge/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
set(BUILTIN_EMERGE_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/env.lua
${CMAKE_CURRENT_SOURCE_DIR}/init.lua
${CMAKE_CURRENT_SOURCE_DIR}/register.lua
PARENT_SCOPE)
6 changes: 6 additions & 0 deletions builtin/fstk/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
set(BUILTIN_FSTK_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/buttonbar.lua
${CMAKE_CURRENT_SOURCE_DIR}/dialog.lua
${CMAKE_CURRENT_SOURCE_DIR}/tabview.lua
${CMAKE_CURRENT_SOURCE_DIR}/ui.lua
PARENT_SCOPE)
23 changes: 23 additions & 0 deletions builtin/game/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
set(BUILTIN_GAME_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/async.lua
${CMAKE_CURRENT_SOURCE_DIR}/auth.lua
${CMAKE_CURRENT_SOURCE_DIR}/chat.lua
${CMAKE_CURRENT_SOURCE_DIR}/constants.lua
${CMAKE_CURRENT_SOURCE_DIR}/death_screen.lua
${CMAKE_CURRENT_SOURCE_DIR}/deprecated.lua
${CMAKE_CURRENT_SOURCE_DIR}/detached_inventory.lua
${CMAKE_CURRENT_SOURCE_DIR}/falling.lua
${CMAKE_CURRENT_SOURCE_DIR}/features.lua
${CMAKE_CURRENT_SOURCE_DIR}/forceloading.lua
${CMAKE_CURRENT_SOURCE_DIR}/hud.lua
${CMAKE_CURRENT_SOURCE_DIR}/init.lua
${CMAKE_CURRENT_SOURCE_DIR}/item_entity.lua
${CMAKE_CURRENT_SOURCE_DIR}/item.lua
${CMAKE_CURRENT_SOURCE_DIR}/knockback.lua
${CMAKE_CURRENT_SOURCE_DIR}/misc.lua
${CMAKE_CURRENT_SOURCE_DIR}/misc_s.lua
${CMAKE_CURRENT_SOURCE_DIR}/privileges.lua
${CMAKE_CURRENT_SOURCE_DIR}/register.lua
${CMAKE_CURRENT_SOURCE_DIR}/static_spawn.lua
${CMAKE_CURRENT_SOURCE_DIR}/voxelarea.lua
PARENT_SCOPE)
26 changes: 26 additions & 0 deletions builtin/mainmenu/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
add_subdirectory(content)

set(BUILTIN_MAINMENU_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/async_event.lua
${CMAKE_CURRENT_SOURCE_DIR}/common.lua
${CMAKE_CURRENT_SOURCE_DIR}/credits.json
${CMAKE_CURRENT_SOURCE_DIR}/dlg_clients_list.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_config_world.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_create_world.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_delete_content.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_delete_world.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_rebind_keys.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_register.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_reinstall_mtg.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_rename_modpack.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_server_list_mods.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_version_info.lua
${CMAKE_CURRENT_SOURCE_DIR}/game_theme.lua
${CMAKE_CURRENT_SOURCE_DIR}/init.lua
${CMAKE_CURRENT_SOURCE_DIR}/serverlistmgr.lua
${CMAKE_CURRENT_SOURCE_DIR}/tab_about.lua
${CMAKE_CURRENT_SOURCE_DIR}/tab_content.lua
${CMAKE_CURRENT_SOURCE_DIR}/tab_local.lua
${CMAKE_CURRENT_SOURCE_DIR}/tab_online.lua
${BUILTIN_MAINMENU_CONTENT_SRCS}
PARENT_SCOPE)
11 changes: 11 additions & 0 deletions builtin/mainmenu/content/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
set(BUILTIN_MAINMENU_CONTENT_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/contentdb.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_contentdb.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_install.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_overwrite.lua
${CMAKE_CURRENT_SOURCE_DIR}/dlg_package.lua
${CMAKE_CURRENT_SOURCE_DIR}/init.lua
${CMAKE_CURRENT_SOURCE_DIR}/pkgmgr.lua
${CMAKE_CURRENT_SOURCE_DIR}/screenshots.lua
${CMAKE_CURRENT_SOURCE_DIR}/update_detector.lua
PARENT_SCOPE)
4 changes: 4 additions & 0 deletions builtin/pause_menu/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
set(BUILTIN_PAUSE_MENU_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/init.lua
${CMAKE_CURRENT_SOURCE_DIR}/register.lua
PARENT_SCOPE)
6 changes: 6 additions & 0 deletions builtin/profiler/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
set(BUILTIN_PROFILER_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/init.lua
${CMAKE_CURRENT_SOURCE_DIR}/instrumentation.lua
${CMAKE_CURRENT_SOURCE_DIR}/reporter.lua
${CMAKE_CURRENT_SOURCE_DIR}/sampling.lua
PARENT_SCOPE)
25 changes: 25 additions & 0 deletions cmake/Modules/GenerateBuiltinFilesList.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Compute sha256 digests of builtin files

string(LENGTH "${BUILTIN_BASE_PATH}" BUILTIN_BASE_PATH_LEN)

set(BUILTIN_SHA256S "")
foreach(P ${BUILTIN_SRCS})
file(SHA256 ${P} H)

string(SUBSTRING "${P}" 0 ${BUILTIN_BASE_PATH_LEN} BP)
if(NOT (BP STREQUAL BUILTIN_BASE_PATH))
message(FATAL_ERROR "Expected ${P} to be a subpath of ${BUILTIN_BASE_PATH}")
endif()
string(SUBSTRING "${P}" ${BUILTIN_BASE_PATH_LEN} -1 RP)

list(APPEND BUILTIN_SHA256S "{\"${RP}\", \"${H}\"}")
endforeach()

list(JOIN BUILTIN_SHA256S ",\n" BUILTIN_SHA256S_INITIALIZER_LIST)

configure_file(
"${PROJECT_SOURCE_DIR}/builtin_files.cpp.in"
"${PROJECT_BINARY_DIR}/builtin_files.cpp"
)
# touch it, because configure_file doesn't if it doesn't change
file(TOUCH_NOCREATE "${PROJECT_BINARY_DIR}/builtin_files.cpp")
21 changes: 21 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,26 @@
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")


# Command for builtin_files.cpp
add_custom_command(
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For clarity, this is not the same as for GenerateVersion, because GenerateVersion rebuilds every time.
(I hope the comments and DEPENDS make this obvious enough for future readers.)

OUTPUT "${PROJECT_BINARY_DIR}/builtin_files.cpp"
COMMAND ${CMAKE_COMMAND}
-D "PROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}"
-D "PROJECT_BINARY_DIR=${PROJECT_BINARY_DIR}"
-D "BUILTIN_BASE_PATH=${BUILTIN_BASE_PATH}"
-D "BUILTIN_SRCS=\"${BUILTIN_SRCS}\"" #TODO: what if " in path?
-P "${CMAKE_SOURCE_DIR}/cmake/Modules/GenerateBuiltinFilesList.cmake"
DEPENDS
${BUILTIN_SRCS}
"${PROJECT_SOURCE_DIR}/builtin_files.cpp.in"
"${CMAKE_SOURCE_DIR}/cmake/Modules/GenerateBuiltinFilesList.cmake"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")

# Target to generate just builtin_files.cpp (used by util/ci/clang-tidy.sh)
add_custom_target(GenerateBuiltinFilesCpp
DEPENDS "${PROJECT_BINARY_DIR}/builtin_files.cpp")


add_subdirectory(threading)
add_subdirectory(content)
add_subdirectory(database)
Expand Down Expand Up @@ -438,6 +458,7 @@
texture_override.cpp
tileanimation.cpp
tool.cpp
${PROJECT_BINARY_DIR}/builtin_files.cpp
${common_network_SRCS}
${content_SRCS}
${database_SRCS}
Expand Down Expand Up @@ -882,7 +903,7 @@
"running a recent version (from git) as older ones are known not "
"to build/work correctly in all cases.\n"
"THIS APPLIES ESPECIALLY ON macOS OR Linux/aarch64!")
message(WARNING ${explanation_msg})

Check warning on line 906 in src/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / VS 2022 x64-portable

You are using a relatively old version of LuaJIT. We recommend running a

Check warning on line 906 in src/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / VS 2022 x86-portable

You are using a relatively old version of LuaJIT. We recommend running a
endif()
elseif(NOT MSVC)
set(CMAKE_REQUIRED_LIBRARIES "")
Expand Down
16 changes: 16 additions & 0 deletions src/builtin_files.cpp.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Luanti
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (C) 2025 Luanti contributors

// Filled in by the build system

#include "builtin_files.h"

const std::unordered_map<std::string, std::string> &get_builtin_file_sha256_map()
{
static std::unordered_map<std::string, std::string> map = {
@BUILTIN_SHA256S_INITIALIZER_LIST@
};

return map;
}
10 changes: 10 additions & 0 deletions src/builtin_files.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Luanti
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (C) 2025 Luanti contributors

#pragma once

#include <string>
#include <unordered_map>

const std::unordered_map<std::string, std::string> &get_builtin_file_sha256_map();
2 changes: 1 addition & 1 deletion src/script/cpp_api/s_base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ void ScriptApiBase::loadModFromMemory(const std::string &mod_name)

int error_handler = PUSH_ERROR_HANDLER(L);

bool ok = ScriptApiSecurity::safeLoadString(L, *contents, chunk_name.c_str());
bool ok = ScriptApiSecurity::safeLoadFileContent(L, *contents, chunk_name.c_str());
if (ok)
ok = !lua_pcall(L, 0, 0, error_handler);
if (!ok) {
Expand Down
Loading
Loading