return result.wait() == 1 else: result = subprocess.Popen(f'type {cmd}', stdout=subprocess.PIPE, shell=True) return result.wait() == 0 def op_enabled(op_name): assert hasattr(ALL_OPS[op_name], 'BUILD_VAR'), \ f"{op_name} is missing BUILD_VAR field" env_var = ALL_OPS[op_name].BUILD_VAR return int(os.environ.get(env_var, BUILD_OP_DEFAULT)) install_ops = dict.fromkeys(ALL_OPS.keys(), False) for op_name, builder in ALL_OPS.items(): op_compatible = builder.is_compatible() # If op is compatible update install reqs so it can potentially build/run later if op_compatible: reqs = builder.python_requirements() install_requires += builder.python_requirements() # If op install enabled, add builder to extensions if op_enabled(op_name) and op_compatible: assert torch_available, f"Unable to pre-compile {op_name}, please first install torch" install_ops[op_name] = op_enabled(op_name) ext_modules.append(builder.builder()) compatible_ops = {
result = subprocess.Popen(f'type {cmd}', stdout=subprocess.PIPE, shell=True) return result.wait() == 0 def op_envvar(op_name): assert hasattr(ALL_OPS[op_name], 'BUILD_VAR'), \ f"{op_name} is missing BUILD_VAR field" return ALL_OPS[op_name].BUILD_VAR def op_enabled(op_name): env_var = op_envvar(op_name) return int(os.environ.get(env_var, BUILD_OP_DEFAULT)) compatible_ops = dict.fromkeys(ALL_OPS.keys(), False) install_ops = dict.fromkeys(ALL_OPS.keys(), False) for op_name, builder in ALL_OPS.items(): op_compatible = builder.is_compatible() compatible_ops[op_name] = op_compatible # If op is requested but not available, throw an error if op_enabled(op_name) and not op_compatible: env_var = op_envvar(op_name) if env_var not in os.environ: builder.warning(f"One can disable {op_name} with {env_var}=0") abort(f"Unable to pre-compile {op_name}") # If op is compatible update install reqs so it can potentially build/run later if op_compatible: reqs = builder.python_requirements()
print(f"DS_BUILD_OPS={BUILD_OP_DEFAULT}") def command_exists(cmd): result = subprocess.Popen(f'type {cmd}', stdout=subprocess.PIPE, shell=True) return result.wait() == 0 def op_enabled(op_name): assert hasattr(ALL_OPS[op_name], 'BUILD_VAR'), \ f"{op_name} is missing BUILD_VAR field" env_var = ALL_OPS[op_name].BUILD_VAR return int(os.environ.get(env_var, BUILD_OP_DEFAULT)) install_ops = dict.fromkeys(ALL_OPS.keys(), False) for op_name, builder in ALL_OPS.items(): op_compatible = builder.is_compatible() # If op is compatible update install reqs so it can potentially build/run later if op_compatible: reqs = builder.python_requirements() install_requires += builder.python_requirements() # If op install enabled, add builder to extensions if op_enabled(op_name) and op_compatible: install_ops[op_name] = op_enabled(op_name) ext_modules.append(builder.builder()) compatible_ops = {op_name: op.is_compatible() for (op_name, op) in ALL_OPS.items()}