|
|
|
@ -23,6 +23,7 @@ DIST_ROOT = 'https://static.rust-lang.org/dist' |
|
|
|
|
NIX_KEYWORDS = {'', 'if', 'then', 'else', 'assert', 'with', 'let', 'in', 'rec', 'inherit', 'or'} |
|
|
|
|
MANIFEST_TMP_PATH = Path('manifest.tmp') |
|
|
|
|
TARGETS_PATH = Path('manifests/targets.nix') |
|
|
|
|
RENAMES_PATH = Path('manifests/renames.nix') |
|
|
|
|
|
|
|
|
|
RE_STABLE_VERSION = re.compile(r'^\d+\.\d+\.\d+$') |
|
|
|
|
|
|
|
|
@ -66,6 +67,25 @@ def compress_target(target: str) -> str: |
|
|
|
|
f.write('}\n') |
|
|
|
|
return f'_{idx}' |
|
|
|
|
|
|
|
|
|
renames_map = dict((line.strip(), i) for i, line in enumerate(RENAMES_PATH.read_text().strip().split('\n')[1:-1])) |
|
|
|
|
def compress_renames(renames: dict) -> int: |
|
|
|
|
serialized = '{ ' + ''.join( |
|
|
|
|
f'{escape_nix_key(k)} = {escape_nix_string(v["to"])}; ' |
|
|
|
|
for k, v in sorted(renames.items()) |
|
|
|
|
) + '}' |
|
|
|
|
|
|
|
|
|
if serialized in renames_map: |
|
|
|
|
return renames_map[serialized] |
|
|
|
|
idx = len(renames_map) |
|
|
|
|
renames_map[serialized] = idx |
|
|
|
|
|
|
|
|
|
with open(str(RENAMES_PATH), 'w') as f: |
|
|
|
|
f.write('[\n') |
|
|
|
|
for _, ser in sorted((idx, ser) for ser, idx in renames_map.items()): |
|
|
|
|
f.write(' ' + ser + '\n') |
|
|
|
|
f.write(']\n') |
|
|
|
|
return idx |
|
|
|
|
|
|
|
|
|
def retry_with(f): |
|
|
|
|
i = 0 |
|
|
|
|
while True: |
|
|
|
@ -82,10 +102,12 @@ def translate_dump_manifest(manifest: str, f, nightly=False): |
|
|
|
|
manifest = toml.loads(manifest) |
|
|
|
|
date = manifest['date'] |
|
|
|
|
version = manifest['pkg']['rustc']['version'].split()[0] |
|
|
|
|
renames_idx = compress_renames(manifest['renames']) |
|
|
|
|
strip_tail = '-preview' |
|
|
|
|
|
|
|
|
|
f.write('{') |
|
|
|
|
f.write(f'date={escape_nix_string(date)};') |
|
|
|
|
f.write(f'r={renames_idx};') |
|
|
|
|
for pkg_name in sorted(manifest['pkg'].keys()): |
|
|
|
|
pkg = manifest['pkg'][pkg_name] |
|
|
|
|
pkg_name_stripped = pkg_name[:-len(strip_tail)] if pkg_name.endswith(strip_tail) else pkg_name |
|
|
|
|