Commit 47011850d4 for asterisk.org

commit 47011850d4b9b933d1e84a4ed9d99c70b62b9b10
Author: Alexei Gradinari <alex2grad@gmail.com>
Date:   Mon Apr 6 18:56:35 2026 -0400

    build: remove pjsua, pjsystest, Python bindings and asterisk_malloc_debug stubs from pjproject dev build

    The pjsua Python module and the pjsua/pjsystest apps were used by the
    Asterisk Test Suite for SIP simulation in dev mode builds. They are now
    fully obsolete for three independent reasons:

    1. **pjsua Python bindings officially deprecated upstream.** The pjproject
       maintainers added `pjsip-apps/src/python/DEPRECATED.txt` directing
       users to the PJSUA2 SWIG binding instead. A build-fix PR
       (https://github.com/pjsip/pjproject/pull/4892) was closed by the
       maintainer explicitly citing this deprecation.

    2. **Removed from the Asterisk Test Suite.** As confirmed by @mbradeen:
       > *"We had to get rid of pjsua when we went to Python3 because it would
       > hang due to a conflict between async calls within pjsua and twisted.
       > There are still some old references to tests we couldn't fully convert
       > to sipp, but those are skipped."*

    3. **Broken and unmaintained.** Building with Python 2.7 (the only version
       `configure.ac` searched for) fails with:
       ```
       _pjsua.c: error: 'INIT_RETURN' undeclared (first use in this function)
       ```
       due to a bug in pjproject 2.16's `python3_compat.h` that upstream
       declined to fix.

    This PR removes all pjsua-related build artifacts from Asterisk's bundled
    pjproject build: the pjsua and pjsystest application binaries, the deprecated
    Python (`_pjsua.so`) bindings, the `asterisk_malloc_debug.c` stubs, and the
    `PYTHONDEV` detection from `configure.ac`. Also removes `libpjsua` from
    Asterisk's main linker flags.

    DeveloperNote: The pjsua and pjsystest application binaries, the deprecated
    Python pjsua bindings (`_pjsua.so`), and the `asterisk_malloc_debug.c` stub
    implementations are no longer built or installed as part of the bundled
    pjproject dev mode build. The `PYTHONDEV` (python2.7-dev) build dependency
    is also removed. Developers who relied on the pjsua binary for Test Suite
    SIP simulation should use SIPp instead, which is the current Asterisk Test
    Suite standard.

    Fixes: #1840

diff --git a/configure b/configure
index 8e8dee7046..d7e4fa67ba 100755
--- a/configure
+++ b/configure
@@ -675,10 +675,6 @@ GMIME_LIBS
 GMIME_CFLAGS
 PORTAUDIO_LIBS
 PORTAUDIO_CFLAGS
-PYTHONDEV_LIBS
-PYTHONDEV_CFLAGS
-PYTHONDEV_INCLUDE
-PYTHONDEV_LIB
 PJPROJECT_LIBS
 PJPROJECT_CFLAGS
 PG_CONFIG
@@ -1520,8 +1516,6 @@ NETSNMP_CFLAGS
 NETSNMP_LIBS
 PJPROJECT_CFLAGS
 PJPROJECT_LIBS
-PYTHONDEV_CFLAGS
-PYTHONDEV_LIBS
 PORTAUDIO_CFLAGS
 PORTAUDIO_LIBS
 GMIME_CFLAGS
@@ -2310,10 +2304,6 @@ Some influential environment variables:
               C compiler flags for PJPROJECT, overriding pkg-config
   PJPROJECT_LIBS
               linker flags for PJPROJECT, overriding pkg-config
-  PYTHONDEV_CFLAGS
-              C compiler flags for PYTHONDEV, overriding pkg-config
-  PYTHONDEV_LIBS
-              linker flags for PYTHONDEV, overriding pkg-config
   PORTAUDIO_CFLAGS
               C compiler flags for PORTAUDIO, overriding pkg-config
   PORTAUDIO_LIBS
@@ -21220,12 +21210,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                OPENSSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openssl >= 1.1.0" 2>&1`
+	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openssl >= 1.1.0" 2>&1`
         else
-                OPENSSL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openssl >= 1.1.0" 2>&1`
+	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openssl >= 1.1.0" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$OPENSSL_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$OPENSSL_PKG_ERRORS" >&5


             PBX_OPENSSL=0
@@ -21239,8 +21229,8 @@ printf "%s\n" "no" >&6; }


 else
-        OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS
-        OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS
+	OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS
+	OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -21311,12 +21301,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                OPENSSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openssl11" 2>&1`
+	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openssl11" 2>&1`
         else
-                OPENSSL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openssl11" 2>&1`
+	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openssl11" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$OPENSSL_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$OPENSSL_PKG_ERRORS" >&5


             PBX_OPENSSL=0
@@ -21330,8 +21320,8 @@ printf "%s\n" "no" >&6; }


 else
-        OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS
-        OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS
+	OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS
+	OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -21407,12 +21397,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                OPENSSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openssl" 2>&1`
+	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openssl" 2>&1`
         else
-                OPENSSL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openssl" 2>&1`
+	        OPENSSL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openssl" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$OPENSSL_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$OPENSSL_PKG_ERRORS" >&5


             PBX_OPENSSL=0
@@ -21426,8 +21416,8 @@ printf "%s\n" "no" >&6; }


 else
-        OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS
-        OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS
+	OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS
+	OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -26047,12 +26037,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libedit" 2>&1`
+	        LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libedit" 2>&1`
         else
-                LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libedit" 2>&1`
+	        LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libedit" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$LIBEDIT_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBEDIT_PKG_ERRORS" >&5


             PBX_LIBEDIT=0
@@ -26066,8 +26056,8 @@ printf "%s\n" "no" >&6; }


 else
-        LIBEDIT_CFLAGS=$pkg_cv_LIBEDIT_CFLAGS
-        LIBEDIT_LIBS=$pkg_cv_LIBEDIT_LIBS
+	LIBEDIT_CFLAGS=$pkg_cv_LIBEDIT_CFLAGS
+	LIBEDIT_LIBS=$pkg_cv_LIBEDIT_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -26540,12 +26530,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                JANSSON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "jansson >= 2.11" 2>&1`
+	        JANSSON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "jansson >= 2.11" 2>&1`
         else
-                JANSSON_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "jansson >= 2.11" 2>&1`
+	        JANSSON_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "jansson >= 2.11" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$JANSSON_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$JANSSON_PKG_ERRORS" >&5


             PBX_JANSSON=0
@@ -26559,8 +26549,8 @@ printf "%s\n" "no" >&6; }


 else
-        JANSSON_CFLAGS=$pkg_cv_JANSSON_CFLAGS
-        JANSSON_LIBS=$pkg_cv_JANSSON_LIBS
+	JANSSON_CFLAGS=$pkg_cv_JANSSON_CFLAGS
+	JANSSON_LIBS=$pkg_cv_JANSSON_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -26784,12 +26774,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                LIBJWT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libjwt >= $LIBJWT_VERSION" 2>&1`
+	        LIBJWT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libjwt >= $LIBJWT_VERSION" 2>&1`
         else
-                LIBJWT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libjwt >= $LIBJWT_VERSION" 2>&1`
+	        LIBJWT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libjwt >= $LIBJWT_VERSION" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$LIBJWT_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBJWT_PKG_ERRORS" >&5


             PBX_LIBJWT=0
@@ -26803,8 +26793,8 @@ printf "%s\n" "no" >&6; }


 else
-        LIBJWT_CFLAGS=$pkg_cv_LIBJWT_CFLAGS
-        LIBJWT_LIBS=$pkg_cv_LIBJWT_LIBS
+	LIBJWT_CFLAGS=$pkg_cv_LIBJWT_CFLAGS
+	LIBJWT_LIBS=$pkg_cv_LIBJWT_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -26973,12 +26963,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                LIBXML2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libxml-2.0" 2>&1`
+	        LIBXML2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libxml-2.0" 2>&1`
         else
-                LIBXML2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libxml-2.0" 2>&1`
+	        LIBXML2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libxml-2.0" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$LIBXML2_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBXML2_PKG_ERRORS" >&5


             PBX_LIBXML2=0
@@ -26992,8 +26982,8 @@ printf "%s\n" "no" >&6; }


 else
-        LIBXML2_CFLAGS=$pkg_cv_LIBXML2_CFLAGS
-        LIBXML2_LIBS=$pkg_cv_LIBXML2_LIBS
+	LIBXML2_CFLAGS=$pkg_cv_LIBXML2_CFLAGS
+	LIBXML2_LIBS=$pkg_cv_LIBXML2_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -27576,18 +27566,18 @@ then :
 fi
 if test "$enable_largefile,$enable_year2038" != no,no
 then :
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CPPFLAGS option for large files" >&5
-printf %s "checking for $CPPFLAGS option for large files... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable large file support" >&5
+printf %s "checking for $CC option to enable large file support... " >&6; }
 if test ${ac_cv_sys_largefile_opts+y}
 then :
   printf %s "(cached) " >&6
 else case e in #(
-  e) ac_save_CPPFLAGS=$CPPFLAGS
+  e) ac_save_CC="$CC"
   ac_opt_found=no
-  for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1"; do
+  for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1" "-n32"; do
     if test x"$ac_opt" != x"none needed"
 then :
-  CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"
+  CC="$ac_save_CC $ac_opt"
 fi
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -27616,12 +27606,12 @@ then :
   if test x"$ac_opt" = x"none needed"
 then :
   # GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t.
-	 CPPFLAGS="$CPPFLAGS -DFTYPE=ino_t"
+	 CC="$CC -DFTYPE=ino_t"
 	 if ac_fn_c_try_compile "$LINENO"
 then :

 else case e in #(
-  e) CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64"
+  e) CC="$CC -D_FILE_OFFSET_BITS=64"
 	    if ac_fn_c_try_compile "$LINENO"
 then :
   ac_opt='-D_FILE_OFFSET_BITS=64'
@@ -27637,7 +27627,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
     test $ac_opt_found = no || break
   done
-  CPPFLAGS=$ac_save_CPPFLAGS
+  CC="$ac_save_CC"

   test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" ;;
 esac
@@ -27661,14 +27651,16 @@ printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h

 printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h
  ;; #(
+  "-n32") :
+    CC="$CC -n32" ;; #(
   *) :
     as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;;
 esac

 if test "$enable_year2038" != no
 then :
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CPPFLAGS option for timestamps after 2038" >&5
-printf %s "checking for $CPPFLAGS option for timestamps after 2038... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option for timestamps after 2038" >&5
+printf %s "checking for $CC option for timestamps after 2038... " >&6; }
 if test ${ac_cv_sys_year2038_opts+y}
 then :
   printf %s "(cached) " >&6
@@ -34435,12 +34427,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                ILBC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libilbc < 3" 2>&1`
+	        ILBC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libilbc < 3" 2>&1`
         else
-                ILBC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libilbc < 3" 2>&1`
+	        ILBC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libilbc < 3" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$ILBC_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$ILBC_PKG_ERRORS" >&5


             PBX_ILBC=0
@@ -34454,8 +34446,8 @@ printf "%s\n" "no" >&6; }


 else
-        ILBC_CFLAGS=$pkg_cv_ILBC_CFLAGS
-        ILBC_LIBS=$pkg_cv_ILBC_LIBS
+	ILBC_CFLAGS=$pkg_cv_ILBC_CFLAGS
+	ILBC_LIBS=$pkg_cv_ILBC_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -36811,12 +36803,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                NETSNMP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "netsnmp-agent" 2>&1`
+	        NETSNMP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "netsnmp-agent" 2>&1`
         else
-                NETSNMP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "netsnmp-agent" 2>&1`
+	        NETSNMP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "netsnmp-agent" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$NETSNMP_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$NETSNMP_PKG_ERRORS" >&5


             PBX_NETSNMP=0
@@ -36830,8 +36822,8 @@ printf "%s\n" "no" >&6; }


 else
-        NETSNMP_CFLAGS=$pkg_cv_NETSNMP_CFLAGS
-        NETSNMP_LIBS=$pkg_cv_NETSNMP_LIBS
+	NETSNMP_CFLAGS=$pkg_cv_NETSNMP_CFLAGS
+	NETSNMP_LIBS=$pkg_cv_NETSNMP_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -38334,12 +38326,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                PJPROJECT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpjproject" 2>&1`
+	        PJPROJECT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpjproject" 2>&1`
         else
-                PJPROJECT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpjproject" 2>&1`
+	        PJPROJECT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpjproject" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$PJPROJECT_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$PJPROJECT_PKG_ERRORS" >&5


             PBX_PJPROJECT=0
@@ -38353,8 +38345,8 @@ printf "%s\n" "no" >&6; }


 else
-        PJPROJECT_CFLAGS=$pkg_cv_PJPROJECT_CFLAGS
-        PJPROJECT_LIBS=$pkg_cv_PJPROJECT_LIBS
+	PJPROJECT_CFLAGS=$pkg_cv_PJPROJECT_CFLAGS
+	PJPROJECT_LIBS=$pkg_cv_PJPROJECT_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -39970,284 +39962,6 @@ fi

       fi
    fi
-
-   if test "x$PBX_PJPROJECT" = "x1" ; then
-      if test "x${AST_DEVMODE}" = "xyes" ; then
-
-
-
-      if test "x${PBX_PYTHONDEV}" != "x1" -a "${USE_PYTHONDEV}" != "no"; then
-
-pkg_failed=no
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python-2.7" >&5
-printf %s "checking for python-2.7... " >&6; }
-
-if test -n "$PYTHONDEV_CFLAGS"; then
-    pkg_cv_PYTHONDEV_CFLAGS="$PYTHONDEV_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"python-2.7\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "python-2.7") 2>&5
-  ac_status=$?
-  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PYTHONDEV_CFLAGS=`$PKG_CONFIG --cflags "python-2.7" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$PYTHONDEV_LIBS"; then
-    pkg_cv_PYTHONDEV_LIBS="$PYTHONDEV_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"python-2.7\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "python-2.7") 2>&5
-  ac_status=$?
-  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PYTHONDEV_LIBS=`$PKG_CONFIG --libs "python-2.7" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-                PYTHONDEV_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "python-2.7" 2>&1`
-        else
-                PYTHONDEV_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "python-2.7" 2>&1`
-        fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$PYTHONDEV_PKG_ERRORS" >&5
-
-
-            PBX_PYTHONDEV=0
-
-
-elif test $pkg_failed = untried; then
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-
-            PBX_PYTHONDEV=0
-
-
-else
-        PYTHONDEV_CFLAGS=$pkg_cv_PYTHONDEV_CFLAGS
-        PYTHONDEV_LIBS=$pkg_cv_PYTHONDEV_LIBS
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-            PBX_PYTHONDEV=1
-            PYTHONDEV_INCLUDE=$(echo ${PYTHONDEV_CFLAGS} | $SED -e "s|-std=c99||g")
-            PYTHONDEV_LIB="$PYTHONDEV_LIBS"
-
-printf "%s\n" "#define HAVE_PYTHONDEV 1" >>confdefs.h
-
-
-fi
-   fi
-
-
-      if test "x${PBX_PYTHONDEV}" != "x1" -a "${USE_PYTHONDEV}" != "no"; then
-
-pkg_failed=no
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python2" >&5
-printf %s "checking for python2... " >&6; }
-
-if test -n "$PYTHONDEV_CFLAGS"; then
-    pkg_cv_PYTHONDEV_CFLAGS="$PYTHONDEV_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"python2\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "python2") 2>&5
-  ac_status=$?
-  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PYTHONDEV_CFLAGS=`$PKG_CONFIG --cflags "python2" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$PYTHONDEV_LIBS"; then
-    pkg_cv_PYTHONDEV_LIBS="$PYTHONDEV_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"python2\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "python2") 2>&5
-  ac_status=$?
-  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PYTHONDEV_LIBS=`$PKG_CONFIG --libs "python2" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-                PYTHONDEV_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "python2" 2>&1`
-        else
-                PYTHONDEV_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "python2" 2>&1`
-        fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$PYTHONDEV_PKG_ERRORS" >&5
-
-
-            PBX_PYTHONDEV=0
-
-
-elif test $pkg_failed = untried; then
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-
-            PBX_PYTHONDEV=0
-
-
-else
-        PYTHONDEV_CFLAGS=$pkg_cv_PYTHONDEV_CFLAGS
-        PYTHONDEV_LIBS=$pkg_cv_PYTHONDEV_LIBS
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-            PBX_PYTHONDEV=1
-            PYTHONDEV_INCLUDE=$(echo ${PYTHONDEV_CFLAGS} | $SED -e "s|-std=c99||g")
-            PYTHONDEV_LIB="$PYTHONDEV_LIBS"
-
-printf "%s\n" "#define HAVE_PYTHONDEV 1" >>confdefs.h
-
-
-fi
-   fi
-
-
-      if test "x${PBX_PYTHONDEV}" != "x1" -a "${USE_PYTHONDEV}" != "no"; then
-
-pkg_failed=no
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python" >&5
-printf %s "checking for python... " >&6; }
-
-if test -n "$PYTHONDEV_CFLAGS"; then
-    pkg_cv_PYTHONDEV_CFLAGS="$PYTHONDEV_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"python\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "python") 2>&5
-  ac_status=$?
-  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PYTHONDEV_CFLAGS=`$PKG_CONFIG --cflags "python" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$PYTHONDEV_LIBS"; then
-    pkg_cv_PYTHONDEV_LIBS="$PYTHONDEV_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"python\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "python") 2>&5
-  ac_status=$?
-  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PYTHONDEV_LIBS=`$PKG_CONFIG --libs "python" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-                PYTHONDEV_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "python" 2>&1`
-        else
-                PYTHONDEV_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "python" 2>&1`
-        fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$PYTHONDEV_PKG_ERRORS" >&5
-
-
-            PBX_PYTHONDEV=0
-
-
-elif test $pkg_failed = untried; then
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-
-            PBX_PYTHONDEV=0
-
-
-else
-        PYTHONDEV_CFLAGS=$pkg_cv_PYTHONDEV_CFLAGS
-        PYTHONDEV_LIBS=$pkg_cv_PYTHONDEV_LIBS
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-            PBX_PYTHONDEV=1
-            PYTHONDEV_INCLUDE=$(echo ${PYTHONDEV_CFLAGS} | $SED -e "s|-std=c99||g")
-            PYTHONDEV_LIB="$PYTHONDEV_LIBS"
-
-printf "%s\n" "#define HAVE_PYTHONDEV 1" >>confdefs.h
-
-
-fi
-   fi
-
-         # The PJProject offers a C extension to Python. That wrapper is used by the
-         # Asterisk Test Framework, which requires Asterisk to be in Developer Mode.
-         # However, the used wrapper (called 'PJSUA Python') is deprecated and was not
-         # ported from Python 2.7 to Python 3.x. This is confirmed; it simply does not
-         # build. For more see <http://www.pjsip.org/trac/wiki/Python_SIP_Tutorial>.
-         # Therefore, the C libraries for Python 3 are of no help in Asterisk:
-         #AST_PKG_CONFIG_CHECK([PYTHONDEV], [python3])
-      fi
-   fi
 fi


@@ -40411,12 +40125,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                PORTAUDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "portaudio-2.0" 2>&1`
+	        PORTAUDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "portaudio-2.0" 2>&1`
         else
-                PORTAUDIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "portaudio-2.0" 2>&1`
+	        PORTAUDIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "portaudio-2.0" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$PORTAUDIO_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$PORTAUDIO_PKG_ERRORS" >&5


             PBX_PORTAUDIO=0
@@ -40430,8 +40144,8 @@ printf "%s\n" "no" >&6; }


 else
-        PORTAUDIO_CFLAGS=$pkg_cv_PORTAUDIO_CFLAGS
-        PORTAUDIO_LIBS=$pkg_cv_PORTAUDIO_LIBS
+	PORTAUDIO_CFLAGS=$pkg_cv_PORTAUDIO_CFLAGS
+	PORTAUDIO_LIBS=$pkg_cv_PORTAUDIO_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -46764,12 +46478,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                GMIME_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gmime-$ver" 2>&1`
+	        GMIME_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gmime-$ver" 2>&1`
         else
-                GMIME_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gmime-$ver" 2>&1`
+	        GMIME_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gmime-$ver" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$GMIME_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$GMIME_PKG_ERRORS" >&5


             PBX_GMIME=0
@@ -46783,8 +46497,8 @@ printf "%s\n" "no" >&6; }


 else
-        GMIME_CFLAGS=$pkg_cv_GMIME_CFLAGS
-        GMIME_LIBS=$pkg_cv_GMIME_LIBS
+	GMIME_CFLAGS=$pkg_cv_GMIME_CFLAGS
+	GMIME_LIBS=$pkg_cv_GMIME_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -48132,12 +47846,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                GTK2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-2.0" 2>&1`
+	        GTK2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-2.0" 2>&1`
         else
-                GTK2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-2.0" 2>&1`
+	        GTK2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-2.0" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$GTK2_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$GTK2_PKG_ERRORS" >&5


             PBX_GTK2=0
@@ -48151,8 +47865,8 @@ printf "%s\n" "no" >&6; }


 else
-        GTK2_CFLAGS=$pkg_cv_GTK2_CFLAGS
-        GTK2_LIBS=$pkg_cv_GTK2_LIBS
+	GTK2_CFLAGS=$pkg_cv_GTK2_CFLAGS
+	GTK2_LIBS=$pkg_cv_GTK2_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

@@ -48243,12 +47957,12 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd" 2>&1`
+	        SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd" 2>&1`
         else
-                SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd" 2>&1`
+	        SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd" 2>&1`
         fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$SYSTEMD_PKG_ERRORS" >&5
+	# Put the nasty error message in config.log where it belongs
+	echo "$SYSTEMD_PKG_ERRORS" >&5


             PBX_SYSTEMD=0
@@ -48262,8 +47976,8 @@ printf "%s\n" "no" >&6; }


 else
-        SYSTEMD_CFLAGS=$pkg_cv_SYSTEMD_CFLAGS
-        SYSTEMD_LIBS=$pkg_cv_SYSTEMD_LIBS
+	SYSTEMD_CFLAGS=$pkg_cv_SYSTEMD_CFLAGS
+	SYSTEMD_LIBS=$pkg_cv_SYSTEMD_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }

diff --git a/configure.ac b/configure.ac
index 5ea5f05273..4bb4a4e7bd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2566,23 +2566,6 @@ if test "$USE_PJPROJECT" != "no" ; then
          AST_EXT_LIB_CHECK([PJSIP_AUTH_NEW_DIGESTS], [pjsip], [pjsip_auth_get_algorithm_by_type], [pjsip.h], [$PJPROJECT_LIB], [$PJPROJECT_CFLAGS])
       fi
    fi
-
-   if test "x$PBX_PJPROJECT" = "x1" ; then
-      if test "x${AST_DEVMODE}" = "xyes" ; then
-         AC_SUBST([PYTHONDEV_LIB])
-         AC_SUBST([PYTHONDEV_INCLUDE])
-         AST_PKG_CONFIG_CHECK([PYTHONDEV], [python-2.7])
-         AST_PKG_CONFIG_CHECK([PYTHONDEV], [python2])
-         AST_PKG_CONFIG_CHECK([PYTHONDEV], [python])
-         # The PJProject offers a C extension to Python. That wrapper is used by the
-         # Asterisk Test Framework, which requires Asterisk to be in Developer Mode.
-         # However, the used wrapper (called 'PJSUA Python') is deprecated and was not
-         # ported from Python 2.7 to Python 3.x. This is confirmed; it simply does not
-         # build. For more see <http://www.pjsip.org/trac/wiki/Python_SIP_Tutorial>.
-         # Therefore, the C libraries for Python 3 are of no help in Asterisk:
-         #AST_PKG_CONFIG_CHECK([PYTHONDEV], [python3])
-      fi
-   fi
 fi

 AST_EXT_LIB_CHECK([POPT], [popt], [poptStrerror], [popt.h])
diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in
index 6ba8622757..27291cda94 100644
--- a/include/asterisk/autoconfig.h.in
+++ b/include/asterisk/autoconfig.h.in
@@ -827,9 +827,6 @@
 /* Define to 1 if you have the <pwd.h> header file. */
 #undef HAVE_PWD_H

-/* Define if your system has the PYTHONDEV libraries. */
-#undef HAVE_PYTHONDEV
-
 /* Define to 1 if you have the Radius Client library. */
 #undef HAVE_RADIUS

diff --git a/main/Makefile b/main/Makefile
index a91fe8708a..ed99027c09 100644
--- a/main/Makefile
+++ b/main/Makefile
@@ -259,7 +259,6 @@ PJDIR=$(ASTTOPDIR)/$(PJPROJECT_DIR)/source

 PJPROJECT_LDLIBS := \
 -Wl,--whole-archive \
-$(PJSUA_LIB_LDLIB) \
 $(PJSIP_UA_LDLIB) \
 $(PJSIP_SIMPLE_LDLIB) \
 $(PJSIP_LDLIB) \
@@ -314,7 +313,6 @@ ASTPJ_LIB:=libasteriskpj.dylib
 PJPROJECT_SRCDIR := $(ASTTOPDIR)/third-party/pjproject/source
 PJ_TARGET := aarch64-apple-darwin25.2.0
 PJPROJECT_DARWIN_LIBS := \
--force_load $(PJPROJECT_SRCDIR)/pjsip/lib/libpjsua-$(PJ_TARGET).a \
 -force_load $(PJPROJECT_SRCDIR)/pjsip/lib/libpjsip-ua-$(PJ_TARGET).a \
 -force_load $(PJPROJECT_SRCDIR)/pjsip/lib/libpjsip-simple-$(PJ_TARGET).a \
 -force_load $(PJPROJECT_SRCDIR)/pjsip/lib/libpjsip-$(PJ_TARGET).a \
diff --git a/makeopts.in b/makeopts.in
index f7824f3476..bc0d65e84e 100644
--- a/makeopts.in
+++ b/makeopts.in
@@ -245,9 +245,6 @@ PORTAUDIO_LIB=@PORTAUDIO_LIB@
 PRI_INCLUDE=@PRI_INCLUDE@
 PRI_LIB=@PRI_LIB@

-PYTHONDEV_INCLUDE=@PYTHONDEV_INCLUDE@
-PYTHONDEV_LIB=@PYTHONDEV_LIB@
-
 RESAMPLE_INCLUDE=@RESAMPLE_INCLUDE@
 RESAMPLE_LIB=@RESAMPLE_LIB@

diff --git a/third-party/pjproject/Makefile b/third-party/pjproject/Makefile
index 716806e7c1..67d2b22107 100644
--- a/third-party/pjproject/Makefile
+++ b/third-party/pjproject/Makefile
@@ -60,21 +60,9 @@ ifeq ($(SPECIAL_TARGETS),)
         CF := $(filter-out -I%,$(CF))
         ifeq ($(PJPROJECT_BUNDLED_OOT),)
         ifeq ($(AST_DEVMODE),yes)
-            apps := source/pjsip-apps/bin/pjsua-$(TARGET_NAME) source/pjsip-apps/bin/pjsystest-$(TARGET_NAME)
-            TARGETS += $(apps)
-            ifneq ($(PYTHONDEV_LIB),)
-                TARGETS += source/pjsip-apps/src/python/_pjsua.so
-            endif
             CF += -DPJPROJECT_BUNDLED_ASSERTIONS=yes
         endif
         endif
-        MALLOC_DEBUG_LIBS = source/pjsip-apps/lib/libasterisk_malloc_debug.a
-        ifneq ($(findstring darwin,$(OSARCH)),)
-            MALLOC_DEBUG_LDFLAGS = -L$(PJDIR)/pjsip-apps/lib -Wl,-all_load -lasterisk_malloc_debug -Wl,-noall_load
-        else
-             # These are used for all but Darwin
-            MALLOC_DEBUG_LDFLAGS = -L$(PJDIR)/pjsip-apps/lib -Wl,-whole-archive -lasterisk_malloc_debug -Wl,-no-whole-archive
-        endif
         ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS)),)
             CF += -O3
         endif
@@ -216,54 +204,15 @@ pjproject.symbols: $(ALL_LIB_FILES)
 	$(ECHO_PREFIX) Generating symbols
 	$(CMD_PREFIX) $(NM) -Pog $(ALL_LIB_FILES) | $(SED) -n -E -e "s/.+: ([_]?[pP][jJ][^ ]+) .+/\1/gp" | sort -u > pjproject.symbols

-source/pjsip-apps/src/asterisk_malloc_debug.c: patches/asterisk_malloc_debug.c
-	$(ECHO_PREFIX) Copying $< to $@
-	$(CMD_PREFIX) cp -f $< $@
-	-$(CMD_PREFIX) mkdir source/pjsip-apps/lib/ $(REALLY_QUIET)
-
-source/pjsip-apps/lib/asterisk_malloc_debug.o: source/pjsip-apps/src/asterisk_malloc_debug.c | source/pjlib/include/pj/config_site.h source/pjlib/include/pj/asterisk_malloc_debug.h
-	$(ECHO_PREFIX) Compiling asterisk debug malloc stubs
-	$(CMD_PREFIX) $(CC) -fPIC  $(PJ_CFLAGS) -c $< -o $@
-
-source/pjsip-apps/lib/libasterisk_malloc_debug.a: source/pjsip-apps/lib/asterisk_malloc_debug.o
-	$(ECHO_PREFIX) Creating archive $(@F)
-	$(CMD_PREFIX) ar qs $@ $< $(REALLY_QUIET)
-
-$(apps): APP = $(filter pj%,$(subst -, ,$(notdir $@)))
-$(apps): LDFLAGS += $(MALLOC_DEBUG_LDFLAGS)
-$(apps): $(MALLOC_DEBUG_LIBS) pjproject.symbols
-	$(ECHO_PREFIX) Compiling $(APP)
-	$(CMD_PREFIX) +$(MAKE) -C source/pjsip-apps/build $(APP) $(REALLY_QUIET)
-	$(CMD_PREFIX) touch $@
-
-source/pjsip-apps/src/python/_pjsua.o: source/pjsip-apps/src/python/_pjsua.c $(apps)
-	$(ECHO_PREFIX) Compiling python bindings
-	$(CMD_PREFIX) $(CC) -o $@ -c $< $(PYTHONDEV_INCLUDE) $(CFLAGS) $(PJ_CFLAGS)
-
-source/pjsip-apps/src/python/_pjsua.so: LDFLAGS += $(MALLOC_DEBUG_LDFLAGS)
-source/pjsip-apps/src/python/_pjsua.so: source/pjsip-apps/src/python/_pjsua.o
-	$(ECHO_PREFIX) Linking python bindings $(@F)
-	$(CMD_PREFIX) $(CC) -shared -pthread -o $@ $< $(LDFLAGS) $(PJ_LDFLAGS) $(APP_LDLIBS) $(PYTHONDEV_LIB) $(REALLY_QUIET)
-
 _install: _all
 	@if [ ! -d "$(DESTDIR)$(ASTDATADIR)/third-party/pjproject" ]; then \
 		$(INSTALL) -d "$(DESTDIR)$(ASTDATADIR)/third-party/pjproject"; \
 	fi;
-ifneq ($(findstring source/pjsip-apps/bin/pjsua-$(TARGET_NAME),$(TARGETS)),)
-	$(ECHO_PREFIX) Installing apps
-	$(CMD_PREFIX) $(INSTALL) -m 755 source/pjsip-apps/bin/pjsua-$(TARGET_NAME) "$(DESTDIR)$(ASTDATADIR)/third-party/pjproject/pjsua"
-	$(CMD_PREFIX) $(INSTALL) -m 755 source/pjsip-apps/bin/pjsystest-$(TARGET_NAME) "$(DESTDIR)$(ASTDATADIR)/third-party/pjproject/pjsystest"
-endif
-ifneq ($(findstring _pjsua.so,$(TARGETS)),)
-	$(ECHO_PREFIX) Installing python bindings
-	$(CMD_PREFIX) $(INSTALL) -m 755 source/pjsip-apps/src/python/_pjsua.so "$(DESTDIR)$(ASTDATADIR)/third-party/pjproject/"
-	$(CMD_PREFIX) $(INSTALL) -m 644 source/pjsip-apps/src/python/pjsua.py "$(DESTDIR)$(ASTDATADIR)/third-party/pjproject/"
-endif

 all: _all

 uninstall:
-	$(ECHO_PREFIX) Uninstalling apps and python bindings
+	$(ECHO_PREFIX) Uninstalling
 	$(CMD_PREFIX) rm -rf "$(DESTDIR)$(ASTDATADIR)/third-party/pjproject"

 clean:
@@ -271,7 +220,6 @@ clean:
 	+-$(CMD_PREFIX) {\
 		if [ -d source ] ; then  \
 			$(SUBMAKE) -C source clean ;\
-			rm -rf source/pjsip-apps/bin/* ;\
 			$(FIND) source/ '(' -name *.a -or -name *.o -or -name *.so ')' -delete ;\
 		fi ;\
 		rm -rf pjproject.symbols ;\
@@ -286,7 +234,6 @@ distclean: clean
 		else \
 			$(SUBMAKE) -C source distclean ;\
 			rm -rf source/build.mak source/user.mak ;\
-			$(FIND) source/ -name '*asterisk_malloc_debug*' -delete ;\
 			$(FIND) source/ '(' -name '.*.depend' -or -name '.*.astdep' ')' -delete ;\
 		fi \
 		} $(REALLY_QUIET) || :
diff --git a/third-party/pjproject/README-hacking.md b/third-party/pjproject/README-hacking.md
index 078f632275..0641c91fdf 100644
--- a/third-party/pjproject/README-hacking.md
+++ b/third-party/pjproject/README-hacking.md
@@ -134,8 +134,6 @@ repo's .git/info/exclude file...
 ```plain
 **/*.astdep
 **/*asterisk_malloc_debug*
-**/_pjsua.o
-**/_pjsua.so
 ```
 Don't add these to the top-level .gitignore file!  If you do, they'll become
 part of any change you submit upstream.
@@ -168,7 +166,7 @@ you should not run `configure` directly in the pjproject repo.  You won't get
 the proper options applied to be compatible with Asterisk.  You can run
 `make` though.

-Although asterisk_malloc_debug and site_config.h are applied to the pjproject
+Although asterisk_malloc_debug.h and site_config.h are applied to the pjproject
 repo, No patches from the `third-party/pjproject/patches` directory are
 applied.  Since you're probably working off the pjproject master branch,
 the patches aren't needed.  Also, applying the patches would contaminate
@@ -199,9 +197,9 @@ to pjproject's `.git/info/exclude` done above.  You'll
 see new progress messages during the make as the astdep files are
 built.

-* Copies asterisk_malloc_debug.c, asterisk_malloc_debug.h and
-config_site.h from the patches directory into the pjproject source
-tree.  These are also git-ignored by the edit to pjproject's
+* Copies asterisk_malloc_debug.h and config_site.h from the patches
+directory into the pjproject source tree. These are also git-ignored
+by the edit to pjproject's
 `.git/info/exclude` file.

 * Compiles only the out-of-date source files into their respective
diff --git a/third-party/pjproject/dependency_utils b/third-party/pjproject/dependency_utils
index fb221ea2a1..8b5d429767 100755
--- a/third-party/pjproject/dependency_utils
+++ b/third-party/pjproject/dependency_utils
@@ -22,9 +22,6 @@ getlibname() {
 		.pjlib)
 			libfile=libpj
 			;;
-		.pjsua-lib)
-			libfile=libpjsua
-			;;
 		.*)
 			libfile=lib${depprefix#.*}
 			;;
@@ -63,9 +60,6 @@ getpjdepname () {
 		pj)
 			depfile=.pjlib
 			;;
-		pjsua)
-			depfile=.pjsua-lib
-			;;
 		resample)
 			depfile=resample/.libresample
 			;;
diff --git a/third-party/pjproject/patches/asterisk_malloc_debug.c b/third-party/pjproject/patches/asterisk_malloc_debug.c
deleted file mode 100644
index 061bdd4915..0000000000
--- a/third-party/pjproject/patches/asterisk_malloc_debug.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Asterisk -- An open source telephony toolkit.
- *
- * Copyright (C) 2016, Digium, Inc
- *
- * George Joseph <gjoseph@digium.com>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-#define _GNU_SOURCE
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-
-int __ast_repl_asprintf(const char *file, int lineno, const char *func, char **strp, const char *format, ...)
-{
-	va_list ap;
-	int rc = 0;
-
-	va_start(ap, format);
-	rc = vasprintf(strp, format, ap);
-	va_end(ap);
-
-	return rc;
-}
-
-void *__ast_repl_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func)
-{
-	return calloc(nmemb, size);
-}
-
-void __ast_free(void *ptr, const char *file, int lineno, const char *func)
-{
-	free(ptr);
-}
-
-void *__ast_repl_malloc(size_t size, const char *file, int lineno, const char *func)
-{
-	return malloc(size);
-}
-
-void *__ast_repl_realloc(void *ptr, size_t size, const char *file, int lineno, const char *func)
-{
-	return realloc(ptr, size);
-}
-
-char *__ast_repl_strdup(const char *s, const char *file, int lineno, const char *func)
-{
-	return strdup(s);
-}
-
-char *__ast_repl_strndup(const char *s, size_t n, const char *file, int lineno, const char *func)
-{
-	return strndup(s, n);
-}
-
-int __ast_repl_vasprintf(char **strp, const char *format, va_list ap, const char *file, int lineno, const char *func)
-{
-	return vasprintf(strp, format, ap);
-}