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