clean-apt-repo 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/bin/bash
  2. set -e
  3. # This script cleans the experimental pool for the apt repo.
  4. # This is useful when there are a lot of old experimental debs and you only want to keep the most recent.
  5. #
  6. : ${DOCKER_RELEASE_DIR:=$DEST}
  7. APTDIR=$DOCKER_RELEASE_DIR/apt/repo/pool/experimental
  8. : ${DOCKER_ARCHIVE_DIR:=$DEST/archive}
  9. DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
  10. latest_versions=$(dpkg-scanpackages "$APTDIR" /dev/null 2>/dev/null | awk -F ': ' '$1 == "Filename" { print $2 }')
  11. # get the latest version
  12. latest_docker_engine_file=$(echo "$latest_versions" | grep docker-engine)
  13. latest_docker_engine_version=$(basename ${latest_docker_engine_file%~*})
  14. echo "latest docker-engine version: $latest_docker_engine_version"
  15. # remove all the files that are not that version in experimental
  16. pool_dir=$(dirname "$latest_docker_engine_file")
  17. old_pkgs=( $(ls "$pool_dir" | grep -v "^${latest_docker_engine_version}" | grep "${latest_docker_engine_version%%~git*}") )
  18. echo "${old_pkgs[@]}"
  19. mkdir -p "$DOCKER_ARCHIVE_DIR"
  20. for old_pkg in "${old_pkgs[@]}"; do
  21. echo "moving ${pool_dir}/${old_pkg} to $DOCKER_ARCHIVE_DIR"
  22. mv "${pool_dir}/${old_pkg}" "$DOCKER_ARCHIVE_DIR"
  23. done
  24. echo
  25. echo "$pool_dir now has contents:"
  26. ls "$pool_dir"
  27. # now regenerate release files for experimental
  28. export COMPONENT=experimental
  29. source "${DIR}/update-apt-repo"
  30. echo "You will now want to: "
  31. echo " - re-sign the repo with hack/make/sign-repo"
  32. echo " - re-generate index files with hack/make/generate-index-listing"