<p>George Joseph has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/8937">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">build_tools:  Major changes to accomodate building from docker<br><br>The original implementation wasn't very good at optimizing the<br>builds of product variants for architecure or libcp usage nor was<br>it good at reusing the subversion repositories.<br><br>Now, when making tarballs the architectures are grouped together so<br>asterisk will be reconifgured, and libcp built, as few times as<br>possible.<br><br>The staging and public subversion directories are also not cleaned out<br>after every build which saves significant time.<br><br>Change-Id: I6dd7cea2dc83c3d2e1c7ba4b64a38154598f719c<br>---<br>M build_tools/Makefile.dependencies<br>M build_tools/Makefile.product_rules<br>A build_tools/copy2svn<br>D build_tools/make_stage<br>M build_tools/make_tarball<br>5 files changed, 412 insertions(+), 243 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/repotools refs/changes/37/8937/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/build_tools/Makefile.dependencies b/build_tools/Makefile.dependencies<br>index d979a7d..b336259 100644<br>--- a/build_tools/Makefile.dependencies<br>+++ b/build_tools/Makefile.dependencies<br>@@ -1,7 +1,7 @@<br> # Extra compile-time flags to build dependencies. Recursively expanded.<br> MAKE_DEPS=-MD -MT $@ -MF .$(subst /,_,$@).d -MP<br> <br>-distclean::<br>+clean::<br>     @rm -f .*.d<br> <br> ifneq ($(wildcard .*.d),)<br>diff --git a/build_tools/Makefile.product_rules b/build_tools/Makefile.product_rules<br>index eafeb8f..7d57617 100644<br>--- a/build_tools/Makefile.product_rules<br>+++ b/build_tools/Makefile.product_rules<br>@@ -1,18 +1,24 @@<br> SHELL=/bin/bash<br> <br>-MODULE_NAME?=$(notdir $(shell pwd))<br>+ifeq ($(wildcard /etc/os-release),)<br>+$(error Unable to identify disitrbution.  This product can be built only on CentOS 7+ or Fedora 26+.)<br>+endif<br> <br>+_DISTRO_OK := $(shell grep -qE 'ID="(centos|fedora)"' /etc/os-release && echo yes)<br>+ifneq ($(_DISTRO_OK),yes)<br>+$(error This product can be built only on CentOS 7+ or Fedora 26+.)<br>+endif<br>+<br>+MODULE_NAME?=$(notdir $(shell pwd))<br> export MODULE_NAME<br> <br> ifeq ($(NOISY_BUILD),)<br>     ECHO_PREFIX=@<br>     CMD_PREFIX=@<br> else<br>-    ECHO_PREFIX=@\#<br>+    ECHO_PREFIX=@<br>     CMD_PREFIX=<br> endif<br>-<br>-all:: $(MODULE_NAME).so $(MODULE_EXTRA_LIBRARIES)<br> <br> include repotools/build_tools/Makefile.version<br> <br>@@ -25,18 +31,16 @@<br> <br> CFLAGS+=-D_REENTRANT -D_GNU_SOURCE -pipe<br> <br>-ARCH?=$(subst i686,x86_32,$(shell uname -m))<br>-ARCH_BITS=$(subst x86_,,$(ARCH))<br>+DEFAULT_ARCHES=x86_32 x86_64<br>+ARCHES=$(DEFAULT_ARCHES)<br>+ARCH=$(subst i686,x86_32,$(shell uname -m))<br> BUILD_ARCH=$(subst x86_32,i686,$(ARCH))<br>-FLAVOR_LDEMUL=$(if $(findstring x86_32,$(ARCH)),elf_i386,elf_x86_64)<br> <br>-FLAVOR_MODE=$(if $(filter x86_32,$(ARCH)),-m32,-m64)<br>-FLAVOR_CFLAGS=$(FLAVOR_MODE) $(if $(findstring x86_64,$(ARCH)),-fPIC)<br>-FLAVOR_LIBDIR=$(if $(findstring x86_32,$(ARCH)),/usr/lib,$(if $(wildcard /usr/lib64),/usr/lib64,/usr/lib))<br>-FLAVOR_ASTLIBDIR=$(FLAVOR_LIBDIR)/asterisk<br>-DEBUG_OPT=$(if $(DEBUG:no=),-O0 -g3,-O3 -g0)<br>+CFLAGS+=$(if $(findstring x86_64,$(ARCH)),-m64 -fPIC,-m32)<br>+LIBDIR=$(if $(findstring x86_32,$(ARCH)),/usr/lib,$(if $(wildcard /usr/lib64),/usr/lib64,/usr/lib))<br>+ASTLIBDIR=$(LIBDIR)/asterisk<br>+DEBUG_CFLAGS=$(if $(DEBUG:no=),-O0 -g3,-O3 -g0)<br> <br>-SOLINK=-shared -Wl,--version-script,$(subst .so,.exports,$@)<br> STRIP:=strip<br> INSTALL:=install<br> ASTINCDIR:=./asterisk/include<br>@@ -44,42 +48,117 @@<br> <br> yesno=$(if $(findstring yes,$(1)),yes,no)<br> yesonly=$(if $(findstring yes,$(1)),yes,)<br>+setflag=$(if $(findstring yes,$(1)),$(2))<br>+suffixnodot=$(subst .,,$(suffix $(1)))<br> <br>-define libcp_build<br>-      echo "   [MAKE] libcp_build $(ARCH) ";\<br>-    $(MAKE) INDENT="+   " --quiet --no-print-directory -C libcp clean;\<br>-        $(MAKE) INDENT="+   " --quiet --no-print-directory -C libcp ARCH=$(ARCH) OPT="$(FLAVOR_CFLAGS)" DEBUG="$(DEBUG_OPT)" libcp.a;<br>+define help<br>+Choose a target variant to build.  You can choose one of the standard target<br>+variants like:<br>+base:  To build the standard target<br>+nocp:  To build the standard target without libcp copy protection.<br>+debug: To build the standard target with debug info.<br>+<br>+Each of these targets will, by default, build the module for the current<br>+architecture and create a tarball.  For this module and environment, they<br>+would be:<br>+$(MODULE_NAME)-$(PRODUCT_VERSION)-$(ARCH).tar.gz<br>+$(MODULE_NAME)-nocp-$(PRODUCT_VERSION)-$(ARCH).tar.gz<br>+$(MODULE_NAME)-debug-$(PRODUCT_VERSION)-$(ARCH).tar.gz<br>+<br>+You can build a target for a specific architecture by appending either<br>+".x86_32" or ".x86_64" to the target.<br>+For example: make base.x86_32<br>+Or you can build both architectures using "both".<br>+For example: make base.both<br>+<br>+By default, the version is constructed from current git information.<br>+If you want to override this and specify a specific version, set the<br>+PRODUCT_VERSION variable on the command line.<br>+For example: make base PRODUCT_VERSION='13.0_3.1.1'<br>+<br>+If you have module specific target variants defined in your Makefile, you can<br>+use those instead of the standard target variants.  Adding the architecture<br>+suffix works for them as well.<br>+<br>+You can build more than 1 variant by specifying them on the command line<br>+but if you're going to build more than a few, using the special target<br>+"tarballs" will be faster.  By default it will build tarballs for all<br>+variants and all architectures but you can limit what gets bult as follows:<br>+Build everything: make tarballs<br>+Build only 64 bit tarballs: make tarballs.x86_64<br>+Build only certain variants: make tarballs VARIANTS="base nocp"<br>+Of course, you can specify PRODUCT_VERSION as well.<br>+<br>+Using "tarballs" has the advantage of ordering the 32 and 64 bit builds to<br>+minimize the number of times asterisk has to be reconfigured or libraries<br>+built.<br>+<br>+Once tarballs are built you can copy them to the subversion repositories<br>+using the "web-staging" or "web-public" targets.  These targets DO NOT<br>+automatically build tarballs.  They only copy existing tarballs.<br>+BEFORE USING THESE TARGETS, MAKE SURE YOU"VE COMMITTED YOUR CHANGES AND<br>+CREATED AN ANNOTATED TAG FOR THIS RELEASE!!!<br>+For testing purposes, you can set the following variables on the command<br>+line:<br>+SKIP_CHECKS=yes : Skips the version tag checks.<br>+NO_COMMI=yes : Updates the local repo from the remote and copies in tarballs<br>+               but doesn't commit them.<br>+Like the tarballs target, you can copy a specific architecture or limit<br>+the variants to be copied<br>+Copy everything to the web-staging repo: make web-staging<br>+Copy only the 32 bit tarballs: make web-staging.x86_32<br>+Copy but don't commit: make web-staging NO_COMMIT=yes<br>+<br> endef<br> <br>-COPYPROTECT_BITS=$(shell ((objdump -f libcp/libcp.a 2>/dev/null) || echo "") | sed -n -r -e "s/^cp.o:.*elf(32|64)-.*/\1/p")<br>-COPYPROTECT_BUILD_NEEDED=$(if $(wildcard libcp),$(if $(findstring $(ARCH_BITS),$(COPYPROTECT_BITS)),,yes),)<br>-COPYPROTECT_BUILD=$(if $(filter-out FAKE no,$(COPYPROTECT)),$(if $(COPYPROTECT_BUILD_NEEDED),$(call libcp_build)))<br>-COPYPROTECT_CFLAGS=$(if $(wildcard libcp),$(if $(filter-out no,$(COPYPROTECT)),-DCOPYPROTECT $(if $(filter FAKE,$(COPYPROTECT)),-DFAKECOPYPROTECT) $(if $(MAXCALLS),-DMAXCALLS=$(MAXCALLS)) -Ilibcp))<br>-COPYPROTECT_LIBS=$(if $(wildcard libcp),$(if $(filter-out FAKE no,$(COPYPROTECT)),-Llibcp -lcp))<br>+ifeq ($(MAKECMDGOALS),)<br>+$(info $(help))<br>+endif<br> <br>-define asterisk_configure<br>- echo "   [MAKE] asterisk_configure $(ARCH) $(ASTERISK_CONFIGURE_FLAGS). This may take a minute or 2...";\<br>-  cd asterisk;\<br>-        $(MAKE) --quiet --no-print-directory distclean &>/dev/null;\<br>-  ./configure $(ASTERISK_CONFIGURE_FLAGS) &>/dev/null || exit 1;\<br>-       $(MAKE) --quiet --no-print-directory include/asterisk/buildopts.h &>/dev/null;\<br>-       sed -i -e /GCC_ATOMICS/d include/asterisk/autoconfig.h;<br>-endef<br>+.PHONY: all<br>+all:<br>+ @echo<br> <br>-ASTERISK_ARCH=$(shell sed -n -r -e "s/HOST_PLATFORM=([^-]+)-.+/\1/p" asterisk/makeopts 2>/dev/null || echo "unknown")<br>-ASTERISK_ARCH_MISMATCH=$(if $(findstring $(BUILD_ARCH),$(ASTERISK_ARCH)),,yes)<br>+.PHONY: libcp-build<br>+libcp-build:<br>+        $(CMD_PREFIX) [ "$(call yesno,$(COPYPROTECT))" != "yes" ] && exit 0 ;\<br>+   lastconfig=`cat last_$@~ 2>/dev/null || :`;\<br>+      currconfig="$(ARCH) $(CFLAGS) $(DEBUG_CFLAGS)";\<br>+   if [ "x$$lastconfig" != "x$$currconfig" ] ; then\<br>+                echo " [MAKE PREREQ] $@ $(ARCH) with $(DEBUG_CFLAGS)";\<br>+            $(MAKE) INDENT="+   " --quiet --no-print-directory -C libcp clean;\<br>+                $(MAKE) INDENT="+   " --quiet --no-print-directory -j -C libcp ARCH=$(ARCH) OPT="$(CFLAGS)" DEBUG="$(DEBUG_CFLAGS)" libcp.a && \<br>+               echo "$$currconfig" > last_libcp_build~;\<br>+       else \<br>+               echo " [MAKE PREREQ] $@ $(ARCH) with $(DEBUG_CFLAGS) not needed";\<br>+ fi;<br>+<br>+COPYPROTECT_CFLAGS=$(if $(call yesonly,$(COPYPROTECT)),-DCOPYPROTECT -Ilibcp) $(if $(MAXCALLS),-DMAXCALLS=$(MAXCALLS))<br>+COPYPROTECT_LIBS=$(if $(call yesonly,$(COPYPROTECT)),-Llibcp -lcp)<br>+<br>+.PHONY: asterisk-configure<br>+asterisk-configure:<br>+   @lastconfig=`cat last_$@~ 2>/dev/null || :`;\<br>+     currconfig="$(ARCH) $(ASTERISK_CONFIGURE_FLAGS)";\<br>+ if [ "x$$lastconfig" != "x$$currconfig" ] ; then \<br>+               cd asterisk;\<br>+                echo " [MAKE PREREQ] $@ $(ARCH) $(ASTERISK_CONFIGURE_FLAGS). This may take a minute or 2...";\<br>+             $(MAKE) --quiet --no-print-directory distclean &>/dev/null;\<br>+          ./configure $(ASTERISK_CONFIGURE_FLAGS) &>/dev/null || exit 1;\<br>+               $(MAKE) --quiet --no-print-directory include/asterisk/buildopts.h &>/dev/null;\<br>+               sed -i -e /GCC_ATOMICS/d include/asterisk/autoconfig.h;\<br>+             cd ..;\<br>+              echo "$$currconfig" > last_asterisk_build~;\<br>+    else \<br>+               echo " [MAKE PREREQ] $@ $(ARCH) $(ASTERISK_CONFIGURE_FLAGS).  not needed";\<br>+        fi;<br>+<br> <br> PJPROJECT_BUNDLED_NEEDED=$(if $(PJPROJECT_BUNDLED),$(PJPROJECT_BUNDLED:no=),)<br>-ASTERISK_PJPROJECT_BUNDLED=$(shell sed -n -r -e "s/PJPROJECT_BUNDLED=(yes)/\1/p" asterisk/makeopts 2>/dev/null)<br>-ASTERISK_PJPROJECT_MISMATCH=$(if $(findstring $(call yesno,$(PJPROJECT_BUNDLED_NEEDED)),$(call yesno,$(ASTERISK_PJPROJECT_BUNDLED))),,yes)<br>-<br>-ASTERISK_CONFIGURE_NEEDED=$(if $(ASTERISK_ARCH_MISMATCH)$(ASTERISK_PJPROJECT_MISMATCH),yes,)<br> ASTERISK_CONFIGURE_FLAGS=$(if $(PJPROJECT_BUNDLED_NEEDED),--with-pjproject-bundled) --host=$(BUILD_ARCH)-linux-gnu<br>-ASTERISK_CONFIGURE=$(if $(ASTERISK_CONFIGURE_NEEDED),$(asterisk_configure))<br>-<br> PJPROJECT_INCLUDES=$(if $(PJPROJECT_BUNDLED_NEEDED),$(filter-out -O2,$(shell sed -n -r -e "s/PJPROJECT_INCLUDE=(.*)/\1/gp" asterisk/makeopts 2>/dev/null)))<br> <br>-PRODUCT_DIR=$(MODULE_NAME)$(if $(VARIANT),-$(VARIANT))-$(PRODUCT_VERSION)-$(ARCH)<br>+PRECHECKS=asterisk-configure libcp-build<br> <br> optarch.h: FORCE<br>      @echo "#define OPTARCH \" (optimized for $(BUILD_ARCH)\"" > $@.tmp<br>@@ -90,138 +169,197 @@<br> <br> CFLAGS+=$(MODULE_SDK_CFLAGS)<br> MODULE_OBJS=$(MODULE_NAME).o $(MODULE_EXTRA_OBJS)<br>-<br> $(MODULE_OBJS): CFLAGS+=-I$(ASTINCDIR) -I/usr/include -I -Iinclude -DAST_MODULE=\"$(MODULE_NAME)\" -DAST_MODULE_SELF_SYM=__internal_$(MODULE_NAME)_self<br> <br>-.c.o::<br>+$(sort $(MODULE_OBJS) $(MODULE_EXTRA_LIBRARY_OBJS)): %.o : %.c optarch.h version.h<br>       $(ECHO_PREFIX) echo "  [CC] $@"<br>-    $(CMD_PREFIX) $(CC) -c $< -o $@ $(PJPROJECT_INCLUDES) $(CFLAGS) $(FLAVOR_CFLAGS) $(DEBUG_OPT) $(WARN) $(MAKE_DEPS)<br>+        $(CMD_PREFIX) $(CC) -c $< -o $@ $(PJPROJECT_INCLUDES) $(CFLAGS) $(DEBUG_CFLAGS) $(WARN) $(MAKE_DEPS) $(COPYPROTECT_CFLAGS)<br> <br>-$(sort $(MODULE_OBJS) $(MODULE_EXTRA_LIBRARY_OBJS)): %.o :%.c optarch.h version.h<br>- $(ECHO_PREFIX) echo "  [CC] $@"<br>-    $(CMD_PREFIX) $(ASTERISK_CONFIGURE)<br>-  $(CMD_PREFIX) $(CC) -c $< -o $@ $(PJPROJECT_INCLUDES) $(CFLAGS) $(FLAVOR_CFLAGS) $(DEBUG_OPT) $(WARN) $(MAKE_DEPS) $(COPYPROTECT_CFLAGS)<br> <br>-$(MODULE_NAME).so: $(MODULE_OBJS) $(MODULE_SDK_OBJS) $(MODULE_SDK_LIB)<br>-      $(ECHO_PREFIX) echo "  [LD] $@"<br>-    $(CMD_PREFIX) $(COPYPROTECT_BUILD)<br>-   $(CMD_PREFIX) $(CC) $(FLAVOR_CFLAGS) $(DEBUG_OPT) $(SOLINK) -o .$@ $^ $(LDFLAGS) $(LIBS) $(COPYPROTECT_LIBS)<br>- $(CMD_PREFIX) echo "$(MODULE_NAME),$(VARIANT),$(PRODUCT_VERSION)" >.$@.ast_manifest<br>-     $(CMD_PREFIX) $(OBJCOPY) --add-section .ast_manifest=.$@.ast_manifest --set-section-flags .ast_manifest=noload,readonly .$@ $@<br>-       $(CMD_PREFIX) rm .$@ .$@.ast_manifest 2>/dev/null || :<br>-<br>+$(MODULE_EXTRA_LIBRARIES): LIBRARY_NAME=$(@)<br>+$(MODULE_EXTRA_LIBRARIES): SOLINK=-shared -Wl,--version-script,$(subst .so,.exports,$(LIBRARY_NAME))<br> $(MODULE_EXTRA_LIBRARIES): $(MODULE_EXTRA_LIBRARY_OBJS) $(MODULE_SDK_OBJS) $(MODULE_SDK_LIB)<br>-    $(ECHO_PREFIX) echo "  [LD] $@"<br>-    $(CMD_PREFIX) $(COPYPROTECT_BUILD)<br>-   $(CMD_PREFIX) $(CC) $(FLAVOR_CFLAGS) $(DEBUG_OPT) $(SOLINK) -o .$@ $^ $(LDFLAGS) $(LIBS) $(COPYPROTECT_LIBS)<br>- $(CMD_PREFIX) echo "$(MODULE_NAME),$(VARIANT),$(PRODUCT_VERSION)" >.$@.ast_manifest<br>-     $(CMD_PREFIX) $(OBJCOPY) --add-section .ast_manifest=.$@.ast_manifest --set-section-flags .ast_manifest=noload,readonly .$@ $@<br>-       $(CMD_PREFIX) rm .$@ .$@.ast_manifest 2>/dev/null || :<br>+    $(ECHO_PREFIX) echo "  [LD] $(LIBRARY_NAME) $(ARCH)"<br>+       $(CMD_PREFIX) $(CC) $(CFLAGS) $(DEBUG_CFLAGS) $(SOLINK) -o .$(LIBRARY_NAME) $^ $(LDFLAGS) $(LIBS) $(COPYPROTECT_LIBS)<br>+        $(CMD_PREFIX) echo "$(MODULE_NAME),$(VARIANT),$(PRODUCT_VERSION)" >.$(LIBRARY_NAME).ast_manifest<br>+        $(CMD_PREFIX) $(OBJCOPY) --add-section .ast_manifest=.$(LIBRARY_NAME).ast_manifest --set-section-flags .ast_manifest=noload,readonly .$(LIBRARY_NAME) $(LIBRARY_NAME)<br>+        $(CMD_PREFIX) rm .$(LIBRARY_NAME) .$(LIBRARY_NAME).ast_manifest *.o 2>/dev/null || :<br> <br>+$(MODULE_NAME).so: LIBRARY_NAME=$(MODULE_NAME).so<br>+$(MODULE_NAME).so: SOLINK=-shared -Wl,--version-script,$(subst .so,.exports,$(LIBRARY_NAME))<br>+$(MODULE_NAME).so: $(MODULE_OBJS) $(MODULE_SDK_OBJS) $(MODULE_SDK_LIB)<br>+       $(ECHO_PREFIX) echo "  [LD] $(LIBRARY_NAME) $(ARCH)"<br>+       $(CMD_PREFIX) $(CC) $(CFLAGS) $(DEBUG_CFLAGS) $(SOLINK) -o .$(LIBRARY_NAME) $^ $(LDFLAGS) $(LIBS) $(COPYPROTECT_LIBS)<br>+        $(CMD_PREFIX) echo "$(LIBRARY_NAME),$(VARIANT),$(PRODUCT_VERSION)" >.$(LIBRARY_NAME).ast_manifest<br>+       $(CMD_PREFIX) $(OBJCOPY) --add-section .ast_manifest=.$(LIBRARY_NAME).ast_manifest --set-section-flags .ast_manifest=noload,readonly .$(LIBRARY_NAME) $(LIBRARY_NAME)<br>+        $(CMD_PREFIX) rm .$(LIBRARY_NAME) .$(LIBRARY_NAME).ast_manifest  *.o 2>/dev/null || :<br>+<br>+.PHONY: base nocp debug<br>+<br>+base: COPYPROTECT=yes<br>+base: MANIFEST_IN=manifest-base.xml.in<br>+<br>+nocp: export COPYPROTECT=<br>+nocp: export MANIFEST_IN=manifest-base.xml.in<br>+<br>+debug: export COPYPROTECT=yes<br>+debug: export DEBUG=yes<br>+debug: export NO_STRIP=yes<br>+debug: export MANIFEST_IN=manifest-base.xml.in<br>+<br>+#<br>+# Things get a little weird here.  Because the target variants all share<br>+# prerequiresites like clean, $(MODULE_NAME).so, etc, you can't just specify<br>+# multiple targets on the command line and expect them all to be built from<br>+# scratch.  make will think it's already build the module and won't bother<br>+# making it again with new options like COPYPROTECT or DEBUG.<br>+#<br>+# To get around this, we need to call submakes and test which level we're at.<br>+#<br>+<br>+.PHONY: $(VARIANTS)<br>+ifneq ($(findstring 2,$(MAKELEVEL))$(findstring 3,$(MAKELEVEL)),)<br>+<br>+# This is the actual build for a target variant for either architecture.<br>+    $(VARIANTS): V=$@<br>+# We strip out "base" if that's the variant because we don't want that as<br>+# part of the tarball name.<br>+    $(VARIANTS): TAR_VARIANT=$(if $(findstring base,$(V)),,$(V))<br>+    $(VARIANTS): PRODUCT_DIR=$(MODULE_NAME)$(if $(TAR_VARIANT),-$(TAR_VARIANT))-$(PRODUCT_VERSION)-$(ARCH)<br>+# We want the intro header printed before everything else.<br>+# Double colon "::" rules are executed independently of other "::" rules.<br>+    $(VARIANTS)::<br>+          $(ECHO_PREFIX) echo "[BEGIN] $(PRODUCT_DIR) COPYPROTECT=$(COPYPROTECT) DEBUG=$(DEBUG) PJPROJECT_BUNDLED=$(PJPROJECT_BUNDLED)"<br>+# The clean and prechecks must be run before the regular prereqs are built and<br>+# we also don't want them in the $^ variable.  The "::" rules enforce both<br>+# conditions,<br>+    $(VARIANTS):: clean $(PRECHECKS)<br>+    $(VARIANTS):: $(MODULE_NAME).so $(MODULE_EXTRA_LIBRARIES)<br>+               $(ECHO_PREFIX) echo " [TAR] $(PRODUCT_DIR)"<br>+                $(CMD_PREFIX)repotools/build_tools/make_tarball $(call setflag,$(DEBUG),--no-strip) --version=$(PRODUCT_VERSION) \<br>+                   --arch=$(ARCH) --package-name=$(MODULE_NAME) --variant=$(TAR_VARIANT) --manifest-in=$(MANIFEST_IN) --manifest-out=$(MANIFEST) $(PRODUCT_DIR).tar.gz $^<br>+               $(ECHO_PREFIX) echo "[COMPLETE] $(PRODUCT_DIR)  COPYPROTECT=$(COPYPROTECT) DEBUG=$(DEBUG) PJPROJECT_BUNDLED=$(PJPROJECT_BUNDLED)"<br>+          $(ECHO_PREFIX) echo<br>+<br>+else<br>+<br>+# These are the targets that will be called either directly from the command<br>+# line, or from the architecture specific targets.  We need submake for these.<br>+    $(VARIANTS):<br>+          @$(MAKE) --no-print-directory $@ ARCH=$(ARCH)<br>+endif<br>+<br>+# These are the architecture specific variant targets like base.x86_64.<br>+# They can get called from the command line or from the tarballs targets.<br>+<br>+_AV:=$(foreach da,$(DEFAULT_ARCHES),$(addsuffix .$(da),$(VARIANTS))) $(addsuffix .both,$(VARIANTS))<br>+.PHONY: $(_AV)<br>+$(_AV): ARCH=$(call suffixnodot,$@)<br>+$(_AV):<br>+     @if [ "$(ARCH)" != "both" ] ; then \<br>+             $(MAKE) --no-print-directory $(basename $@) ARCH=$(ARCH) ;\<br>+  else \<br>+               for a in $(ARCHES) ; do \<br>+                    $(MAKE) --no-print-directory $(basename $@) ARCH=$${a} ;\<br>+            done; \<br>+      fi<br>+<br>+# We group by architecture to reduce the number of times that asterisk<br>+# needs to be reconfigured and libraries need to be rebuilt<br>+<br>+.PHONY: tarballs<br>+tarballs:<br>+       @for a in $(ARCHES) ; do \<br>+           for v in $(VARIANTS) ; do \<br>+                  $(MAKE) --no-print-directory $${v}.$${a} ;\<br>+          done ;\<br>+      done<br>+<br>+_ATB:=$(addprefix tarballs.,$(DEFAULT_ARCHES))<br>+.PHONY: $(_ATB)<br>+$(_ATB): ARCHES=$(call suffixnodot,$@)<br>+$(_ATB):<br>+       @$(MAKE) --no-print-directory ARCHES="$(ARCHES)" tarballs<br>+<br>+#<br>+# ############# copy tarballs to svn directories<br>+#<br>+<br>+ifeq ($(MAKELEVEL),0)<br>+# If called from the command line, we loop through arches and variants<br>+# and call submakes.<br>+    copy2svn:<br>+         @for a in $(ARCHES) ; do \<br>+                   for v in $(VARIANTS) ; do \<br>+                          tv=-$${v} ;\<br>+                         [ $${v} = base ] && tv="" ;\<br>+                               tarfile=$(MODULE_NAME)$${tv}-$(PRODUCT_VERSION)-$${a}.tar.gz ;\<br>+                              if [ -f $${tarfile} ] ; then \<br>+                               $(MAKE) --no-print-directory \<br>+                                       V=$${v} ARCH=$${a} SKIP_CHECKS=$(SKIP_CHECKS) NO_COMMIT=$(NO_COMMIT) LOCAL_DIR=$(LOCAL_DIR) REPO=$(REPO) IGNORE_EXTERNALS=$(IGNORE_EXTERNALS) \<br>+                                      copy2svn ;\<br>+                          else \<br>+                                       echo " [COPY2SVN] No tarball found for $(MODULE_NAME)$${tv}-$(PRODUCT_VERSION)-$${a}" ;\<br>+                           fi ;\<br>+                        done ;\<br>+              done<br>+else<br>+# Otherwise, we do the actual copy.<br>+    copy2svn: TAR_VARIANT=$(if $(findstring base,$(V)),,$(V))<br>+    copy2svn:<br>+            $(ECHO_PREFIX) echo " [COPY2SVN] $(MODULE_NAME): $(V) $(PRODUCT_VERSION) $(ARCH) -> $(LOCAL_DIR)"<br>+               @if [ -z "$(REPO)" ] ; then echo -e "Missing REPO=<repository>" ; exit 1 ; fi<br>+              @if [ -z "$(LOCAL_DIR)" ] ; then echo -e "Missing LOCAL_DIR=<local directory>" ; exit 1 ; fi<br>+               $(CMD_PREFIX)repotools/build_tools/copy2svn --version=$(PRODUCT_VERSION) --arch=$(ARCH) --package-name=$(MODULE_NAME) \<br>+                      --variant=$(TAR_VARIANT) --svn-subdir=$(SVN_SUBDIR) --local-dir=$(LOCAL_DIR) \<br>+                       $(call setflag,$(SKIP_CHECKS),--skip-checks) \<br>+                       $(call setflag,$(IGNORE_EXTERNALS),--ignore-externals) \<br>+                     $(call setflag,$(NO_COMMIT),--no-commit) \<br>+                   --repo=$(REPO)<br>+endif<br>+<br>+$(addprefix copy2svn.,$(DEFAULT_ARCHES)): ARCHES=$(call suffixnodot,$@)<br>+$(addprefix copy2svn.,$(DEFAULT_ARCHES)):<br>+      @$(MAKE) --no-print-directory \<br>+              ARCHES="$(ARCHES)" SKIP_CHECKS=$(SKIP_CHECKS) NO_COMMIT=$(NO_COMMIT) LOCAL_DIR=$(LOCAL_DIR) REPO=$(REPO) IGNORE_EXTERNALS=$(IGNORE_EXTERNALS) \<br>+            copy2svn<br>+<br>+web-staging: LOCAL_DIR=web-staging<br>+web-staging: copy2svn<br>+$(addprefix web-staging.,$(ARCHES)): LOCAL_DIR=web-staging<br>+$(addprefix web-staging.,$(ARCHES)): copy2svn.$(call suffixnodot,$@)<br>+<br>+web-public: LOCAL_DIR=web-public<br>+web-public: copy2svn<br>+$(addprefix web-public.,$(ARCHES)): LOCAL_DIR=web-public<br>+ $(addprefix web-public.,$(ARCHES)): copy2svn.$(call suffixnodot,$@)<br>+<br>+# Utils<br>+<br>+printit: SORTED_VARS=$(sort $(filter-out .VARIABLES,$(.VARIABLES)))<br>+printit: XXX=$(foreach v,$(SORTED_VARS),$(v)=$($(v))\n)<br>+printit:<br>+       @echo -e " $(XXX)"<br>+<br>+.PHONY: clean distclean superclean<br> clean::<br>-       @rm -f *.o *.so manifest.xml<br>+ $(ECHO_PREFIX) echo " [CLEAN]"<br>+     @rm -f *.o *.so manifest*.xml *~<br> <br> distclean:: clean<br>+      $(ECHO_PREFIX) echo " [DISTCLEAN]"<br>  -@rm -f optarch.h version.h<br> <br> superclean:: distclean<br>-      -@rm -rf *.o $(MODULE_SDK_OBJS) $(MODULE_SDK_LIB) &>/dev/null<br>+ $(ECHO_PREFIX) echo " [SUPERCLEAN]"<br>+        -@rm -rf *.o $(MODULE_SDK_OBJS) $(MODULE_SDK_LIB) last*~ &>/dev/null<br>   @if [ -d libcp ] ; then $(MAKE) --quiet --no-print-directory  -C libcp clean &>/dev/null ; fi<br>  -@$(MAKE) --quiet --no-print-directory -C asterisk distclean &>/dev/null<br> <br>+.PHONY: install everything<br> install:: $(MODULE_NAME).so $(MODULE_EXTRA_LIBRARIES)<br>-      $(INSTALL) -m 755 -t $(DESTDIR)$(FLAVOR_ASTLIBDIR)/modules/ $^<br>+       $(INSTALL) -m 755 -t $(DESTDIR)$(ASTLIBDIR)/modules/ $^<br> <br>-$(MODULE_NAME)-%.tar.gz: PRODUCT_DIR=$(MODULE_NAME)$(if $(VARIANT),-$(VARIANT))-$(PRODUCT_VERSION)-$(ARCH)<br>-$(MODULE_NAME)-%.tar.gz: $(MODULE_NAME).so $(MODULE_EXTRA_LIBRARIES)<br>-       $(ECHO_PREFIX) echo " [TAR] $(PRODUCT_DIR).tar.gz"<br>- $(CMD_PREFIX)repotools/build_tools/make_tarball --nostrip=$(or $(NOSTRIP),no) --version=$(PRODUCT_VERSION) \<br>-         --arch=$(ARCH) --package-name=$(MODULE_NAME) --variant=$(VARIANT) --manifest-in=$(MANIFEST_IN) --manifest-out=$(MANIFEST) $(PRODUCT_DIR).tar.gz $^<br>-<br>-clean_tarball: COPYPROTECT=yes<br>-clean_tarball:: distclean $(PRODUCT_DIR).tar.gz<br>-<br>-debug: DEBUG=yes<br>-debug: NOSTRIP=yes<br>-debug: VARIANT=debug<br>-debug: distclean $(PRODUCT_DIR).tar.gz<br>-<br>-nocp: COPYPROTECT=<br>-nocp: VARIANT=nocp<br>-nocp: distclean $(PRODUCT_DIR).tar.gz<br>-<br>-tarballs_64: export ARCH=x86_64<br>-tarballs_64: PRODUCTS+=clean_tarball<br>-tarballs_64:<br>-  @echo "[TARGET] $@: $(PRODUCTS)"<br>-   @for p in $(PRODUCTS) ; do \<br>-         echo " [TARGET] $$p $(ARCH) " ;\<br>-           $(MAKE) --no-print-directory $$p || exit 1 ;\<br>-                echo " [TARGET] $$p $(ARCH) COMPLETE" ;\<br>-   done<br>- @echo "[TARGET] $@: $(PRODUCTS) COMPLETE"<br>-  @echo<br>-<br>-tarballs_32: export ARCH=x86_32<br>-tarballs_32: PRODUCTS+=clean_tarball<br>-tarballs_32:<br>-     @echo "[TARGET] $@: $(PRODUCTS)"<br>-   @for p in $(PRODUCTS) ; do \<br>-         echo " [TARGET] $$p $(ARCH) " ;\<br>-           $(MAKE) --no-print-directory $$p || exit 1 ;\<br>-                echo " [TARGET] $$p $(ARCH) COMPLETE" ;\<br>-   done<br>- @echo "[TARGET] $@: $(PRODUCTS) COMPLETE"<br>-  @echo<br>-<br>-everything: superclean tarballs_64 tarballs_32<br>-<br>-stage_32: export ARCH:=x86_32<br>-stage_32: export REPO:=$(REPO)<br>-stage_32: export VARIANT:=$(VARIANT)<br>-stage_32:<br>-     $(ECHO_PREFIX) echo " [STAGE] $@"<br>-  @if [ -z "$(REPO)" ] ; then echo -e "Missing REPO=<repository>.\nExample: make stage REPO=https://origsvn.digium.com/svn/sites/downloads.digium.com/staging/telephony\n\n" ; exit 1 ; fi<br>-   $(CMD_PREFIX)repotools/build_tools/make_stage --version=$(PRODUCT_VERSION) --arch=$(ARCH) --package-name=$(MODULE_NAME) \<br>-            --variant=$(VARIANT) --stage-subdir=$(STAGE_SUBDIR) --skip-checks=$(SKIP_CHECKS) --repo=$(REPO)<br>-<br>-stage_64: export ARCH=x86_64<br>-stage_64: export REPO:=$(REPO)<br>-stage_64: export VARIANT:=$(VARIANT)<br>-stage_64:<br>-        $(ECHO_PREFIX) echo " [STAGE] $<"<br>-       @if [ -z "$(REPO)" ] ; then echo -e "Missing REPO=<repository>.\nExample: make stage REPO=https://origsvn.digium.com/svn/sites/downloads.digium.com/staging/telephony\n\n" ; exit 1 ; fi<br>-   $(CMD_PREFIX)repotools/build_tools/make_stage --version=$(PRODUCT_VERSION) --arch=$(ARCH) --package-name=$(MODULE_NAME) \<br>-            --variant=$(VARIANT) --stage-subdir=$(STAGE_SUBDIR) --skip-checks=$(SKIP_CHECKS) --repo=$(REPO)<br>-<br>-stage: stage_32 stage_64<br>-<br>-printit:<br>-  @echo ------------------<br>-     @echo ARCH=$(ARCH)<br>-   @echo ARCH_BITS=$(ARCH_BITS)<br>- @echo BUILD_ARCH=$(BUILD_ARCH)<br>-       @echo FLAVOR_LDEMUL=$(FLAVOR_LDEMUL)<br>- @echo FLAVOR_LIBDIR=$(FLAVOR_LIBDIR)<br>- @echo FLAVOR_MODE=$(FLAVOR_MODE)<br>-     @echo FLAVOR_CFLAGS=$(FLAVOR_CFLAGS)<br>- @echo FLAVOR_ASTLIBDIR=$(FLAVOR_ASTLIBDIR)<br>-   @echo COPYPROTECT_BITS=$(COPYPROTECT_BITS)<br>-   @echo COPYPROTECT_BUILD_NEEDED=$(COPYPROTECT_BUILD_NEEDED)<br>-   @echo COPYPROTECT_CFLAGS=$(COPYPROTECT_CFLAGS)<br>-       @echo COPYPROTECT_LIBS=$(COPYPROTECT_LIBS)<br>-   @echo PJPROJECT_BUNDLED=$(PJPROJECT_BUNDLED)<br>- @echo PJPROJECT_BUNDLED_NEEDED=$(PJPROJECT_BUNDLED_NEEDED)<br>-   @echo PJPROJECT_INCLUDES=$(PJPROJECT_INCLUDES)<br>-       @echo ASTERISK_ARCH=$(ASTERISK_ARCH)<br>- @echo ASTERISK_ARCH_MISMATCH=$(ASTERISK_ARCH_MISMATCH)<br>-       @echo ASTERISK_PJPROJECT_BUNDLED=$(ASTERISK_PJPROJECT_BUNDLED?no)<br>-    @echo ASTERISK_PJPROJECT_MISMATCH=$(ASTERISK_PJPROJECT_MISMATCH)<br>-     @echo ASTERISK_CONFIGURE_NEEDED=$(ASTERISK_CONFIGURE_NEEDED)<br>- @echo ASTERISK_CONFIGURE_FLAGS=$(ASTERISK_CONFIGURE_FLAGS)<br>+everything: superclean tarballs<br> <br> FORCE:<br>-<br>-.PHONY: all buildver clean install distclean superclean<br>-.PHONY: tarballs_64 tarballs_32 everything stage_32 stage_64 stage<br>-<br>diff --git a/build_tools/copy2svn b/build_tools/copy2svn<br>new file mode 100755<br>index 0000000..1add381<br>--- /dev/null<br>+++ b/build_tools/copy2svn<br>@@ -0,0 +1,114 @@<br>+#!/bin/bash<br>+if [[ ( ${BASH_VERSINFO[0]} == 4 && ${BASH_VERSINFO[1]} > 1 ) || ${BASH_VERSINFO[0]} > 4 ]] ; then<br>+ shopt -s compat41<br>+fi<br>+set -e<br>+<br>+PUSHD() {<br>+       &>/dev/null pushd $1<br>+}<br>+POPD() {<br>+   &>/dev/null popd<br>+}<br>+<br>+script_path=$(readlink -f ${0})<br>+script_dir=$(dirname ${script_path})<br>+<br>+skip_checks=0<br>+no_commit=0<br>+include_externals=<br>+<br>+while [ ${#@} -gt 0 ] ; do<br>+        case ${1} in<br>+ --package-name=*)<br>+            package_name=${1#*=}<br>+         ;;<br>+   --version=*)<br>+         version=${1#*=}<br>+              ;;<br>+   --arch=*)<br>+            arch=${1#*=}<br>+         ;;<br>+   --repo=*)<br>+            repo=${1#*=}<br>+         ;;<br>+   --variant=*)<br>+         variant=${1#*=}<br>+              ;;<br>+   --svn-subdir=*)<br>+              svn_subdir=${1#*=}<br>+           ;;<br>+   --local-dir=*)<br>+               local_dir=${1#*=}<br>+            ;;<br>+   --skip-checks)<br>+               skip_checks=1<br>+                ;;<br>+   --no-commit)<br>+         no_commit=1<br>+          ;;<br>+   --include-externals)<br>+         include_externals="--include-externals"<br>+            ;;<br>+   esac<br>+ shift<br>+done<br>+<br>+git_status=$(git status --porcelain)<br>+<br>+if [ -n "${git_status}" -a ${skip_checks} = 0 ] ; then<br>+ echo -e "This directory has uncommitted changes.\n${git_status}\n"<br>+ exit 1<br>+fi<br>+<br>+if [[ ! "${version}" =~ ^([0-9]+\.[0-9]+(\.[0-9]+)?)_([0-9]+\.[0-9]+\.[0-9]+)(-(rc[0-9]+))?$ && "${skip_checks}" != "yes" ]] ; then<br>+   echo "version(${version}) isn't a valid tag.\n"<br>+        exit 1<br>+fi<br>+is_rc=${BASH_REMATCH[5]}<br>+<br>+ignore_externals="--ignore-externals"<br>+if [ -n "${include_externals}" ] ; then<br>+      ignore_externals=""<br>+fi<br>+<br>+astversion=${version%_*}<br>+prodversion=${version#*_}<br>+subdir=asterisk-${astversion}/${arch/_/-}<br>+svndir=${repo}/${subdir}<br>+package_dir=${package_name}${variant:+-${variant}}-${version}-${arch}<br>+tarball=${package_dir}.tar.gz<br>+svn ls ${svndir} &> /dev/null || svn mkdir --parents ${svndir} -m "Create svn subdir directory"<br>+<br>+if [ -d ${local_dir}/.svn ] ; then<br>+       actreporoot=`svn info ${local_dir} | sed -n -r -e "s/URL: //gp"`<br>+   if [ x${actreporoot} != x${repo} ] ; then<br>+            rm -rf ${local_dir} &>/dev/null || :<br>+          svn co ${ignore_externals} ${reporoot} ${local_dir}<br>+  else<br>+         PUSHD ${local_dir}<br>+           svn update ${ignore_externals} >/dev/null <br>+                POPD<br>+ fi<br>+else<br>+    rm -rf ${local_dir} &>/dev/null || :<br>+  svn co ${ignore_externals} ${repo} ${local_dir}<br>+fi<br>+<br>+cp ${tarball} ${local_dir}/${subdir}<br>+tar --strip-components=1 -xzf ${tarball} -O ${package_dir}/manifest.xml > ${local_dir}/${subdir}/manifest${variant:+-${variant}}.xml<br>+tar --strip-components=1 -xzf ${tarball} -C ${local_dir}/${subdir} ${package_dir}/README &>/dev/null || :<br>+tar --strip-components=1 -xzf ${tarball} -C ${local_dir}/${subdir} ${package_dir}/LICENSE &>/dev/null || :<br>+PUSHD ${local_dir}/${subdir}<br>+if [ -z "$is_rc" ] ; then<br>+ ln -sf ${tarball} ${package_name}${variant:+-${variant}}-${astversion}_current-${arch}.tar.gz<br>+fi<br>+<br>+for file in * ; do<br>+   svn add $file 2>/dev/null || :<br>+done<br>+POPD<br>+<br>+if [ ${no_commit} = no ] ; then<br>+ svn commit ${local_dir} ${include_externals} -m "commit ${package_name}${variant:+-${variant}}-${version}-${arch} builds to staging"<br>+fi<br>diff --git a/build_tools/make_stage b/build_tools/make_stage<br>deleted file mode 100755<br>index 29fc2ed..0000000<br>--- a/build_tools/make_stage<br>+++ /dev/null<br>@@ -1,83 +0,0 @@<br>-#!/bin/bash<br>-if [[ ( ${BASH_VERSINFO[0]} == 4 && ${BASH_VERSINFO[1]} > 1 ) || ${BASH_VERSINFO[0]} > 4 ]] ; then<br>-  shopt -s compat41<br>-fi<br>-set -e<br>-<br>-script_path=$(readlink -f ${0})<br>-script_dir=$(dirname ${script_path})<br>-<br>-skip_checks=no<br>-<br>-while [ ${#@} -gt 0 ] ; do<br>-      case ${1} in<br>- --package-name=*)<br>-            package_name=${1#*=}<br>-         ;;<br>-   --version=*)<br>-         version=${1#*=}<br>-              ;;<br>-   --arch=*)<br>-            arch=${1#*=}<br>-         ;;<br>-   --repo=*)<br>-            repo=${1#*=}<br>-         ;;<br>-   --variant=*)<br>-         variant=${1#*=}<br>-              ;;<br>-   --stage-subdir=*)<br>-            stage_subdir=${1#*=}<br>-         ;;<br>-   --skip-checks=*)<br>-             skip_checks=${1#*=}<br>-          ;;<br>-   esac<br>- shift<br>-done<br>-<br>-git_status=$(git status --porcelain)<br>-<br>-if [ -n "${git_status}" -a "${skip_checks}" != "yes" ] ; then<br>-      echo -e "This directory has uncommitted changes.\n${git_status}\n"<br>- exit 1<br>-fi<br>-<br>-if [[ ! "${version}" =~ ^([0-9]+\.[0-9]+(\.[0-9]+)?)_([0-9]+\.[0-9]+\.[0-9]+)(-(rc[0-9]+))?$ && "${skip_checks}" != "yes" ]] ; then<br>-   echo "version(${version}) isn't a valid tag.\n"<br>-        exit 1<br>-fi<br>-isrc=${BASH_REMATCH[5]}<br>-<br>-directory_name=$(sed -n -r -e "/MODULEINFO/,/[*]{3}\// s/.*\s+directory_name=\"([^\"]+)\".*/\1/gp" ${package_name}.c )<br>-<br>-astversion=${version%_*}<br>-prodversion=${version#*_}<br>-stagedir=${repo}/${directory_name:-${package_name}}/${stage_subdir:+${stage_subdir}/}asterisk-${astversion}/${arch/_/-}<br>-package_dir=${package_name}${variant:+-${variant}}-${version}-${arch}<br>-tarball=${package_dir}.tar.gz<br>-<br>-svn ls ${stagedir} &> /dev/null || svn mkdir --parents ${stagedir} -m "Create staging directory"<br>-if [ -d staging/.svn ] ; then<br>-        pushd staging<br>-        svn update<br>-   popd<br>-else<br>-  rm -rf staging &>/dev/null || :<br>-       svn co ${stagedir} staging<br>-fi<br>-<br>-cp ${tarball} staging/<br>-tar --strip-components=1 -xzf ${tarball} -O ${package_dir}/manifest.xml > staging/manifest${variant:+-${variant}}.xml<br>-tar --strip-components=1 -xzf ${tarball} -C staging ${package_dir}/README &>/dev/null || :<br>-tar --strip-components=1 -xzf ${tarball} -C staging ${package_dir}/LICENSE &>/dev/null || :<br>-pushd staging &>/dev/null<br>-if [ -z "$isrc" ] ; then<br>-      ln -sf ${tarball} ${package_name}${variant:+-${variant}}-${astversion}_current-${arch}.tar.gz<br>-fi<br>-for file in * ; do<br>-      svn add $file 2>/dev/null || :<br>-done<br>-popd &>/dev/null<br>-<br>-svn commit staging -m "commit ${package_name}${variant:+-${variant}}-${version}-${arch} builds to staging"<br>diff --git a/build_tools/make_tarball b/build_tools/make_tarball<br>index 4c9f893..500fe61 100755<br>--- a/build_tools/make_tarball<br>+++ b/build_tools/make_tarball<br>@@ -12,7 +12,7 @@<br> script_path=$(readlink -f ${0})<br> script_dir=$(dirname ${script_path})<br> <br>-nostrip=no<br>+no_strip=<br> declare -a module_list<br> <br> while [ ${#@} -gt 0 ] ; do<br>@@ -29,8 +29,8 @@<br>     --manifest-out=*)<br>             manifest_out=${1#*=}<br>          ;;<br>-   --nostrip=*)<br>-         nostrip=${1#*=}<br>+      --no_strip)<br>+          nostrip=1<br>             ;;<br>    --version=*)<br>          version=${1#*=}<br>@@ -49,7 +49,7 @@<br> done<br> <br> if [[ ( -z "${package_name}" ) || ( -z "${module_list[@]}" ) ]] ; then<br>-    echo "Usage ${0} --package-name=<package name> [ --variant=<variant> ] [ --manifest-in=<manifest.xml.in> ] [ --arch=(x86_32 | x86_64) ] [ --nostrip=(yes|no) ] [ --version=<x.x_y.y.y> ] <module list>"<br>+      echo "Usage ${0} --package-name=<package name> [ --variant=<variant> ] [ --manifest-in=<manifest.xml.in> ] [ --arch=(x86_32 | x86_64) ] [ --no_strip ] [ --version=<x.x_y.y.y> ] <module list>"<br>       exit 1<br> fi<br> <br>@@ -93,7 +93,7 @@<br>     mkdir -p ${tardir}/$(dirname ${tfile:-${file}})<br>       cp ${file} ${tardir}/${tfile:-${file}}<br> <br>-    if [[ "${nostrip}" != "yes" && "${executable}" == "yes" ]] ; then<br>+    if [[ -z "${no_strip}" && "${executable}" == "yes" ]] ; then<br>            strip ${tardir}/${tfile:-${file}}<br>     fi<br> done<br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/8937">change 8937</a>. To unsubscribe, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/8937"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: repotools </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I6dd7cea2dc83c3d2e1c7ba4b64a38154598f719c </div>
<div style="display:none"> Gerrit-Change-Number: 8937 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: George Joseph <gjoseph@digium.com> </div>