From 437a97602e124d198c7ff61d978cd066d6591ea9 Mon Sep 17 00:00:00 2001 From: Peter Kurhajec <61538034+PTKu@users.noreply.github.com> Date: Thu, 27 Nov 2025 19:38:58 +0100 Subject: [PATCH 1/5] Improve build logging, cleanup, and testing support Added logging for `.apax` file collection and traversal creation in `BuildTask` to enhance traceability. Introduced cleanup logic to remove temporary traversal files post-build. Replaced a commented-out loop with recursive `.apax` file collection. Removed unnecessary `Thread.Sleep` in `CreateArtifactsTask` to improve efficiency. Adjusted the order of `ApaxCopyArtifacts` execution. Updated `pack.ps1` to enable testing during packaging with `--do-test` and `--test-level 1` parameters. Optimize `.apax` handling and cleanup in build tasks Refactored `BuildTask` to streamline `.apax` file collection by introducing a centralized list and removing redundant logic. Enhanced traversal project creation to include `DoPack` and added cleanup logic to remove temporary traversal files. Simplified `CreateArtifactsTask` by removing unnecessary delays and improving execution flow. Improved logging for better visibility and made general code readability and maintainability improvements. --- cake/Program.cs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/cake/Program.cs b/cake/Program.cs index b151b0a93..575f684a2 100644 --- a/cake/Program.cs +++ b/cake/Program.cs @@ -172,11 +172,13 @@ public override void Run(BuildContext context) if (context.BuildParameters.DoPack) { + var apaxFiles = new List(); + context.Log.Information("Collecting .apax files."); + ApaxTraversal.CollectApaxFileInfoRecursively(context.RootDir, new List() { ".apax", "traversals" }, apaxFiles); + context.Libraries.ToList().ForEach(lib => { - //foreach (var apaxfile in context.GetApaxFiles(lib)) - var apaxFiles = new List(); - ApaxTraversal.CollectApaxFileInfoRecursively(context.RootDir, new List() { ".apax", "traversals" }, apaxFiles); + //foreach (var apaxfile in context.GetApaxFiles(lib)) foreach (var apaxfile in apaxFiles) { context.UpdateApaxVersion(apaxfile, GitVersionInformation.SemVer); @@ -188,9 +190,10 @@ public override void Run(BuildContext context) // context.DotnetIxr(context.Libraries.Where(p => p.pack && Directory.Exists(Path.Combine(context.RootDir, p.folder, "ctrl", "src"))).Select(p => Path.Combine(context.RootDir, p.folder, "ctrl"))); var traversalProjectFolder = Path.Combine(context.RootDir, "traversals", "apax"); - if (!context.BuildParameters.NoBuild) + if (!context.BuildParameters.NoBuild || context.BuildParameters.DoPack) { var traversalProject = Path.Combine(traversalProjectFolder, "apax.yml"); + context.Log.Information("Creating apax traversal."); context.CreateApaxTraversal(context.RootDir, traversalProject); context.ApaxInstall(new[] { traversalProjectFolder }); context.DotnetIxc(new[] { traversalProjectFolder }); @@ -208,6 +211,9 @@ public override void Run(BuildContext context) context.ApaxBuild(new[] { traversalProjectFolder }); } + // Clean up travversal files after build remove apax.yml and .apax folder + context.DeleteFile(Path.Combine(traversalProjectFolder, "apax.yml")); + System.IO.Directory.Delete(Path.Combine(traversalProjectFolder, ".apax"), true); } } @@ -480,8 +486,7 @@ private static void PackApax(BuildContext context) context.ApaxInstall(context.GetLibraryAxFolders(lib)); context.ApaxBuild(context.GetLibraryAxFolders(lib)); context.ApaxPack(lib); - context.ApaxCopyArtifacts(lib); - System.Threading.Thread.Sleep(10000); + context.ApaxCopyArtifacts(lib); }); } @@ -496,8 +501,7 @@ private static void PackApax(BuildContext context) context.ApaxInstall(context.GetLibraryAxFolders(lib)); context.ApaxBuild(context.GetLibraryAxFolders(lib)); context.ApaxPack(lib); - context.ApaxCopyArtifacts(lib); - System.Threading.Thread.Sleep(10000); + context.ApaxCopyArtifacts(lib); }); } } From b567a0d3bea1d1bada81dd3e6adb86e2a56d1677 Mon Sep 17 00:00:00 2001 From: Peter Kurhajec <61538034+PTKu@users.noreply.github.com> Date: Thu, 27 Nov 2025 20:02:56 +0100 Subject: [PATCH 2/5] wip --- cake/Program.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cake/Program.cs b/cake/Program.cs index 575f684a2..3fd96c34a 100644 --- a/cake/Program.cs +++ b/cake/Program.cs @@ -206,11 +206,13 @@ public override void Run(BuildContext context) context.DotNetBuild(Path.Combine(context.RootDir, "AXOpen.proj"), context.DotNetBuildSettings); } - if (!context.BuildParameters.NoBuild && !context.BuildParameters.DoTest && !context.BuildParameters.DoPack) - { - context.ApaxBuild(new[] { traversalProjectFolder }); - } + //if (!context.BuildParameters.NoBuild && !context.BuildParameters.DoTest && !context.BuildParameters.DoPack) + //{ + // context.Log.Information("Creating apax traversal."); + // context.ApaxBuild(new[] { traversalProjectFolder }); + //} + //throw new NotImplementedException("BuildTask is deprecated. Use CreateArtifactsTask instead."); // Clean up travversal files after build remove apax.yml and .apax folder context.DeleteFile(Path.Combine(traversalProjectFolder, "apax.yml")); System.IO.Directory.Delete(Path.Combine(traversalProjectFolder, ".apax"), true); From 26eb0e6d35a47838730789cb808b5526f19df7b1 Mon Sep 17 00:00:00 2001 From: Peter Kurhajec <61538034+PTKu@users.noreply.github.com> Date: Thu, 27 Nov 2025 20:22:45 +0100 Subject: [PATCH 3/5] wip --- cake/Program.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/cake/Program.cs b/cake/Program.cs index 3fd96c34a..468ee0b4c 100644 --- a/cake/Program.cs +++ b/cake/Program.cs @@ -206,16 +206,17 @@ public override void Run(BuildContext context) context.DotNetBuild(Path.Combine(context.RootDir, "AXOpen.proj"), context.DotNetBuildSettings); } - //if (!context.BuildParameters.NoBuild && !context.BuildParameters.DoTest && !context.BuildParameters.DoPack) - //{ - // context.Log.Information("Creating apax traversal."); - // context.ApaxBuild(new[] { traversalProjectFolder }); - //} + if (!context.BuildParameters.NoBuild && !context.BuildParameters.DoTest && !context.BuildParameters.DoPack) + { + context.Log.Information("Creating apax traversal."); + context.ApaxBuild(new[] { traversalProjectFolder }); + } + - //throw new NotImplementedException("BuildTask is deprecated. Use CreateArtifactsTask instead."); // Clean up travversal files after build remove apax.yml and .apax folder context.DeleteFile(Path.Combine(traversalProjectFolder, "apax.yml")); - System.IO.Directory.Delete(Path.Combine(traversalProjectFolder, ".apax"), true); + + //System.IO.Directory.Delete(Path.Combine(traversalProjectFolder, ".apax"), true); } } From 215ff6f054d0d07190016e3fcab9b3b27532660d Mon Sep 17 00:00:00 2001 From: Peter Kurhajec <61538034+PTKu@users.noreply.github.com> Date: Thu, 27 Nov 2025 21:18:21 +0100 Subject: [PATCH 4/5] Add catalogs section to apax.yml for improved package management --- src/core/ctrl/apax.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/ctrl/apax.yml b/src/core/ctrl/apax.yml index 6575769de..d3c3728f6 100644 --- a/src/core/ctrl/apax.yml +++ b/src/core/ctrl/apax.yml @@ -10,6 +10,8 @@ files: # APAX_BUILD_ARGS: [ -d ] registries: "@inxton": "https://npm.pkg.github.com/" +catalogs: + "@inxton/ax.catalog": 0.0.40 devDependencies: "@inxton/ax-sdk": '0.0.0-dev.0' dependencies: From fb111387fe13b6156b536e12933f87306619a911 Mon Sep 17 00:00:00 2001 From: Peter Kurhajec <61538034+PTKu@users.noreply.github.com> Date: Fri, 28 Nov 2025 09:51:00 +0100 Subject: [PATCH 5/5] Enforce specific Apax version during provisioning Added the `ApaxSelfUpdate` method in `ApaxCmd` to update the `apax` tool to a specified version. Updated `ProvisionTask` in `Program.cs` to call this method, enforcing `apax` version 4.0.0 to address version inconsistencies in some environments. Included comments explaining the temporary enforcement. --- cake/ApaxCmd.cs | 15 +++++++++++++++ cake/Program.cs | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/cake/ApaxCmd.cs b/cake/ApaxCmd.cs index 99b827c23..7e1278a32 100644 --- a/cake/ApaxCmd.cs +++ b/cake/ApaxCmd.cs @@ -27,6 +27,21 @@ public static class ApaxCmd { + + public static void ApaxSelfUpdate(this BuildContext context, string version) + { + var apaxArguments = $"self-update {version}"; + + context.Log.Information($"apax self-update to version '{version}'"); + context.ProcessRunner.Start(Helpers.GetApaxCommand(), new ProcessSettings() + { + Arguments = apaxArguments, + RedirectStandardOutput = false, + RedirectStandardError = false, + Silent = false + }).WaitForExit(); + } + public static void ApaxInstall(this BuildContext context, IEnumerable folders) { foreach (var folder in folders) diff --git a/cake/Program.cs b/cake/Program.cs index 468ee0b4c..548f57dac 100644 --- a/cake/Program.cs +++ b/cake/Program.cs @@ -122,6 +122,10 @@ public override void Run(BuildContext context) { context.CopyFiles(Path.Combine(context.RootDir, "traversals", "traversalBuilds", "**/*.*"), Path.Combine(context.RootDir, library.folder)); } + + // with this we will enforce use of specific apax version at least temporarily + // due to issues with apax versions in some environments. + context.ApaxSelfUpdate("4.0.0"); } private static void ProvisionTools(BuildContext context)