From 82f8c19a583d72cc3040e0d79085eaf23ae9969f Mon Sep 17 00:00:00 2001 From: George Joseph Date: Tue, 8 Aug 2017 12:33:50 -0600 Subject: 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 --- CHANGES | 10 ++++++++ UPGRADE-15.txt | 4 +++ build_tools/download_externals | 6 ++++- build_tools/list_valid_installed_externals | 6 ++++- configure | 39 ++++++++++++++++++++++++++---- configure.ac | 5 ++-- makeopts.in | 5 ++-- third-party/pjproject/configure.m4 | 6 ++--- 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 -- cgit v1.2.3