While installing Bright-lite with legacy Cyclus for the last Bright-lite update, I ran into "dependency hell" with the inability to find an appropriate combination of dependency library versions for successful installation. I don't have much experience with github projects, WSL, Ubuntu, or Linux overall, but through extensive online and AI troubleshooting, it seems like this library might be deprecated. I tried setting it up in a miniconda environment (miniconda 26.1.1) on WSL Ubuntu 24.04.4 LTS.
Following my troubleshooting, I had the AI engine summarize the incompatibilities:
When you try to pull it into a modern 2024+ environment like your WSL Ubuntu setup, it breaks across almost every layer of the compilation process. Here is a summary of exactly how and why it is out of date, based on the roadblocks we hit:
1. Initial Install Incompatibilities (Surface Level)
Right out of the gate, the codebase fails against modern syntax rules and default compiler standards:
- Python 3
argparse Strictness: The install.py script attempts to register both --cyclus-root and --cyclus_root as command-line arguments. Modern Python 3 rejects this as a conflicting duplicate, immediately crashing the installer.
- C++ Standards: Bright-lite was written for C++11. Modern compilers (like GCC 13+) default to C++14 or C++17. Because
CMakeLists.txt doesn't explicitly lock the standard to C++11, the modern compiler applies stricter, newer rules to the old code and fails.
- CMake Module Evolution: The older
libxml2 dependency requires the Iconv package. However, the specific CMake search module (FindIconv.cmake) wasn't officially introduced until CMake 3.11, meaning older builds fail to locate system tools correctly.
2. Troubleshooting Roadblocks (Deep System Level)
As we dug deeper and fixed the surface errors, the architectural timeline clashes became much more severe:
- The ABI Mismatch: Cyclus 1.5.3 binaries on Conda were compiled with older 2018 GCC compilers. When your modern Ubuntu system tried to use its native GCC 13+ compiler to link Bright-lite to those old Cyclus libraries, they couldn't communicate (throwing
undefined symbol errors) because the Application Binary Interface (ABI) has changed over the years.
- The Cyclus Preprocessor Trap (
cycpp.py): Cyclus uses a Python script to automatically generate boilerplate C++ code by reading the C preprocessor output.
- When using modern GCC 15, the preprocessor formats its text differently, confusing the Cyclus script and causing it to completely drop the
ReactorFacility class (KeyError).
- Furthermore, the Cyclus script blindly calls the
cpp command. In a Conda environment, this accidentally "escapes" the isolated environment and uses the host system's modern preprocessor anyway.
- The
glibc / Linker Clash (.relr.dyn): To fix the preprocessor issue, we downgraded to the era-appropriate GCC 7. However, this introduced a 2017-era linker (ld). Modern WSL Ubuntu uses a highly compressed C-library format (.relr.dyn inside libc.so.6) that was invented after 2017. The old linker didn't recognize the modern system libraries and completely gave up.
The Bottom Line
Bright-lite isn't just incompatible with a few modern libraries; it is incompatible with the modern Linux operating system itself. The codebase requires an environment where the compiler, the CMake build system, the Cyclus simulator, and the host OS's core C libraries (glibc) are all firmly anchored around Ubuntu 18.04.
I'm hoping this can give some clarity for what's happening on my end, and help for anyone else experiencing similar issues.
While installing Bright-lite with legacy Cyclus for the last Bright-lite update, I ran into "dependency hell" with the inability to find an appropriate combination of dependency library versions for successful installation. I don't have much experience with github projects, WSL, Ubuntu, or Linux overall, but through extensive online and AI troubleshooting, it seems like this library might be deprecated. I tried setting it up in a miniconda environment (miniconda 26.1.1) on WSL Ubuntu 24.04.4 LTS.
Following my troubleshooting, I had the AI engine summarize the incompatibilities:
I'm hoping this can give some clarity for what's happening on my end, and help for anyone else experiencing similar issues.