Journal Compilation de curl 7.75 sur Debian Bullseye

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
23
20
mar.
2021

Après avoir lu Joyeux anniversaire cURL ! (23 ans aujourd'hui), je me suis rappelé de 2018, curl a vingt ans, en particulier la partie Curlception qui avait amené une correction sur la suite de tests. Et si on retestait ?

$ curl -o curl-7.75.0.tar.xz https://curl.se/download/curl-7.75.0.tar.xz
$ curl -o curl-7.75.0.tar.xz.asc https://curl.se/download/curl-7.75.0.tar.xz.asc
$ gpg --keyserver hkps://keyserver.ubuntu.com --recv-key 0x27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2 # ce keyserver par exemple pour contourner le "new key but contains no user ID - skipped"
$ gpg --verify curl-7.75.0.tar.xz.asc # signature OK mais je n'ai pas de chemin de confiance jusqu'à l'auteur
$ tar xvJf curl-7.75.0.tar.xz
$ sudo apt install autoconf automake ca-certificates groff-base libbrotli-dev libgnutls28-dev libidn2-dev libkrb5-dev libldap2-dev libnghttp2-dev libnss3-dev libpsl-dev librtmp-dev libssh2-1-dev libssl-dev libtool openssh-server python3:native python3-impacket quilt stunnel4 zlib1g-dev # basé sur les dépendances du paquet Debian curl-7.74
$ ./configure # constater que tout n'est pas activé, or on ne fait pas des trucs pour s'amuser pour en plus ne pas tout avoir...
$ sudo apt install libzstd-dev # il en faut un peu plus
# snif pas ECH, ni HTTP3 via ngtcp2/quiche, pas empaquetés Debian
$ ./configure --with-libssh2 --with-zstd --with-gssapi=/usr --enable-sspi --with-nghttp2 --with-zsh-functions-dir=/usr/share/zsh/vendor-completions --with-lber-lib=lber
(...)
  curl version:     7.75.0
  SSL:              enabled (OpenSSL)
  SSH:              enabled (libSSH2)
  zlib:             enabled
  brotli:           enabled (libbrotlidec)
  zstd:             enabled (libzstd)
  GSS-API:          enabled (MIT Kerberos/Heimdal)
  TLS-SRP:          enabled
  resolver:         POSIX threaded
  IPv6:             enabled
  Unix sockets:     enabled
  IDN:              enabled (libidn2)
  Build libcurl:    Shared=yes, Static=yes
  Built-in manual:  enabled
  --libcurl option: enabled (--disable-libcurl-option)
  Verbose errors:   enabled (--disable-verbose)
  Code coverage:    disabled
  SSPI:             no      (--enable-sspi)
  ca cert bundle:   /etc/ssl/certs/ca-certificates.crt
  ca cert path:     no
  ca fallback:      no
  LDAP:             enabled (OpenLDAP)
  LDAPS:            enabled
  RTSP:             enabled
  RTMP:             enabled (librtmp)
  Metalink:         no      (--with-libmetalink)
  PSL:              enabled
  Alt-svc:          enabled
  HTTP1:            enabled (--with-hyper)
  HTTP2:            enabled (nghttp2)
  HTTP3:            no      (--with-ngtcp2, --with-quiche)
  ECH:              no      (--enable-ech)
  Protocols:        DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS LDAP LDAPS MQTT POP3 POP3S RTMP RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP
  Features:         AsynchDNS GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets alt-svc brotli libz zstd
$ make -j8
$ make check
(...)
TESTDONE: 1171 tests out of 1223 reported OK: 95%

TESTFAIL: These test cases failed: 165 582 600 601 602 603 604 605 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 633 634 635 636 637 638 639 640 641 642 664 665 962 963 964 965 966 967 1188 1446 1448 2004 2046 2047

Ne reste plus qu'à déboguer les tests donc.

  • # 52 tests en erreur

    Posté par  (site web personnel) . Évalué à 10. Dernière modification le 20 mars 2021 à 19:11.

    * curl 7.75.0 (x86_64-pc-linux-gnu) 
    * libcurl/7.75.0 OpenSSL/1.1.1j zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.3.0) libssh2/1.9.0 nghttp2/1.43.0 librtmp/2.3
    * Features: alt-svc AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets zstd
    

    52 tests en erreur regroupables ainsi a priori :
    - 41 semblent être des soucis liés à la partie libssh2 "SSH public key authentication failed: Callback returned error".
    - 10 semblent liés à des soucis de conversion de chaîne de type "Info: Failed to convert åäö.se to ACE; could not convert string to UTF-8"
    - après le lancement initial et un autre lancement pour avoir des logs (tous deux en erreur donc), le suivant a marché sur le lancement suivant, ainsi que sur la centaine de suivants pour vérifier si c'était une instabilité… Là je me rappelle que j'ai passé la locale à C avant de lancer les derniers tests. Bingo.

    --- log/check-expected  2021-03-20 18:43:51.115993579 +0100
    +++ log/check-generated 2021-03-20 18:43:51.115993579 +0100
    @@ -1 +1 @@
    -0 says 7 Failed to connect to 127.0.0.1 port 47: Connection refused[LF]
    +0 says 7 Failed to connect to 127.0.0.1 port 47: Connexion refusée[LF]
    

    Bon a priori, ça c'est fait. Plus que 51.

    • [^] # 51 tests en erreur

      Posté par  (site web personnel) . Évalué à 8.

      Les 10 sur les conversions viennent du fait que le test impose la locale en_US.UTF-8 (pas de chance, sur cette machine il n'y avait que en_GB.UTF-8). Une fois cette locale ajoutée (sudo dpkg-reconfigure locales), les 10 passent. Je ne sais pas si ça mérite un rapport de bug (ni quoi proposer en solution en fait). Mais en tout cas, plus que 41.

      • [^] # 41 tests en erreur

        Posté par  (site web personnel) . Évalué à 5. Dernière modification le 21 mars 2021 à 13:31.

        Et personne pour râler parce que je n'ai pas testé depuis la version de développement ? (ma correction pour le premier test que j'ai corrigé était inutile pour la version de développement, où le test avait été réécrit différemment…) Je m'auto-blâme seul dans mon coin alors (de toute façon cher moi et cher journal, nous sommes en tête à tête ici a priori).

        $ git clone https://github.com/curl/curl
        $ cd curl
        $ libtoolize --force
        $ aclocal
        $ autoheader
        $ automake --force-missing --add-missing
        $ autoconf
         $./configure --with-libssh2 --with-zstd --with-gssapi=/usr --enable-sspi --with-nghttp2 --with-zsh-functions-dir=/usr/share/zsh/vendor-completions --with-lber-lib=lber
        $ make
        $ make check
        (...)
        TESTDONE: 1418 tests were considered during 629 seconds.
        TESTDONE: 1192 tests out of 1233 reported OK: 96%
        
        TESTFAIL: These test cases failed: 582 600 601 602 603 604 605 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 633 634 635 636 637 638 639 640 641 642 664 665 1446 2004
        # certaines erreurs viennent de "/usr/bin/env: «·python·»: Aucun fichier ou dossier de ce type"
        $ sudo apt install python-is-python3
        $ make check
        (...)
        TESTDONE: 1418 tests were considered during 482 seconds.
        TESTDONE: 1195 tests out of 1236 reported OK: 96%
        
        TESTFAIL: These test cases failed: 582 600 601 602 603 604 605 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 633 634 635 636 637 638 639 640 641 642 664 665 1446 2004

        Bon c'est les 41 mêmes désormais…

      • [^] # Re: 51 tests en erreur

        Posté par  (site web personnel) . Évalué à 5.

        Je ne vois pas de mention de locale imposée dans le README des tests.

        À mon avis ça mériterait d'ouvrir un rapport de bug…

  • # Pas Debian Buster mais Debian Bullseye

    Posté par  (site web personnel) . Évalué à 4.

    Rectification du titre : le test est fait sur une Debian testing Bullseye

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.