This is the most basic core of the Gluon framework. Most upgrade scripts will have to be rewritten and/or moved to other packages.
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| 
 | |
| UPGRADE_DIR=/lib/gluon/upgrade
 | |
| VERSION_DIR=/lib/gluon/version
 | |
| 
 | |
| 
 | |
| version_of() {
 | |
| 	opkg status "gluon-$1" | grep '^Version: ' | cut -d' ' -f 2
 | |
| }
 | |
| 
 | |
| oldversion_of() {
 | |
| 	oldversion="$(cat "$VERSION_DIR"/"$1" 2>/dev/null)"
 | |
| 
 | |
| 	# Legacy support
 | |
| 	if [ -z "$oldversion" ]; then oldversion="$(cat /etc/.freifunk_version_keep 2>/dev/null)"; fi
 | |
| 	if [ -z "$oldversion" ]; then oldversion="$(cat /etc/.lff_version_keep 2>/dev/null)"; fi
 | |
| 	if [ -z "$oldversion" ]; then oldversion="$(cat /etc/.kff_version_keep 2>/dev/null)"; fi
 | |
| 
 | |
| 	echo "$oldversion"
 | |
| }
 | |
| 
 | |
| do_dir() {
 | |
| 	if [ -d "$1" ]; then
 | |
| 		local s
 | |
| 		for s in "$1"/*; do "$s"; done
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| 
 | |
| version="$(version_of gluon-core)"
 | |
| 
 | |
| oldversion="$(cat "$VERSION_FILE" 2>/dev/null)"
 | |
| if [ -z "$oldversion" ]; then oldversion="$(cat "$VERSION_FILE_FREIFUNK" 2>/dev/null)"; fi
 | |
| if [ -z "$oldversion" ]; then oldversion="$(cat "$VERSION_FILE_LFF" 2>/dev/null)"; fi
 | |
| if [ -z "$oldversion" ]; then oldversion="$(cat "$VERSION_FILE_KFF" 2>/dev/null)"; fi
 | |
| 
 | |
| (
 | |
| 	cd "$UPGRADE_DIR"
 | |
| 
 | |
| 	for component in *; do (
 | |
| 		local version="$(version_of "$component")"
 | |
| 		if [ -z "$version" ]; then continue; fi
 | |
| 
 | |
| 		cd "$component"
 | |
| 
 | |
| 		local oldversion="$(oldversion_of "$component")"
 | |
| 		if [ -z "$oldversion" ]; then
 | |
| 			do_dir initial
 | |
| 		else
 | |
| 			local v
 | |
| 
 | |
| 			for v in *; do
 | |
| 				if [ "$v" = initial -o "$v" = invariant -o "$v" = version ]; then continue; fi
 | |
| 
 | |
| 				# The return value of opkg compare-versions is negated
 | |
| 				if ! opkg compare-versions "$v" '>>' "$oldversion"; then
 | |
| 					do_dir "$v"
 | |
| 				fi
 | |
| 			done
 | |
| 		fi
 | |
| 
 | |
| 		do_dir invariant
 | |
| 
 | |
| 		echo "$version" > "$VERSION_DIR"/"$component"
 | |
| 	) done
 | |
| )
 | |
| 
 | |
| rm -f "$VERSION_FILE_FREIFUNK" "$VERSION_FILE_LFF" "$VERSION_FILE_KFF"
 |