72 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
 | 
						|
UPGRADE_DIR=/lib/gluon/upgrade
 | 
						|
VERSION_DIR=/lib/gluon/version
 | 
						|
 | 
						|
 | 
						|
if [ -x /lib/gluon/legacy/legacy-upgrade ] && /lib/gluon/legacy/legacy-upgrade; then
 | 
						|
	HAS_LEGACY=1
 | 
						|
else
 | 
						|
	HAS_LEGACY=
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
# Temporary fix for broken upgrades (happened between 20140225 and 20140226, remove next week)
 | 
						|
if [ -f "$VERSION_DIR" ]; then rm "$VERSION_DIR"; fi
 | 
						|
 | 
						|
mkdir -p "$VERSION_DIR"
 | 
						|
 | 
						|
 | 
						|
version_of() {
 | 
						|
	opkg status "gluon-$1" | awk '/^Version: / { print $2 }'
 | 
						|
}
 | 
						|
 | 
						|
oldversion_of() {
 | 
						|
	cat "$VERSION_DIR"/"$1" 2>/dev/null
 | 
						|
}
 | 
						|
 | 
						|
do_dir() {
 | 
						|
	[ -d "$1" ] || return
 | 
						|
 | 
						|
	local s
 | 
						|
	for s in "$1"/*; do "$s"; done
 | 
						|
}
 | 
						|
 | 
						|
do_component() {
 | 
						|
	local component="$1"
 | 
						|
	local version="$(version_of "$component")"
 | 
						|
	[ "$version" ] || continue
 | 
						|
 | 
						|
	(
 | 
						|
		cd "$component"
 | 
						|
 | 
						|
		local oldversion="$(oldversion_of "$component")"
 | 
						|
		if [ -z "$oldversion" ]; then
 | 
						|
			if [ "$HAS_LEGACY" ]; then
 | 
						|
				do_dir legacy
 | 
						|
			else
 | 
						|
				do_dir initial
 | 
						|
			fi
 | 
						|
		fi
 | 
						|
 | 
						|
		do_dir invariant
 | 
						|
 | 
						|
		echo "$version" > "$VERSION_DIR"/"$component"
 | 
						|
	)
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
cd "$UPGRADE_DIR"
 | 
						|
 | 
						|
do_component core
 | 
						|
 | 
						|
for component in *; do
 | 
						|
	[ "$component" != 'core' ] || continue
 | 
						|
	do_component "$component"
 | 
						|
done
 | 
						|
 | 
						|
if [ "$HAS_LEGACY" ]; then
 | 
						|
	/lib/gluon/legacy/legacy-upgrade-late
 | 
						|
fi
 |