1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import os
- abspath = os.path.abspath(__file__)
- dname = os.path.dirname(abspath)
- os.chdir(dname)
- features = []
- def feature(name, default, min, max, pow2=None):
- vals = set()
- val = min
- while val <= max:
- vals.add(val)
- if pow2 == True or (isinstance(pow2, int) and val >= pow2):
- val *= 2
- else:
- val += 1
- vals.add(default)
- features.append(
- {
- "name": name,
- "default": default,
- "vals": sorted(list(vals)),
- }
- )
- feature("iface_max_addr_count", default=2, min=1, max=8)
- feature("iface_max_multicast_group_count", default=4, min=1, max=1024, pow2=8)
- feature("iface_max_sixlowpan_address_context_count", default=4, min=1, max=1024, pow2=8)
- feature("iface_neighbor_cache_count", default=4, min=1, max=1024, pow2=8)
- feature("iface_max_route_count", default=2, min=1, max=1024, pow2=8)
- feature("fragmentation_buffer_size", default=1500, min=256, max=65536, pow2=True)
- feature("assembler_max_segment_count", default=4, min=1, max=32, pow2=4)
- feature("reassembly_buffer_size", default=1500, min=256, max=65536, pow2=True)
- feature("reassembly_buffer_count", default=1, min=1, max=32, pow2=4)
- feature("dns_max_result_count", default=1, min=1, max=32, pow2=4)
- feature("dns_max_server_count", default=1, min=1, max=32, pow2=4)
- feature("dns_max_name_size", default=255, min=64, max=255, pow2=True)
- # ========= Update Cargo.toml
- things = ""
- for f in features:
- name = f["name"].replace("_", "-")
- for val in f["vals"]:
- things += f"{name}-{val} = []"
- if val == f["default"]:
- things += " # Default"
- things += "\n"
- things += "\n"
- SEPARATOR_START = "# BEGIN AUTOGENERATED CONFIG FEATURES\n"
- SEPARATOR_END = "# END AUTOGENERATED CONFIG FEATURES\n"
- HELP = "# Generated by gen_config.py. DO NOT EDIT.\n"
- with open("Cargo.toml", "r") as f:
- data = f.read()
- before, data = data.split(SEPARATOR_START, maxsplit=1)
- _, after = data.split(SEPARATOR_END, maxsplit=1)
- data = before + SEPARATOR_START + HELP + things + SEPARATOR_END + after
- with open("Cargo.toml", "w") as f:
- f.write(data)
- # ========= Update build.rs
- things = ""
- for f in features:
- name = f["name"].upper()
- things += f' ("{name}", {f["default"]}),\n'
- SEPARATOR_START = "// BEGIN AUTOGENERATED CONFIG FEATURES\n"
- SEPARATOR_END = "// END AUTOGENERATED CONFIG FEATURES\n"
- HELP = " // Generated by gen_config.py. DO NOT EDIT.\n"
- with open("build.rs", "r") as f:
- data = f.read()
- before, data = data.split(SEPARATOR_START, maxsplit=1)
- _, after = data.split(SEPARATOR_END, maxsplit=1)
- data = before + SEPARATOR_START + HELP + things + " " + SEPARATOR_END + after
- with open("build.rs", "w") as f:
- f.write(data)
|