Coder Social home page Coder Social logo

nixpkgs-update's Introduction

nixpkgs-update's People

Contributors

abathur avatar bhipple avatar bobby285271 avatar c00w avatar dependabot[bot] avatar doronbehar avatar ekleog avatar emilylange avatar evils avatar jonringer avatar jtojnar avatar julienmalka avatar kranzes avatar lucus16 avatar ma27 avatar martinetd avatar matthewbauer avatar mic92 avatar mig4ng avatar nh2 avatar raboof avatar rhendric avatar ryantm avatar synthetica9 avatar tejing1 avatar tomberek avatar ulrikstrid avatar yanateras avatar yayayayaka avatar zowoq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar

nixpkgs-update's Issues

Integrate other package updaters

It would be really cool if we could integrate a few other package updaters into nix-update. We have a couple of different manual package updaters being run regularly. Usually people are good at doing this regularly but it definitely increases Nixpkgs' bus factor. Automating this process through nix-update could be very helpful. Here's my initial list along with the maintainers:

Some other packages also have "update.nix" that might be possible to use. This was initially done by @garbas "update script" but I'm not sure if it's still actively being maintained.

Enhancement: tag auto-generated pull requests

It would be great to have the tool label the generated pull requests as "auto" or similar (in a nice color of course :-) Helps browse and filter the growing list of pull requests.

PR lifecycle tools

If nixpkgs-update was more aware of the PRs it generates it could have a lot of nice features:

  • Delete branches of all closed or merged PRs
  • Maintain PR collection PRs: For example, there could be a PR that suggested "merge all the currently open staging PRs to staging." It could have "closes #blah" in the PR text, so it auto closed all the ones it was currently based on.
  • Move all PRs with tag 501+ linux to staging
  • Maybe something like #29

Update criteria too restrictive

  1. It wants to see the old version repology says nixpkgs-unstable is at to do an update, so it won't update in the case where someone else has updated the expression on master to a version between the OLD and NEW versions.
  2. It wants no branch to exist for updating the package, so it won't do an update if there is a pending PR updating to a version between the OLD and NEW versions.

Cannot handle base16 hashes

Some hashes in nixpkgs are base16 instead of base32. The way to fix this is to stop downloading the old versions to get the hash, and just get it directly from the src attribute.

Choose branch based on rebuilds

I like what you wrote here for updating packages, although it does create a lot of work for the people that need to merge it.

One improvement I would like to see is if you would check before opening such a PR how much needs to be rebuild, and based on that choose a branch. @GrahamcOfBorg does already a bit of this so you might want to coordinate with @grahamc how to solve this. Maybe @GrahamcOfBorg can be improved to modify the branch, in which case there is no need to make a change here.

[Ongoing] Latest nixpkgs-update/r-ryantm log

Don’t auto-update golang (npm, rust, …) packages

golang and npm use the concept of lockfiles, carrying all their files with them. Just changing the version string doesn’t cut it in these cases, the dependencies have to be updated as well (if the lockfile changes), for example NixOS/nixpkgs@413e41d#diff-78d6ebbd9a005053af6388888c66decf (in this case the lockfile luckily didn’t change).

The languages I know of that use lockfiles are:

  • node (yarn.lock for yarn and package-lock.json for npm)
  • rust (cargo.lock)
  • golang (sometimes master, sometimes vendor.conf sometimes something different)

It could be automated, but requires some work. Until then I suggest we are conservative.

Rework binary checking

Trigger: NixOS/nixpkgs#40516

Let's rework binary checking. Instead of saying when things pass, let's warn them when they don't:

  • Warn if there is a binary that does not have at least one of, non-zero exit code, responds to help, has the version in it's output
  • Print how many binaries there are and how many have passed the above test
  • Maybe make a table of binaries and which tests they passed?

Fully automate nix-update

Here's my master plan for nix-update:

  • Integrate other package updaters #12
  • Move "nix-update" to NixOS org
  • Create a GitHub user that will author the automatic commits and pull requests (like with @GrahamcOfBorg : maybe @RyanTMOfBorg ?)
  • Setup a cron job for nix-update that could run on some shared NixOS infrastructure (maybe the same machines that OfBorg runs on?). I don't want to overload the infrastructure but "updating" is usually less intensive than "building". /cc @grahamc

This is kind of a long term goal for Nixpkgs in general. This will hopefully increase the "bus factor" in Nixpkgs.

build results not found on cachix

When I try to use cachix (great feature!) as per instructions in r-ryantm's PRs, build results are not found on cachix. Accessing them directly via curl fails too.

I tried a few of r-ryantm's PRs and could not find any results on cachix.
Maybe the build results aren't pushed, maybe I'm doing something wrong here...

Example (nixpkgs PR #43028):

store path is /nix/store/hk60glvzvq8psbzxj585dy6q6dhyl0ig-eom-1.21.0 but

$ curl -i https://r-ryantm.cachix.org/hk60glvzvq8psbzxj585dy6q6dhyl0ig.narinfo
HTTP/1.1 404 Not Found

Expected result

similar to this (for cachix itself):

$ curl https://cachix.cachix.org/fgqfmzv1vzb60041sqwb1sprnw456v7r.narinfo
StorePath: /nix/store/fgqfmzv1vzb60041sqwb1sprnw456v7r-cachix-0.1.0.1
URL: nar/bb4f7c671e49346b1bbc12e4ffbc9415c56b8aae99cec6ca4e26176c2b2f3e46.nar.xz
Compression: xz
FileHash: sha256:bb4f7c671e49346b1bbc12e4ffbc9415c56b8aae99cec6ca4e26176c2b2f3e46
FileSize: 1862008
NarHash: sha256:0qd3ij4b0f8r1gdzghkk2q4imr4pxbz60dagqi1jb5vsp07y6ms4
NarSize: 14738784
References: 14nlrnm6bv7z25c9ismlhc2mrxsriyq2-gmp-6.1.2 6r6hk0qq5jd8n0sbfmpri0wd7icszi16-gcc-7.3.0-lib d0az5vfrk5cm65wcvxmfj2hjk613k9ni-xz-5.2.4 fr9a6l744pzn2nc68ayksl1v4400r27w-ncurses-6.1 gf00m2nz8079di7ihc6fj75v5jbh8p8v-zlib-1.2.11 pr73kx0cdszbv9iw49g8dzi0nqxfjbx2-glibc-2.27
Deriver: w8qqbm6mdnlka134x3iffnw3rg62l1l0-cachix-0.1.0.1.drv
Sig: cachix.cachix.org-1:KbOwKbc+zE5/MG+kTjNHjA789Rg5N0EZmACfaiX7kOLlfzhRpTjqNVVpq8fvPwOrvYUWsghLff8m8dSC9St4Ag==

Log of latest run (what parts we still need to work on getting better)

This might be helpful for people thinking about how to improve how much nix-update can do. Here is the log of the latest run and some statistics of errors encountered:

https://gist.github.com/ryantm/ee637b8e7a5d2c8c186d0aa58d587ad7

495 failed "could not prefetch new version source"
919 failed "nix-env -q failed to find package name with old version" means it couldn't find the derivation file to update
255 failed "nix build failed"

Include changelogs in the PR body

  • For GitHub projects, we could use API
  • For other projects we could diff the NEWS (CHANGELOG.md) files in the tarballs before and after the update, keeping the added lines.

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.