12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #!/bin/bash
- set -e
- # This script updates the apt repo in $DOCKER_RELEASE_DIR/apt/repo.
- # This script is a "fix all" for any sort of problems that might have occurred with
- # the Release or Package files in the repo.
- # It should only be used in the rare case of extreme emergencies to regenerate
- # Release and Package files for the apt repo.
- #
- # NOTE: Always be sure to re-sign the repo with hack/make/sign-repos after running
- # this script.
- : ${DOCKER_RELEASE_DIR:=$DEST}
- APTDIR=$DOCKER_RELEASE_DIR/apt/repo
- # supported arches/sections
- arches=( amd64 i386 )
- # Preserve existing components but don't add any non-existing ones
- for component in main testing experimental ; do
- if ls "$APTDIR/dists/*/$component" >/dev/null 2>&1 ; then
- components+=( $component )
- fi
- done
- dists=( $(find "${APTDIR}/dists" -maxdepth 1 -mindepth 1 -type d) )
- # override component if it is set
- if [ "$COMPONENT" ]; then
- components=( $COMPONENT )
- fi
- # release the debs
- for version in "${dists[@]}"; do
- for component in "${components[@]}"; do
- codename="${version//debootstrap-}"
- # update the filelist for this codename/component
- find "$APTDIR/pool/$component" \
- -name *~${codename#*-}*.deb > "$APTDIR/dists/$codename/$component/filelist"
- done
- done
- # run the apt-ftparchive commands so we can have pinning
- apt-ftparchive generate "$APTDIR/conf/apt-ftparchive.conf"
- for dist in "${dists[@]}"; do
- version=$(basename "$dist")
- for component in "${components[@]}"; do
- codename="${version//debootstrap-}"
- apt-ftparchive \
- -o "APT::FTPArchive::Release::Codename=$codename" \
- -o "APT::FTPArchive::Release::Suite=$codename" \
- -c "$APTDIR/conf/docker-engine-release.conf" \
- release \
- "$APTDIR/dists/$codename" > "$APTDIR/dists/$codename/Release"
- for arch in "${arches[@]}"; do
- apt-ftparchive \
- -o "APT::FTPArchive::Release::Codename=$codename" \
- -o "APT::FTPArchive::Release::Suite=$codename" \
- -o "APT::FTPArchive::Release::Component=$component" \
- -o "APT::FTPArchive::Release::Architecture=$arch" \
- -c "$APTDIR/conf/docker-engine-release.conf" \
- release \
- "$APTDIR/dists/$codename/$component/binary-$arch" > "$APTDIR/dists/$codename/$component/binary-$arch/Release"
- done
- done
- done
|