Skip to content
This repository has been archived by the owner on Mar 11, 2024. It is now read-only.

Latest commit

 

History

History
105 lines (82 loc) · 4.08 KB

2022-11-21.md

File metadata and controls

105 lines (82 loc) · 4.08 KB

Nixpkgs Architecture Team Meeting #18

Notes

  • @infinisil shows nixpkgs-architecture/simple-package-paths#15

    • merge it!
  • nixpkgs-architecture/simple-package-paths#16

    • agree to close as fixed / no action needed (will be in RFC)
  • @Ericson2314: src.nix can be separate from pkg-fun.nix

    • @growpotkin: Yes yes yes
  • nixpkgs-architecture/simple-package-paths#14

    • relative path ../../..
      • agree to try to fix in script
    • Various issues with multiple versions
      • @Ericson2314: let's just skip packages with multiple versions for now
        • wary of having foo and foo123 units
        • wary of unit/foo but foo = foo6
      • @infinisil: OK sounds good
  • nixpkgs-architecture/simple-package-paths#9

    • @infinisil: let's just make package sets within nixpkgs out of scope
      • @Ericson2314: agreed
    • @growpotkin: but if individual packages are in CODEOWNERS we should upgrade
      • all: agreed
  • nixpkgs-architecture/simple-package-paths#17 read dir perf

    • NixOS/nix#7314 related nix issue

    • getdents is also on FreeBSD, maybe macOS, not just linux.

    • O(...) thinking:

      x is disk access time y is memory allocation time n is the number of top-level attributes

      Before: O(x * stat + y * n) After: O(x * stat * n + y * n) After (with OS support): O(x * stat + y * n) After (with lazy readDir): O(x * stat + y * n)

  • nixpkgs-architecture/simple-package-paths#1

    • let's shard
    • @growpotkin @Ericson2314: Should be fixed-prefix, makes it much easier
      • 2-prefix, li has 1500 entries

        • 2/2-prefix, libpng -> li/bp/libpng/pkg-fun.nix
        • lzma -> lz/ma/lzma/pkg-fun.nix, what about packages with the same prefix?
        • lzmalzma -> lz/ma/lzmalzma/pkg-fun.nix
        • lz -> lz/lz/pkg-fun.nix
        • lz -> lz/_unscoped/pkg-fun.nix
        • Single-letter packages: [ "R" "h" "j" "o" "q" "t" ]
      • a and a_b package attributes goes into a_ prefix

      • 1-letter packages x-/--/x/pkg-fun.nix

      • 2-letter packages xy/--/xy/pkg-fun.nix

      • 3-letter packages xy/z-/xyz/pkg-fun.nix

      • 4-letter packages xy/zw/xyzw/pkg-fun.nix

      • 5-letter packages xy/zw/xyzwa/pkg-fun.nix

      • 6-letter packages xy/zw/xyzwab/pkg-fun.nix

      • 7-letter packages xy/zw/xyzwabc/pkg-fun.nix

      • 6+ packges 5pkgs/xy/zw/ab/xyzwab/pkg-fun.nix

      • log_(26^2) 40,0000 ~= 4.6020599913

      • Largest directories by prefix length for top-level attributes

        • 1: 1606
        • 2: 1173
        • 3: 950 (just below GitHub's 1000 limit, might go over with some more packages)
        • 4: 236 (comfortably below the 1000 limit)
          • haskellPackages: 202
          • pythonPackages: 182
          • perlPackages: 136
      • Nixpkgs has on the order of 10'000 packages per package set and 100'000 packages in total

      • 2/2 or 4 prefix?

        • With 4 prefix we have 536 prefix-directories
          • 1 packages x---/x/pkg-fun.nix

          • 2 packages xy--/xy/pkg-fun.nix

          • 3 packages xyz-/xyz/pkg-fun.nix

          • 4 packages xyzw/xyzw/pkg-fun.nix

          • 5 packages xyzw/xyzwa/pkg-fun.nix

          • 6 packages xyzw/xyzwab/pkg-fun.nix

          • 7-lettt packages xyzw/xyzwabc/pkg-fun.nix

          • Can't be misinterpreted as a flag, there's no packages starting with a -

          • _0ve/_0verkill/pkg-fun.nix, already a problem with windows though, not a concern

        • Underscore looks better than _
        • But for - you don't have to hold shift for most keyboard layouts
        • If we used 2/2, we'd have to use more readDir calls, so 4-prefix is better in that regard