[asterisk-commits] build tools: Support module downloading (repotools[master])
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Aug 12 06:24:14 CDT 2016
Joshua Colp has submitted this change and it was merged.
Change subject: build_tools: Support module downloading
......................................................................
build_tools: Support module downloading
Split tarball and stage code out of Makefile.product_rules into
their own shell scripts.
Added make_manifest.
Change-Id: I404e9eb2ecf0711468902c2f59fd537b984c8a95
---
M build_tools/Makefile.product_rules
D build_tools/commit_to_staging
A build_tools/make_manifest
A build_tools/make_stage
A build_tools/make_tarball
5 files changed, 330 insertions(+), 140 deletions(-)
Approvals:
Mark Michelson: Looks good to me, approved
Matt Jordan: Looks good to me, but someone else must approve
Joshua Colp: Verified
diff --git a/build_tools/Makefile.product_rules b/build_tools/Makefile.product_rules
index 32250f5..b7e33fd 100644
--- a/build_tools/Makefile.product_rules
+++ b/build_tools/Makefile.product_rules
@@ -2,6 +2,8 @@
MODULE_NAME?=$(notdir $(shell pwd))
+export MODULE_NAME
+
ifeq ($(NOISY_BUILD),)
ECHO_PREFIX=@
CMD_PREFIX=@
@@ -43,7 +45,7 @@
yesonly=$(if $(findstring yes,$(1)),yes,)
define libcp_build
- @echo " [MAKE] libcp_build $(ARCH) ";\
+ echo " [MAKE] libcp_build $(ARCH) ";\
$(MAKE) INDENT="+ " --quiet --no-print-directory -C libcp clean;\
$(MAKE) INDENT="+ " --quiet --no-print-directory -C libcp ARCH=$(ARCH) OPT="$(FLAVOR_CFLAGS)" DEBUG="$(DEBUG_OPT)" libcp.a;
endef
@@ -74,7 +76,7 @@
ASTERISK_CONFIGURE_FLAGS=$(if $(PJPROJECT_BUNDLED_NEEDED),--with-pjproject-bundled) --host=$(BUILD_ARCH)-linux-gnu
ASTERISK_CONFIGURE=$(if $(ASTERISK_CONFIGURE_NEEDED),$(asterisk_configure))
-PJPROJECT_INCLUDES=$(if $(PJPROJECT_BUNDLED_NEEDED),$(filter-out -O2,$(shell sed -n -r -e "s/PJPROJECT_INCLUDE=(.*)/\1/gp" asterisk/makeopts)))
+PJPROJECT_INCLUDES=$(if $(PJPROJECT_BUNDLED_NEEDED),$(filter-out -O2,$(shell sed -n -r -e "s/PJPROJECT_INCLUDE=(.*)/\1/gp" asterisk/makeopts 2>/dev/null)))
PRODUCT_DIR=$(MODULE_NAME)-$(PRODUCT_VERSION)-$(ARCH)
@@ -110,7 +112,7 @@
$(CMD_PREFIX) $(CC) $(FLAVOR_CFLAGS) $(DEBUG_OPT) $(SOLINK) -o $@ $^ $(LDFLAGS) $(LIBS) $(COPYPROTECT_LIBS)
clean::
- @rm -f *.o *.so
+ @rm -f *.o *.so manifest.xml
distclean:: clean
- at rm -f optarch.h version.h
@@ -124,25 +126,15 @@
$(INSTALL) -m 755 -t $(DESTDIR)$(FLAVOR_ASTLIBDIR)/modules/ $^
$(MODULE_NAME)-%.tar.gz: $(MODULE_NAME).so $(MODULE_EXTRA_LIBRARIES)
- @echo " [TAR] $@"
- @if [ "$(NOSTRIP)" != "yes" ] ; then $(STRIP) $^ ; fi
- @-rm -rf $(@:.tar.gz=)
- @mkdir $(@:.tar.gz=)
- @mv $^ $(@:.tar.gz=)/
- @cp LICENSE $(@:.tar.gz=)/
- @if [ -f README ] ; then cp README $(@:.tar.gz=)/ ; fi
- @if [ -f CHANGES ] ; then cp CHANGES $(@:.tar.gz=)/ ; fi
- @if [ -f UPGRADE ] ; then cp UPGRADE $(@:.tar.gz=)/ ; fi
- @if [ -d doc ] ; then cp -a doc/* $(@:.tar.gz=)/ ; fi
- @if [ -n "$(EXTRAS_DIR)" ] ; then cp -a $(EXTRAS_DIR)/* $(@:.tar.gz=)/ ; fi
- @$(TAR) --create --owner 0 --group 0 --file $@ --gzip $(@:.tar.gz=)
- @rm -rf $(@:.tar.gz=)
+ $(ECHO_PREFIX) echo " [TAR] $^"
+ $(CMD_PREFIX)repotools/build_tools/make_tarball --nostrip=$(or $(NOSTRIP),no) --version=$(PRODUCT_VERSION) \
+ --arch=$(ARCH) --package-name=$(MODULE_NAME) --manifest-in=$(MANIFEST_IN) --manifest-out=$(MANIFEST) $^
clean_tarball: COPYPROTECT=yes
clean_tarball:: distclean $(PRODUCT_DIR).tar.gz
-debug: DEBUG=1
-debug: NOSTRIP=1
+debug: DEBUG=yes
+debug: NOSTRIP=yes
debug: distclean $(PRODUCT_DIR)-debug.tar.gz
nocp: COPYPROTECT=
@@ -152,7 +144,11 @@
tarballs_64: PRODUCTS+=clean_tarball
tarballs_64:
@echo "[TARGET] $@: $(PRODUCTS)"
- @for p in $(PRODUCTS) ; do echo " [TARGET] $$p $(ARCH) " ; $(MAKE) --no-print-directory $$p || exit 1 ; echo " [TARGET] $$p $(ARCH) COMPLETE"; done
+ @for p in $(PRODUCTS) ; do \
+ echo " [TARGET] $$p $(ARCH) " ;\
+ $(MAKE) --no-print-directory $$p || exit 1 ;\
+ echo " [TARGET] $$p $(ARCH) COMPLETE" ;\
+ done
@echo "[TARGET] $@: $(PRODUCTS) COMPLETE"
@echo
@@ -160,52 +156,33 @@
tarballs_32: PRODUCTS+=clean_tarball
tarballs_32:
@echo "[TARGET] $@: $(PRODUCTS)"
- @for p in $(PRODUCTS) ; do echo " [TARGET] $$p $(ARCH) " ; $(MAKE) --no-print-directory $$p || exit 1 ; echo " [TARGET] $$p $(ARCH) COMPLETE"; done
+ @for p in $(PRODUCTS) ; do \
+ echo " [TARGET] $$p $(ARCH) " ;\
+ $(MAKE) --no-print-directory $$p || exit 1 ;\
+ echo " [TARGET] $$p $(ARCH) COMPLETE" ;\
+ done
@echo "[TARGET] $@: $(PRODUCTS) COMPLETE"
@echo
everything: superclean tarballs_64 tarballs_32
-VALID_TAG=$(shell echo $(PRODUCT_VERSION) | sed -n -r -e "s/^([0-9]+\.[0-9]+)_[0-9]+\.[0-9]+\.[0-9]+$$/\1/gp")
-ifeq ($(STAGE_SUBDIR),)
- STAGEDIR=$(REPO)/$(MODULE_NAME)/asterisk-$(VALID_TAG)/$(subst _,-,$(ARCH))
-else
- STAGEDIR=$(REPO)/$(MODULE_NAME)/$(STAGE_SUBDIR)/asterisk-$(VALID_TAG)/$(subst _,-,$(ARCH))
-endif
-GIT_STATUS=$(shell git status --porcelain)
-
-checkstage:
- @if [ -n "$(GIT_STATUS)" ] ; then echo -e "This directory has uncommitted changes.\n$(GIT_STATUS)" ; exit 1 ; fi
- @if [ -z "$(VALID_TAG)" ] ; then echo "PRODUCT_VERSION($(PRODUCT_VERSION)) isn't a valid tag." ; exit 1 ; fi
-
-stagearch: FORCE
+stage_32: export ARCH:=x86_32
+stage_32: export REPO:=$(REPO)
+stage_32:
+ $(ECHO_PREFIX) echo " [STAGE] $@"
@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
- svn ls $(STAGEDIR) &> /dev/null || svn mkdir --parents $(STAGEDIR) -m "Create staging directory"
- rm -rf staging
- svn co $(STAGEDIR) staging
- cp $(PRODUCT_DIR).tar.gz staging/
- cp $(PRODUCT_DIR).tar.gz staging/$(MODULE_NAME)-current-$(ARCH).tar.gz
- for variant in $(STAGE_VARIANTS) ; do \
- if [ -f "$(PRODUCT_DIR)-$$variant.tar.gz" ] ; then \
- cp $(PRODUCT_DIR)-$$variant.tar.gz staging/ ;\
- cp $(PRODUCT_DIR)-$$variant.tar.gz staging/$(MODULE_NAME)-current-$$variant-$(ARCH).tar.gz ;\
- fi ;\
- done ;
- if [ -f README ] ; then cp README staging/ ; fi
- if [ -f LICENSE ] ; then cp LICENSE staging/ ; fi
- (cd staging ; svn add *)
- svn commit staging -m "commit $(MODULE_NAME)-$(PRODUCT_VERSION)-$(ARCH) builds to staging"
- rm -rf staging
+ $(CMD_PREFIX)repotools/build_tools/make_stage --version=$(PRODUCT_VERSION) --arch=$(ARCH) --package-name=$(MODULE_NAME) \
+ --variants=$(STAGE_VARIANTS) --stage-subdir=$(STAGE_SUBDIR) --skip-checks=$(SKIP_CHECKS) --repo=$(REPO)
-stage_32: ARCH=x86_32
-stage_32: stagearch
+stage_64: export ARCH=x86_64
+stage_64: export REPO:=$(REPO)
+stage_64:
+ $(ECHO_PREFIX) echo " [STAGE] $<"
+ @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
+ $(CMD_PREFIX)repotools/build_tools/make_stage --version=$(PRODUCT_VERSION) --arch=$(ARCH) --package-name=$(MODULE_NAME) \
+ --variants=$(STAGE_VARIANTS) --stage-subdir=$(STAGE_SUBDIR) --skip-checks=$(SKIP_CHECKS) --repo=$(REPO)
-stage_64: ARCH=x86_64
-stage_64: stagearch
-
-stage: checkstage
- $(MAKE) stage_32
- $(MAKE) stage_64
+stage: stage_32 stage_64
printit:
@echo ------------------
diff --git a/build_tools/commit_to_staging b/build_tools/commit_to_staging
deleted file mode 100755
index a2c4528..0000000
--- a/build_tools/commit_to_staging
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/bin/bash
-
-. repotools/build_tools/buildfuncs
-
-make_staging_dir() {
- svn ls ${1} &> /dev/null || svn mkdir --parents ${1} -m "create staging directory"
-}
-
-c2s() {
- FN=${1}
- VERSION=${2}
- ASTVERSION=`extract_astversion ${2}`
- ARCH=${3}
- P=${4}
- make_staging_dir ${P}
- if [ "${ASTVERSION}" == "1.2" ]; then
- P=${P}/unsupported
- make_staging_dir ${P}
- P=${P}/asterisk-${ASTVERSION}
- make_staging_dir ${P}
- P=${P}/Linux
- make_staging_dir ${P}
- else
- P=${P}/asterisk-${ASTVERSION}
- make_staging_dir ${P}
- fi
- case $ARCH in
- (x86_64)
- A=x86-64
- ;;
- (x86_32)
- A=x86-32
- ;;
- esac
- P=${P}/${A}
- make_staging_dir ${P}
- svn ls ${P} &> /dev/null || svn mkdir --parents ${P} -m "create staging directory"
- svn co ${P} staging
- cp ${FN}-${VERSION}-${ARCH}.tar.gz staging
- cp ${FN}-${VERSION}-${ARCH}.tar.gz staging/${FN}-current-${ARCH}.tar.gz
- if [ -f README ] ; then cp README staging/ ; fi
- if [ -f LICENSE ] ; then cp LICENSE staging/ ; fi
- cd staging
- svn add ${FN}-${VERSION}-${ARCH}.tar.gz
- svn add ${FN}-current-${ARCH}.tar.gz
- if [ -f README ] ; then svn add README ; fi
- if [ -f LICENSE ] ; then svn add LICENSE ; fi
- cd ..
- svn commit staging -m "commit ${1} builds to staging"
- rm -rf staging
-}
-
-if [ -z "$1" ] ; then
- echo "You must supply a staging repository".
- echo "Example: ${0} https://origsvn.digium.com/svn/sites/downloads.digium.com/staging/telephony/<product>"
- exit 1
-fi
-
-if [ -n "$(git status --porcelain)" ]; then
- echo "The working directory has uncommitted changes."
- exit 1
-fi
-
-version=`git describe --tags`
-if [ $? -ne 0 ] ; then
- echo "There isn't a valid tag for the current branch"
- exit 1
-fi
-
-if [ "${version#*-}" != "$version" ] ; then
- echo "The latest HEAD doesn't have a tag directly associated with it."
- echo "The closest found was $version"
- exit 1
-fi
-
-product=`basename ${PWD}`
-
-if [ -f $product-$version-x86_32.tar.gz ] ; then
- c2s $product $version x86_32 $1
-fi
-if [ -f $product-$version-x86_64.tar.gz ] ; then
- c2s $product $version x86_64 $1
-fi
diff --git a/build_tools/make_manifest b/build_tools/make_manifest
new file mode 100755
index 0000000..9301f06
--- /dev/null
+++ b/build_tools/make_manifest
@@ -0,0 +1,115 @@
+#!/bin/bash
+if [[ ( ${BASH_VERSINFO[0]} == 4 && ${BASH_VERSINFO[1]} > 1 ) || ${BASH_VERSINFO[0]} > 4 ]] ; then
+ shopt -s compat41
+fi
+set -e
+
+which xmlstarlet >/dev/null || {
+ echo "xmlstarlet is not installed."
+ exit 1
+}
+
+script_path=$(readlink -f ${0})
+script_dir=$(dirname ${script_path})
+
+declare -a module_list
+
+while [ ${#@} -gt 0 ] ; do
+ case ${1} in
+ --package-name=*)
+ package_name=${1#*=}
+ ;;
+ --tar-dir=*)
+ tardir=${1#*=}
+ ;;
+ --manifest-in=*)
+ manifest_in=${1#*=}
+ ;;
+ --manifest-out=*)
+ manifest_out=${1#*=}
+ ;;
+ --version=*)
+ version=${1#*=}
+ ;;
+ --arch=*)
+ arch=${1#*=}
+ ;;
+ *)
+ module_list+=( $1 )
+ ;;
+ esac
+ shift
+done
+
+manifest_in=${manifest_in:-${MANIFEST_IN:-manifest.xml.in}}
+manifest_out=${manifest_out:-${MANIFEST:-manifest.xml}}
+
+if [[ ( -z "${package_name}" ) || ( -z "${module_list[@]}" ) ]] ; then
+ echo "Usage ${0} --package-name=<package name> [ --manifest-in=<manifest.xml.in> ] [ --manifest-out=<manifest.xml> ] [ --arch=(x86_32 | x86_64) ] [ --version=<x.x_y.y.y> ] <module list>"
+ exit 1
+fi
+
+arch=${arch:-${ARCH}}
+if [ -z "${arch}" ] ; then
+ filetype=`file ${module_list[0]}`
+ if [[ "${filetype}" =~ 32-bit ]] ; then
+ arch=x86_32
+ else
+ arch=x86_64
+ fi
+fi
+
+version=${version:-${PRODUCT_VERSION}}
+if [ -z "${version}" ] ; then
+ version=$(${script_dir}/make_version .)
+fi
+
+tmpdir=$(mktemp -d)
+if [[ $? != 0 || ( -z "${tmpdir}" ) ]] ; then
+ echo "Unable to create temporary directory."
+ exit 1
+fi
+trap "rm -rf ${tmpdir}" EXIT
+
+function xstar() {
+ local argv=( "$@" )
+ local file=${argv[$((${#argv[@]} - 1))]}
+ xmlstarlet "$@" > ${file}.tmp && mv ${file}.tmp ${file}
+}
+
+cp ${manifest_in} ${tmpdir}/manifest.xml
+
+xstar ed -i "/package" -t attr -n version -v ${version} ${tmpdir}/manifest.xml
+xstar ed -i "/package" -t attr -n arch -v ${arch} ${tmpdir}/manifest.xml
+xstar ed -s "/package" -t elem -n "modules" -v "" ${tmpdir}/manifest.xml
+
+for so in ${module_list[@]} ; do
+ module=${so/.so/}
+ xstar ed -s "/package/modules" -t elem -n "module_${module}" -v "" ${tmpdir}/manifest.xml
+ xstar ed -s "/package/modules/module_${module}" -t attr -n "name" -v "${module}" ${tmpdir}/manifest.xml
+ xstar ed -r "/package/modules/module_${module}" -v "module" ${tmpdir}/manifest.xml
+ depends=$(sed -n -r -e "/MODULEINFO/,/[*]{3}\// s/\s*<depend>([^<]+)<\/depend>\s*/\1/p" ${module}.c | tr '\n' ' ')
+ for depend in ${depends} ; do
+ xstar ed -s "/package/modules/module[@name='${module}']" -t elem -n "depend" -v "${depend}" ${tmpdir}/manifest.xml
+ done
+done
+
+files=$(xmlstarlet sel -t -m "//file" -v "concat(@src_path,'|',string(@tarball_path))" -n ${tmpdir}/manifest.xml)
+for line in ${files} ; do
+ file=${line%|*}
+ tfile=${line#*|}
+ if [ -n "${tfile}" ] ; then
+ xstar ed -r "//file[@src_path='${file}']/@tarball_path" -v "name" ${tmpdir}/manifest.xml
+ name=${tfile}
+ else
+ xstar ed -r "//file[@src_path='${file}']/@src_path" -v "name" ${tmpdir}/manifest.xml
+ name=${file}
+ fi
+
+ csum=$(md5sum ${tardir:+${tardir}/}${name} | cut -b1-32)
+ xstar ed -a "//file[@name='${name}']" -t attr -n md5sum -v "${csum}" ${tmpdir}/manifest.xml
+done
+
+xstar ed -d "//file/@src_path" ${tmpdir}/manifest.xml
+
+cp ${tmpdir}/manifest.xml ${manifest_out}
diff --git a/build_tools/make_stage b/build_tools/make_stage
new file mode 100755
index 0000000..0c4d60b
--- /dev/null
+++ b/build_tools/make_stage
@@ -0,0 +1,77 @@
+#!/bin/bash
+if [[ ( ${BASH_VERSINFO[0]} == 4 && ${BASH_VERSINFO[1]} > 1 ) || ${BASH_VERSINFO[0]} > 4 ]] ; then
+ shopt -s compat41
+fi
+set -e
+
+script_path=$(readlink -f ${0})
+script_dir=$(dirname ${script_path})
+
+skip_checks=no
+
+while [ ${#@} -gt 0 ] ; do
+ case ${1} in
+ --package-name=*)
+ package_name=${1#*=}
+ ;;
+ --version=*)
+ version=${1#*=}
+ ;;
+ --arch=*)
+ arch=${1#*=}
+ ;;
+ --repo=*)
+ repo=${1#*=}
+ ;;
+ --variants=*)
+ variants=${1#*=}
+ ;;
+ --stage-subdir=*)
+ stage_subdir=${1#*=}
+ ;;
+ --skip-checks=*)
+ skip_checks=${1#*=}
+ ;;
+ esac
+ shift
+done
+
+git_status=$(git status --porcelain)
+
+if [ -n "${git_status}" -a "${skip_checks}" = "no" ] ; then
+ echo -e "This directory has uncommitted changes.\n${git_status}\n"
+ exit 1
+fi
+
+if [[ ! "${version}" =~ ^([0-9]+\.[0-9]+)_([0-9]+\.[0-9]+\.[0-9]+)$ && "${skip_checks}" = "no" ]] ; then
+ echo "version(${version}) isn't a valid tag.\n"
+ exit 1
+fi
+
+directory_name=$(sed -n -r -e "/MODULEINFO/,/[*]{3}\// s/.*\s+directory_name=\"([^\"]+)\".*/\1/gp" ${package_name}.c )
+
+astversion=${version%_*}
+prodversion=${version#*_}
+stagedir=${repo}/${directory_name:-${package_name}}/${stage_subdir:+${stage_subdir}/}asterisk-${astversion}/${arch/_/-}
+package_dir=${package_name}-${version}-${arch}
+tarball=${package_dir}.tar.gz
+
+svn ls ${stagedir} &> /dev/null || svn mkdir --parents ${stagedir} -m "Create staging directory"
+rm -rf staging
+svn co ${stagedir} staging
+trap "rm -rf staging" EXIT
+
+tar --strip-components=1 -xzf ${tarball} -C staging ${package_dir}/manifest.xml
+cp ${tarball} staging/
+cp ${tarball} staging/${package_name}-current-${arch}.tar.gz
+for variant in ${variants} ; do
+ if [ -f "${package_dir}-${variant}.tar.gz" ] ; then
+ cp ${package_dir}-${variant}.tar.gz staging/
+ cp ${package_dir}-${variant}.tar.gz staging/${package_name}-current-${variant}-${arch}.tar.gz
+ fi
+done
+tar --strip-components=1 -xzf ${tarball} -C staging ${package_dir}/README &>/dev/null || :
+tar --strip-components=1 -xzf ${tarball} -C staging ${package_dir}/LICENSE &>/dev/null || :
+
+(cd staging ; svn add *)
+svn commit staging -m "commit ${package_name}-${version}-${arch} builds to staging"
diff --git a/build_tools/make_tarball b/build_tools/make_tarball
new file mode 100755
index 0000000..58ad3a2
--- /dev/null
+++ b/build_tools/make_tarball
@@ -0,0 +1,104 @@
+#!/bin/bash
+if [[ ( ${BASH_VERSINFO[0]} == 4 && ${BASH_VERSINFO[1]} > 1 ) || ${BASH_VERSINFO[0]} > 4 ]] ; then
+ shopt -s compat41
+fi
+set -e
+
+which xmlstarlet >/dev/null || {
+ echo "xmlstarlet is not installed."
+ exit 1
+}
+
+script_path=$(readlink -f ${0})
+script_dir=$(dirname ${script_path})
+
+nostrip=no
+declare -a module_list
+
+while [ ${#@} -gt 0 ] ; do
+ case ${1} in
+ --package-name=*)
+ package_name=${1#*=}
+ ;;
+ --manifest-in=*)
+ manifest_in=${1#*=}
+ ;;
+ --manifest-out=*)
+ manifest_out=${1#*=}
+ ;;
+ --nostrip=*)
+ nostrip=${1#*=}
+ ;;
+ --version=*)
+ version=${1#*=}
+ ;;
+ --arch=*)
+ arch=${1#*=}
+ ;;
+ *.tar.gz)
+ tarfile=$1
+ ;;
+ *.so)
+ module_list+=( $1 )
+ ;;
+ esac
+ shift
+done
+
+manifest_in=${manifest_in:-${MANIFEST_IN:-manifest.xml.in}}
+manifest_out=${manifest_out:-${MANIFEST:-manifest.xml}}
+
+if [[ ( -z "${package_name}" ) || ( -z "${module_list[@]}" ) ]] ; then
+ echo "Usage ${0} --package-name=<package name> [ --manifest-in=<manifest.xml.in> ] [ --arch=(x86_32 | x86_64) ] [ --nostrip=(yes|no) ] [ --version=<x.x_y.y.y> ] <module list>"
+ exit 1
+fi
+
+arch=${arch:-${ARCH}}
+if [ -z "${arch}" ] ; then
+ filetype=`file ${module_list[0]}`
+ if [[ "${filetype}" =~ 32-bit ]] ; then
+ arch=x86_32
+ else
+ arch=x86_64
+ fi
+fi
+
+version=${version:-${PRODUCT_VERSION}}
+if [ -z "${version}" ] ; then
+ version=$(${script_dir}/make_version .)
+fi
+
+tardir=${package_name}-${version}-${arch}
+tarfile=${tarfile:-${tardir}.tar.gz}
+
+rm -rf ${tardir}
+mkdir ${tardir}
+trap "if [ -d ${tardir} ] ; then rm -rf ${tardir} ; fi" EXIT
+
+files=$(xmlstarlet sel -t -m "//file" -v "concat(@src_path,'|',string(@tarball_path),'^',string(@executable))" -n ${manifest_in})
+for line in ${files} ; do
+ file=${line%|*}
+ tfile=${line#*|}
+ executable=${tfile#*^}
+ tfile=${tfile%^*}
+
+ if [ "${tfile:0:1}" = "/" ] ; then
+ echo "tarball_path ${tfile} must not be an absolute path."
+ exit 1
+ fi
+
+ mkdir -p ${tardir}/$(dirname ${tfile:-${file}})
+ cp ${file} ${tardir}/${tfile:-${file}}
+
+ if [[ "${NOSTRIP}" != "yes" && "${executable}" == "yes" ]] ; then
+ strip ${tardir}/${tfile:-${file}}
+ fi
+done
+
+echo " [MANIFEST] ${manifest_in} -> ${manifest_out}"
+./repotools/build_tools/make_manifest --package-name=${package_name} --tar-dir=${tardir} \
+ --manifest-in=${manifest_in} --manifest-out=${manifest_out} --version=${version} ${module_list[@]}
+
+cp ${manifest_out} ${tardir}/
+
+tar --create --owner 0 --group 0 --file ${tarfile} --gzip ${tardir}
--
To view, visit https://gerrit.asterisk.org/3430
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I404e9eb2ecf0711468902c2f59fd537b984c8a95
Gerrit-PatchSet: 3
Gerrit-Project: repotools
Gerrit-Branch: master
Gerrit-Owner: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Mark Michelson <mmichelson at digium.com>
Gerrit-Reviewer: Matt Jordan <mjordan at digium.com>
Gerrit-Reviewer: Scott Griepentrog <sgriepentrog at digium.com>
More information about the asterisk-commits
mailing list