xref: /aosp_15_r20/external/pytorch/scripts/release/anaconda-prune/prune.sh (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1#!/usr/bin/env bash
2
3grab_prune_version() {
4    conda search -c "${CHANNEL}" --platform "${platform}" "${PKG}" 2>/dev/null | \
5        grep "${CHANNEL}" | \
6        awk -F '  *' '{print $2}' | \
7        uniq | \
8        head -n -1 | \
9        xargs
10}
11
12grab_latest_version() {
13    conda search -c "${CHANNEL}" --platform "${platform}" "${PKG}" 2>/dev/null | \
14        grep "${CHANNEL}" | \
15        awk -F '  *' '{print $2}' | \
16        uniq | \
17        tail -n 1 | \
18        xargs
19}
20
21grab_specs_for_version() {
22    conda search -c "${CHANNEL}" --platform "${platform}" "${PKG}" 2>/dev/null | \
23        grep "${CHANNEL}" | \
24        grep "$1" | \
25        awk -F '  *' '{print $3}' | \
26        uniq | \
27        xargs
28}
29
30set -eou pipefail
31
32CHANNEL=${CHANNEL:-pytorch-nightly}
33PKG=${PKG:-pytorch}
34PLATFORMS=${PLATFORMS:-noarch osx-64 osx-arm64 linux-64 win-64}
35
36for platform in ${PLATFORMS}; do
37    latest_version="$(grab_latest_version || true)"
38    specs_in_latest_version="$(grab_specs_for_version "${latest_version}" || true)"
39    versions_to_prune="$(grab_prune_version || true)"
40    for version in ${versions_to_prune}; do
41        specs_in_prune_version="$(grab_specs_for_version "${version}" || true)"
42        for spec in ${specs_in_prune_version}; do
43        # If this spec is included in specs_in_latest_version, then remove it.
44        if [[ "${specs_in_latest_version}" =~ ${spec} ]];then
45            (
46                set -x
47                anaconda remove --force "${CHANNEL}/${PKG}/${version}/${platform}/${PKG}-${version}-${spec}.tar.bz2"
48            )
49        fi
50        done
51    done
52done
53