[debhelper-devel] Bug#879063: ipmitool FTBFS with debhelper 10.9.2

Niels Thykier niels at thykier.net
Tue Oct 31 06:27:00 UTC 2017


Control: reassign -1 ipmitool

On Mon, 30 Oct 2017 22:57:22 +0100
=?ISO-8859-1?Q?J=F6rg_Frings-F=FCrst?= <debian at jff-webhosting.net> wrote:
> reassign 879063 debhelper 10.10.5
> retitle 879063 [dh_system_enable] don't notice the debhelper naming convention
> thanks
> 
> Hi,
> 
> this is not a ipitool bug.
> 
> Fakts: 
> 
> - the service file is debian/ipmitool.ipmievd.service.
>   This fulfill the debhelper naming convention[1].
> 
> - without "dh_systemd_enable --no-enable ipmievd.service" and / or with
>   "dh_systemd_start ipmievd.service" the service file is installed[2]. 
>   This will find the service file.
> 
> Result:
> 
> Its looks like dh_systemd_enable do not notice the debhelper naming
> convention. So I reassign this bug to debhelper.
> 
> CU
> Jörg
> 
> [...]

Hi,

Sorry, but I disagree with your assertion.  :)

While the facts as such are correct, there are two facts missing:

 * When "dh_systemd_enable --no-enable ipmievd.service" is called,
   the service is *not* present in the package directory[1].
   Accordingly, you get that error.

 * The service is currently installed by dh_installinit (see the first
   three lines of [2]).  By design, dh_systemd_enable is run *before*
   dh_installinit (and dh_systemd_start is run after dh_installinit).
   - I admit that this interaction between dh_installinit and
     dh_systemd_* is way more complex than it has to be and we are
     cleaning it up for compat 11. :)

Previously, dh_systemd_enable had a behaviour depending on whether it
could read the service file.  This lead to silent "fail-to-fail"
behaviour where you could end up with a service not being enabled
instead of the build failing.  I can see that ipmitool unfortunately
relied on this "failure to fail" in the build log for stable[3].

The consequences for ipmitool:
If I am reading dh_systemd_enable correctly, it will fail to deliver a
shell snippet for notifying the system that a new service file has been
installed (and re-enable on reinstall if it was enabled prior to
uninstall).

 * While this may sound scary, I /think/ dh_installinit happens to do
  that for you in compat 10.  (Did not check too deeply though)

 * Although, it is not clear to me that your --no-enable is respected at
   all.  If it is, then it is not because of something dh_systemd_enable
   does.

Thanks,
~Niels

[1]
"""
make[1]: Leaving directory '<BUILDDIR>/ipmitool-1.8.18'
   dh_installdocs
   dh_installchangelogs
   dh_installman
   debian/rules override_dh_systemd_enable
make[1]: Entering directory '<BUILDDIR>/ipmitool-1.8.18'
dh_systemd_enable -v --no-enable ipmievd.service
dh_systemd_enable: Requested unit "ipmievd.service" but it was not found
in any package acted on.
dh_systemd_enable: Could not handle all of the requested services
debian/rules:36: recipe for target 'override_dh_systemd_enable' failed
make[1]: *** [override_dh_systemd_enable] Error 2
make[1]: Leaving directory '<BUILDDIR>ipmitool-1.8.18'
debian/rules:24: recipe for target 'binary' failed
make: *** [binary] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary subprocess
returned exit status 2
<BUILDDIR>/ipmitool-1.8.18$ find debian/ipmitool -type f
debian/ipmitool/usr/bin/ipmitool
debian/ipmitool/usr/sbin/ipmievd
debian/ipmitool/usr/share/man/man1/ipmitool.1
debian/ipmitool/usr/share/man/man8/ipmievd.8
debian/ipmitool/usr/share/ipmitool/oem_ibm_sel_map
debian/ipmitool/usr/share/doc/ipmitool/README
debian/ipmitool/usr/share/doc/ipmitool/AUTHORS
debian/ipmitool/usr/share/doc/ipmitool/copyright
debian/ipmitool/usr/share/doc/ipmitool/changelog.Debian
debian/ipmitool/usr/share/doc/ipmitool/changelog
"""

[2]

"""
$ dh_installinit -v  --name ipmievd --error-handler=ipmievd_initd_failed
        install -d debian/ipmitool/lib/systemd/system
        install -p -m0644 debian/ipmitool.ipmievd.service
debian/ipmitool/lib/systemd/system/ipmievd.service
        install -d debian/ipmitool/etc/default
        install -p -m0644 debian/ipmitool.ipmievd.default
debian/ipmitool/etc/default/ipmievd
        install -d debian/ipmitool/etc/init.d
        install -p -m0755 debian/ipmitool.ipmievd.init
debian/ipmitool/etc/init.d/ipmievd
        echo "# Automatically added by dh_installinit/10.10.5">>
debian/ipmitool.postinst.debhelper
        sed
"s/#SCRIPT#/ipmievd/g;s/#INITPARMS#/defaults/g;s/#ERROR_HANDLER#/ipmievd_initd_failed/g"
/usr/share/debhelper/autoscripts/postinst-init-restart >>
debian/ipmitool.postinst.debhelper
        echo '# End automatically added section' >>
debian/ipmitool.postinst.debhelper
        echo "# Automatically added by dh_installinit/10.10.5">>
debian/ipmitool.prerm.debhelper
        sed
"s/#SCRIPT#/ipmievd/g;s/#INITPARMS#/defaults/g;s/#ERROR_HANDLER#/ipmievd_initd_failed/g"
/usr/share/debhelper/autoscripts/prerm-init-norestart >>
debian/ipmitool.prerm.debhelper
        echo '# End automatically added section' >>
debian/ipmitool.prerm.debhelper
        echo "# Automatically added by dh_installinit/10.10.5">>
debian/ipmitool.postrm.debhelper
        sed
"s/#SCRIPT#/ipmievd/g;s/#INITPARMS#/defaults/g;s/#ERROR_HANDLER#/ipmievd_initd_failed/g"
/usr/share/debhelper/autoscripts/postrm-init >>
debian/ipmitool.postrm.debhelper
        echo '# End automatically added section' >>
debian/ipmitool.postrm.debhelper
"""


[3]
https://tests.reproducible-builds.org/debian/rb-pkg/stretch/amd64/ipmitool.html
"""
make[1]: Entering directory '/build/ipmitool-1.8.18'
dh_systemd_enable --no-enable ipmievd.service
dh_systemd_enable: Could not find "ipmievd.service" in the
/lib/systemd/system directory of ipmitool. This could be a typo, or
using Also= with a service file from another package. Please check
carefully that this message is harmless.
dh_systemd_enable: Cannot open(ipmievd.service) for extracting the Also=
line(s)
make[1]: Leaving directory '/build/ipmitool-1.8.18'
"""




More information about the debhelper-devel mailing list