|
@@ -0,0 +1,70 @@
|
|
|
+#!/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 occured 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
|