Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
1.8 kB · 63 lines
Nix
at litex
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364# Contains the ruby version heuristics{ lib }:
let # The returned set should be immutable rubyVersion = major: minor: tiny: tail: rec { inherit major minor tiny tail;
# Contains the patch number "223" if tail is "p223" or null patchLevel = let p = lib.removePrefix "p" tail; isPosInt = num: 0 == lib.stringLength (lib.replaceStrings ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9"] ["" "" "" "" "" "" "" "" "" "" ] num); in if lib.hasPrefix "p" tail && isPosInt p then p else null;
# Shortcuts majMin = "${major}.${minor}"; majMinTiny = "${major}.${minor}.${tiny}";
# Ruby separates lib and gem folders by ABI version which isn't very # consistent. libDir = if lib.versionAtLeast majMinTiny "2.1.0" then "${majMin}.0" else if lib.versionAtLeast majMinTiny "2.0.0" then "2.0.0" else if lib.versionAtLeast majMinTiny "1.9.1" then "1.9.1" else throw "version ${majMinTiny} is not supported";
# How ruby releases are tagged on github.com/ruby/ruby gitTag = let base = "v${major}_${minor}_${tiny}"; in if patchLevel != null then "${base}_${patchLevel}" else if tail != "" then "${base}_${tail}" else base;
# Implements the builtins.toString interface. __toString = self: self.majMinTiny + ( if self.patchLevel != null then "-p${self.patchLevel}" else lib.optionalString (self.tail != "") "-${self.tail}" ); };in rubyVersion