Open zur003 opened 1 year ago
With a legacy product like this it makes sense to keep a build environment using the latest feasible toolset so that any fatal flaws can be fixed and not allow any feature changes. A build environment configured in a VM can be maintained for considerable time. For a Linux VM it could be made available for anyone to use on request. This VM could be used for building and/or running APSIM. Isn't the Linux build set up in a Docker image already?
For some time now, the runtime environment on linux has been limited to mono ~4.8; these build errors are more evidence that we should determine which fossil suite is needed to build it, and leave it there.
Sooner or later, the windows installers will break; in the past we've resorted to sending zipped up installations for such archaeological work.
Should we attempt to "modernise" at all, or should Classic simple be "frozen", with no further changes to the codebase?
No we shouldn't attempt to modernise Classic. Jenkins uses a windows docker container that allows us to build it. This works reliably. I use it on my PC as well from time to time. Yes, on linux it uses mono which isn't ideal but we're not changing it.
Next Gen has to be the priority when we have limited resources.
Is there any future for APSIM Classic? I ask because I recently tried doing "fresh" builds on both WIndows and Ubuntu Linux, and had some issues with both. On Windows, as I indicated in issue #2205, the build script looks for the Visual Studio 2017 toolset. Although it can be readily modified to use VS 2022, the newer toolset requires upgrading the TargetFrameworkVersion from v 4.5 to v 4.8. On Ubuntu Linux (version 22.04, with version 11.3.0 of the gnu compilers), the build failed with a couple of C++ errors. Specifically, in several places the header "limits.h" is included. Apparently that header is now to be used for "C" programs rather than "C++", having been replaced the latter language with and . Also in RLink's REmbed,.cpp, a "taking address of rvalue" error occurs.
In short, it's becoming increasingly difficult to build APSIM Classic with current generation toolsets (not to mention its dependency on Mono rather than dotnet). Should we attempt to "modernise" at all, or should Classic simple be "frozen", with no further changes to the codebase?