Skip to content

Instantly share code, notes, and snippets.

@travishathaway
Created December 17, 2025 07:45
Show Gist options
  • Select an option

  • Save travishathaway/94753efc1f4e146dd431a76005807273 to your computer and use it in GitHub Desktop.

Select an option

Save travishathaway/94753efc1f4e146dd431a76005807273 to your computer and use it in GitHub Desktop.

Revisions

  1. travishathaway created this gist Dec 17, 2025.
    72 changes: 72 additions & 0 deletions strip_packages.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,72 @@
    #! /bin/bash
    #
    # Strip Packages
    #
    # This is script that goes through all conda packages in the current
    # directory and removes everything except the essential "info" metadata
    # folder. It also updates the metadata so that this package can be installed
    # by conda without failing package validation.

    echo "Processing .conda files"
    for f in $(ls *.conda); do
    dir_name=$(echo "$f" | sed -e "s/.conda$//")
    cph extract "$f"
    find "$dir_name" -not -path "$dir_name" -not -path "$dir_name/info*" -exec rm -rf {} +

    package_name=$(cat "$dir_name/info/index.json" | jq -r '.name')
    mkdir -p "$dir_name/include/$package_name/"

    echo "# Mock package" > "$dir_name/include/$package_name/README"

    sha=$(sha256sum "$dir_name/include/$package_name/README" | cut -d ' ' -f1)
    echo "include/$package_name/README" > "$dir_name/info/files"

    cat <<EOF> "$dir_name/info/paths.json"
    {
    "paths": [
    {
    "_path": "include/$package_name/README",
    "path_type": "hardlink",
    "sha256": "$sha",
    "size_in_bytes": 15
    }
    ],
    "paths_version": 1
    }
    EOF
    cph create "$dir_name" "$dir_name.conda"
    rm -rf "$dir_name"
    done
    echo "Processing .tar.bz2 files"
    for f in $(ls *.tar.bz2); do
    dir_name=$(echo "$f" | sed -e "s/.tar.bz2$//")
    cph extract "$f"
    find "$dir_name" -not -path "$dir_name" -not -path "$dir_name/info*" -exec rm -rf {} +
    package_name=$(cat "$dir_name/info/index.json" | jq -r '.name')
    mkdir -p "$dir_name/include/$package_name/"
    echo "# Mock package" > "$dir_name/include/$package_name/README"
    sha=$(sha256sum "$dir_name/include/$package_name/README" | cut -d ' ' -f1)
    echo "include/$package_name/README" > "$dir_name/info/files"
    cat <<EOF> "$dir_name/info/paths.json"
    {
    "paths": [
    {
    "_path": "include/$package_name/README",
    "path_type": "hardlink",
    "sha256": "$sha",
    "size_in_bytes": 15
    }
    ],
    "paths_version": 1
    }
    EOF
    cph create "$dir_name" "$dir_name.tar.bz2"
    rm -rf "$dir_name"
    done