Some Unix systems (GuixSD, NixOS) do not install programs like Bash and Python to /usr/bin, and /usr/bin/env has to be used to locate these instead. Change-Id: I7546bcb881c532adc984577ecb0ee2ec4f2efe00 Signed-off-by: Yegor Timoshenko <yegortimoshenko@riseup.net> Reviewed-on: https://review.coreboot.org/28953 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| # This file is part of the coreboot project.
 | |
| #
 | |
| # Copyright (C) 2017 Google Inc.
 | |
| #
 | |
| # This program is free software; you can redistribute it and/or modify
 | |
| # it under the terms of the GNU General Public License as published by
 | |
| # the Free Software Foundation; version 2 of the License.
 | |
| #
 | |
| # This program is distributed in the hope that it will be useful,
 | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| # GNU General Public License for more details.
 | |
| #
 | |
| 
 | |
| # Description:
 | |
| # Check all submodules for updates.  If there are more than a minimum
 | |
| # number of changes, create a commit to update the submodule to the
 | |
| # new version.
 | |
| 
 | |
| export LANG=C
 | |
| export LC_ALL=C
 | |
| export TZ=UTC0
 | |
| 
 | |
| min_commits=10
 | |
| 
 | |
| TOP=${PWD}
 | |
| SUBMODULES_WITH_UPDATES=0
 | |
| submodule_dirs=$(git submodule foreach pwd | grep -v Entering)
 | |
| 
 | |
| (
 | |
| echo "Checking submodules..."
 | |
| for submodule in $submodule_dirs; do
 | |
| 	cd "$submodule" || exit 1
 | |
| 	initial_commit_id="$(git log --pretty='%h' -n 1)"
 | |
| 	initial_commit_description="$(git log --pretty='%ci - (%s)' -n 1)"
 | |
| 	git fetch 2>/dev/null
 | |
| 	updated_commit_id="$(git log --pretty='%h' -n 1 origin/master)"
 | |
| 	updated_commit_description="$(git log --pretty='%ci - (%s)' -n 1 "${updated_commit_id}")"
 | |
| 	if [ "${initial_commit_id}" = "${updated_commit_id}" ]; then
 | |
| 		# echo "No updates for ${submodule}"
 | |
| 		continue
 | |
| 	fi
 | |
| 	SUBMODULES_WITH_UPDATES+=1
 | |
| 	update_count="$(git log --oneline "${initial_commit_id}..${updated_commit_id}" | wc -l)"
 | |
| 	echo "${update_count} new commits for ${submodule}"
 | |
| 	if [ "${update_count}" -ge "${min_commits}" ]; then
 | |
| 		echo "Creating commit to update ${submodule##*/} submodule"
 | |
| 		git checkout "${updated_commit_id}" > /dev/null 2>&1
 | |
| 		cd "${TOP}" || exit 1
 | |
| 		sleep 1
 | |
| 		git add "${submodule}" > /dev/null 2>&1 || exit 1
 | |
| 		sleep 1
 | |
| 		git commit -s -F- > /dev/null 2>&1 <<EOF
 | |
| Update ${submodule##*/} submodule to upstream master
 | |
| 
 | |
| Updating from commit id ${initial_commit_id}:
 | |
| $initial_commit_description
 | |
| 
 | |
| to commit id ${updated_commit_id}:
 | |
| ${updated_commit_description}
 | |
| 
 | |
| This brings in ${update_count} new commits.
 | |
| EOF
 | |
| 		sleep 1
 | |
| 	fi
 | |
| done
 | |
| 
 | |
| if [ "${SUBMODULES_WITH_UPDATES}" = "0" ]; then
 | |
| 	echo "No submodules with any updates."
 | |
| fi
 | |
| )
 |