tudat-team / tudat-feedstock Goto Github PK
View Code? Open in Web Editor NEWA conda-smithy repository for tudat.
License: BSD 3-Clause "New" or "Revised" License
A conda-smithy repository for tudat.
License: BSD 3-Clause "New" or "Revised" License
We are disabling the Windows build, which is no longer compiling, presumably due to an update in the windows runner-image.
Last succesfull build: https://dev.azure.com/tudat-team/feedstock-builds/_build/results?buildId=1418&view=results
Recent failing build: https://dev.azure.com/tudat-team/feedstock-builds/_build/results?buildId=1428&view=results
The underlying issue seems to be:
-- The C compiler identification is Clang 18.1.7 with GNU-like command-line
-- The CXX compiler identification is MSVC 19.29.30154.0
CMake Error at D:/bld/tudat_1718280535910/_build_env/Library/share/cmake-3.29/Modules/Platform/Windows-Clang.cmake:177 (message):
The current configuration mixes Clang and MSVC or some other CL compatible
compiler tool. This is not supported. Use either Clang or MSVC as the
compiler for all of C, C++, and/or HIP.
We know that this is not a 'fundamental' issue on Windows, since the Github Actions CI is compiling just fine (https://github.com/tudat-team/tudat/actions/runs/9740456962/job/26877611264#step:12:588), even though a unit tests is failing (but this is unrelated).
The hypothesis that the runner-image is to blame comes from the fact that, when retriggering a commit of the feedstock that was working previously, we get the exact compiler inconsistency error given above.
Why the compiler inconsistency between C and C++ happens is not clear, and I've tried various different changes to the feedstock to force the correct compilers to be used, but to no avail.
I've tried hard-coding the compiler as done here:
But this leads to (https://dev.azure.com/tudat-team/feedstock-builds/_build/results?buildId=1463&view=results):
D:/bld/tudat_1719910775566/_h_env/Library/include\boost/config/auto_link.hpp:435:4: error: "Mixing a dll boost library with a static runtime is a really bad idea..."
435 | # error "Mixing a dll boost library with a static runtime is a really bad idea..."
| ^
D:/bld/tudat_1719910775566/_h_env/Library/include\boost/config/auto_link.hpp:485:4: error: "some required macros where not defined (internal logic error)."
485 | # error "some required macros where not defined (internal logic error)."
| ^
2 errors generated.
NMAKE : fatal error U1077: 'D:\bld\tudat_1719910775566\_build_env\Library\bin\clang++.exe -DCMAKE_BUILD_TYPE=Release -DTUDAT_BUILD_CLANG -DTUDAT_BUILD_WITH_ESTIMATION_TOOLS=1 -DTUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS=0 -DTUDAT_BUILD_WITH_NRLMSISE=1 -DTUDAT_BUILD_WITH_PAGMO=0 -DTUDAT_BUILD_WITH_SOFA_INTERFACE=1 -D_ENABLE_EXTENDED_ALIGNED_STORAGE @CMakeFiles/test_aerodynamics_AerodynamicMomentAndAerodynamicForce.dir/includes_CXX.rsp -std=c++1z -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-unused-result -O3 -O3 -O3 -DNDEBUG -std=c++17 -MD -MT tests\src\astro\aerodynamics\CMakeFiles\test_aerodynamics_AerodynamicMomentAndAerodynamicForce.dir\unitTestAerodynamicMomentAndAerodynamicForce.cpp.obj -MF CMakeFiles\test_aerodynamics_AerodynamicMomentAndAerodynamicForce.dir\unitTestAerodynamicMomentAndAerodynamicForce.cpp.obj.d -o CMakeFiles\test_aerodynamics_AerodynamicMomentAndAerodynamicForce.dir\unitTestAerodynamicMomentAndAerodynamicForce.cpp.obj -c D:\bld\tudat_1719910775566\work\tests\src\astro\aerodynamics\unitTestAerodynamicMomentAndAerodynamicForce.cpp' : return code '0x1'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\bin\HostX64\x64\nmake.exe" -s -f tests\src\astro\aerodynamics\CMakeFiles\test_aerodynamics_AerodynamicMomentAndAerodynamicForce.dir\build.make /nologo -SL tests\src\astro\aerodynamics\CMakeFiles\test_aerodynamics_AerodynamicMomentAndAerodynamicForce.dir\build' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\bin\HostX64\x64\nmake.exe" -s -f CMakeFiles\Makefile2 /nologo -LS all' : return code '0x2'
Stop.
For reasons that are unclear to me, since no settings related to shared/static libraries were changed any time recently.
The above error only occurs when building the unit tests, and not when building the tudat libraries, in which case the compilation completes succesfully (-DTUDAT_BUILD_TESTS=0). But, in this case the tudatpy build using this tudat package fails, again due to a conflict between shared and static libraries.
To allow us to continue developing Tudat, and prevent this issue from cluttering up our builds, we'll be disabling the Windows build for now, until we have time to properly look into this, or hope for the runner images to be updated to resolve this (before anyone asks: no, to my knowledge it's not possible to use old runner images, boo!!!!)
But, Windows users need not worry! It's possible to use a Linux tudatpy kernel installed in WSL through your normal Windows PyCharm/VSCode IDE. Documentation on this will be added soon.
If anyone has ideas on how to fix this, please let us know!
Currently there are issues regarding conflicts in packages with visual studio for the windows compilation. Windows has been removed temporarily while we move to this new deployment method as there is currently no testers for the 3.0 release that are using windows. Priority for this will be bumped up if windows users, who wish to test and contribute to suggestions, make themselves known on this issue. Check the CI history for appveyor builds for the conflict errors.
/rerender
================================================================================
Toolkit version: N0066
SPICE(FILENAMETOOLONG) --
Input file name </home/ggarrett/miniconda3/conda-bld/tudat_1592845536964/_h_env
_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold
_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold
_placehold_placehold_placehold_pl/resource/spice_kernels/pck00010.tpc> has
length 291 characters. The limit on the length of file names stored by FURNSH
is 255 characters.
A traceback follows. The name of the highest level module is first.
furnsh_c --> FURNSH
Oh, by the way: The SPICELIB error handling actions are USER-TAILORABLE. You
can choose whether the Toolkit aborts or continues when errors occur, which
error messages to output, and where to send the output. Please read the ERROR
"Required Reading" file, or see the routines ERRACT, ERRDEV, and ERRPRT.
================================================================================
By convention, conda build has historically used its placeholder naming. It's causing tests to break when loading kernels into spice, due to the 255 character limit with furnsh_c
.
Following tests failing:
- test_aerodynamics_AerodynamicMomentAndAerodynamicForce
- test_aerodynamics_ControlSurfaceIncrements
- test_aerodynamics_AerodynamicCoefficientsFromFile
- test_aerodynamics_WindModel
- test_spice_SpiceInterface
- test_simulation_EnvironmentModelSetup
- test_simulation_AccelerationModelSetup
Enable the use of the conda-forge cspice version, which was disabled in this commit:
66589a5
this needs to be done in one go with various other changes, which we'll pick up after the holiday
As described below @DominicDirkx, testing was disabled for the azure pipelines build.
The Windows build was removed towards the end of this pull request:
tudat-team/tudatpy-feedstock#16
See below a Slack post summarizing the issue with the build:
I had a look at merging this functionality (PR 16, linked above). A few notes:
Now the problem: using this latest tudat conda package (that was built with the updated version of the tudat-feedstock), leads to a failure of the tudatpy-feedstock
https://dev.azure.com/tudat-team/feedstock-builds/_build/results?buildId=1552&view=results
The OSX/Linux issues I know how to handle (Python 3.12 failure is because of the above issue). But, there is a linking issue for the kernel:
lld-link: error: /failifmismatch: mismatch detected for 'RuntimeLibrary':
>>> CMakeFiles/kernel.dir/kernel/expose_numerical_simulation/expose_estimation_setup/expose_estimated_parameter_setup.cpp.obj has value MT_StaticRelease
>>> tudat_propagation_setup.lib(propagationSettings.cpp.obj) has value MD_DynamicRelease
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
NMAKE : fatal error U1077: 'D:\bld\tudatpy_1722884568021\_build_env\Library\bin\clang++.exe' : return code '0x1'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.
why this is happening now, and not before, I don't know. But, I presume it has something to do with different compiler settings in the latest tudat build.
Get notified via a repository dispatch event when there is a new commit on develop branch of tudat and do the following:
Currently, the above operation is being done manually. Automating this via a receiver repository dispatch event will synchronize the dev versions of tudat and tudat-ffedstock
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.