Hi!

On Fri, 2024-01-05 at 11:37:30 +0800, xiao sheng wen wrote:
> 在 2024/1/5 11:09, Guillem Jover 写道:
> > > So, my question is:
> > > 
> > > Can dpkg-checkbuilddeps  read
> > > 
> > > ||BuildProfileSpec "Registered profile names"pkg.$sourcepackage.$anything 
> > > in debian/control |Build-Depends section?|
> > > 
> > > Perhaps, it's a bug of dpkg-checkbuilddeps.
> > It can obviously parse the build profile, otherwise it would not have
> > succeeded when you passed the build profile to it. So, I don't understand
> > why this was cloned against dpkg-dev. So I'm closing this now.

> If build profile already exist in env variable like DEB_BUILD_PROFILES,
> 
> dpkg-checkbuilddeps can parse the build profile succeeded, that is right.
> 
> But if there is nobuild profile env variable exist before, can
> dpkg-checkbuilddeps  parse the debian/control Build-Depends section to
> getDEB_BUILD_PROFILES env variable? At present, Is dpkg-checkbuilddeps
> parse pkg.$sourcepackage.$anything in debian/control ?

I think there's some confusion on how build profiles work, I'd
recommend rereading the wiki pages, if there's something not clear
I guess the debian-cross list could clarify further. In any case
here follows a simplified view of how this works.

We mark dependencies (bust mostly build-dependencies) with specific
build-profiles. These dependencies will be in effect if the restriction
formula evaluates to true, which depends on whether specific build
profiles are active, and how the formula looks like. By default there
are no active build profile.

There's no such thing as a literal «pkg.$sourcepackage.$anything» being
parsed, the dpkg code simply parses the dependencies and the formulas,
matches the build profiles found in the formulas against active
profiles, that are specified via the environment or options such as -P,
and evaluates those formulas based on that.

> If dpkg-checkbuilddeps parse it, dpkg-checkbuilddeps  will pass, then the
> buildd will begin build these packages.

dpkg-checkbuilddeps always parses the formulas, they just evaluate
differently depending on whether the profiles are active or not. Which
means, if you want to make the specific profiles active you need to
tell the buildd to build that specific package like so, or build it
locally (just to bootstrap it), upload then retrigger a rebuild to
get a clean build.

Regards,
Guillem

Reply via email to