summaryrefslogtreecommitdiff
path: root/.circleci/verbatim-sources/macos-binary-build-defaults.yml
blob: ae142d158997a16467b8058edf3c89ea90a4971a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

##############################################################################
# Macos binary build defaults
# The root of everything is /Users/distiller/pytorch-ci-env/workspace
##############################################################################
binary_mac_build: &binary_mac_build
  macos:
    xcode: "9.0"
  steps:
  - run:
      <<: *binary_populate_env
  - run:
      <<: *macos_brew_update
  - run:
      <<: *binary_checkout
  - run:
      <<: *binary_install_miniconda

  - run:
      name: Build
      no_output_timeout: "1h"
      command: |
        set -ex
        source "/Users/distiller/project/env"
        mkdir -p "$PYTORCH_FINAL_PACKAGE_DIR"

        # For some reason `unbuffer` breaks if we change the PATH here, so we
        # write a script with the PATH change in it and unbuffer the whole
        # thing
        build_script="$workdir/build_script.sh"
        touch "$build_script"
        chmod +x "$build_script"

        # Build
        cat >"$build_script" <<EOL
        export PATH="$workdir/miniconda/bin:$PATH"
        if [[ "$PACKAGE_TYPE" == conda ]]; then
          "$workdir/builder/conda/build_pytorch.sh"
        else
          export TORCH_PACKAGE_NAME="$(echo $TORCH_PACKAGE_NAME | tr '-' '_')"
          "$workdir/builder/wheel/build_wheel.sh"
        fi
        EOL
        unbuffer "$build_script" | ts

  - run:
      name: Test
      no_output_timeout: "1h"
      command: |
        set -ex
        source "/Users/distiller/project/env"
        export "PATH=$workdir/miniconda/bin:$PATH"
        pkg="$workdir/final_pkgs/$(ls $workdir/final_pkgs)"

        # Don't test libtorch TODO
        if [[ "$PACKAGE_TYPE" == libtorch ]]; then
          exit 0
        fi

        # Create a new test env TODO cut all this out into a separate test
        # job and have an entirely different miniconda
        source deactivate || true
        conda create -qyn test python="$DESIRED_PYTHON"
        source activate test >/dev/null

        # Install the package
        if [[ "$PACKAGE_TYPE" == conda ]]; then
          conda install -y "$pkg" --offline
        else
          pip install "$pkg" --no-index --no-dependencies -v
        fi

        # Test
        pushd "$workdir/pytorch"
        $workdir/builder/run_tests.sh "$PACKAGE_TYPE" "$DESIRED_PYTHON" "$DESIRED_CUDA"
        popd

  - persist_to_workspace:
      root: /Users/distiller/project
      paths: final_pkgs

binary_mac_upload: &binary_mac_upload
  macos:
    xcode: "9.0"
  steps:
  - run:
      <<: *binary_populate_env
  - run:
      <<: *macos_brew_update
  - run:
      <<: *binary_install_miniconda
  - attach_workspace:
      at: /Users/distiller/project
  - run:
      name: Upload
      no_output_timeout: "10m"
      command: |
        export AWS_ACCESS_KEY_ID="${PYTORCH_BINARY_AWS_ACCESS_KEY_ID}"
        export AWS_SECRET_ACCESS_KEY="${PYTORCH_BINARY_AWS_SECRET_ACCESS_KEY}"
        cat >/Users/distiller/project/login_to_anaconda.sh <<EOL
        set +x
        echo "Trying to login to Anaconda"
        yes | anaconda login \
            --username "$PYTORCH_BINARY_PJH5_CONDA_USERNAME" \
            --password "$PYTORCH_BINARY_PJH5_CONDA_PASSWORD"
        set -x
        EOL
        chmod +x /Users/distiller/project/login_to_anaconda.sh
        set -ex
        source "/Users/distiller/project/env"
        export "PATH=$workdir/miniconda/bin:$PATH"

        pushd "$workdir/final_pkgs"
        if [[ "$PACKAGE_TYPE" == conda ]]; then
          retry conda install -yq anaconda-client
          retry /Users/distiller/project/login_to_anaconda.sh
          retry anaconda upload "$(ls)" -u pytorch --label main --no-progress --force
        elif [[ "$PACKAGE_TYPE" == libtorch ]]; then
          retry pip install -q awscli
          s3_dir="s3://pytorch/libtorch/${PIP_UPLOAD_FOLDER}${DESIRED_CUDA}/"
          for pkg in $(ls); do
            retry aws s3 cp "$pkg" "$s3_dir" --acl public-read
          done
        else
          retry pip install -q awscli
          s3_dir="s3://pytorch/whl/${PIP_UPLOAD_FOLDER}${DESIRED_CUDA}/"
          retry aws s3 cp "$(ls)" "$s3_dir" --acl public-read
        fi