#! /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 < "$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 < "$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