tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkgsrc cross-compilation



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



Home | Main Index | Thread Index | Old Index