build: allow setting a custom GIT binary for transparent proxying
Some users can't run a bare 'git' command, due to need for a transparent proxying solution such as 'tsocks'. This adds an argument to configure to let users specify such a thing: ./configure --with-git="tsocks git" The submodule script is also updated to give the user a hint about using this flag, if we fail to checkout modules. Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
		
							parent
							
								
									ec7a8bf0b8
								
							
						
					
					
						commit
						cc84d63a42
					
				
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							| @ -21,14 +21,14 @@ git-submodule-update: | ||||
| ifeq (0,$(MAKELEVEL)) | ||||
|   git_module_status := $(shell \
 | ||||
|     cd '$(SRC_PATH)' && \
 | ||||
|     ./scripts/git-submodule.sh status $(GIT_SUBMODULES); \
 | ||||
|     GIT="$(GIT)" ./scripts/git-submodule.sh status $(GIT_SUBMODULES); \
 | ||||
|     echo $$?; \
 | ||||
|   ) | ||||
| 
 | ||||
| ifeq (1,$(git_module_status)) | ||||
| git-submodule-update: | ||||
| 	$(call quiet-command, \
 | ||||
|           (cd $(SRC_PATH) && ./scripts/git-submodule.sh update $(GIT_SUBMODULES)), \
 | ||||
|           (cd $(SRC_PATH) && GIT="$(GIT)" ./scripts/git-submodule.sh update $(GIT_SUBMODULES)), \
 | ||||
|           "GIT","$(GIT_SUBMODULES)") | ||||
| endif | ||||
| endif | ||||
|  | ||||
							
								
								
									
										5
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								configure
									
									
									
									
										vendored
									
									
								
							| @ -271,6 +271,7 @@ then | ||||
| else | ||||
|     git_submodules="" | ||||
| fi | ||||
| git="git" | ||||
| 
 | ||||
| # Don't accept a target_list environment variable. | ||||
| unset target_list | ||||
| @ -1303,6 +1304,8 @@ for opt do | ||||
|   ;; | ||||
|   --enable-capstone=system) capstone="system" | ||||
|   ;; | ||||
|   --with-git=*) git="$optarg" | ||||
|   ;; | ||||
|   *) | ||||
|       echo "ERROR: unknown option $opt" | ||||
|       echo "Try '$0 --help' for more information" | ||||
| @ -5413,6 +5416,7 @@ echo "local state directory   queried at runtime" | ||||
| echo "Windows SDK       $win_sdk" | ||||
| fi | ||||
| echo "Source path       $source_path" | ||||
| echo "GIT binary        $git" | ||||
| echo "GIT submodules    $git_submodules" | ||||
| echo "C compiler        $cc" | ||||
| echo "Host C compiler   $host_cc" | ||||
| @ -5604,6 +5608,7 @@ echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak | ||||
| echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak | ||||
| echo "qemu_localedir=$qemu_localedir" >> $config_host_mak | ||||
| echo "libs_softmmu=$libs_softmmu" >> $config_host_mak | ||||
| echo "GIT=$git" >> $config_host_mak | ||||
| echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak | ||||
| 
 | ||||
| echo "ARCH=$ARCH" >> $config_host_mak | ||||
|  | ||||
| @ -3,14 +3,27 @@ | ||||
| # This code is licensed under the GPL version 2 or later.  See | ||||
| # the COPYING file in the top-level directory. | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| substat=".git-submodule-status" | ||||
| 
 | ||||
| command=$1 | ||||
| shift | ||||
| modules="$@" | ||||
| 
 | ||||
| test -z "$GIT" && GIT=git | ||||
| 
 | ||||
| error() { | ||||
|     echo "$0: $*" | ||||
|     echo | ||||
|     echo "Unable to automatically checkout GIT submodules '$modules'." | ||||
|     echo "If you require use of an alternative GIT binary (for example to" | ||||
|     echo "enable use of a transparent proxy), then please specify it by" | ||||
|     echo "running configure by with the '--with-git' argument. e.g." | ||||
|     echo | ||||
|     echo " $ ./configure --with-git='tsocks git'" | ||||
|     echo | ||||
|     exit 1 | ||||
| } | ||||
| 
 | ||||
| if test -z "$modules" | ||||
| then | ||||
|     test -e $substat || touch $substat | ||||
| @ -27,12 +40,18 @@ case "$command" in | ||||
| status) | ||||
|     test -f "$substat" || exit 1 | ||||
|     trap "rm -f ${substat}.tmp" EXIT | ||||
|     git submodule status $modules > "${substat}.tmp" | ||||
|     $GIT submodule status $modules > "${substat}.tmp" | ||||
|     test $? -ne 0 && error "failed to query git submodule status" | ||||
|     diff "${substat}" "${substat}.tmp" >/dev/null | ||||
|     exit $? | ||||
|     ;; | ||||
| update) | ||||
|     git submodule update --init $modules 1>/dev/null | ||||
|     git submodule status $modules > "${substat}" | ||||
|     $GIT submodule update --init $modules 1>/dev/null | ||||
|     test $? -ne 0 && error "failed to update modules" | ||||
| 
 | ||||
|     $GIT submodule status $modules > "${substat}" | ||||
|     test $? -ne 0 && error "failed to save git submodule status" >&2 | ||||
|     ;; | ||||
| esac | ||||
| 
 | ||||
| exit 0 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Daniel P. Berrange
						Daniel P. Berrange