#1002944 build-rdeps: Shows unfriendly errors when deb-src lines are missing

Package:
devscripts
Source:
devscripts
Description:
scripts to make the life of a Debian Package maintainer easier
Submitter:
Matthijs Kooijman
Date:
2022-01-01 17:00:04 UTC
Severity:
normal
#1002944#5
Date:
2022-01-01 16:33:59 UTC
From:
To:
Hi,

when running build-rdeps without deb-src lines in sources.list, it
produces perl errors, rather than providing useful feedback. This also
happens when a deb-src line is present for the main packages, but
missing for debug packages.

E.g. with these sources:

  deb http://ftp.nl.debian.org/debian/ sid main non-free contrib
  deb http://deb.debian.org/debian-debug/ unstable-debug main

I get:

  $ sudo build-rdeps -d dh-cmake --distribution sid
  DEBUG: Package => dh-cmake
  DEBUG: running with dose-ceve resolver
  DEBUG: buildarch=amd64 hostarch=amd64
  DEBUG: Running 'apt-get' 'indextargets' 'DefaultEnabled: yes' 'Origin: Debian'
  Reverse Build-depends in main:
  ------------------------------

  Use of uninitialized value $source_file in concatenation (.) or string at /usr/bin/build-rdeps line 336.
  DEBUG: executing: dose-ceve -T debsrc -r dh-cmake -G pkg --deb-native-arch=amd64 deb:///var/lib/apt/lists/deb.debian.org_debian-debug_dists_unstable-debug_main_binary-amd64_Packages debsrc://Fatal error in module dose_common.input:
   Input file  does not exist.
  No reverse build-depends found for dh-cmake.

  Reverse Build-depends in main:
  ------------------------------

  Use of uninitialized value $source_file in concatenation (.) or string at /usr/bin/build-rdeps line 336.
  DEBUG: executing: dose-ceve -T debsrc -r dh-cmake -G pkg --deb-native-arch=amd64 deb:///var/lib/apt/lists/ftp.nl.debian.org_debian_dists_sid_main_binary-amd64_Packages debsrc://Fatal error in module dose_common.input:
   Input file  does not exist.
  No reverse build-depends found for dh-cmake.

  Reverse Build-depends in contrib:
  ------------------------------

  Use of uninitialized value $source_file in concatenation (.) or string at /usr/bin/build-rdeps line 336.
  DEBUG: executing: dose-ceve -T debsrc -r dh-cmake -G pkg --deb-native-arch=amd64 deb:///var/lib/apt/lists/ftp.nl.debian.org_debian_dists_sid_contrib_binary-amd64_Packages debsrc://Fatal error in module dose_common.input:
   Input file  does not exist.
  No reverse build-depends found for dh-cmake.

  Reverse Build-depends in non-free:
  ------------------------------

  Use of uninitialized value $source_file in concatenation (.) or string at /usr/bin/build-rdeps line 336.
  DEBUG: executing: dose-ceve -T debsrc -r dh-cmake -G pkg --deb-native-arch=amd64 deb:///var/lib/apt/lists/ftp.nl.debian.org_debian_dists_sid_non-free_binary-amd64_Packages debsrc://Fatal error in module dose_common.input:
   Input file  does not exist.
  No reverse build-depends found for dh-cmake.


Looking at the source, it seems that collectfiles() looks at Sources files, but
also Packages to find the arch. So for dists without a deb-src line, this lets
collectfiles() return entries that have an `Architecture` field, but no
`sources` field,

This is probably easy to fix by just letting findreversebuilddeps() check for
missing `sources` and showing an appropriate message.

Gr.

Matthijs
--- /etc/devscripts.conf ---
Empty.
--- ~/.devscripts --- Not present