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