racket / racket/pkg-build

Package fails to build when using a web-based package source

Open
#14 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Racket
Stars
5
Forks
10
PR merge metrics
No merged PRs in 30d

Description

Packages using a specific older version for a dependency via a valid package source format that relies on a web resource (i.e. hosted Git repo) fail to build on the package server, even though the packages themselves are in conformity with prescribed package management concepts.

The error reported by the package server is:

Querying Git references for qi-lib at git://github.com/countvajhula/qi.git?path=qi-lib#v1.0-maintenance
pkg: Contacting github.com
pkg: Network error; retrying after 0.1s
pkg: Contacting github.com
pkg: Network error; retrying after 0.2s
pkg: Contacting github.com
pkg: Network error; retrying after 0.4s
pkg: Contacting github.com
pkg: Network error; retrying after 0.8s
pkg: Contacting github.com
pkg: Network error; retrying after 1.6s
pkg: Contacting github.com
tcp-connect: host not found
  hostname: github.com
  port number: 443
  system error: Temporary failure in name resolution; gai_err=-3
  context...:
   /home/root/racket/collects/openssl/mzssl.rkt:1935:0: do-ssl-connect
   /home/root/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
   /home/root/racket/collects/net/http-client.rkt:67:0: http-conn-open!
   /home/root/racket/collects/net/http-client.rkt:274:0: http-conn-open
   /home/root/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
   /home/root/racket/collects/net/url.rkt:202:0: http://getpost-impure-port
   /home/root/racket/collects/net/url.rkt:305:0: get-pure-port/headers
   /home/root/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
   /home/root/racket/collects/net/git-checkout.rkt:245:0: initial-connect
   /home/root/racket/collects/net/git-checkout.rkt:55:2: retry-loop
   /home/root/racket/collects/pkg/private/stage.rkt:62:2: lookup-normally
   /home/root/racket/collects/pkg/private/stage.rkt:115:0: stage-package/info
   /home/root/racket/collects/pkg/private/install.rkt:141:0: install-packages
   /home/root/racket/collects/pkg/private/install.rkt:925:4
   /home/root/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
   /home/root/racket/collects/racket/file.rkt:763:8
   ...
The time is now Friday, June 17th, 2022 12:37:17am

This means that packages that use an officially supported dependency mechanism are incorrectly reported as broken, causing docs and all dependent packages to also be reported as broken.

For some context, the relation package is faced with the choice of either continuing to support legacy Racket code (7.8+) or drop support for <8.3. It could do the former by using a Git ref to a maintenance branch of one of its dependencies (Qi), but currently this runs into the present issue. The other option is to drop support for <8.3 which sweeps it under the rug, but seems a bit extreme.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with a package source using a hosted Git repository and an older Git ref. Start with the stack-trace paths net/git-checkout.rkt and pkg/private/stage.rkt, then trace the package-server build flow. Done means supported web-based sources build successfully and are not reported as broken.

Written by the indexing model from the issue text.

Assessment

Tech stack
git
Domain
backend, build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.