#998778 asterisk: bashism in configure script

Package:
src:asterisk
Source:
asterisk
Submitter:
Andrej Shadura
Date:
2021-11-07 19:39:04 UTC
Severity:
normal
Tags:
#998778#5
Date:
2021-11-07 19:34:45 UTC
From:
To:
Hi,

Your package uses configure script with bash features not present in
POSIX without explicitly declaring the need to bash shell; this
currently works as configure scripts select bash, but when dash enables
LINENO support, your configure script will start failing:

     ./configure: 9971: test: unexpected operator
     ./configure: 9971: test: unexpected operator
     checking for embedded pjproject (may have to download)... configuring
     [pjproject]  Verifying /tmp/pjproject-2.10.tar.bz2
     [pjproject]  Verify successful
     [pjproject]  Unpacking /tmp/pjproject-2.10.tar.bz2
     [pjproject]  Applying patches /usr/src/packages/BUILD/third-party/pjproject/patches /usr/src/packages/BUILD/third-party/pjproject/source
     aconfigure.ac:8: warning: The macro `AC_CONFIG_HEADER' is obsolete.
     aconfigure.ac:8: You should run autoupdate.
     ./lib/autoconf/status.m4:719: AC_CONFIG_HEADER is expanded from...
     aconfigure.ac:8: the top level
     aconfigure.ac:41: warning: The macro `AC_TRY_LINK' is obsolete.
     aconfigure.ac:41: You should run autoupdate.
     ./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
     aconfigure.ac:41: the top level
     [pjproject]  Applying user.mak
     [pjproject]  Applying custom include file patches/asterisk_malloc_debug.h
     [pjproject]  Applying custom include file patches/config_site.h
     [pjproject]  Rebuilding
     [pjproject]  Configuring with --prefix=/opt/pjproject --disable-speex-codec --disable-speex-aec --disable-bcg729 --disable-gsm-codec --disable-ilbc-codec --disable-l16-codec --disable-g722-codec --disable-g7221-codec --disable-opencore-amr --disable-silk --disable-opus --disable-video --disable-v4l2 --disable-sound --disable-ext-sound --disable-sdl --disable-libyuv --disable-ffmpeg --disable-openh264 --disable-ipp --disable-libwebrtc --without-external-pa --without-external-srtp --disable-resample --disable-g711-codec --enable-epoll
     checking for bundled pjproject... yes
     checking for gawk... (cached) mawk
     checking for curl-config... /usr/bin/curl-config
     checking for the version of libcurl... 7.74.0
     checking for libcurl >= version 7.10.1... yes
     checking whether libcurl is usable... yes
     checking for curl_free... yes
     checking for size_t... yes
     checking for working alloca.h... yes
     checking for alloca... yes
     checking for dirent.h that defines DIR... yes
     checking for library containing opendir... none required
     checking for sys/wait.h that is POSIX.1 compatible... yes
     checking for sys/types.h... (cached) yes
     checking for netinet/in.h... yes
     checking for arpa/nameser.h... yes
     checking for netdb.h... yes
     checking for resolv.h... yes
     checking for arpa/nameser.h... (cached) yes
     checking for assert.h... yes
     checking for ctype.h... yes
     checking for dlfcn.h... yes
     checking for errno.h... yes
     checking for fcntl.h... yes
     checking for float.h... yes
     checking for grp.h... yes
     checking for inttypes.h... (cached) yes
     checking for limits.h... yes
     checking for locale.h... yes
     checking for math.h... yes
     checking for pwd.h... yes
     checking for netinet/in.h... (cached) yes
     checking for regex.h... yes
     checking for sched.h... yes
     checking for stdarg.h... yes
     checking for stdint.h... (cached) yes
     checking for stdio.h... (cached) yes
     checking for stdlib.h... (cached) yes
     checking for string.h... (cached) yes
     checking for syslog.h... yes
     checking for sys/file.h... yes
     checking for sys/ioctl.h... yes
     checking for sys/param.h... (cached) yes
     checking for sys/resource.h... yes
     checking for sys/socket.h... (cached) yes
     checking for sys/stat.h... (cached) yes
     checking for sys/time.h... (cached) yes
     checking for sys/types.h... (cached) yes
     checking for sys/un.h... yes
     checking for termios.h... yes
     checking for time.h... yes
     checking for unistd.h... (cached) yes
     checking for arpa/inet.h... yes
     checking for libintl.h... yes
     checking for malloc.h... yes
     checking for netdb.h... (cached) yes
     checking for stddef.h... yes
     checking for strings.h... (cached) yes
     checking for sys/event.h... no
     checking for utime.h... (cached) yes
     checking for x86_64-linux-gnu-pkg-config... /usr/bin/x86_64-linux-gnu-pkg-config
     checking pkg-config is at least version 0.9.0... yes
     checking for libedit... yes
     checking for Testing for libedit unicode support... yes
     checking for uuid_generate_random in -luuid... yes
     checking for uuid/uuid.h... yes
     checking for jansson >= 2.11... yes
     checking for clock_gettime in -lrt... yes
     checking for x86_64-linux-gnu-xml2-config... no
     checking for xml2-config... /usr/bin/xml2-config
     checking for uriParseUriA in -luriparser... yes
     checking for uriparser/Uri.h... yes
     checking for xsltLoadStylesheetPI in -lxslt... yes
     checking for libxslt/xsltInternals.h... yes
     checking for xsltCleanupGlobals in -lxslt... yes
     checking for libxslt/xsltInternals.h... (cached) yes
     ./configure: 15784: test: no: unexpected operator
     checking for xlocale.h... no
     checking for winsock.h... no
     checking for winsock2.h... no
     checking for sys/poll.h... yes
     checking for special C compiler options needed for large files... no
     checking for _FILE_OFFSET_BITS value needed for large files... no
     checking for _Bool... yes
     checking for stdbool.h that conforms to C99... yes
     checking for an ANSI C-conforming const... yes
     checking for uid_t in sys/types.h... yes
     checking for inline... inline
     checking for long double with more range or precision than double... yes

To test this, you can install dash from experimental and re-run the
configure script.

Please replace non-POSIX features with their equivalents to make sure
the script runs with dash. Most common ones are usage of == instead of =
and for with arrays (not lists).