Makefile: Avoid git-make user conflict

make_version now silently checks if the required git commands will
fail.  If they do, then return UNKNOWN__git_check_fail to
distinguish this failure from other UNKNOWN__ version failures

Makefile checks for this value on install and exits out with
instructions

ASTERISK-30029

Change-Id: If8f10cac8f509c08981120f17555762342020221
This commit is contained in:
Mike Bradeen 2022-06-01 20:03:06 -06:00 committed by Kevin Harwell
parent 2843e5678d
commit 7cc026b3fb
2 changed files with 28 additions and 1 deletions

View File

@ -327,6 +327,9 @@ else
SUBMAKE:=$(MAKE) --quiet --no-print-directory
endif
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
mkfile_dir := $(dir $(mkfile_path))
# $(MAKE) is printed in several places, and we want it to be a
# fixed size string. Define a variable whose name has also the
# same size, so we can easily align text.
@ -693,7 +696,17 @@ ifneq ($(filter ~%,$(DESTDIR)),)
@exit 1
endif
install: badshell bininstall datafiles
versioncheck:
ifeq ($(ASTERISKVERSION),UNKNOWN__git_check_fail)
@echo "Asterisk Version is unknown due to a git error. If you are running make"
@echo "as a different user than the project owner, this can be resolved by"
@echo "running the following command as the user currently executing make: "$$USER
@echo "git config --global --add safe.directory "$(mkfile_dir:/=)
@exit 1
endif
install: badshell versioncheck bininstall datafiles
@if [ -x /usr/sbin/asterisk-post-install ]; then \
/usr/sbin/asterisk-post-install "$(DESTDIR)" . ; \
fi
@ -878,6 +891,12 @@ ifeq ($(AST_DEVMODE),yes)
endif
ifeq ($(ASTERISKVERSION),UNKNOWN__and_probably_unsupported)
@echo "Asterisk Version is unknown, not configuring Doxygen PROJECT_NUMBER."
else ifeq ($(ASTERISKVERSION),UNKNOWN__git_check_fail)
@echo "Asterisk Version is unknown due to a git error. If you are running make"
@echo "as a different user than the project owner, this can be resolved by"
@echo "running the following command as the user currently executing make: "$$USER
@echo "git config --global --add safe.directory "$(mkfile_dir:/=)
@echo "not configuring Doxygen PROJECT_NUMBER."
else
@echo "PROJECT_NUMBER = $(ASTERISKVERSION)" >> doc/Doxyfile
endif
@ -968,6 +987,7 @@ sounds:
@$(MAKE) clean
@[ -f "$(DESTDIR)$(ASTDBDIR)/astdb.sqlite3" ] || [ ! -f "$(DESTDIR)$(ASTDBDIR)/astdb" ] || [ ! -f menuselect.makeopts ] || grep -q MENUSELECT_UTILS=.*astdb2sqlite3 menuselect.makeopts || (sed -i.orig -e's/MENUSELECT_UTILS=\(.*\)/MENUSELECT_UTILS=\1 astdb2sqlite3/' menuselect.makeopts && echo "Updating menuselect.makeopts to include astdb2sqlite3" && echo "Original version backed up to menuselect.makeopts.orig")
$(SUBDIRS_UNINSTALL):
+@DESTDIR="$(DESTDIR)" ASTSBINDIR="$(ASTSBINDIR)" ASTDATADIR="$(ASTDATADIR)" $(SUBMAKE) -C $(@:-uninstall=) uninstall

View File

@ -95,6 +95,13 @@ elif [ -d ${1}/.git ]; then
echo "UNKNOWN__and_probably_unsupported"
exit 1
fi
GITCHECK=$(${GIT} describe --always 2>/dev/null || echo gitfail 2>/dev/null)
if [ "x${GITCHECK}" = "xgitfail" ]; then
echo "UNKNOWN__git_check_fail"
exit 1
fi
cd ${1}
# If the first log commit messages indicates that this is checked into