[Buildroot] [PATCH] package/asterisk: update to 22.3.0

Waldemar Brodkorb wbx at openadk.org
Thu Apr 3 03:42:51 UTC 2025


Hi Arnout,

thanks for the review.

Arnout Vandecappelle wrote,
> 
> On 01/04/2025 08:45, Waldemar Brodkorb wrote:
> > For a changelog see here:
> > https://downloads.asterisk.org/pub/telephony/asterisk/ChangeLog-22.3.0.md
> > 
> > Changes made by the package maintainer:
> > - add systemd service file
> > - run asterisk as non-root user asterisk
> > - build pjsip as bundled source code, but download it like
> >    sound files
> > - remove unused configure options
> > 
> > See here for the reason behind using the bundled pjsip:
> > https://github.com/asterisk/asterisk/issues/671
> 
>  It remains super weird that the same source works fine if built within
> asterisk, but not if it's built externally...
> 
>  It's not clear to me from the information in the ticket if you tried
> finding what is different about the two cases. They suggested that asterisk
> uses a different config file, could that be what happens? It could also be
> different compiler options. Or it could be that we build libpjsip itself
> incorrectly. It could be a matter of a different struct alignment or
> something like that, because of different compilation options. But then I
> don't understand that other libraries don't have the same issue...

I tried different things, but none worked. I tried the site config
thing and added the patches from asterisk to pjsip, but that didn't
worked. It is weird, you are right.
 
> > Signed-off-by: Waldemar Brodkorb <wbx at openadk.org>
> > ---
> >   package/asterisk/asterisk.hash    |  4 +++-
> >   package/asterisk/asterisk.mk      | 28 +++++++++++++------------
> >   package/asterisk/asterisk.service | 34 +++++++++++++++++++++++++++++++
> >   3 files changed, 52 insertions(+), 14 deletions(-)
> >   create mode 100644 package/asterisk/asterisk.service
> > 
> > diff --git a/package/asterisk/asterisk.hash b/package/asterisk/asterisk.hash
> > index 8c8ebddc47..7b28624921 100644
> > --- a/package/asterisk/asterisk.hash
> > +++ b/package/asterisk/asterisk.hash
> > @@ -1,6 +1,8 @@
> >   # Locally computed
> > -sha256  94647b3f887f7dc91df51a4f88dfc3a07cc279bef86b8d05aa72f0c49d187571  asterisk-20.11.1.tar.gz
> > +sha256  4cc403c8885d4aed3956dfb75d315d3e5bcc129eb9cd47c156d3b12ecceed1ba  asterisk-22.3.0.tar.gz
> > +# Locally computed
> > +sha256  58bb83cec4d431f48d006e455d821668450f8cf6b6c95f090def47062fa3a60c  pjproject-2.15.1.tar.bz2
> >   # sha1 from: http://downloads.asterisk.org/pub/telephony/sounds/releases
> >   # sha256 locally computed
> >   sha1  721c512feaea102700d5bdce952fdc0bb29dc640  asterisk-core-sounds-en-gsm-1.6.1.tar.gz
> > diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk
> > index ec67632ef4..88bb6902a6 100644
> > --- a/package/asterisk/asterisk.mk
> > +++ b/package/asterisk/asterisk.mk
> > @@ -4,15 +4,17 @@
> >   #
> >   ################################################################################
> > -ASTERISK_VERSION = 20.11.1
> > +ASTERISK_VERSION = 22.3.0
> >   # Use the github mirror: it's an official mirror maintained by Digium, and
> >   # provides tarballs, which the main Asterisk git tree (behind Gerrit) does not.
> >   ASTERISK_SITE = $(call github,asterisk,asterisk,$(ASTERISK_VERSION))
> > +ASTERISK_PJSIP_URL = https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/2.15.1/
> 
>  Could we use LIBPJSIP_SITE and LIBPJSIP_SOURCE instead?
> 
> 
> >   ASTERISK_SOUNDS_BASE_URL = http://downloads.asterisk.org/pub/telephony/sounds/releases
> >   ASTERISK_EXTRA_DOWNLOADS = \
> >   	$(ASTERISK_SOUNDS_BASE_URL)/asterisk-core-sounds-en-gsm-1.6.1.tar.gz \
> > -	$(ASTERISK_SOUNDS_BASE_URL)/asterisk-moh-opsound-wav-2.03.tar.gz
> > +	$(ASTERISK_SOUNDS_BASE_URL)/asterisk-moh-opsound-wav-2.03.tar.gz \
> > +	$(ASTERISK_PJSIP_URL)/pjproject-2.15.1.tar.bz2
> >   ASTERISK_LICENSE = GPL-2.0, BSD-3-Clause (SHA1, resample), BSD-4-Clause (db1-ast)
> >   ASTERISK_LICENSE_FILES = \
> > @@ -76,7 +78,6 @@ ASTERISK_CONF_OPTS = \
> >   	--without-neon29 \
> >   	--without-newt \
> >   	--without-openr2 \
> > -	--without-osptk \
> >   	--without-postgres \
> >   	--without-popt \
> >   	--without-resample \
> > @@ -94,10 +95,9 @@ ASTERISK_CONF_OPTS = \
> >   	--with-libjwt="$(STAGING_DIR)/usr" \
> >   	--with-libxml2 \
> >   	--with-libedit="$(STAGING_DIR)/usr" \
> > -	--without-pjproject-bundled \
> > -	--with-pjproject="$(STAGING_DIR)/usr" \
> > +	--with-pjproject-bundled \
> >   	--with-sqlite3="$(STAGING_DIR)/usr" \
> > -	--with-sounds-cache=$(ASTERISK_DL_DIR)
> > +	--with-download-cache=$(ASTERISK_DL_DIR)
> 
>  Actually, we could use LIBPJSIP_DL_DIR here... But then we have a problem
> with the sounds cache of course...
> 
> 
>  I think we should have a comment here to explain that we're using the exact
> same source as our libpjsip package, but just rebuild it. With a reference
> to the bug report.

Added in v2.
 
> >   # avcodec are from ffmpeg. There is virtually zero chance this could
> >   # even work; asterisk is looking for ffmpeg/avcodec.h which has not
> > @@ -135,13 +135,6 @@ else
> >   ASTERISK_CONF_OPTS += --without-gsm
> >   endif
> > -ifeq ($(BR2_PACKAGE_ALSA_LIB),y)
> > -ASTERISK_DEPENDENCIES += alsa-lib
> > -ASTERISK_CONF_OPTS += --with-asound
> > -else
> > -ASTERISK_CONF_OPTS += --without-asound
> 
>  Commit message doesn't explain why this is removed (ALSA no longer
> supported? Is a bit surprising...)

Added in v2. They removed chan_alsa upstream.
 
> > -endif
> > -
> >   ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)
> >   ASTERISK_DEPENDENCIES += bluez5_utils
> >   ASTERISK_CONF_OPTS += --with-bluetooth
> > @@ -299,6 +292,15 @@ ASTERISK_INSTALL_TARGET_OPTS = \
> >   	LDCONFIG=true \
> >   	install samples
> > +define ASTERISK_USERS
> > +	asterisk -1 asterisk -1 * /usr/lib/asterisk - - asterisk user
> > +endef
> > +
> > +define ASTERISK_INSTALL_INIT_SYSTEMD
> > +	$(INSTALL) -D -m 644 package/asterisk/asterisk.service \
> > +		$(TARGET_DIR)/usr/lib/systemd/system/asterisk.service
> > +endef
> > +
> >   $(eval $(autotools-package))
> >   #-------------------------------------------------------------------------------
> > diff --git a/package/asterisk/asterisk.service b/package/asterisk/asterisk.service
> > new file mode 100644
> > index 0000000000..aeb01703ac
> > --- /dev/null
> > +++ b/package/asterisk/asterisk.service
> > @@ -0,0 +1,34 @@
> > +[Unit]
> > +Description=Asterisk PBX and telephony daemon.
> > +After=network.target
> > +#include these if asterisk need to bind to a specific IP (other than 0.0.0.0)
> > +#Wants=network-online.target
> > +#After=network-online.target network.target
> > +
> > +[Service]
> > +Type=simple
> > +Environment=HOME=/usr/lib/asterisk
> > +#if systemd do not provide hostname and you need to use ${ENV(HOSTNAME)}
> > +#Environment=HOSTNAME=%H
> > +WorkingDirectory=/usr/lib/asterisk
> > +User=asterisk
> > +Group=asterisk
> > +ExecStart=/usr/sbin/asterisk -mqf -C /etc/asterisk/asterisk.conf
> > +ExecReload=/usr/sbin/asterisk -rx 'core reload'
> > +#if /var/run is a tmpfs, this will create /var/run/asterisk on start
> > +RuntimeDirectory=asterisk
> > +
> > +#Nice=0
> > +#UMask=0002
> > +LimitCORE=infinity
> > +#LimitNOFILE=
> 
>  Why are all those things commented out?
> 
>  Hang on, is this identical to contrib/systemd/asterisk.service? The you
> should just use that. Or if it is modified, then make sure you refer where
> it originally came from and what is changed. Actually, it should probably
> have a license header.

It is based on contrib/systemd/asterisk.service, but I needed to
change Type from notify to simple, as the former didn't worked for
me on my target.
 
 best regards
  Waldemar


More information about the buildroot mailing list