Package: debhelper
Version: 11.1.4
Severity: normal

i'm working on packaging knot-resolver 2.0.0.

Upstream has gone with a templated approach to take advantage of
multiple cores.

each daemon can consume a full core, and listens on its own control
socket, and on shared network-facing sockets:

   [email protected]
   [email protected]        (port 53)
   [email protected]    (port 853)
   kresd-control@socket (/run/knot-resolver/control@%i)

We ship all of these templates, but we *also* want to start with 1
daemon's sockets enabled (kresd{,-tls,-control}@1.socket, in particular).

i can ship those as symlinks in /lib/systemd/system/, like this:

  2387690      4 drwxr-xr-x   2 dkg      dkg          4096 Feb  5 03:00 
lib/systemd/system/
  2384490      4 -rw-r--r--   1 dkg      dkg           281 Feb  5 03:00 
lib/systemd/system/[email protected]
  2384493      0 lrwxrwxrwx   1 dkg      dkg            17 Feb  5 03:00 
lib/systemd/system/[email protected] -> [email protected]
  2384488      4 -rw-r--r--   1 dkg      dkg           347 Feb  5 03:00 
lib/systemd/system/[email protected]
  2384489      4 -rw-r--r--   1 dkg      dkg           302 Feb  5 03:00 
lib/systemd/system/[email protected]
  2384492      0 lrwxrwxrwx   1 dkg      dkg            13 Feb  5 03:00 
lib/systemd/system/[email protected] -> [email protected]
  2384491      4 -rw-r--r--   1 dkg      dkg           303 Feb  5 03:00 
lib/systemd/system/[email protected]
  2384494      0 lrwxrwxrwx   1 dkg      dkg            21 Feb  5 03:00 
lib/systemd/system/[email protected] -> [email protected]

however, dh_installsystemd doesn't recognize the linked files as units
worthy of managing in the maintscripts.

in particular, there's a line in dh_installsystemd that looks like it
ignores symlinks entirely:


                wanted => sub {
                        my $name = $File::Find::name;
                        return unless -f $name;
                        return unless $name =~ 
m,^\Q${tmpdir}\E/lib/systemd/system/[^/]+$,;
                        if (-l) {
                                my $target = abs_path(readlink());
                                $target =~ s,^\Q${oldcwd}\E/,,g;
                                $aliases{$target} = [ $_ ];
                        } else {
                                push @installed_units, $name;
                        }
                },


It's not clear to me what the "if (-l)" is doing there, since there's
a "return unless -f $fname" two lines above it.

could we have dh_installsystemd perform the same management for the
symlinked socket instantiations that it does for other units?

Note that if i list kresd{,-tls,-control}@1.socket on the command line
to dh_installsystemd, i get the following warnings:

dh_installsystemd: Could not find "[email protected]" in the /lib/systemd/system 
directory of knot-resolver. This could be a typo, or using Also= with a service 
file from another package. Please check carefully that this message is harmless.
dh_installsystemd: Could not find "[email protected]" in the 
/lib/systemd/system directory of knot-resolver. This could be a typo, or using 
Also= with a service file from another package. Please check carefully that 
this message is harmless.
dh_installsystemd: Could not find "[email protected]" in the 
/lib/systemd/system directory of knot-resolver. This could be a typo, or using 
Also= with a service file from another package. Please check carefully that 
this message is harmless.

i do not believe these messages are harmless!

  --dkg


-- System Information:
Debian Release: buster/sid
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing'), (500, 'oldstable'), 
(200, 'unstable-debug'), (200, 'unstable'), (1, 'experimental-debug'), (1, 
'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.14.0-3-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages debhelper depends on:
ii  autotools-dev            20171216.1
ii  binutils                 2.29.1-13
ii  dh-autoreconf            16
ii  dh-strip-nondeterminism  0.040-1
ii  dpkg                     1.19.0.5
ii  dpkg-dev                 1.19.0.5
ii  file                     1:5.32-1
ii  libdpkg-perl             1.19.0.5
ii  man-db                   2.7.6.1-4
ii  perl                     5.26.1-4
ii  po-debconf               1.0.20

debhelper recommends no packages.

Versions of packages debhelper suggests:
pn  dh-make  <none>
pn  dwz      <none>

-- no debconf information

Reply via email to