diff --git a/CHANGES b/CHANGES index c56d7f0afe..3cc0ee6539 100644 --- a/CHANGES +++ b/CHANGES @@ -17,6 +17,13 @@ Core * VP9 is now a supported passthrough video codec and it can be used by specifying "vp9" in the allow line. +Build System +------------------ + * 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. + res_pjsip ------------------ * The "external_media_address" on transports is now resolved using dnsmgr and diff --git a/build_tools/download_externals b/build_tools/download_externals index b0a414ed1f..f6cc523907 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 12aff3f95a..194801c94a 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 50b2ff8af3..8308b9ef68 100755 --- a/configure +++ b/configure @@ -1200,6 +1200,7 @@ AST_NESTED_FUNCTIONS AST_CODE_COVERAGE EXTERNALS_CACHE_DIR SOUNDS_CACHE_DIR +AST_DOWNLOAD_CACHE AST_DEVMODE_STRICT AST_DEVMODE NOISY_BUILD @@ -1353,6 +1354,7 @@ ac_user_opts=' enable_option_checking with_gnu_ld enable_dev_mode +with_download_cache with_sounds_cache with_externals_cache enable_coverage @@ -2096,6 +2098,9 @@ 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 @@ -9016,6 +9021,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; @@ -9278,11 +9307,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 @@ -9295,7 +9324,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 96f635a24d..6c5f4e3cb4 100644 --- a/configure.ac +++ b/configure.ac @@ -408,6 +408,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], []) diff --git a/makeopts.in b/makeopts.in index c615a4a996..4baefa298a 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 709a706a1b..2d3353476e 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