mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-12-20 22:30:35 +08:00
Initial commit
fbshipit-source-id: ad58e416e3ceeca85fae0583308968d04e78fe0d
This commit is contained in:
119
.circleci/regenerate.py
Normal file
119
.circleci/regenerate.py
Normal file
@@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
|
||||
|
||||
"""
|
||||
This script is adapted from the torchvision one.
|
||||
There is no python2.7 nor macos.
|
||||
TODO: python 3.8 when pytorch 1.4.
|
||||
"""
|
||||
|
||||
import os.path
|
||||
import jinja2
|
||||
import yaml
|
||||
|
||||
|
||||
def workflows(prefix="", filter_branch=None, upload=False, indentation=6):
|
||||
w = []
|
||||
# add "wheel" here for pypi
|
||||
for btype in ["conda"]:
|
||||
for python_version in ["3.6", "3.7", "3.8"]:
|
||||
for cu_version in ["cu92", "cu100", "cu101"]:
|
||||
w += workflow_pair(
|
||||
btype=btype,
|
||||
python_version=python_version,
|
||||
cu_version=cu_version,
|
||||
prefix=prefix,
|
||||
upload=upload,
|
||||
filter_branch=filter_branch,
|
||||
)
|
||||
|
||||
return indent(indentation, w)
|
||||
|
||||
|
||||
def workflow_pair(
|
||||
*, btype, python_version, cu_version, prefix="", upload=False, filter_branch
|
||||
):
|
||||
|
||||
w = []
|
||||
base_workflow_name = (
|
||||
f"{prefix}binary_linux_{btype}_py{python_version}_{cu_version}"
|
||||
)
|
||||
|
||||
w.append(
|
||||
generate_base_workflow(
|
||||
base_workflow_name=base_workflow_name,
|
||||
python_version=python_version,
|
||||
cu_version=cu_version,
|
||||
btype=btype,
|
||||
filter_branch=filter_branch,
|
||||
)
|
||||
)
|
||||
|
||||
if upload:
|
||||
w.append(
|
||||
generate_upload_workflow(
|
||||
base_workflow_name=base_workflow_name,
|
||||
btype=btype,
|
||||
cu_version=cu_version,
|
||||
filter_branch=filter_branch,
|
||||
)
|
||||
)
|
||||
|
||||
return w
|
||||
|
||||
|
||||
def generate_base_workflow(
|
||||
*, base_workflow_name, python_version, cu_version, btype, filter_branch=None
|
||||
):
|
||||
|
||||
d = {
|
||||
"name": base_workflow_name,
|
||||
"python_version": python_version,
|
||||
"cu_version": cu_version,
|
||||
"build_version": "0.1.0",
|
||||
"pytorch_version": "1.4",
|
||||
}
|
||||
|
||||
if cu_version == "cu92":
|
||||
d["wheel_docker_image"] = "pytorch/manylinux-cuda92"
|
||||
elif cu_version == "cu100":
|
||||
d["wheel_docker_image"] = "pytorch/manylinux-cuda100"
|
||||
|
||||
if filter_branch is not None:
|
||||
d["filters"] = {"branches": {"only": filter_branch}}
|
||||
|
||||
return {f"binary_linux_{btype}": d}
|
||||
|
||||
|
||||
def generate_upload_workflow(
|
||||
*, base_workflow_name, btype, cu_version, filter_branch
|
||||
):
|
||||
d = {
|
||||
"name": f"{base_workflow_name}_upload",
|
||||
"context": "org-member",
|
||||
"requires": [base_workflow_name],
|
||||
}
|
||||
|
||||
if btype == "wheel":
|
||||
d["subfolder"] = cu_version + "/"
|
||||
|
||||
if filter_branch is not None:
|
||||
d["filters"] = {"branches": {"only": filter_branch}}
|
||||
|
||||
return {f"binary_{btype}_upload": d}
|
||||
|
||||
|
||||
def indent(indentation, data_list):
|
||||
return ("\n" + " " * indentation).join(
|
||||
yaml.dump(data_list, default_flow_style=False).splitlines()
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
d = os.path.dirname(__file__)
|
||||
env = jinja2.Environment(
|
||||
loader=jinja2.FileSystemLoader(d), lstrip_blocks=True, autoescape=False
|
||||
)
|
||||
|
||||
with open(os.path.join(d, "config.yml"), "w") as f:
|
||||
f.write(env.get_template("config.in.yml").render(workflows=workflows))
|
||||
Reference in New Issue
Block a user