Bug 2397183

Summary: lfortran: FTBFS in Fedora Rawhide/F44
Product: [Fedora] Fedora Reporter: Elliott Sales de Andrade <quantum.analyst>
Component: lfortranAssignee: Benson Muite <benson_muite>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: andrii.verbytskyi, benson_muite, junghans
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
URL: https://koschei.fedoraproject.org/package/lfortran
Whiteboard:
Fixed In Version: lfortran-0.56.0-2.fc43 Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2025-10-02 01:20:19 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2349512    

Description Elliott Sales de Andrade 2025-09-21 19:55:38 UTC
Description of problem:
Package lfortran fails to build from source in Fedora Rawhide.

This has been the case since about a week after the last build:
https://koschei.fedoraproject.org/build/21260216

Version-Release number of selected component (if applicable):
0.56.0-1.fc44

Steps to Reproduce:
koji build --scratch f44 lfortran-0.56.0-1.fc44.src.rpm

Additional info:
This package is tracked by Koschei. See:
https://koschei.fedoraproject.org/package/lfortran

Reproducible: Always

Comment 1 Elliott Sales de Andrade 2025-09-21 20:28:23 UTC
OK, something else changed at that point. The latest build in koschei is complaining about something in xeus' CMake setup. The bump of xeus to 5.2.4 does fix that, but there is a new problem caused by LLVM 21, I think:

https://copr.fedorainfracloud.org/coprs/qulogic/xeus523/build/9587866/

In file included from /builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/codegen/evaluator.cpp:66:
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/../libasr/codegen/KaleidoscopeJIT.h: In constructor ‘llvm::orc::KaleidoscopeJIT::KaleidoscopeJIT(std::unique_ptr<llvm::orc::ExecutionSession>, llvm::orc::JITTargetMachineBuilder, llvm::DataLayout)’:
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/../libasr/codegen/KaleidoscopeJIT.h:56:9: error: no matching function for call to ‘llvm::orc::RTDyldObjectLinkingLayer::RTDyldObjectLinkingLayer(llvm::orc::ExecutionSession&, llvm::orc::KaleidoscopeJIT::KaleidoscopeJIT(std::unique_ptr<llvm::orc::ExecutionSession>, llvm::orc::JITTargetMachineBuilder, llvm::DataLayout)::<lambda()>)’
   56 |         ObjectLayer(*this->ES,
      |         ^~~~~~~~~~~~~~~~~~~~~~
   57 |                     []() { return std::make_unique<SectionMemoryManager>(); }),
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/../libasr/codegen/KaleidoscopeJIT.h:56:9: note: there is 1 candidate
In file included from /builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/../libasr/codegen/KaleidoscopeJIT.h:23:
/usr/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h:58:3: note: candidate 1: ‘llvm::orc::RTDyldObjectLinkingLayer::RTDyldObjectLinkingLayer(llvm::orc::ExecutionSession&, GetMemoryManagerFunction)’
   58 |   RTDyldObjectLinkingLayer(ExecutionSession &ES,
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h:59:53: note: no known conversion for argument 2 from ‘llvm::orc::KaleidoscopeJIT::KaleidoscopeJIT(std::unique_ptr<llvm::orc::ExecutionSession>, llvm::orc::JITTargetMachineBuilder, llvm::DataLayout)::<lambda()>’ to ‘llvm::orc::RTDyldObjectLinkingLayer::GetMemoryManagerFunction’ {aka ‘llvm::unique_function<std::unique_ptr<llvm::RuntimeDyld::MemoryManager>(const llvm::MemoryBuffer&)>’}
   59 |                            GetMemoryManagerFunction GetMemoryManager);
      |                            ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/../libasr/codegen/KaleidoscopeJIT.h: In static member function ‘static llvm::Expected<std::unique_ptr<llvm::orc::KaleidoscopeJIT> > llvm::orc::KaleidoscopeJIT::Create()’:
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/../libasr/codegen/KaleidoscopeJIT.h:76:16: error: ‘SelfExecutorProcessControl’ has not been declared; did you mean ‘ExecutorProcessControl’?
   76 |     auto EPC = SelfExecutorProcessControl::Create();
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                ExecutorProcessControl
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/codegen/evaluator.cpp: In member function ‘std::unique_ptr<llvm::Module> LCompilers::LLVMEvaluator::parse_module(const std::string&, const std::string&)’:
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/codegen/evaluator.cpp:275:29: error: cannot convert ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘llvm::Triple’
  275 |     module->setTargetTriple(target_triple);
      |                             ^~~~~~~~~~~~~
      |                             |
      |                             std::string {aka std::__cxx11::basic_string<char>}
In file included from /usr/include/llvm/Analysis/TargetLibraryInfo.h:15,
                 from /builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/codegen/evaluator.cpp:8:
/usr/include/llvm/IR/Module.h:324:31: note: initializing argument 1 of ‘void llvm::Module::setTargetTriple(llvm::Triple)’
  324 |   void setTargetTriple(Triple T) { TargetTriple = std::move(T); }
      |                        ~~~~~~~^
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/codegen/evaluator.cpp: In member function ‘void LCompilers::LLVMEvaluator::add_module(std::unique_ptr<llvm::Module>)’:
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/codegen/evaluator.cpp:300:26: error: cannot convert ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘llvm::Triple’
  300 |     mod->setTargetTriple(target_triple);
      |                          ^~~~~~~~~~~~~
      |                          |
      |                          std::string {aka std::__cxx11::basic_string<char>}
/usr/include/llvm/IR/Module.h:324:31: note: initializing argument 1 of ‘void llvm::Module::setTargetTriple(llvm::Triple)’
  324 |   void setTargetTriple(Triple T) { TargetTriple = std::move(T); }
      |                        ~~~~~~~^
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/codegen/evaluator.cpp: In member function ‘void LCompilers::LLVMEvaluator::save_object_file(llvm::Module&, const std::string&)’:
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/codegen/evaluator.cpp:382:23: error: cannot convert ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘llvm::Triple’
  382 |     m.setTargetTriple(target_triple);
      |                       ^~~~~~~~~~~~~
      |                       |
      |                       std::string {aka std::__cxx11::basic_string<char>}
/usr/include/llvm/IR/Module.h:324:31: note: initializing argument 1 of ‘void llvm::Module::setTargetTriple(llvm::Triple)’
  324 |   void setTargetTriple(Triple T) { TargetTriple = std::move(T); }
      |                        ~~~~~~~^
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/codegen/evaluator.cpp: In member function ‘void LCompilers::LLVMEvaluator::opt(llvm::Module&)’:
/builddir/build/BUILD/lfortran-0.56.0-build/lfortran-0.56.0/src/libasr/codegen/evaluator.cpp:410:23: error: cannot convert ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘llvm::Triple’
  410 |     m.setTargetTriple(target_triple);
      |                       ^~~~~~~~~~~~~
      |                       |
      |                       std::string {aka std::__cxx11::basic_string<char>}
/usr/include/llvm/IR/Module.h:324:31: note: initializing argument 1 of ‘void llvm::Module::setTargetTriple(llvm::Triple)’
  324 |   void setTargetTriple(Triple T) { TargetTriple = std::move(T); }
      |                        ~~~~~~~^
gmake[2]: *** [src/libasr/CMakeFiles/asr.dir/build.make:964: src/libasr/CMakeFiles/asr.dir/codegen/evaluator.cpp.o] Error 1

Comment 2 Fedora Update System 2025-09-23 19:43:54 UTC
FEDORA-2025-9d2475a293 (lfortran-0.56.0-2.fc44, xeus-5.2.4-1.fc44, and 1 more) has been submitted as an update to Fedora 44.
https://bodhi.fedoraproject.org/updates/FEDORA-2025-9d2475a293

Comment 3 Fedora Update System 2025-09-23 19:47:21 UTC
FEDORA-2025-9d2475a293 (lfortran-0.56.0-2.fc44, xeus-5.2.4-1.fc44, and 1 more) has been pushed to the Fedora 44 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 4 Fedora Update System 2025-09-23 22:37:19 UTC
FEDORA-2025-61c842371f (lfortran-0.56.0-2.fc43, xeus-5.2.4-1.fc43, and 1 more) has been submitted as an update to Fedora 43.
https://bodhi.fedoraproject.org/updates/FEDORA-2025-61c842371f

Comment 5 Fedora Update System 2025-09-24 15:53:23 UTC
FEDORA-2025-61c842371f has been pushed to the Fedora 43 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2025-61c842371f`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2025-61c842371f

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 6 Fedora Update System 2025-10-02 01:20:19 UTC
FEDORA-2025-61c842371f (lfortran-0.56.0-2.fc43, xeus-5.2.4-1.fc43, and 1 more) has been pushed to the Fedora 43 stable repository.
If problem still persists, please make note of it in this bug report.