On 2023-03-29 03:59:24 +0200, Vincent Lefevre wrote:
> BTW, I also note in the second failure
> 
>   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1019732#34
> 
> that one has the following in the output:
> 
>     $stdout.print " " * Unicode.width(@old)
>                                ^^^^^^

More precisely, one has

Performing actions...
E: undefined method `default' for "    if /proxy_detect='(.*)'/ =~ `apt-config 
\#{@apt_conf} shell proxy_detect acquire::http::proxy-auto-detect`\n":String

    $stdout.print " " * Unicode.width(@old)
                               ^^^^^^
E: Unterprozess /usr/bin/apt-listbugs apt hat Fehlercode zurückgegeben (1)
E: Failure running script /usr/bin/apt-listbugs apt

The "Performing actions..." line and the last two "E:" lines come from
aptitude. What is between comes from the program run by aptitude, i.e.
"/usr/bin/apt-listbugs apt":

E: undefined method `default' for "    if /proxy_detect='(.*)'/ =~ `apt-config 
\#{@apt_conf} shell proxy_detect acquire::http::proxy-auto-detect`\n":String

    $stdout.print " " * Unicode.width(@old)
                               ^^^^^^

On my machine, I get the following:

zira:~> grep -r '\<E:' /usr/lib/ruby
/usr/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/stdlib/bigdecimal-math/0/big_math.rbs:  
def self?.E: (Numeric prec) -> BigDecimal
/usr/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/core/math.rbs:Math::E: Float
/usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb:      $stderr.puts _("E: ") + 
_("You need to specify a command.")
/usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb:      $stderr.puts _("E: ") + 
_("Unknown command ") +  "'#{command}'."
/usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb:        $stderr.puts _("E: ") + 
_("HTTP GET failed")
/usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb:        $stderr.puts _("E: ") + 
_("Empty stream from SOAP")
/usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb:        $stderr.puts _("E: ") + 
"#{$!}"
/usr/lib/ruby/vendor_ruby/debian.rb:          "E: invalid format #{line} in 
#{line}"
/usr/lib/ruby/vendor_ruby/debian.rb:            "E: duplicate control info 
#{field} in #{line}"
/usr/lib/ruby/vendor_ruby/debian.rb:        "E: required field #{f} not found 
in #{c}"
/usr/lib/ruby/vendor_ruby/debian.rb:      raise DepError, "E: trying package 
override"
/usr/lib/ruby/vendor_ruby/debian.rb:      raise DepError, "E: trying relation 
override"
/usr/lib/ruby/vendor_ruby/debian.rb:      raise Debian::DepError, "E: unknown 
operation #{@op}"
/usr/lib/ruby/vendor_ruby/debian.rb:      "E: `+' type mismatch #{self.class} 
!= #{da.class}"
/usr/lib/ruby/vendor_ruby/debian.rb:              "E: `-' type mismatch 
#{self.class} != #{da.class}"
/usr/lib/ruby/vendor_ruby/debian.rb:      "E: `-' type mismatch #{self.class} 
!= #{da.class}"

The almost-only possibility would be:

  $stderr.puts _("E: ") + "#{$!}"

The code in /usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb is:

[...]
      rescue Exception => exception
        config.frontend.puts _(" Fail")
        $stderr.puts " Exception: " + exception.class.to_s if $DEBUG
        config.frontend.puts _("Error retrieving bug reports from the server 
with the following error message:")
        $stderr.puts _("E: ") + "#{$!}"
        if exception.kind_of? SocketError
          config.frontend.puts _("It appears that your network connection is 
down. Check network configuration and try again")
        else
          config.frontend.puts _("It could be because your network is down, or 
because of broken proxy servers, or the BTS server itself is down. Check 
network configuration and try again")
        end
        retrycount -= 1
        if config.frontend.yes_or_no?(_("Retry downloading bug information?")) 
&& retrycount > 0
          config.querystep = 1 if config.querystep != 1 && 
config.frontend.yes_or_no?(_("One package at a time?"))
          config.parsestep = 1 if config.parsestep != 1 && 
config.frontend.yes_or_no?(_("One bug report at a time?"))
          retry
        end
        raise _("Exiting with error") if ! 
config.frontend.yes_or_no?(_("Continue the installation anyway?"), false)
        bugs = []

But in such a case, wouldn't one have other messages, corresponding
to config.frontend.puts?

The other possibility is some other error, say

  $stderr.puts _("E: ") + _("Empty stream from SOAP")

Note that the error message does not correspond at all. However,
the exact error message is obtained via gettext, and this is where
something ugly could potentially occur. This might explain that
the error message contains text from the .rb source (which is
something that is not available normally).

> The "$stdout.print..." line comes from
> /usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb but what could yield
> this output with carets?

Any explanation for this one? FYI, the context in logic.rb:

[...]
  def progress(msg, val)
    $stdout.print "\r"
    $stdout.print " " * Unicode.width(@old)
    $stdout.print "\r"
    @old = "#{msg} #{val}"
    $stdout.print @old
    $stdout.flush
    $stdout.puts "" if Factory.done?(val)
  end
[...]

-- 
Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

Reply via email to