You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							102 lines
						
					
					
						
							3.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							102 lines
						
					
					
						
							3.1 KiB
						
					
					
				| #!/bin/bash | |
|  | |
| get_patch(){ _get_patch; }; | |
| _get_patch(){ | |
| 	cd $pdir; | |
| 	[ -f patch.url ] && source patch.url; | |
| 	clear; | |
| 	echo -e $C; | |
| 	ologo; | |
| 	echo -e $WH; | |
| 	[ -f $PATCHNAME ] && echo -e "$Y   old patch found\n  remove  $P$PATCHNAME" && rm -f $PATCHNAME; | |
| 	echo -e $W"  load $PATCHNAME"; | |
| 	wget -q -O$PATCHNAME $PATCHURL; | |
| 	[ -f $PATCHNAME ] && echo -e $G"   ok$W new $PATCHNAME loadet\n" || echo -e $R"   patch not found\n"$W; | |
| }; | |
| _apply_menupatch(){ | |
| 	cd "$pdir"; | |
| 	pf=(*); | |
| 	if [ ${#pf[@]} -gt 1 ];then | |
| 		[ -f "$workdir/SVN-IS-PATCHED" ] && quicksvnrestore $_toolchainname 2>/dev/null; | |
| 		if [ ! -f "$workdir/SVN-IS-PATCHED" ];then | |
| 			(if [ "$(ls -A "$pdir"/*.patch 2>/dev/null)" ];then | |
| 				cd "$pdir"; | |
| 				unset patchlist;patchlist=`ls *.patch | sort -st '/' -k1,1`; | |
| 				for e in ${patchlist[@]};do | |
| 					_w="ok"; | |
| 					cd "$svndir"; | |
| 					patchlog="$(mktemp)"; | |
| 					echo "PATCH : apply $e"; | |
| 					patch -f -p0 < "$pdir/$e" >>"$patchlog" 2>/dev/null; | |
| 					hunks=$(grep -c1 '^Hunk' "$patchlog"); | |
| 					fails=$(grep -c1 'hunks FAILED' "$patchlog"); | |
| 					if [ "$hunks" -gt "0" ];then | |
| 						echo "PATCH : $hunks x HUNK for $e"; | |
| 						_w="hunk"; | |
| 					fi; | |
| 					if [ "$fails" -gt "0" ];then | |
| 						echo "PATCH : $fails x FAILS for $e"; | |
| 						_w="fail"; | |
| 					fi; | |
| 				done; | |
| 				case $_w in | |
| 					ok) | |
| 							echo "PATCH : done all ok"; | |
| 							touch "$workdir/SVN-IS-PATCHED";; | |
| 					hunk) | |
| 							echo "PATCH : done with warnings save $e.log"; | |
| 							cat $patchlog >>"$ldir/$e.log"; | |
| 							ln -sf "$ldir/$e.log" "$workdir/lastpatch.log"; | |
| 							touch "$workdir/SVN-IS-PATCHED";; | |
| 					fail) | |
| 							echo "PATCH : break build save $e.log"; | |
| 							cat $patchlog >>"$ldir/$e.log"; | |
| 							ln -sf "$ldir/$e.log" "$workdir/lastpatch.log"; | |
| 							touch "$workdir/SVN-IS-PATCHED";; | |
| 				esac; | |
| 				rm -rf "$patchlog"; | |
| 			fi;)|"$gui" "$st_" "$bt_" "$title_" "$pb_" 12 62;sleep 2; | |
| 		fi; | |
| 	fi; | |
| }; | |
| _apply_consolepatch(){ | |
| 	if [ ! -f "$workdir/SVN-IS-PATCHED" ];then | |
| 		cd "$pdir"; | |
| 		if [ "$(ls -1 "$pdir"/*.patch 2>/dev/null | wc -l)" -gt "0" ];then | |
| 			unset patchlist;patchlist=`ls *.patch | sort -st '/' -k1,1`; | |
| 			for e in ${patchlist[@]};do | |
| 				_w=0;cd "$svndir"; | |
| 				patchlog="$(mktemp)"; | |
| 				echo -e "$y_l|     PATCH : apply $e"; | |
| 				patch -F 10 -f -p0 < "$pdir/$e" >>"$patchlog" 2>/dev/null; | |
| 				hunks=$(grep -c1 "^Hunk" "$patchlog"); | |
| 				fails=$(grep -c1 "hunks FAILED" "$patchlog"); | |
| 				if [ "$hunks" -gt "0" ];then | |
| 					echo -e "$y_l|     PATCH :$w_l $hunks x HUNK for $e"; | |
| 					_w=1; | |
| 				fi; | |
| 				if [ "$fails" -gt "0" ];then | |
| 					echo -e  "$y_l|     PATCH :$r_n FAIL (breaking Build) = $fails"; | |
| 					echo -en "$w_l|   RESTORE :$c_w LAST SVN BACKUP in "; | |
| 					for (( i=6; i>0; i--));do | |
| 						sleep 1 & echo -en "$i\b"; | |
| 						wait; | |
| 					done; | |
| 					svnrestore lastsvn; | |
| 					exit; | |
| 				fi; | |
| 				cat $patchlog >"$ldir/$e.log"; | |
| 				ln -sf "$ldir/$e.log" "$workdir/lastpatch.log"; | |
| 				rm -rf "$patchlog"; | |
| 			done; | |
| 			if [ "$_w" -gt "0" ];then echo -e "$y_l|     PATCH : done with warnings"; | |
| 				touch "$workdir/SVN-IS-PATCHED"; | |
| 			else | |
| 				echo -e "$y_l|     PATCH :$g_l done all ok$rs_"; | |
| 				touch "$workdir/SVN-IS-PATCHED"; | |
| 			fi; | |
| 		else | |
| 			echo -en "$y_l|     PATCH : no patch found\n"; | |
| 		fi; | |
| 	fi; | |
| }; |