summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Joseph <gjoseph@digium.com>2017-08-08 12:33:50 -0600
committerGeorge Joseph <gjoseph@digium.com>2017-08-08 15:42:31 -0600
commit82f8c19a583d72cc3040e0d79085eaf23ae9969f (patch)
treee7f82fab64c10c491ac8bc75a76678ce72c847f3
parent11d1d51844618296719cd687daf43c579df9b30b (diff)
Make --with-pjproject-bundled the default for Asterisk 15
'--with-pjproject-bundled' is now the default when running ./configure. It can be disabled with '--without-pjproject-bundled'. To make building without an internet connection easier, a new ./configure option '--with-download-cache' was added that sets the cache for externals (like pjproject, the codecs and the DPMA), AND the sounds files. It can also be specified as an environment variable named "AST_DOWNLOAD_CACHE". The existing '--with-sounds-cache' option / SOUNDS_CACHE_DIR env variable and '--with-externals-cache' option / EXTERNALS_CACHE_DIR env variable remain and if specified, will override '--with-downloads-cache'. ASTERISK-27189 Change-Id: Ifa9783fddf44aafadb060c9feba713dfa81d38ce
-rw-r--r--CHANGES10
-rw-r--r--UPGRADE-15.txt4
-rwxr-xr-xbuild_tools/download_externals6
-rwxr-xr-xbuild_tools/list_valid_installed_externals6
-rwxr-xr-xconfigure39
-rw-r--r--configure.ac5
-rw-r--r--makeopts.in5
-rw-r--r--third-party/pjproject/configure.m46
8 files changed, 67 insertions, 14 deletions
diff --git a/CHANGES b/CHANGES
index 71166ef90..37d78e104 100644
--- a/CHANGES
+++ b/CHANGES
@@ -22,6 +22,16 @@ app_queue
queue position has improved since the last time that we annouced their
position. This default is no.
+Build System
+------------------
+ * '--with-pjproject-bundled' is now the default when running ./configure
+ It can be disabled with '--without-pjproject-bundled'.
+
+ * A '--with-download-cache' option is now available which is equivalent to
+ setting '--with-sounds-cache' and '--with-externals-cache' to the same
+ value. The download cache can also be set via the AST_DOWNLOAD_CACHE
+ environment variable.
+
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.6.0 to Asterisk 14.7.0 ------------
------------------------------------------------------------------------------
diff --git a/UPGRADE-15.txt b/UPGRADE-15.txt
index 4ebe400a6..2e5eb1c17 100644
--- a/UPGRADE-15.txt
+++ b/UPGRADE-15.txt
@@ -33,6 +33,10 @@ Core:
ARI. As a result, the 'DataGet' AMI action as well as the 'data get'
CLI command have been removed.
+Build System:
+ - '--with-pjproject-bundled' is now the default when running ./configure
+ It can be disabled with '--without-pjproject-bundled'.
+
From 14.6.0 to 14.7.0:
Core:
diff --git a/build_tools/download_externals b/build_tools/download_externals
index b0a414ed1..f6cc52390 100755
--- a/build_tools/download_externals
+++ b/build_tools/download_externals
@@ -26,7 +26,11 @@ if [[ -z "${tmpdir}" ]] ; then
fi
trap "rm -rf ${tmpdir}" EXIT
-sed -r -e "s/^([^ =]+)\s*=\s*(.*)$/\1=\"\2\"/g" ${ASTTOPDIR}/makeopts >${tmpdir}/makeopts
+# We have to pre-process the makeopts file so it will be parsable by bash
+# Surround values with double quotes
+# Convert make $(or) functions to bash ${name:-value}
+sed -r -e "s/^([^ =]+)\s*=\s*(.*)$/\1=\"\2\"/g" \
+ -e 's/^([^ =]+)="\$\(or ([^,]*),([^)]+)\)"/_tmp="\2"\n\1="${_tmp:-\3}"/g' ${ASTTOPDIR}/makeopts >${tmpdir}/makeopts
source ${tmpdir}/makeopts
if [[ -z "${ASTMODDIR}" ]] ; then
echo "${module_name}: Unable to parse ${ASTTOPDIR}/makeopts."
diff --git a/build_tools/list_valid_installed_externals b/build_tools/list_valid_installed_externals
index 12aff3f95..194801c94 100755
--- a/build_tools/list_valid_installed_externals
+++ b/build_tools/list_valid_installed_externals
@@ -14,7 +14,11 @@ if [[ -z "${tmpdir}" ]] ; then
fi
trap "rm -rf ${tmpdir}" EXIT
-sed -r -e "s/^([^ =]+)\s*=\s*(.*)$/\1=\"\2\"/g" ${ASTTOPDIR}/makeopts >${tmpdir}/makeopts
+# We have to pre-process the makeopts file so it will be parsable by bash
+# Surround values with double quotes
+# Convert make $(or) functions to bash ${name:-value}
+sed -r -e "s/^([^ =]+)\s*=\s*(.*)$/\1=\"\2\"/g" \
+ -e 's/^([^ =]+)="\$\(or ([^,]*),([^)]+)\)"/_tmp="\2"\n\1="${_tmp:-\3}"/g' ${ASTTOPDIR}/makeopts >${tmpdir}/makeopts
source ${tmpdir}/makeopts
if [[ -z "${ASTMODDIR}" ]] ; then
echo "${module_name}: Unable to parse ${ASTTOPDIR}/makeopts."
diff --git a/configure b/configure
index a6ebe003d..368e6b453 100755
--- a/configure
+++ b/configure
@@ -1228,6 +1228,7 @@ AST_NESTED_FUNCTIONS
AST_CODE_COVERAGE
EXTERNALS_CACHE_DIR
SOUNDS_CACHE_DIR
+AST_DOWNLOAD_CACHE
AST_DEVMODE_STRICT
AST_DEVMODE
NOISY_BUILD
@@ -1381,6 +1382,7 @@ ac_user_opts='
enable_option_checking
with_gnu_ld
enable_dev_mode
+with_download_cache
with_sounds_cache
with_externals_cache
enable_coverage
@@ -2128,12 +2130,15 @@ Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-download-cache=PATH
+ use cached sound AND external module tarfiles in
+ PATH
--with-sounds-cache=PATH
use cached sound tarfiles in PATH
--with-externals-cache=PATH
use cached external module tarfiles in PATH
--with-pjproject-bundled
- Use bundled pjproject libraries
+ Use bundled pjproject libraries (default)
--with-asound=PATH use Advanced Linux Sound Architecture files in PATH
--with-bfd=PATH use Debug symbol decoding files in PATH
--with-execinfo=PATH use Stack Backtrace files in PATH
@@ -9055,6 +9060,30 @@ fi
+# Check whether --with-download-cache was given.
+if test "${with_download_cache+set}" = set; then :
+ withval=$with_download_cache;
+ case ${withval} in
+ n|no)
+ unset AST_DOWNLOAD_CACHE
+ ;;
+ *)
+ if test "x${withval}" = "x"; then
+ :
+ else
+ AST_DOWNLOAD_CACHE="${withval}"
+ fi
+ ;;
+ esac
+
+else
+ :
+fi
+
+
+
+
+
# Check whether --with-sounds-cache was given.
if test "${with_sounds_cache+set}" = set; then :
withval=$with_sounds_cache;
@@ -9254,7 +9283,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$save_CFLAGS"
-PJPROJECT_BUNDLED=no
+PJPROJECT_BUNDLED=yes
@@ -9317,11 +9346,11 @@ $as_echo "configuring" >&6; }
PJPROJECT_CONFIGURE_OPTS+=" --host=$host"
fi
- export TAR PATCH SED NM EXTERNALS_CACHE_DIR DOWNLOAD_TO_STDOUT DOWNLOAD_TIMEOUT DOWNLOAD MD5 CAT
+ export TAR PATCH SED NM EXTERNALS_CACHE_DIR AST_DOWNLOAD_CACHE DOWNLOAD_TO_STDOUT DOWNLOAD_TIMEOUT DOWNLOAD MD5 CAT
export NOISY_BUILD
${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} \
PJPROJECT_CONFIGURE_OPTS="$PJPROJECT_CONFIGURE_OPTS" \
- EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR}" \
+ EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR:-${AST_DOWNLOAD_CACHE}}" \
configure
if test $? -ne 0 ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
@@ -9334,7 +9363,7 @@ $as_echo "$as_me: Unable to configure ${PJPROJECT_DIR}" >&6;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bundled pjproject" >&5
$as_echo_n "checking for bundled pjproject... " >&6; }
- PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} PJPROJECT_CONFIGURE_OPTS="$PJPROJECT_CONFIGURE_OPTS" EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR}" echo_cflags)
+ PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} PJPROJECT_CONFIGURE_OPTS="$PJPROJECT_CONFIGURE_OPTS" EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR:-${AST_DOWNLOAD_CACHE}}" echo_cflags)
PJPROJECT_CFLAGS="$PJPROJECT_INCLUDE"
PBX_PJPROJECT=1
diff --git a/configure.ac b/configure.ac
index ccd6936dd..cf4518c21 100644
--- a/configure.ac
+++ b/configure.ac
@@ -407,6 +407,7 @@ AC_SUBST(NOISY_BUILD)
AC_SUBST(AST_DEVMODE)
AC_SUBST(AST_DEVMODE_STRICT)
+AST_OPTION_ONLY([download-cache], [AST_DOWNLOAD_CACHE], [cached sound AND external module tarfiles], [])
AST_OPTION_ONLY([sounds-cache], [SOUNDS_CACHE_DIR], [cached sound tarfiles], [])
AST_OPTION_ONLY([externals-cache], [EXTERNALS_CACHE_DIR], [cached external module tarfiles], [])
@@ -424,12 +425,12 @@ AC_SUBST(AST_CODE_COVERAGE)
AST_CHECK_RAII()
AST_CHECK_STRSEP_ARRAY_BOUNDS()
-PJPROJECT_BUNDLED=no
+PJPROJECT_BUNDLED=yes
AH_TEMPLATE(m4_bpatsubst([[HAVE_PJPROJECT_BUNDLED]], [(.*)]), [Define to 1 when using the bundled pjproject.])
AC_ARG_WITH([pjproject-bundled],
[AS_HELP_STRING([--with-pjproject-bundled],
- [Use bundled pjproject libraries])],
+ [Use bundled pjproject libraries (default)])],
[case "${withval}" in
n|no) PJPROJECT_BUNDLED=no ;;
*) PJPROJECT_BUNDLED=yes ;;
diff --git a/makeopts.in b/makeopts.in
index 887a15567..7d0347ddc 100644
--- a/makeopts.in
+++ b/makeopts.in
@@ -29,8 +29,9 @@ FETCH=@FETCH@
DOWNLOAD=@DOWNLOAD@
DOWNLOAD_TO_STDOUT=@DOWNLOAD_TO_STDOUT@
DOWNLOAD_TIMEOUT=@DOWNLOAD_TIMEOUT@
-SOUNDS_CACHE_DIR=@SOUNDS_CACHE_DIR@
-EXTERNALS_CACHE_DIR=@EXTERNALS_CACHE_DIR@
+AST_DOWNLOAD_CACHE=@AST_DOWNLOAD_CACHE@
+SOUNDS_CACHE_DIR=$(or @SOUNDS_CACHE_DIR@,${AST_DOWNLOAD_CACHE})
+EXTERNALS_CACHE_DIR=$(or @EXTERNALS_CACHE_DIR@,${AST_DOWNLOAD_CACHE})
RUBBER=@RUBBER@
CATDVI=@CATDVI@
KPATHSEA=@KPATHSEA@
diff --git a/third-party/pjproject/configure.m4 b/third-party/pjproject/configure.m4
index 709a706a1..2d3353476 100644
--- a/third-party/pjproject/configure.m4
+++ b/third-party/pjproject/configure.m4
@@ -49,11 +49,11 @@ AC_DEFUN([_PJPROJECT_CONFIGURE],
PJPROJECT_CONFIGURE_OPTS+=" --host=$host"
fi
- export TAR PATCH SED NM EXTERNALS_CACHE_DIR DOWNLOAD_TO_STDOUT DOWNLOAD_TIMEOUT DOWNLOAD MD5 CAT
+ export TAR PATCH SED NM EXTERNALS_CACHE_DIR AST_DOWNLOAD_CACHE DOWNLOAD_TO_STDOUT DOWNLOAD_TIMEOUT DOWNLOAD MD5 CAT
export NOISY_BUILD
${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} \
PJPROJECT_CONFIGURE_OPTS="$PJPROJECT_CONFIGURE_OPTS" \
- EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR}" \
+ EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR:-${AST_DOWNLOAD_CACHE}}" \
configure
if test $? -ne 0 ; then
AC_MSG_RESULT(failed)
@@ -63,7 +63,7 @@ AC_DEFUN([_PJPROJECT_CONFIGURE],
AC_MSG_CHECKING(for bundled pjproject)
- PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} PJPROJECT_CONFIGURE_OPTS="$PJPROJECT_CONFIGURE_OPTS" EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR}" echo_cflags)
+ PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} PJPROJECT_CONFIGURE_OPTS="$PJPROJECT_CONFIGURE_OPTS" EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR:-${AST_DOWNLOAD_CACHE}}" echo_cflags)
PJPROJECT_CFLAGS="$PJPROJECT_INCLUDE"
PBX_PJPROJECT=1