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)versionpat: "unstable-(.*)" once Repology switches to pname attribute750.exceptions.yaml
68:- { setname: "python:pycryptodome", name: "python:pycrypto", verpat: "3.*", ruleset: nix } # different package XXX: problem899.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 them47:- { verpat: "(git|hg)-(20[0-9]{2}-[0-9]{2}-[0-9]{2})", ruleset: nix, setver: $2, snapshot: true } # see repology#85448:- { verpat: ".*-wrapper", ruleset: nix, ignore: true }50:- { verpat: ".*-[0-9]+", namepat: "lua.*", ruleset: nix, untrusted: true } # uses luarocks versions which add extra component900.version-fixes/v.yaml
4:- { name: v4l2loopback, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended5:- { name: v86d, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended18:- { name: vcsh, ver: "1.20170226", incorrect: true } # nix fake20:- { name: vcsh, ruleset: nix, untrusted: true }32:- { name: virtualbox-guestadditions, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended33:- { name: virtualbox-modules, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended40:- { 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.128:- { name: patchelf, verpat: ".*pre.*", snapshot: true } # nix166:- { 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 version900.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 } # nix25:- { name: acpi-call, verpat: "[45]\\..*", ruleset: nix, incorrect: true } # uses kernel versions instead of software's68:- { name: amarok, verpat: ".*20[0-9]{6}.*", snapshot: true } # nix garbage76:- { name: amtterm, verpat: ".*-.*", ruleset: nix, snapshot: true }82:- { name: amzn-drivers, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended900.version-fixes/lib.yaml
28:- { name: libcangjie, verpat: ".*[0-9a-f]{40}", incorrect: true } # nix crap182:- { name: libtelnet, verpat: ".*\\+[0-9a-f]{7}", incorrect: true } # nix fake188:- { name: libtorrent, verpat: "20[0-9]{2}.*", snapshot: true } # nix, vcpkg garbage900.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 garbage132:- { name: commandergenius, verpat: ".*[0-9]{4}.*", ignore: true } # nixpkgs weirdness900.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-dd92:- { name: xzoom, verlonger: 2, debianism: true } # nix900.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 version900.version-fixes/n.yaml
12:- { name: ndiswrapper, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended54:- { name: noip, verpat: "[0-9]+\\.[0-9]+\\.[0-9]+-.*", incorrect: true} # nix fake84:- { name: nvidia, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended85:- { name: nvidiabl, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended900.version-fixes/s.yaml
17:- { name: sbcl, verpat: ".*20[0-9]{6}.*", ignore: true } # nixpkgs garbage18:- { name: sblim-sfcc, ver: "2.2.9", ruleset: nix, incorrect: true } # prerelease19:- { name: sblim-sfcc, ruleset: nix, untrusted: true }126:- { name: solvespace, verpat: ".*[0-9]{8}.*", ignore: true } # nix garbage168:- { name: spl, ruleset: nix, untrusted: true } # nix appends kernel version250:- { name: systemtap, verpat: ".*-.*", ruleset: nix, incorrect: true } # total garbage not even including the official version900.version-fixes/k.yaml
56:- { name: kdiff3, verpat: "1\\.7\\.0-[0-8a-f]{7}.*", ignore: true } # nix snapshot57:- { name: kdiff3, verpat: ".*201[789].*", ignore: true } # nix snapshot68:- { name: kget, verpat: "20[0-9]{6}", ignore: true } # nix snapshot900.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: revision900.version-fixes/python.yaml
60:- { name: "python:pystache", verpat: "[0-9]+(\\.[0-9]+){2}-[0-9.]+", incorrect: true } # nix garbage900.version-fixes/j.yaml
5:- { name: jade, verpat: "1\\.2\\.1-[0-9]{2}.*", ignore: true } # nix, adds debian patchlevel900.version-fixes/m.yaml
117:- { name: morituri, verpat: ".*20[0-9]{6}", ignore: true } # nix snapshot900.version-fixes/d.yaml
88:- { name: dpdk, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended900.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 garbage40:- { name: openafs, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended900.version-fixes/f.yaml
3:- { name: f3, verpat: ".*unstable", ignore: true } # nix garbage900.version-fixes/y.yaml
15:- { name: yosys, verpat: "20[0-9]{2}.*", snapshot: true } # nix900.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 nix900.version-fixes/t.yaml
3:- { name: tabbed, verpat: "20[0-9]{6}", ignore: true } # nix snapshot26:- { name: tcpflow, ver: "1.4.6", ruleset: nix, incorrect: true }104:- { name: tp-smapi, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended900.version-fixes/w.yaml
17:- { name: wego, verpat: "20[0-9]{2}.*", ignore: true } # nix900.version-fixes/i.yaml
72:- { name: iverilog, verpat: ".*20[0-9]{2}\\.?[0-9]{2}\\.?[0-9]{2}.*", ignore: true } # nixpkgs garbage800.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, problem850.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: nix850.split-ambiguities/h.yaml
36:- { name: hydra, wwwpart: ory.am, setname: hydra-openid } # XXX: must be before hydra-nix rule37:- { 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 report900.version-fixes/b.yaml
20:- { name: batman-adv, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended24:- { name: bbswitch, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended111:- { name: bzip2, ver: "1.0.6.0.1", incorrect: true } # nix fake; real version is 1.0.6112:- { name: bzip2, ruleset: nix, untrusted: true } # accused of fake 1.0.6.0.1900.version-fixes/z.yaml
15:- { name: zfs, verpat: ".*-.*", ruleset: nix, incorrect: true } # kernel version appended800.renames-and-merges/l.yaml
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 fakeas 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
pname(1)version(1) 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.
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
pnameandnamein the derivation code (ignored by Nix) and result of Nix splittingnametopnameandversionfor the purpose ofnix-envupgrading packages"unstable" is definitively part of
pname(2), Nix does split at-following by a digit. This hardcoded in C++.Should "unstable" be
pname(1)version(1)name = "${pname}-unstable-${version}"allowingpname(1)andversion(1)exactly match Repology, CPAN, PyPI, etc names and version)is an open question