[debhelper-devel] Bug#781370: Bug#781370: debhelper: Should allow for something like override_dh*-common in addition to -arch and -indep

Robert Luberda robert at debian.org
Sat Mar 28 22:47:49 UTC 2015


Niels Thykier pisze:
Hi,

> 
> Thanks for your suggestion.
> 
> However, I must admit I am not entirely convinced about the idea.  I
> sort of see where you are coming from, but I do not see why this cannot
> trivially be solved by the current interface and make target dependencies.

Yes, one can do something like in debian/rules:

install-common:
  ...
override_dh_auto_install-arch: install-common
  ...
override_dh_auto_install-indep: install-common
  ...

but this has the disadvantage of install-common being run twice, which
obviously can be work-arounded by using timestamp file:

install-common: install-common-stamp
install-common-stamp:
 ...
 touch "$@"

which in turn prevents usage `debuild -nc -b', unless the time-stamp
file is manually removed. (BTW. I have a local version of debuild which
calls `rm -vf debian/*.debhelper.log debian/files' when it's run with
`-nc').


> 
> Part of my reason to be conservative is that if we change this, we also
> have to think about the "order" in which things are run.  There are
> almost certainly arguments for running "-common" before *AND* after the
> regular "-indep/-arch" targets (though hopefully not both at the same
> time).  We do not have this problem currently since "-indep" and "-arch"
> are disjointed in their purpose.

Yes, you're right the order is important. In my opinion running -common
*before* -arch and -indep seems to be more natural: in such an order
-arch and -indep can safely relay on things done in -common.

The reverse order would lead to subtle errors, for example -common might
try to use a file built by -indep, while the build is arch-only (or
opposite, which might be worse since arch:all packages are usually not
built by auto-builders).

> 
> Alternatively, are you asking for something like this?
> 
>  """
>    if building arch-dep AND arch-indep, then
> 	make -f d/rules override_X-common
>    elif builing arch-dep then
> 	make -f d/rules override_X-arch
>    else
> 	make -f d/rules override_X-indep
>  """
>
> I.e. the "-common" target would replace -arch and -indep plus *only* be
> run when building arch-dep and arch-indep at the same time?


No, it does not make sense to me, as this most probably would mean
duplicating -arch and -indep work into -common. I'm asking for:
    if building arch-dep AND arch-indep, then
 	make -f d/rules override_X-common
 	make -f d/rules override_X-arch
 	make -f d/rules override_X-indep
    elif builing arch-dep then
 	make -f d/rules override_X-common
 	make -f d/rules override_X-arch
    else
 	make -f d/rules override_X-common
 	make -f d/rules override_X-indep
    fi

Regards,
robert




More information about the debhelper-devel mailing list