]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Makefile: Avoid git-make user conflict
authorMike Bradeen <mbradeen@sangoma.com>
Thu, 2 Jun 2022 02:03:06 +0000 (20:03 -0600)
committerKevin Harwell <kharwell@digium.com>
Wed, 13 Jul 2022 23:35:55 +0000 (18:35 -0500)
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

Makefile
build_tools/make_version

index 8c9498cdb98170abe1a0d85fc441b2af04822934..f435ac99c552f2d7fcccf2615914e1c443d3576a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -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
 
index 9dca4bd9dce347b597b5300c7dd64361adcc18da..58395cac5a885475dcd7207fd8b278b53560903d 100755 (executable)
@@ -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