Nixpkgs: Incorrect packages names or versions according to repology

Created on 12 Sep 2019  Â·  16Comments  Â·  Source: NixOS/nixpkgs

The following https://github.com/repology/repology-rules refer specifically to incorrect packages in Nixpkgs. We should evaluate why we have incorrect information in each of the cases and then carry out a collection.

  • 100.prefix-suffix.yaml

    • [ ] 58:- { ruleset: nix, namepat: "(.*)-unstable", setname: $1, weak_devel: true } – this is expected, can be changed to strong_devel once Repology switches to pname attribute (https://github.com/repology/repology/issues/854)

      • [ ] will need to be extended to versionpat: "unstable-(.*)" once Repology switches to pname attribute

  • 750.exceptions.yaml

    • [ ] 68:- { setname: "python:pycryptodome", name: "python:pycrypto", verpat: "3.*", ruleset: nix } # different package XXX: problem
  • 899.version-fixes.global.yaml

    • [ ] 37:- { ver: "1003.1-2008", ruleset: nix, ignore: true } # WTF is that? versions like "1003.1-2008" split unix utilities (https://github.com/repology/repology-rules/commit/326e26ad882109d3477684cfb5196c90e139a3db) not sure what to do about them
    • [ ] 47:- { verpat: "(git|hg)-(20[0-9]{2}-[0-9]{2}-[0-9]{2})", ruleset: nix, setver: $2, snapshot: true } # see repology#854
    • [ ] 48:- { verpat: ".*-wrapper", ruleset: nix, ignore: true }
    • [ ] 50:- { verpat: ".*-[0-9]+", namepat: "lua.*", ruleset: nix, untrusted: true } # uses luarocks versions which add extra component
  • 900.version-fixes/v.yaml

    • [ ] 4:- { name: v4l2loopback, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
    • [ ] 5:- { name: v86d, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
    • [ ] 18:- { name: vcsh, ver: "1.20170226", incorrect: true } # nix fake
    • [ ] 20:- { name: vcsh, ruleset: nix, untrusted: true }
    • [ ] 32:- { name: virtualbox-guestadditions, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
    • [ ] 33:- { name: virtualbox-modules, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
    • [ ] 40:- { name: vivaldi, verpat: ".*-.*", ruleset: nix, debianism: true }
  • 900.version-fixes/p.yaml

    • [ ] 26:- { name: patchage, ver: "1.0.1", ruleset: nix, incorrect: true }
    • [ ] 27:- { name: patchage, ruleset: nix, untrusted: true } # accused of fake 1.0.1
    • [ ] 28:- { name: patchelf, verpat: ".*pre.*", snapshot: true } # nix
    • [ ] 166:- { name: protonmail-bridge, verpat: ".*-.*", ruleset: nix, debianism: true }
    • [ ] 170:- { name: psftools, ver: "1.1.10", ruleset: homebrew, incorrect: true } # 1.0.10 actually; any incorrcet URL like https://www.seasip.info/Unix/PSF/psftools-X.Y.Z.tar.gz downloads as the latest version
  • 900.version-fixes/g.yaml

    • [ ] 182:- { name: gnuradio, ver: "3.7.11.1", ruleset: nix, incorrect: true }
    • [ ] 183:- { name: gnuradio, ruleset: nix, untrusted: true }
  • 900.version-fixes/a.yaml

    • [ ] 12:- { name: abseil-cpp, verpat: ".*[0-9a-f]{40}", incorrect: true } # nix
    • [ ] 25:- { name: acpi-call, verpat: "[45]\\..*", ruleset: nix, incorrect: true } # uses kernel versions instead of software's
    • [ ] 68:- { name: amarok, verpat: ".*20[0-9]{6}.*", snapshot: true } # nix garbage
    • [ ] 76:- { name: amtterm, verpat: ".*-.*", ruleset: nix, snapshot: true }
    • [ ] 82:- { name: amzn-drivers, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
  • 900.version-fixes/lib.yaml

    • [ ] 28:- { name: libcangjie, verpat: ".*[0-9a-f]{40}", incorrect: true } # nix crap
    • [ ] 182:- { name: libtelnet, verpat: ".*\\+[0-9a-f]{7}", incorrect: true } # nix fake
    • [ ] 188:- { name: libtorrent, verpat: "20[0-9]{2}.*", snapshot: true } # nix, vcpkg garbage
  • 900.version-fixes/c.yaml

    • [ ] 30:- { name: cargo, verpat: "1\\..*", ruleset: nix, incorrect: true } # rust version used?
    • [ ] 81:- { name: chez-scheme, ver: "9.5.1", ruleset: nix, incorrect: true }
    • [ ] 109:- { name: clojure, verpat: "[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]{3,}", incorrect: true } # homebrew and nix garbage
    • [ ] 132:- { name: commandergenius, verpat: ".*[0-9]{4}.*", ignore: true } # nixpkgs weirdness
  • 900.version-fixes/x.yaml

    • [ ] 84:- { name: xtreemfs, verlonger: 3, ruleset: nix, incorrect: true } – claims git snapshot is fictious version number → change to unstable-yyyy-mm-dd
    • [ ] 92:- { name: xzoom, verlonger: 2, debianism: true } # nix
  • 900.version-fixes/l.yaml

    • [ ] 33:- { name: linenoise, verlonger: 2, ruleset: nix, incorrect: true }
    • [ ] 83:- { name: "lua:penlight", verpat: "5.*", incorrect: true } # nix garbage - uses lua version
  • 900.version-fixes/n.yaml

    • [ ] 12:- { name: ndiswrapper, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
    • [ ] 54:- { name: noip, verpat: "[0-9]+\\.[0-9]+\\.[0-9]+-.*", incorrect: true} # nix fake
    • [ ] 84:- { name: nvidia, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
    • [ ] 85:- { name: nvidiabl, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
  • 900.version-fixes/s.yaml

    • [ ] 17:- { name: sbcl, verpat: ".*20[0-9]{6}.*", ignore: true } # nixpkgs garbage
    • [ ] 18:- { name: sblim-sfcc, ver: "2.2.9", ruleset: nix, incorrect: true } # prerelease
    • [ ] 19:- { name: sblim-sfcc, ruleset: nix, untrusted: true }
    • [ ] 126:- { name: solvespace, verpat: ".*[0-9]{8}.*", ignore: true } # nix garbage
    • [ ] 168:- { name: spl, ruleset: nix, untrusted: true } # nix appends kernel version
    • [ ] 250:- { name: systemtap, verpat: ".*-.*", ruleset: nix, incorrect: true } # total garbage not even including the official version
  • 900.version-fixes/k.yaml

    • [ ] 56:- { name: kdiff3, verpat: "1\\.7\\.0-[0-8a-f]{7}.*", ignore: true } # nix snapshot
    • [ ] 57:- { name: kdiff3, verpat: ".*201[789].*", ignore: true } # nix snapshot
    • [ ] 68:- { name: kget, verpat: "20[0-9]{6}", ignore: true } # nix snapshot
  • 900.version-fixes/h.yaml

    • [ ] 21:- { name: hitori, ver: "3.24.1", ruleset: nix, incorrect: true }
    • [ ] 22:- { name: hitori, ruleset: nix, untrusted: true }
  • 900.version-fixes/e.yaml

    • [ ] 14:- { name: ecdsautils, ver: "0.4.0", ruleset: nix, incorrect: true }
    • [ ] 15:- { name: ecdsautils, ruleset: nix, untrusted: true }
    • [ ] 110:- { name: exuberant-ctags, verpat: "[0-9]{3}", incorrect: true } # nix: revision
  • 900.version-fixes/python.yaml

    • [ ] 60:- { name: "python:pystache", verpat: "[0-9]+(\\.[0-9]+){2}-[0-9.]+", incorrect: true } # nix garbage
  • 900.version-fixes/j.yaml

    • [ ] 5:- { name: jade, verpat: "1\\.2\\.1-[0-9]{2}.*", ignore: true } # nix, adds debian patchlevel
  • 900.version-fixes/m.yaml

    • [ ] 117:- { name: morituri, verpat: ".*20[0-9]{6}", ignore: true } # nix snapshot
  • 900.version-fixes/d.yaml

    • [ ] 88:- { name: dpdk, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
  • 900.version-fixes/o.yaml

    • [ ] 6:- { name: "ocaml:calendar", ver: "2.5", ruleset: nix, incorrect: true }
    • [ ] 7:- { name: "ocaml:calendar", ruleset: nix, untrusted: true } # accused of fake 2.5 (it's really 2.03.2)
    • [ ] 8:- { name: "ocaml:libvirt", verpat: ".*unstable", incorrect: true } # nix garbage
    • [ ] 40:- { name: openafs, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
  • 900.version-fixes/f.yaml

    • [ ] 3:- { name: f3, verpat: ".*unstable", ignore: true } # nix garbage
  • 900.version-fixes/y.yaml

    • [ ] 15:- { name: yosys, verpat: "20[0-9]{2}.*", snapshot: true } # nix
  • 900.version-fixes/u.yaml

    • [ ] 28:- { name: unnethack, ver: "5.3.1", ruleset: nix, incorrect: true } upstream confusion, fixed in master since June 2019 (048e0b6331cd)
    • [ ] 29:- { name: unnethack, ruleset: nix, untrusted: true }
    • [ ] 41:- { name: urlview, verpat: "(0\\.9)-[0-9]+", setver: $1 } # debian suffix copied by homebrew, macports and nix
  • 900.version-fixes/t.yaml

    • [ ] 3:- { name: tabbed, verpat: "20[0-9]{6}", ignore: true } # nix snapshot
    • [ ] 26:- { name: tcpflow, ver: "1.4.6", ruleset: nix, incorrect: true }
    • [ ] 104:- { name: tp-smapi, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
  • 900.version-fixes/w.yaml

    • [ ] 17:- { name: wego, verpat: "20[0-9]{2}.*", ignore: true } # nix
  • 900.version-fixes/i.yaml

    • [ ] 72:- { name: iverilog, verpat: ".*20[0-9]{2}\\.?[0-9]{2}\\.?[0-9]{2}.*", ignore: true } # nixpkgs garbage
  • 800.renames-and-merges/p.yaml

    • [ ] 80:- { setname: phoenix-emu, name: phoenix-emu-project }
  • 800.renames-and-merges/g.yaml

    • [ ] 164:- { setname: glucose, name: glucose-syrup, addflavor: true } # (nix parallel vs. sequential version)
    • [ ] 297:- { setname: gphotofs, name: gphoto2fs } # nix, problem
  • 850.split-ambiguities/v.yaml

    • [ ] 10:- { name: vapor, ruleset: nix, setname: love-vapor }
  • 850.split-ambiguities/a.yaml

    • [ ] 79:- { name: ape, ruleset: nix, setname: ape-attempto-controlled-english }
  • 850.split-ambiguities/l.yaml

    • [ ] 6:- { name: ldm, ruleset: nix, setname: ldm-mounter }
  • 800.renames-and-merges/ocaml.yaml

    • [ ] 47: ruleset: nix
  • 850.split-ambiguities/h.yaml

    • [ ] 36:- { name: hydra, wwwpart: ory.am, setname: hydra-openid } # XXX: must be before hydra-nix rule
    • [ ] 37:- { name: hydra, wwwpart: nixos, setname: hydra-nix }
    • [ ] 38:- { name: hydra, ruleset: nix, setname: hydra-nix }
  • 850.split-ambiguities/e.yaml

    • [ ] 35:- { name: elm, ruleset: nix, setname: elm-lang }
    • [ ] 38:- { name: emma, setname: emma-coverage, ruleset: [sisyphus, fedora, gentoo, mageia, rosa, nix] }
  • 800.renames-and-merges/c.yaml

    • [ ] 109:- { setname: clang, name: clang-wrapper, ruleset: nix } # see report
  • 900.version-fixes/b.yaml

    • [ ] 20:- { name: batman-adv, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
    • [ ] 24:- { name: bbswitch, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
    • [ ] 111:- { name: bzip2, ver: "1.0.6.0.1", incorrect: true } # nix fake; real version is 1.0.6
    • [ ] 112:- { name: bzip2, ruleset: nix, untrusted: true } # accused of fake 1.0.6.0.1
  • 900.version-fixes/z.yaml

    • [ ] 15:- { name: zfs, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended
  • 800.renames-and-merges/l.yaml

    • [x] 112:- { setname: luarocks, name: luarocks-nix, addflavor: true } – fork of luarocks supposed to be used only in nixpkgs (https://github.com/NixOS/nixpkgs/issues/68531#issuecomment-530683553)
  • 900.version-fixes/r.yaml

    • [ ] 66:- { name: rtorrent, verpat: "20[0-9]{6}.*", ignore: true } # nix fake
bug sprintable repology

Most helpful comment

@ryantm nice to see you here.
There are a lot of confusion and many tickets popped up (https://github.com/NixOS/nixos-homepage/issues/306 https://github.com/NixOS/nixpkgs/pull/68620 https://github.com/NixOS/nixpkgs/issues/68518 https://github.com/repology/repology/issues/854).

Basically there are 2 pname's and 2 version's: explicit pname and name in the derivation code (ignored by Nix) and result of Nix splitting name to pname and version for the purpose of nix-env upgrading packages

"unstable" is definitively part of pname(2), Nix does split at - following by a digit. This hardcoded in C++.

Should "unstable" be

  • part of pname(1)
  • part of version(1)
  • or neither (name = "${pname}-unstable-${version}" allowing pname(1) and version(1) exactly match Repology, CPAN, PyPI, etc names and version)

is an open question

All 16 comments

as for luarocks-nix it's a fork of luarocks, the name doesn't matter much as it's supposed to be used only in nixpkgs. Not sure what to do to solve the issue but let me know.

That one is marked as a flavor, not incorrect or ignored, so we probably do not mind.

On the NixOS office hours https://www.youtube.com/watch?v=siR3pvmxFlU , I noticed that @worldofpeace wants to move "unstable" from version to pname in derivations. I feel like the "unstable" is really part of the version, not the package name, so maybe this should be solved at the level of the website JSON generator and not at the derivation level.

I think I looked at the wrong issue @ryantm.
See https://github.com/NixOS/nixpkgs/issues/68518

@ryantm nice to see you here.
There are a lot of confusion and many tickets popped up (https://github.com/NixOS/nixos-homepage/issues/306 https://github.com/NixOS/nixpkgs/pull/68620 https://github.com/NixOS/nixpkgs/issues/68518 https://github.com/repology/repology/issues/854).

Basically there are 2 pname's and 2 version's: explicit pname and name in the derivation code (ignored by Nix) and result of Nix splitting name to pname and version for the purpose of nix-env upgrading packages

"unstable" is definitively part of pname(2), Nix does split at - following by a digit. This hardcoded in C++.

Should "unstable" be

  • part of pname(1)
  • part of version(1)
  • or neither (name = "${pname}-unstable-${version}" allowing pname(1) and version(1) exactly match Repology, CPAN, PyPI, etc names and version)

is an open question

Great summary @volth.

This makes me believe that we should have a different mechanism to capture that the source is not part of an official release, maybe something to the effect of:

  pname = "foo";
  version = "2019-10-07";
  unstable = true;

and in the construction of name in mkDerivation:
```
name = attrs.name or "${attrs.pname}${lib.optionalString unstable "-unstable"}-${attrs.version}";

Instead of unstable maybe unofficialRelease?

that seems like a more meaningful name than unstable

would you also advocate for

name = attrs.name or "${attrs.pname}${lib.optionalString unofficialRelease "-unofficial"}-${attrs.version}";

as well? seems like it would be more aligned, even though a larger break from the pre-existing unstable paradigm

unofficialRelease sounds good, we might also want to add variant https://github.com/repology/repology-updater/issues/854#issuecomment-530515318

I like variant.

would it be useful to have this field report "outdated" as well ?
For instance we have many love packages:

  love_0_7 = callPackage ../development/interpreters/love/0.7.nix { lua=lua5_1; };
  love_0_8 = callPackage ../development/interpreters/love/0.8.nix { lua=lua5_1; };
  love_0_9 = callPackage ../development/interpreters/love/0.9.nix { };

0_7 and 0_8 could be marked "outdated" (by 0_9).

I don't think it is but I prefer to mention it now.

I do not think it makes sense to report outdated status in the name field. First, we would have to change the name of every love package when a new one is added. And second, it should be possible to determine the status by checking the set of tuples pname * version.

It might be a useful meta attribute though, like a weaker broken that tools could warn about.

Probably best to create a new issue with refreshed data.

Was this page helpful?
0 / 5 - 0 ratings