Giter VIP home page Giter VIP logo

pkg-build's Introduction

This the source for the Racket package: "pkg-build".

This package builds all of the packages in a catalog using one or more virtual machines. It is used by pkg-build.racket-lang.org to build the main package catalog.

See the "examples" directory for instructions on how to run an automated local build using Docker or using VirtualBox and Vagrant. See the package documentation for all of the details.

pkg-build's People

Contributors

mflatt avatar samth avatar rfindler avatar bogdanp avatar alexknauth avatar capfredf avatar jeapostrophe avatar michaelballantyne avatar stamourv avatar

Stargazers

Sean P. Myrick V19.1.7.2 avatar  avatar Lîm Tsú-thuàn avatar Ben Greenman avatar Jack Firth avatar

Watchers

Paulo Matos avatar Kevin Tew avatar James Swaine avatar Eric Dobson avatar David Van Horn avatar John Clements avatar  avatar J. Ryan Stinnett avatar Leif Andersen avatar  avatar  avatar Siddhartha Kasivajhula avatar Sam Phillips avatar Jens Axel Søgaard avatar Neil Toronto avatar Ryan Culpepper avatar James Cloos avatar  avatar Burke Fetscher avatar  avatar Mike Sperber avatar Spencer Florence avatar Matthias Felleisen avatar Ben Greenman avatar  avatar Jack Firth avatar  avatar  avatar Sean P. Myrick V19.1.7.2 avatar

pkg-build's Issues

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

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.

Combined failed and success status

image

Package affected: unlike-assets as of Feb 16th. It had that status most of that day, if not all day.

The status links are by the bullet points below. I expect these links won't always resolve to the same document, so note that the failure link 404'd at this time of writing. However, it did earlier resolve to a very short error message that I do not recall (with apologies).

I'm assuming that this build actually succeeded since the 404 only applies to the failure log now.

Expected test failures

Sometimes, we expect certain tests to fail specifically when they are run in the build environment.

For example, racket-packet-socket tries to get raw access to an ethernet device, which will clearly fail in the build sandbox. This makes it look like there are failing tests in racket-packet-socket in all the places that the build-server's output is shown to users (e.g. build-server UI itself; package catalog UI), even though that's sort-of not really the case.

It would be nice to have some way of saying either "I expect this and that file to fail its tests in this or that way when run on the build server", or "O build-server, do not run tests for this and that file!"

pkg-build server's memory limit

The rhombus-prototype build failed a few times by being killed. I think it’s running up against a 1GB memory limit.

Of course, 1GB is a lot… Part of the issue is that pkg-build uses -j 2, so a package can get past 1GB by having two pieces that are each in the neighborhood of 500MB. That amount of memory use for one document is not unprecedented, as illustrated by peaks in the blue and green regions of https://build-plot-cs.racket-lang.org/. That is, the main-distribution build stays under 1GB only with -j 1.

I will continue efforts to make rhombus-prototype build in less memory, but even if I succeed, the issue is likely to show up again with some package. Would it be possible and make sense to increase the memory limit, either to 1.5GB ot 2GB? Or could pkg-build provide a way for a package to request -j 1?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.