mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	This is especially important for distributions like NixOS where `/bin/bash` doesn't exist, or for MacOS users who've installed a newer version of Bash than the one that comes with their OS. Signed-off-by: Andrew "Tianon" Page <admwiggin@gmail.com>
		
			
				
	
	
		
			70 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/env 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
 |