Giter VIP home page Giter VIP logo

camelus's People

Contributors

altgr avatar dinosaure avatar kit-ty-kate avatar rjbou avatar thomasblanc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

camelus's Issues

Warning 41 is misleading

Warning 41

warning 41: Some packages are mentionned in package scripts of features,
but there is no dependency or depopt toward them: "user-setup"

seem to imply that user-setup should be mentioned as a dependency — and indeed doing so makes the warning go away — but doing so creates a circular dependency. An improvement would be welcome.

Repo policy to warn on depexts without post-messages { failure }

It is generally nice to have a human-readable message in the case of package installation failure when a package relies upon depexts. More than the usual "use opam depext" message, this message can specify information like the version of a depext required.

Warn on unbound variable reference

If a typo is made to a built-in variable name like writing or instead of os, Camelus does not warn about it. It should be possible to declare the set of bound-or-potentially-bound variables and have warnings emitted if variables from outside that set are used.

File system hygiene

See ocaml/opam-repository#14288 - it'd be helpful if Camelus warned about unexpected files in a pull request. The valid patterns would be:

  • Root files should probably a generate a highlighted note
  • /packages/FOO/BAR should be rejected, unless BAR is a directory or a .gitattributes file (the latter should probably generate a highlighted note too)
  • /packages/FOO/FOO.VERSION/BAR should be rejected, unless BAR is opam

(Virtual) Memory explosion

After a while, the program seems to fail on the server with "Cannot allocate memory" errors ; I couldn't reproduce locally, but have some results.

  • ocp-memprof didn't return any unexpected memory usage or leak ; memory peaks at 70MB when we load the git with all opam files in memory, which seems reasonable.
  • I traced system memory usage:
    p2
    Resident memory (VmRSS) stays very reasonable, however, virtual memory (VmSize) jumps to above 100GB... I guess that's where we hit a wall. This is using Linux's /proc/pid/status.
    @samoht, a clue what's happening ? I am guessing maybe too many mmaps ? Or am I doing something plainly wrong with git or lwt ? The peaks are reached during the opam_files function.

Display `diff` with previous package version

When a maintener uploads a package a.2, there is no easy way to check the difference with the package of the previous software version, namely a.1. Camelus might insert a diff (or a link to the diff).

Stay quieter

From ocaml/opam-repository#5995:

I find these notifications quite useful, since Travis doesnt send a message when it successfully finishes. There's absolutely no harm in a note from a package submitter saying that they believe that a PR is ready to merge since it passes CI, especially since it sometimes takes multiple pushes to get it right.

I find this very noisy, and I'm considering removing myself from watching this repository. If we follow this pattern we get at minimum of 4 notification per package addition:

  1. The initial PR
  2. Camelus
  3. The PR person says it's all green
  4. The merge notification

wouldn't it be possible to change this so that Camelus reports directly only if it fails and otherwise once travis succeded or failed ?

Check for SPDX-valid license name

This could potentially go in opam lint but it's dependent on an external data source that can change and should be tracked and may represent repository policy rather than a data type constraint.

Related to ocaml/opam#2224.

Warn or error if `pin-depends` is used

see ocaml/opam-repository#14978
opam packages released to opam-repository contain checksums of tarballs to ensure that the same tarball is used for installation as intended by the person doing a release. opam packages which point to a branch / tag are generally not accepted AFAICT.

opam 2.0 introduced a pin-depends stanza to specify dependencies of certain off-trunk dependencies (i.e. a custom version of yyy). I just discovered that the opam-repository contains few packages with pin-depends, which I assume should not be there, applying the same rule above.

Warn for "make"

I believe "make"make is an often made comment to PRs. This tool should check that, I think.

Check for use of sh -exc instead of just sh -c

-x is useful to find out later what was actually executed.
-e is necessary for errors to be propagated correctly in all cases.

Some care will be required to ensure that the false positive rate is not too high due to variations in sh command line invocations.

Broken packages are not correctly detected

Camelus uses the branch from where PR are made from without merging it in master first when it checks for broken packages. Which for some people that don't use opam-repository that much can be a big problem.

For example this PR has one commit on top of a commit made in 2017: ocaml/opam-repository#16158. This example is not the first one I've encountered, it's the first time I bother opening an issue about it. There are plenty of similar examples to take from.

link to something from camelus notifications on GitHub tests

Pull requests to opam-repository show up with info like the screen shot below. It would be helpful to get more info somehow. For example, travis tests provide a link pointing to a log of what was run. If nothing else, at least point to this repo and update the README of this repo to provide more information about what is checked.

image

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.