Alistair Crooks <agc%pkgsrc.org@localhost> writes: > No-one is going to manage to change all the BUILD_DEPENDS overnight. > So until each package is split out into constiutuent dependencies, the > only information that some packages may have is BUILD_DEPENDS. For > packages that have been split, though, there will be the tool depends, > and the link depends packges (whatever their names are). Aggregated > together, they make up BUILD_DEPENDS. > > In other words - it is a way of reaching the goal while making > incremental steps towards it, avoiding flag days, and generally > providing finer-grained information. I didn't quite follow you before, but I think we are in agreement. But I think this isn't actually as hard as it seems, because generally cross-building is non-functional now. So if we don't break native (host==target) package builds, and it gets easier to make a package build cross (assuming the upstream package builds cross), then it's strictly better. My proposal for incremental change is to declare that semantics for variables are: BUILD_DEPENDS: target, needed at build time only DEPENDS: target, needed at run time and build time (to link against) RUN_DEPENDS: target, needed at run time only [1] HOST_BUILD_DEPENDS: host, needed at build time only (to run on host) To have no loss, we only need HOST_BUILD_DEPENDS to act like BUILD_DEPENDS on native (target == host) builds. Then, people can try to build cross, and put things in HOST_BUILD_DEPENDS (and perhaps remove them from BUILD_DEPENDS). Eventually, we could ensure that only programs in HOST_BUILD_DEPENDS are visible in the path of the build, native or not. Note that I am proposing *not* renaming BUILD_DEPENDS. I think we should have parallel structure between BUILD_DEPENDS and DEPENDS, because they are both about target. And while I agree "link" is the main thing, the point is really "bits that must be present in the target-arch destdir (not the package destdir) to be operated on during the build". So if we rename BUILD_DEPENDS, I think it should be TARGET_BUILD_DEPENDS, and then DEPENDS should become TARGET_DEPENDS. I don't see that as a helpful renaming; it's natural for DEPENDS to refer to the target unless qualifed. I also expect that this will be a very long process, and the long pole in the tent will not be this machinery, but fixing packages. So I expect that we'll get a core of useful packages that are cross-buildable, but many will never get there. Am I missing some complexity? [1] I am unsure how I feel about RUN_DEPENDS, and certainly it can be skipped. Probably skipping is wise, because the next tricky issue is TEST_DEPENDS, so that one can "make test". But "make test" sort of by definition can not function cross.
Attachment:
pgpttIvhXwlbd.pgp
Description: PGP signature