Subject: Re: [bug#49086] [PATCH] gnu: linkchecker: Update to 10.0.1.

From: Xinglu Chen <[email-masked]>
Date: Fri, 18 Jun 2021 16:18:15 +0200

On Fri, Jun 18 2021, Arun Isaac wrote:

> * gnu/packages/web.scm (linkchecker): Update to 10.0.1.
> [source]: Remove patches.
> [inputs]: Add python-beautifulsoup4. Replace python2-dnspython-1.16,
> python2-pyxdg and python2-requests with python-dnspython, python-pyxdg and
> python-requests respectively.
> [native-inputs]: Replace python2-pytest, python2-miniboa and
> python2-parameterized with python-pytest, python-miniboa and
> python-parameterized respectively.
> [arguments]: Use python 3. Replace check phase instead of deleting the
> standard phase and adding a custom one. Use add-installed-pythonpath instead
> of setting PYTHONPATH directly.
> [home-page]: Update URI.
> * gnu/packages/patches/linkchecker-tests-require-network.patch: Delete file.
> * gnu/local.mk (dist_patch_DATA): Unregister it.
> ---
>  gnu/local.mk                                  |   1 -
>  .../linkchecker-tests-require-network.patch   | 182 ------------------
>  gnu/packages/web.scm                          |  47 ++---
>  3 files changed, 16 insertions(+), 214 deletions(-)
>  delete mode 100644 gnu/packages/patches/linkchecker-tests-require-network.patch
>
>  (define-public linkchecker
>    (package
>      (name "linkchecker")
> -    (version "9.4.0")
> +    (version "10.0.1")
>      (source
>       (origin
>         (method git-fetch)
>         (uri (git-reference
>               (url "https://github.com/linkchecker/linkchecker")
>               (commit (string-append "v" version))))
> -       (patches
> -        (search-patches "linkchecker-tests-require-network.patch"))
>         (file-name (git-file-name name version))
>         (sha256
>          (base32
> -         "03ihjmc4bqxxqv71bb43r2f23sx0xnbq1k2fsg9fw05qa5s9x187"))))
> +         "1j97dc9a4yhpscwadhv5dxp7036pnrxiaky18l8ddr3pvxdjvkxs"))))
>      (build-system python-build-system)
>      (inputs
> -     `(("python2-dnspython" ,python2-dnspython-1.16)
> -       ("python2-pyxdg" ,python2-pyxdg)
> -       ("python2-requests" ,python2-requests)))
> +     `(("python-beautifulsoup4" ,python-beautifulsoup4)
> +       ("python-dnspython" ,python-dnspython)
> +       ("python-pyxdg" ,python-pyxdg)
> +       ("python-requests" ,python-requests)))
>      (native-inputs
>       `(("gettext" ,gettext-minimal)
> -       ("python2-pytest" ,python2-pytest)
> -       ("python2-miniboa" ,python2-miniboa)
> -       ("python2-parameterized" ,python2-parameterized)))
> +       ("python-pytest" ,python-pytest)
> +       ("python-miniboa" ,python-miniboa)
> +       ("python-parameterized" ,python-parameterized)))
>      (arguments
> -     `(#:python ,python-2
> -       #:phases
> +     `(#:phases
>         (modify-phases %standard-phases
> -         ;; Move the 'check phase to after 'install, so that the installed
> -         ;; library can be used
> -         (delete 'check)
> -         (add-after 'install 'check
> -           (lambda* (#:key outputs #:allow-other-keys)
> -             (let ((out (assoc-ref outputs "out")))
> -               ;; Set PYTHONPATH so that the installed linkchecker is used
> -               (setenv "PYTHONPATH"
> -                       (string-append out "/lib/python2.7/site-packages"
> -                                      ":"
> -                                      (getenv "PYTHONPATH")))
> -               ;; Remove this directory to avoid it being used when running
> -               ;; the tests
> -               (delete-file-recursively "linkcheck")
> -
> -               (invoke "py.test" "tests"))
> -             #t)))))
> -    (home-page "https://linkcheck.github.io/linkchecker")
> +         (replace 'check
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (add-installed-pythonpath inputs outputs)
> +             (invoke "py.test" "tests"))))))

This 'check phase doesn’t respect the ‘--with-tests’ transformation.
Something like the following would be better:

  (replace 'check
    (lambda* (#:key inputs outputs tests? #:allow-other-keys)
      (when tests?
        (with-directory-excursion "tests"
          (add-installed-pythonpath inputs outputs)
          (invoke "py.test" "tests")))))

Otherwise, LGTM.