Google Groups

Re: [cros-dev] Re: Upstreaming emerge improvements (was: Goodbye Frankenbuild: New workflow for correct incremental builds)

Zac Medico Aug 12, 2010 8:16 PM
Posted in group: Chromium OS dev
Alright, I've adjusted the previous TDEPEND patch into an HDEPEND
patch. The only essential difference is a minor adjustment to the
logic inside This patch applies on top of commit
ffe0e3fb6998c776b08f725c53dfe6c632ce7d02 of the master branch. You can
test it by creating ebuilds with EAPI=4_pre0_hdepend (this is a
temporary EAPI, intended just for testing purposes).

2010/8/12 Mandeep Singh Baines <>:
> Zac Medico ( wrote:
>> I was working on writing documentation for the HDEPEND patch when I
>> realized that it seems simpler for ebuild developers if we divide the
>> dependencies as follows :
> Thanks much for adding this support:) This will definitely make life
> much easier for folks who need to cross-compile. But I have one
> quick question.
> Why would TDEPEND be simpler? I suspect that target build dependencies
> (header files and static libraries) are more common than host build
> dependencies (build tools). Most packages have no host build dependencies
> other than the toolchain which is implicit. So for most packages,
> you wouldn't need to do anything to support cross-compiling for the
> HDEPEND case. For the TDEPEND case, you'd have to modify a lot of
> packages. Especially, considering the fact that DEPEND=RDEPEND is the
> common case.
> The other nice property of HDEPEND is that DEPEND and RDEPEND are target
> and HDEPEND in host. With TDEPEND, DEPEND would be host while RDEPEND
> would be target. So HDEPEND seems more intuitive. But that might be
> more intuitive to me cuz I mostly cross-compile. Perhaps not more
> intuitive for someone who doesn't.
> Regards,
> Mandeep
>> In EAPI 4 or later, DEPEND has been divided into two parts:
>> DEPEND for build-time host dependencies, and TDEPEND for
>> build-time target dependencies. This division is designed
>> specifically to minimize difficulty in the process of
>> adapting ebuilds that were written for earlier EAPIs,
>> and therefore it also minimizes the adjustments that
>> ebuild developers will have to make to the thought
>> processes involved when writing ebuilds from scratch. In
>> an environment that does not involve cross-compilation,
>> TDEPEND behaves the same as DEPEND. When an ebuild is
>> converted from EAPI 3 or earlier to EAPI 4 or later,
>> in order to support cross-compilation environments, some
>> dependencies may need to be migrated to TDEPEND.
>> For ebuilds that have EAPI 4 or later, the emerge
>> --root-deps option has no effect since it is made obsolete
>> by division between DEPEND and TDEPEND. If EAPI 3 or
>> earlier ebuilds are used in combination with EAPI 4 or
>> later ebuilds, the --root-deps behavior will still be
>> applied to the EAPI 3 or earlier ebuilds (there is no
>> behavior change for ebuilds having older EAPIs).
>> The attached patch applies to the master branch of portage (apply on
>> top of commit cc03d96314dc108964c9c1b0431a0466f20ad147 if it doesn't
>> apply to HEAD). You can test this patch by creating ebuilds with
>> EAPI=4_pre0_tdepend (this is a temporary EAPI, intended just for
>> testing purposes). I've also attached this patch to bug #317337: