<p>George Joseph <strong>merged</strong> this change.</p><p><a href="https://gerrit.asterisk.org/8937">View Change</a></p><div style="white-space:pre-wrap">Approvals:
George Joseph: Looks good to me, approved; Approved for Submit
</div><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;">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: merged </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>
<div style="display:none"> Gerrit-Reviewer: George Joseph <gjoseph@digium.com> </div>