You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We should think clearly about how we want to specify dependencies. I believe there are three important axes for dependency specification:
PkgSpec -- We need to specify what to install, obviously. This could just be a name, like "Glibc_jll", or a full PkgSpec to install a particular version or URL/branch.
Platform -- We need to specify whether this is for the target or the host.
Packaging links -- We need to specify whether this dependency is a dependency of the packaged JLL or not.
In BB1, (2) and (3) are determined by using Dependency()/HostDependency() or BuildDependency()/HostBuildDependency(). I am not a huge fan of this because it feels rather messy to be constantly filtering/unwrapping dependency object types, and also because I want to be able to tackle horrendously complicated builds like a Canadian Cross in BB2. In such a case, there are three separate platforms at play, the host of the current machine, the host of the machine that will eventually run our compiler, and the host that will run the output of the generated compiler. So I would like a fully-generic solution that does not have special Host types.
How BB2 works right now
Right now, there is a JLLSource(pkgspec, platform) method that takes in a platform object as well, so it is fully-specified from the get-go. (example) BB2's BuildConfig takes in two separate lists of JLL sources, one called target_dependencies and one called host_dependencies. This is already not what I want w.r.t. the ability to do a canadian cross.
Also, most users won't use the BuildConfig API, they'll use build_tarballs() which has convenience methods like JLLSource(pkgspec) that will automatically cycle through the list of platforms passed in to build_tarballs() so as to be target dependencies, and automatically get included in JLL output.
The text was updated successfully, but these errors were encountered:
We should think clearly about how we want to specify dependencies. I believe there are three important axes for dependency specification:
"Glibc_jll"
, or a fullPkgSpec
to install a particular version or URL/branch.In BB1, (2) and (3) are determined by using
Dependency()
/HostDependency()
orBuildDependency()
/HostBuildDependency()
. I am not a huge fan of this because it feels rather messy to be constantly filtering/unwrapping dependency object types, and also because I want to be able to tackle horrendously complicated builds like a Canadian Cross in BB2. In such a case, there are three separate platforms at play, the host of the current machine, the host of the machine that will eventually run our compiler, and the host that will run the output of the generated compiler. So I would like a fully-generic solution that does not have specialHost
types.How BB2 works right now
Right now, there is a
JLLSource(pkgspec, platform)
method that takes in a platform object as well, so it is fully-specified from the get-go. (example) BB2'sBuildConfig
takes in two separate lists of JLL sources, one calledtarget_dependencies
and one calledhost_dependencies
. This is already not what I want w.r.t. the ability to do a canadian cross.Also, most users won't use the
BuildConfig
API, they'll usebuild_tarballs()
which has convenience methods likeJLLSource(pkgspec)
that will automatically cycle through the list of platforms passed in tobuild_tarballs()
so as to be target dependencies, and automatically get included in JLL output.The text was updated successfully, but these errors were encountered: