I work with a framework that also comes with a build system that uses make and perl. There are then packages within/on top of this framework with explicit use of makefiles and thus make, but only implicit usage of perl from the framework itself. There are other such transitive dependencies.
Is there any way to somehow get conda to recognise this? It feels odd adding perl as an explicit build requirement when it really should be a transitive build requirement.
If I’m understanding this correctly, you are using a separate build framework on top on conda-build. I obviously don’t know anything about this framework, but I’m guessing it’s similar to how Python packages are built within conda-build. Python packages typically use some sort of build-backend (similar to your framework probably). These are things like “setup-tools” or “hatchling”. These build-backends are themselves packaged as conda packages. By doing this, all the transitive dependencies are handled.
So, all of this is to say I think you need to package the build system if you want these transitive dependencies handled for you. I hope this makes sense, and I apologize if I misunderstood your question.
p.s.
I’m curious about what exactly this framework is. Are you allowed to disclose what it is?
Correct. We use conda-build as a package manager and build front-end, but then have a custom build back-end.
The framework is called EPICS, and there is an “EPICS base” core package that includes the build system, which basically is a web of Make and Perl scripts to be able to pass around config values as well as build rules. The build of the core package is a little bit more complicated than building any other packages. The additional packages are things like drivers (think of them as plugins - we usually call them “modules” but it’s a little bit more complicated than that), and then there are end (so-called “IOC”) applications which include whichever modules are needed.
We already package EPICS base (“epics-base”) with conda and publish on conda-forge, and we have one additional module (“pvxs”) also published on conda-forge.
So, using the now specified packages as examples, EPICS base has en explicit clear dependency on Make and Perl. But PVXS only directly contains Makefiles - it depends on Perl at build-time but that dependency should be transitive since the PVXS source contains no Perl scripts.