diff --git a/.github/workflows/pboproject.yml b/.github/workflows/pboproject.yml index ac7f30a527..6166d8572d 100644 --- a/.github/workflows/pboproject.yml +++ b/.github/workflows/pboproject.yml @@ -15,7 +15,7 @@ jobs: with: toolsUrl: ${{ secrets.ARMA3_TOOLS_URL }} - name: Install Mikero Tools - uses: arma-actions/mikero-tools@2021-11-06 + uses: arma-actions/mikero-tools@2023-01-04 - name: Download game data run: | Invoke-WebRequest "$env:ARMA3_DATA_URL" -OutFile arma3.zip diff --git a/addons/ee/$PBOPREFIX$ b/addons/ee/$PBOPREFIX$ deleted file mode 100644 index 58937b0bf5..0000000000 --- a/addons/ee/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -x\cba\addons\ee diff --git a/addons/ee/config.cpp b/addons/ee/config.cpp deleted file mode 100644 index e8c52941e3..0000000000 --- a/addons/ee/config.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class cba_ee { - requiredAddons[] = {"cba_xeh"}; - units[] = {}; - }; -}; -class XEH_CLASS_BASE; - -class CfgVehicles { - class B_W_Soldier_F; - class B_W_Story_Protagonist_01_F: B_W_Soldier_F { - XEH_ENABLED; - scope = "1 + parseNumber isClass (configFile >> 'CfgPatches' >> 'A3_Data_F_Contact')"; // Inherits from a public base class. Downgrade to protected if Contact component is not loaded. - }; - class B_W_Story_Major_01_F: B_W_Soldier_F { - XEH_ENABLED; - scope = "1 + parseNumber isClass (configFile >> 'CfgPatches' >> 'A3_Data_F_Contact')"; - }; - class B_W_Story_Instructor_01_F: B_W_Soldier_F { - XEH_ENABLED; - scope = "1 + parseNumber isClass (configFile >> 'CfgPatches' >> 'A3_Data_F_Contact')"; - }; - class B_W_Story_Soldier_01_F: B_W_Soldier_F { - XEH_ENABLED; - scope = "1 + parseNumber isClass (configFile >> 'CfgPatches' >> 'A3_Data_F_Contact')"; - }; - class B_W_Story_Leader_01_F: B_W_Soldier_F { - XEH_ENABLED; - scope = "1 + parseNumber isClass (configFile >> 'CfgPatches' >> 'A3_Data_F_Contact')"; - }; -}; diff --git a/addons/ee/script_component.hpp b/addons/ee/script_component.hpp deleted file mode 100644 index 873a532436..0000000000 --- a/addons/ee/script_component.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "\x\cba\addons\xeh\script_component.hpp" diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index f762ad855c..2ae052a287 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -10,7 +10,7 @@ #define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD // MINIMAL required version for the Mod. Components can specify others.. -#define REQUIRED_VERSION 2.06 +#define REQUIRED_VERSION 2.14 /* // Defined DEBUG_MODE_NORMAL in a few CBA_fncs to prevent looped logging :) diff --git a/addons/xeh/CfgVehicles.hpp b/addons/xeh/CfgVehicles.hpp index 85937895a1..256a44451a 100644 --- a/addons/xeh/CfgVehicles.hpp +++ b/addons/xeh/CfgVehicles.hpp @@ -368,28 +368,6 @@ class CfgVehicles { XEH_ENABLED; }; - // Contact - class VirtualAISquad: Logic { - XEH_ENABLED; - }; - - class Particle_Base_F: Thing { - XEH_ENABLED; - }; - - // Class does not exist without optional Contact component. Recreate inheritance tree up to existing base class. - class Alien_Extractor_01_base_F: Items_base_F {}; - class Alien_Extractor_01_generic_base_F: Alien_Extractor_01_base_F { - XEH_ENABLED; - }; - - class Alien_MatterBall_01_base_F: ThingX { - XEH_ENABLED; - }; - class Alien_MatterBall_01_falling_F: Alien_MatterBall_01_base_F { - XEH_ENABLED; - }; - class O_R_Soldier_Base_F; class O_R_Story_Capitan_01_F: O_R_Soldier_Base_F { XEH_ENABLED; @@ -397,7 +375,6 @@ class CfgVehicles { class O_R_Story_TL_01_F: O_R_Soldier_Base_F { XEH_ENABLED; }; - class C_Story_Scientist_01_F: Civilian_F { XEH_ENABLED; }; @@ -435,123 +412,4 @@ class CfgVehicles { class SpaceshipCapsule_01_F: ThingX { XEH_ENABLED; }; - - // SOG PF - class vn_object_b_base_02: Items_base_F {}; - class Land_vn_candle_01: vn_object_b_base_02 { - XEH_ENABLED; - }; - - class vn_krait: Snake_random_F { - XEH_ENABLED; - }; - - class vn_parachute_base: ParachuteBase { - XEH_ENABLED; - }; - - class vn_parachute_02_base: ParachuteBase {}; - class vn_b_parachute_02: vn_parachute_02_base {}; - class vn_b_parachute_02_blu82: vn_b_parachute_02 {}; - class vn_b_parachute_02_blu82_airdrop: vn_b_parachute_02_blu82 { - XEH_ENABLED; - }; - - class vn_o_static_rsna75_wreck: PlaneWreck { - XEH_ENABLED; - }; - - // CSLA - class StaticATWeapon; - class CSLA_9K113_Stat: StaticATWeapon { - XEH_ENABLED; - }; - - class CSLA_M52_Stat: Mortar_01_base_F { - XEH_ENABLED; - }; - - class CSLA_CIV_AN2_wreck: PlaneWreck { - XEH_ENABLED; - }; - - class CSLA_Plane_base_F: Plane_Base_F {}; - class CSLA_CIV_Plane_base_F: CSLA_Plane_base_F {}; - class CSLA_CIV_Plane_base: CSLA_CIV_Plane_base_F { - XEH_ENABLED; - }; - - class StaticMGWeapon; - class CSLA_UK59L_Stat: StaticMGWeapon { - XEH_ENABLED; - }; - - class CSLA_UK59T_Stat: StaticMGWeapon { - XEH_ENABLED; - }; - - class US85_M252_Stat: Mortar_01_base_F { - XEH_ENABLED; - }; - - // Western Sahara - class Land_PowerPoleWooden_lxWS: PowerLines_Small_base_F { - XEH_ENABLED; - }; - class Land_PowerPoleWooden_L_lxWS: PowerLines_Small_base_F { - XEH_ENABLED; - }; - class Land_PowerPoleWooden_L_off_lxWS: PowerLines_Small_base_F { - XEH_ENABLED; - }; - - class Site_Camels_lxWS: Module_F { - XEH_ENABLED; - }; - - class C_Journalist_lxWS: C_journalist_F { - scope = "1 + parseNumber isClass (configFile >> 'CfgPatches' >> 'data_f_lxWS')"; - XEH_ENABLED; - }; - - class C_Man_casual_1_F_afro; - class C_Tak_01_A_lxWS: C_Man_casual_1_F_afro { - scope = "1 + parseNumber isClass (configFile >> 'CfgPatches' >> 'data_f_lxWS')"; - XEH_ENABLED; - }; - - class B_Soldier_TL_F; - class B_ION_Story_Givens_lxWS: B_Soldier_TL_F { - scope = "1 + parseNumber isClass (configFile >> 'CfgPatches' >> 'data_f_lxWS')"; - XEH_ENABLED; - }; - - class B_Soldier_F; - class I_PMC_Soldier_01_lxWS: B_Soldier_F { - scope = "1 + parseNumber isClass (configFile >> 'CfgPatches' >> 'data_f_lxWS')"; - }; - class I_PMC_Story_Gustavo_lxWS: I_PMC_Soldier_01_lxWS { - XEH_ENABLED; - }; - - class I_SFIA_officer_lxWS: I_officer_F { - scope = "1 + parseNumber isClass (configFile >> 'CfgPatches' >> 'data_f_lxWS')"; - }; - class I_SFIA_Said_lxWS: I_SFIA_officer_lxWS { - XEH_ENABLED; - }; - - class Truck_02_base_F; - class Truck_02_cargo_base_lxWS: Truck_02_base_F { - XEH_ENABLED; - }; - class Truck_02_box_base_lxWS: Truck_02_base_F { - XEH_ENABLED; - }; - class Truck_02_Ammo_base_lxWS: Truck_02_base_F { - XEH_ENABLED; - }; - class Truck_02_aa_base_lxWS: Truck_02_base_F { - XEH_ENABLED; - }; }; diff --git a/addons/xeh/compat_contact/config.cpp b/addons/xeh/compat_contact/config.cpp new file mode 100644 index 0000000000..38efa29a90 --- /dev/null +++ b/addons/xeh/compat_contact/config.cpp @@ -0,0 +1,60 @@ +#include "\x\cba\addons\xeh\script_component.hpp" +#undef COMPONENT +#define COMPONENT xeh_compat_contact + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { "cba_xeh", "A3_Data_F_Contact" }; + skipWhenMissingDependencies = 1; + author = "$STR_CBA_Author"; + VERSION_CONFIG; + // this prevents any patched class from requiring XEH + addonRootClass = "A3_Characters_F"; + }; +}; +class XEH_CLASS_BASE; + +class CfgVehicles { + class B_W_Soldier_F; + class B_W_Story_Protagonist_01_F: B_W_Soldier_F { + XEH_ENABLED; + }; + class B_W_Story_Major_01_F: B_W_Soldier_F { + XEH_ENABLED; + }; + class B_W_Story_Instructor_01_F: B_W_Soldier_F { + XEH_ENABLED; + }; + class B_W_Story_Soldier_01_F: B_W_Soldier_F { + XEH_ENABLED; + }; + class B_W_Story_Leader_01_F: B_W_Soldier_F { + XEH_ENABLED; + }; + + class Logic; + class VirtualAISquad: Logic { + XEH_ENABLED; + }; + + class Thing; + class Particle_Base_F: Thing { + XEH_ENABLED; + }; + + class Alien_Extractor_01_base_F; + class Alien_Extractor_01_generic_base_F: Alien_Extractor_01_base_F { + XEH_ENABLED; + }; + + class ThingX; + class Alien_MatterBall_01_base_F: ThingX { + XEH_ENABLED; + }; + class Alien_MatterBall_01_falling_F: Alien_MatterBall_01_base_F { + XEH_ENABLED; + }; +}; diff --git a/addons/xeh/compat_csla/config.cpp b/addons/xeh/compat_csla/config.cpp new file mode 100644 index 0000000000..360ee3ef62 --- /dev/null +++ b/addons/xeh/compat_csla/config.cpp @@ -0,0 +1,55 @@ +#include "\x\cba\addons\xeh\script_component.hpp" +#undef COMPONENT +#define COMPONENT xeh_compat_csla + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { "cba_xeh", "CSLA", "US85" }; + skipWhenMissingDependencies = 1; + author = "$STR_CBA_Author"; + VERSION_CONFIG; + // this prevents any patched class from requiring XEH + addonRootClass = "A3_Characters_F"; + }; +}; +class XEH_CLASS_BASE; + +class CfgVehicles { + class StaticATWeapon; + class CSLA_9K113_Stat: StaticATWeapon { + XEH_ENABLED; + }; + + class Mortar_01_base_F; + class CSLA_M52_Stat: Mortar_01_base_F { + XEH_ENABLED; + }; + + class PlaneWreck; + class CSLA_CIV_AN2_wreck: PlaneWreck { + XEH_ENABLED; + }; + + class Plane_Base_F; + class CSLA_Plane_base_F: Plane_Base_F {}; + class CSLA_CIV_Plane_base_F: CSLA_Plane_base_F {}; + class CSLA_CIV_Plane_base: CSLA_CIV_Plane_base_F { + XEH_ENABLED; + }; + + class StaticMGWeapon; + class CSLA_UK59L_Stat: StaticMGWeapon { + XEH_ENABLED; + }; + + class CSLA_UK59T_Stat: StaticMGWeapon { + XEH_ENABLED; + }; + + class US85_M252_Stat: Mortar_01_base_F { + XEH_ENABLED; + }; +}; diff --git a/addons/xeh/compat_sog/config.cpp b/addons/xeh/compat_sog/config.cpp new file mode 100644 index 0000000000..f866ef46ce --- /dev/null +++ b/addons/xeh/compat_sog/config.cpp @@ -0,0 +1,47 @@ +#include "\x\cba\addons\xeh\script_component.hpp" +#undef COMPONENT +#define COMPONENT xeh_compat_sog + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { "cba_xeh", "loadorder_f_vietnam" }; + skipWhenMissingDependencies = 1; + author = "$STR_CBA_Author"; + VERSION_CONFIG; + // this prevents any patched class from requiring XEH + addonRootClass = "A3_Characters_F"; + }; +}; +class XEH_CLASS_BASE; + +class CfgVehicles { + class vn_object_b_base_02; + class Land_vn_candle_01: vn_object_b_base_02 { + XEH_ENABLED; + }; + + class Snake_random_F; + class vn_krait: Snake_random_F { + XEH_ENABLED; + }; + + class ParachuteBase; + class vn_parachute_base: ParachuteBase { + XEH_ENABLED; + }; + + class vn_parachute_02_base: ParachuteBase {}; + class vn_b_parachute_02: vn_parachute_02_base {}; + class vn_b_parachute_02_blu82: vn_b_parachute_02 {}; + class vn_b_parachute_02_blu82_airdrop: vn_b_parachute_02_blu82 { + XEH_ENABLED; + }; + + class PlaneWreck; + class vn_o_static_rsna75_wreck: PlaneWreck { + XEH_ENABLED; + }; +}; diff --git a/addons/xeh/compat_ws/config.cpp b/addons/xeh/compat_ws/config.cpp new file mode 100644 index 0000000000..7ce5e24893 --- /dev/null +++ b/addons/xeh/compat_ws/config.cpp @@ -0,0 +1,79 @@ +#include "\x\cba\addons\xeh\script_component.hpp" +#undef COMPONENT +#define COMPONENT xeh_compat_ws + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { "cba_xeh", "data_f_lxWS" }; + skipWhenMissingDependencies = 1; + author = "$STR_CBA_Author"; + VERSION_CONFIG; + // this prevents any patched class from requiring XEH + addonRootClass = "A3_Characters_F"; + }; +}; +class XEH_CLASS_BASE; + +class CfgVehicles { + class PowerLines_Small_base_F; + class Land_PowerPoleWooden_lxWS: PowerLines_Small_base_F { + XEH_ENABLED; + }; + class Land_PowerPoleWooden_L_lxWS: PowerLines_Small_base_F { + XEH_ENABLED; + }; + class Land_PowerPoleWooden_L_off_lxWS: PowerLines_Small_base_F { + XEH_ENABLED; + }; + + class Module_F; + class Site_Camels_lxWS: Module_F { + XEH_ENABLED; + }; + + class C_journalist_F; + class C_Journalist_lxWS: C_journalist_F { + XEH_ENABLED; + }; + + class C_Man_casual_1_F_afro; + class C_Tak_01_A_lxWS: C_Man_casual_1_F_afro { + XEH_ENABLED; + }; + + class B_Soldier_TL_F; + class B_ION_Story_Givens_lxWS: B_Soldier_TL_F { + XEH_ENABLED; + }; + + class B_Soldier_F; + class I_PMC_Soldier_01_lxWS: B_Soldier_F { + }; + class I_PMC_Story_Gustavo_lxWS: I_PMC_Soldier_01_lxWS { + XEH_ENABLED; + }; + + class I_officer_F; + class I_SFIA_officer_lxWS: I_officer_F { + }; + class I_SFIA_Said_lxWS: I_SFIA_officer_lxWS { + XEH_ENABLED; + }; + + class Truck_02_base_F; + class Truck_02_cargo_base_lxWS: Truck_02_base_F { + XEH_ENABLED; + }; + class Truck_02_box_base_lxWS: Truck_02_base_F { + XEH_ENABLED; + }; + class Truck_02_Ammo_base_lxWS: Truck_02_base_F { + XEH_ENABLED; + }; + class Truck_02_aa_base_lxWS: Truck_02_base_F { + XEH_ENABLED; + }; +}; diff --git a/addons/xeh/ee/config.cpp b/addons/xeh/ee/config.cpp new file mode 100644 index 0000000000..1dc18df178 --- /dev/null +++ b/addons/xeh/ee/config.cpp @@ -0,0 +1,6 @@ +class CfgPatches { + class cba_ee { + requiredAddons[] = {"cba_xeh"}; + units[] = {}; + }; +}; diff --git a/tools/make.py b/tools/make.py index 301edfb3d1..e373247a04 100644 --- a/tools/make.py +++ b/tools/make.py @@ -40,6 +40,7 @@ import os import os.path +import pathlib import shutil import platform import glob @@ -1293,12 +1294,24 @@ def main(argv): version_stamp_pboprefix(module,commit_id) - if os.path.isfile(nobinFilePath): + skipPreprocessing = False + addonTomlPath = os.path.join(work_drive, prefix, module, "addon.toml") + if os.path.isfile(addonTomlPath): + with open(addonTomlPath, "r") as f: + tomlFile = f.read() + if "preprocess = false" in tomlFile: + print_error("'preprocess = false' not supported") + raise + skipPreprocessing = "[preprocess]\nenabled = false" in tomlFile + + if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")): print_green("$NOBIN$ Found. Proceeding with non-binarizing!") cmd = [makepboTool, "-P","-A","-X=*.backup", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"addons")] - + elif skipPreprocessing: + print_green("addon.toml set [preprocess.enabled = false]. Proceeding with non-binerized config build!") + cmd = [pboproject, "-B", "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S", "+Noisy", "+Clean", "-Warnings", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"] else: - cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S", "+Noisy", "+Clean", "-Warnings", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"] + cmd = [pboproject, "+B", "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S", "+Noisy", "+Clean", "-Warnings", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"] color("grey") if quiet: @@ -1521,6 +1534,16 @@ def main(argv): if len(failedBuilds) > 0: for failedBuild in failedBuilds: print("- {} build failed!".format(failedBuild)) + failedBuild_path = pathlib.Path( + "P:/temp").joinpath(f"{failedBuild}.packing.log") + if (failedBuild_path.exists()): + print(f" Log {failedBuild_path} tail:") + with open(failedBuild_path) as failedBuild_file: + lines = failedBuild_file.readlines() + for index, line in enumerate(lines[-3:]): + print(f" {len(lines) + index -2}: {line}", end='') + else: + print(f" Log {failedBuild_path} does not exist") if len(missingFiles) > 0: for missingFile in missingFiles: print("- {} not found!".format(missingFile))