Revert pack trimming introduced by #82084

This commit is contained in:
Mikael Hermansson 2024-04-10 12:00:04 +02:00
parent 6c57928063
commit a057158d75
8 changed files with 37 additions and 59 deletions

View file

@ -201,7 +201,7 @@ void EditorFileServer::poll() {
// Scan files to send. // Scan files to send.
_scan_files_changed(EditorFileSystem::get_singleton()->get_filesystem(), tags, files_to_send, cached_files); _scan_files_changed(EditorFileSystem::get_singleton()->get_filesystem(), tags, files_to_send, cached_files);
// Add forced export files // Add forced export files
Vector<String> forced_export = EditorExportPlatform::get_main_pack_forced_export_files(); Vector<String> forced_export = EditorExportPlatform::get_forced_export_files();
for (int i = 0; i < forced_export.size(); i++) { for (int i = 0; i < forced_export.size(); i++) {
_add_custom_file(forced_export[i], files_to_send, cached_files); _add_custom_file(forced_export[i], files_to_send, cached_files);
} }

View file

@ -864,19 +864,23 @@ String EditorExportPlatform::_get_script_encryption_key(const Ref<EditorExportPr
return p_preset->get_script_encryption_key().to_lower(); return p_preset->get_script_encryption_key().to_lower();
} }
Vector<String> EditorExportPlatform::get_main_pack_forced_export_files() { Vector<String> EditorExportPlatform::get_forced_export_files() {
// First, get files required by any PCK. Vector<String> files;
Vector<String> files = get_forced_export_files();
files.push_back(ProjectSettings::get_singleton()->get_global_class_list_path());
String icon = GLOBAL_GET("application/config/icon"); String icon = GLOBAL_GET("application/config/icon");
String splash = GLOBAL_GET("application/boot_splash/image");
if (!icon.is_empty() && FileAccess::exists(icon)) { if (!icon.is_empty() && FileAccess::exists(icon)) {
files.push_back(icon); files.push_back(icon);
} }
if (!splash.is_empty() && FileAccess::exists(splash) && icon != splash) {
String splash = GLOBAL_GET("application/boot_splash/image");
if (!splash.is_empty() && icon != splash && FileAccess::exists(splash)) {
files.push_back(splash); files.push_back(splash);
} }
String resource_cache_file = ResourceUID::get_cache_file();
if (FileAccess::exists(resource_cache_file)) {
files.push_back(resource_cache_file);
}
String extension_list_config_file = GDExtension::get_extension_list_config_file(); String extension_list_config_file = GDExtension::get_extension_list_config_file();
if (FileAccess::exists(extension_list_config_file)) { if (FileAccess::exists(extension_list_config_file)) {
@ -909,19 +913,7 @@ Vector<String> EditorExportPlatform::get_main_pack_forced_export_files() {
return files; return files;
} }
Vector<String> EditorExportPlatform::get_forced_export_files() { Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> &p_preset, bool p_debug, EditorExportSaveFunction p_func, void *p_udata, EditorExportSaveSharedObject p_so_func) {
Vector<String> files;
files.push_back(ProjectSettings::get_singleton()->get_global_class_list_path());
String resource_cache_file = ResourceUID::get_cache_file();
if (FileAccess::exists(resource_cache_file)) {
files.push_back(resource_cache_file);
}
return files;
}
Error EditorExportPlatform::export_project_files(bool p_main_pack, const Ref<EditorExportPreset> &p_preset, bool p_debug, EditorExportSaveFunction p_func, void *p_udata, EditorExportSaveSharedObject p_so_func) {
//figure out paths of files that will be exported //figure out paths of files that will be exported
HashSet<String> paths; HashSet<String> paths;
Vector<String> path_remaps; Vector<String> path_remaps;
@ -968,11 +960,9 @@ Error EditorExportPlatform::export_project_files(bool p_main_pack, const Ref<Edi
} }
} }
if (p_main_pack) { //add native icons to non-resource include list
// Add native icons to non-resource include list.
_edit_filter_list(paths, String("*.icns"), false); _edit_filter_list(paths, String("*.icns"), false);
_edit_filter_list(paths, String("*.ico"), false); _edit_filter_list(paths, String("*.ico"), false);
}
_edit_filter_list(paths, p_preset->get_include_filter(), false); _edit_filter_list(paths, p_preset->get_include_filter(), false);
_edit_filter_list(paths, p_preset->get_exclude_filter(), true); _edit_filter_list(paths, p_preset->get_exclude_filter(), true);
@ -1404,12 +1394,7 @@ Error EditorExportPlatform::export_project_files(bool p_main_pack, const Ref<Edi
} }
} }
Vector<String> forced_export; Vector<String> forced_export = get_forced_export_files();
if (p_main_pack) {
forced_export = get_main_pack_forced_export_files();
} else {
forced_export = get_forced_export_files();
}
for (int i = 0; i < forced_export.size(); i++) { for (int i = 0; i < forced_export.size(); i++) {
Vector<uint8_t> array = FileAccess::get_file_as_bytes(forced_export[i]); Vector<uint8_t> array = FileAccess::get_file_as_bytes(forced_export[i]);
err = p_func(p_udata, forced_export[i], array, idx, total, enc_in_filters, enc_ex_filters, key); err = p_func(p_udata, forced_export[i], array, idx, total, enc_in_filters, enc_ex_filters, key);
@ -1418,19 +1403,13 @@ Error EditorExportPlatform::export_project_files(bool p_main_pack, const Ref<Edi
} }
} }
if (p_main_pack) {
String config_file = "project.binary"; String config_file = "project.binary";
String engine_cfb = EditorPaths::get_singleton()->get_cache_dir().path_join("tmp" + config_file); String engine_cfb = EditorPaths::get_singleton()->get_cache_dir().path_join("tmp" + config_file);
ProjectSettings::get_singleton()->save_custom(engine_cfb, custom_map, custom_list); ProjectSettings::get_singleton()->save_custom(engine_cfb, custom_map, custom_list);
Vector<uint8_t> data = FileAccess::get_file_as_bytes(engine_cfb); Vector<uint8_t> data = FileAccess::get_file_as_bytes(engine_cfb);
DirAccess::remove_file_or_error(engine_cfb); DirAccess::remove_file_or_error(engine_cfb);
err = p_func(p_udata, "res://" + config_file, data, idx, total, enc_in_filters, enc_ex_filters, key);
if (err != OK) {
return err;
}
}
return OK; return p_func(p_udata, "res://" + config_file, data, idx, total, enc_in_filters, enc_ex_filters, key);
} }
Error EditorExportPlatform::_add_shared_object(void *p_userdata, const SharedObject &p_so) { Error EditorExportPlatform::_add_shared_object(void *p_userdata, const SharedObject &p_so) {
@ -1559,7 +1538,7 @@ void EditorExportPlatform::zip_folder_recursive(zipFile &p_zip, const String &p_
da->list_dir_end(); da->list_dir_end();
} }
Error EditorExportPlatform::save_pack(bool p_main_pack, const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, Vector<SharedObject> *p_so_files, bool p_embed, int64_t *r_embedded_start, int64_t *r_embedded_size) { Error EditorExportPlatform::save_pack(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, Vector<SharedObject> *p_so_files, bool p_embed, int64_t *r_embedded_start, int64_t *r_embedded_size) {
EditorProgress ep("savepack", TTR("Packing"), 102, true); EditorProgress ep("savepack", TTR("Packing"), 102, true);
// Create the temporary export directory if it doesn't exist. // Create the temporary export directory if it doesn't exist.
@ -1578,7 +1557,7 @@ Error EditorExportPlatform::save_pack(bool p_main_pack, const Ref<EditorExportPr
pd.f = ftmp; pd.f = ftmp;
pd.so_files = p_so_files; pd.so_files = p_so_files;
Error err = export_project_files(p_main_pack, p_preset, p_debug, _save_pack_file, &pd, _add_shared_object); Error err = export_project_files(p_preset, p_debug, _save_pack_file, &pd, _add_shared_object);
// Close temp file. // Close temp file.
pd.f.unref(); pd.f.unref();
@ -1796,7 +1775,7 @@ Error EditorExportPlatform::save_zip(const Ref<EditorExportPreset> &p_preset, bo
zd.ep = &ep; zd.ep = &ep;
zd.zip = zip; zd.zip = zip;
Error err = export_project_files(false, p_preset, p_debug, _save_zip_file, &zd); Error err = export_project_files(p_preset, p_debug, _save_zip_file, &zd);
if (err != OK && err != ERR_SKIP) { if (err != OK && err != ERR_SKIP) {
add_message(EXPORT_MESSAGE_ERROR, TTR("Save ZIP"), TTR("Failed to export project files.")); add_message(EXPORT_MESSAGE_ERROR, TTR("Save ZIP"), TTR("Failed to export project files."));
} }
@ -1808,7 +1787,7 @@ Error EditorExportPlatform::save_zip(const Ref<EditorExportPreset> &p_preset, bo
Error EditorExportPlatform::export_pack(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags) { Error EditorExportPlatform::export_pack(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags) {
ExportNotifier notifier(*this, p_preset, p_debug, p_path, p_flags); ExportNotifier notifier(*this, p_preset, p_debug, p_path, p_flags);
return save_pack(false, p_preset, p_debug, p_path); return save_pack(p_preset, p_debug, p_path);
} }
Error EditorExportPlatform::export_zip(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags) { Error EditorExportPlatform::export_zip(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags) {

View file

@ -203,7 +203,6 @@ public:
return worst_type; return worst_type;
} }
static Vector<String> get_main_pack_forced_export_files();
static Vector<String> get_forced_export_files(); static Vector<String> get_forced_export_files();
virtual bool fill_log_messages(RichTextLabel *p_log, Error p_err); virtual bool fill_log_messages(RichTextLabel *p_log, Error p_err);
@ -217,9 +216,9 @@ public:
virtual String get_name() const = 0; virtual String get_name() const = 0;
virtual Ref<Texture2D> get_logo() const = 0; virtual Ref<Texture2D> get_logo() const = 0;
Error export_project_files(bool p_main_pack, const Ref<EditorExportPreset> &p_preset, bool p_debug, EditorExportSaveFunction p_func, void *p_udata, EditorExportSaveSharedObject p_so_func = nullptr); Error export_project_files(const Ref<EditorExportPreset> &p_preset, bool p_debug, EditorExportSaveFunction p_func, void *p_udata, EditorExportSaveSharedObject p_so_func = nullptr);
Error save_pack(bool p_main_pack, const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, Vector<SharedObject> *p_so_files = nullptr, bool p_embed = false, int64_t *r_embedded_start = nullptr, int64_t *r_embedded_size = nullptr); Error save_pack(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, Vector<SharedObject> *p_so_files = nullptr, bool p_embed = false, int64_t *r_embedded_start = nullptr, int64_t *r_embedded_size = nullptr);
Error save_zip(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path); Error save_zip(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path);
virtual bool poll_export() { return false; } virtual bool poll_export() { return false; }

View file

@ -194,7 +194,7 @@ Error EditorExportPlatformPC::export_project_data(const Ref<EditorExportPreset>
int64_t embedded_pos; int64_t embedded_pos;
int64_t embedded_size; int64_t embedded_size;
Error err = save_pack(true, p_preset, p_debug, pck_path, &so_files, p_preset->get("binary_format/embed_pck"), &embedded_pos, &embedded_size); Error err = save_pack(p_preset, p_debug, pck_path, &so_files, p_preset->get("binary_format/embed_pck"), &embedded_pos, &embedded_size);
if (err == OK && p_preset->get("binary_format/embed_pck")) { if (err == OK && p_preset->get("binary_format/embed_pck")) {
if (embedded_size >= 0x100000000 && String(p_preset->get("binary_format/architecture")).contains("32")) { if (embedded_size >= 0x100000000 && String(p_preset->get("binary_format/architecture")).contains("32")) {
add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), TTR("On 32-bit exports the embedded PCK cannot be bigger than 4 GiB.")); add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), TTR("On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."));

View file

@ -2658,7 +2658,7 @@ String EditorExportPlatformAndroid::get_apk_expansion_fullpath(const Ref<EditorE
Error EditorExportPlatformAndroid::save_apk_expansion_file(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path) { Error EditorExportPlatformAndroid::save_apk_expansion_file(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path) {
String fullpath = get_apk_expansion_fullpath(p_preset, p_path); String fullpath = get_apk_expansion_fullpath(p_preset, p_path);
Error err = save_pack(false, p_preset, p_debug, fullpath); Error err = save_pack(p_preset, p_debug, fullpath);
return err; return err;
} }
@ -3102,9 +3102,9 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
user_data.libs_directory = gradle_build_directory.path_join("libs"); user_data.libs_directory = gradle_build_directory.path_join("libs");
user_data.debug = p_debug; user_data.debug = p_debug;
if (p_flags & DEBUG_FLAG_DUMB_CLIENT) { if (p_flags & DEBUG_FLAG_DUMB_CLIENT) {
err = export_project_files(true, p_preset, p_debug, ignore_apk_file, &user_data, copy_gradle_so); err = export_project_files(p_preset, p_debug, ignore_apk_file, &user_data, copy_gradle_so);
} else { } else {
err = export_project_files(true, p_preset, p_debug, rename_and_store_file_in_gradle_project, &user_data, copy_gradle_so); err = export_project_files(p_preset, p_debug, rename_and_store_file_in_gradle_project, &user_data, copy_gradle_so);
} }
if (err != OK) { if (err != OK) {
add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Could not export project files to gradle project.")); add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Could not export project files to gradle project."));
@ -3489,7 +3489,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
APKExportData ed; APKExportData ed;
ed.ep = &ep; ed.ep = &ep;
ed.apk = unaligned_apk; ed.apk = unaligned_apk;
err = export_project_files(true, p_preset, p_debug, ignore_apk_file, &ed, save_apk_so); err = export_project_files(p_preset, p_debug, ignore_apk_file, &ed, save_apk_so);
} else { } else {
if (apk_expansion) { if (apk_expansion) {
err = save_apk_expansion_file(p_preset, p_debug, p_path); err = save_apk_expansion_file(p_preset, p_debug, p_path);
@ -3501,7 +3501,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
APKExportData ed; APKExportData ed;
ed.ep = &ep; ed.ep = &ep;
ed.apk = unaligned_apk; ed.apk = unaligned_apk;
err = export_project_files(true, p_preset, p_debug, save_apk_file, &ed, save_apk_so); err = export_project_files(p_preset, p_debug, save_apk_file, &ed, save_apk_so);
} }
} }

View file

@ -1662,7 +1662,7 @@ Error EditorExportPlatformIOS::_export_project_helper(const Ref<EditorExportPres
} }
String pack_path = binary_dir + ".pck"; String pack_path = binary_dir + ".pck";
Vector<SharedObject> libraries; Vector<SharedObject> libraries;
Error err = save_pack(true, p_preset, p_debug, pack_path, &libraries); Error err = save_pack(p_preset, p_debug, pack_path, &libraries);
if (err) { if (err) {
// Message is supplied by the subroutine method. // Message is supplied by the subroutine method.
return err; return err;

View file

@ -1774,7 +1774,7 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
String pack_path = tmp_app_path_name + "/Contents/Resources/" + pkg_name + ".pck"; String pack_path = tmp_app_path_name + "/Contents/Resources/" + pkg_name + ".pck";
Vector<SharedObject> shared_objects; Vector<SharedObject> shared_objects;
err = save_pack(true, p_preset, p_debug, pack_path, &shared_objects); err = save_pack(p_preset, p_debug, pack_path, &shared_objects);
bool lib_validation = p_preset->get("codesign/entitlements/disable_library_validation"); bool lib_validation = p_preset->get("codesign/entitlements/disable_library_validation");
if (!shared_objects.is_empty() && sign_enabled && ad_hoc && !lib_validation) { if (!shared_objects.is_empty() && sign_enabled && ad_hoc && !lib_validation) {

View file

@ -479,7 +479,7 @@ Error EditorExportPlatformWeb::export_project(const Ref<EditorExportPreset> &p_p
// Export pck and shared objects // Export pck and shared objects
Vector<SharedObject> shared_objects; Vector<SharedObject> shared_objects;
String pck_path = base_path + ".pck"; String pck_path = base_path + ".pck";
Error error = save_pack(true, p_preset, p_debug, pck_path, &shared_objects); Error error = save_pack(p_preset, p_debug, pck_path, &shared_objects);
if (error != OK) { if (error != OK) {
add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not write file: \"%s\"."), pck_path)); add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not write file: \"%s\"."), pck_path));
return error; return error;