You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kamailio/cmake/groups.cmake

797 lines
18 KiB

# Kamailio build system Module groups definitions
#
# lists are sets of modules that don't include modules that are in other lists -
# break the lists as needed in order to use them to build desired groups and
# packages
#
# * basic used modules, with no extra dependency (widespread usage)
set(MOD_LIST_BASIC
async
auth
benchmark
blst
cfg_rpc
cfgutils
corex
counters
ctl
debugger
diversion
enum
exec
ipops
kex
mangler
maxfwd
mediaproxy
mqueue
nat_traversal
nathelper
path
pike
pv
ratelimit
rr
rtimer
rtpproxy
sanity
sdpops
siputils
sl
statistics
textops
textopsx
tm
tmx
topoh
xlog
rtpengine
stun
sipt
tcpops
auth_xkeys
smsops
tsilo
cfgt
statsc
topos
topos_htable
sipdump
pv_headers
kemix)
# * extra used modules, with no extra dependency
set(MOD_LIST_EXTRA
avp
auth_diameter
call_control
call_obj
dmq
domainpolicy
msrp
carrierroute
pdb
qos
sca
seas
sms
sst
timer
tmrec
uac_redirect
xhttp
xhttp_rpc
xprint
jsonrpcs
nosip
dmq_usrloc
statsd
rtjson
log_custom
keepalive
ss7ops
acc_diameter
evrexec
file_out
sipjson
lrkproxy
math
posops
xhttp_prom
dlgs
sworker
influxdbc)
# * common modules depending on database
set(MOD_LIST_DB
acc
alias_db
auth_db
avpops
cfg_db
db_text
db_flatstore
db_cluster
dialog
dispatcher
domain
drouting
group
htable
imc
matrix
mohqueue
msilo
mtree
p_usrloc
pdt
permissions
pipelimit
prefix_route
registrar
sipcapture
siptrace
speeddial
sqlops
uac
uri_db
userblocklist
usrloc
secfilter)
# * common modules depending on database, using UID db schema
set(MOD_LIST_DBUID db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags
uid_uri_db)
# * modules for devel purposes
set(MOD_LIST_DEVEL misctest)
# * modules depending on pcre3 library
set(MOD_LIST_PCRE dialplan lcr regex)
# * modules depending on radius client library
set(MOD_LIST_RADIUS acc_radius auth_radius misc_radius peering)
# * modules depending on ldap client library
set(MOD_LIST_LDAP db2_ldap h350 ldap)
# * modules depending on mysql client library
set(MOD_LIST_MYSQL db_mysql)
# * modules depending on postgres client library
set(MOD_LIST_POSTGRES db_postgres)
# * modules depending on unixodbc library
set(MOD_LIST_UNIXODBC db_unixodbc)
# * modules depending on xml2 library
set(MOD_LIST_CPL cplc)
# * modules depending on xml2 library
set(MOD_LIST_XMLDEPS xhttp_pi xmlrpc xmlops)
# * modules depending on net-snmp library
set(MOD_LIST_SNMPSTATS snmpstats)
# * modules depending on expat library
set(MOD_LIST_XMPP xmpp)
# * modules depending on bdb (db4) library
set(MOD_LIST_BERKELEY db_berkeley)
# * modules depending on curl library
set(MOD_LIST_UTILS utils http_client lost slack)
# * modules depending on curl and libevent2 library
set(MOD_LIST_HTTP_ASYNC http_async_client)
# * modules depending on memcache library
set(MOD_LIST_MEMCACHED memcached)
# * modules depending on openssl library
set(MOD_LIST_TLSDEPS crypto tls)
# * modules depending on static openssl library
set(MOD_LIST_TLSA tlsa)
# * modules depending on static wolfssl library
set(MOD_LIST_TLS_WOLFSSL tls_wolfssl)
# * modules depending on openssl library
set(MOD_LIST_OUTBOUND outbound)
# * modules depending on openssl and unistring library
set(MOD_LIST_WEBSOCKET websocket)
# * modules depending on libval-threads libcrypto libsres libpthread
set(MOD_LIST_DNSSEC dnssec)
# * modules depending on libsctp
set(MOD_LIST_SCTP sctp)
# * modules depending on openssl library
set(MOD_LIST_AUTHEPH auth_ephemeral)
# * modules related to SIMPLE presence extensions
set(MOD_LIST_PRESENCE
presence
presence_conference
presence_dfks
presence_dialoginfo
presence_mwi
presence_profile
presence_reginfo
presence_xml
pua
pua_bla
pua_dialoginfo
pua_reginfo
pua_rpc
pua_usrloc
pua_xmpp
rls
xcap_client
xcap_server)
# * modules depending on lua library
set(MOD_LIST_LUA app_lua)
# * modules depending on perl library
set(MOD_LIST_PERLDEPS app_perl db_perlvdb)
# * modules depending on python library
set(MOD_LIST_PYTHON app_python)
# * modules depending on python3 library
set(MOD_LIST_PYTHON3 app_python3 app_python3s)
# * modules depending on libm (math library - standard system library)
set(MOD_LIST_JSDT app_jsdt)
# * modules depending on ruby library
set(MOD_LIST_RUBY app_ruby app_ruby_proc)
# * modules depending on geoip library
set(MOD_LIST_GEOIP geoip)
# * modules depending on new geoip library
set(MOD_LIST_GEOIP2 geoip2)
# * modules depending on sqlite library
set(MOD_LIST_SQLITE db_sqlite)
# * modules depending on oracle library
set(MOD_LIST_ORACLE db_oracle)
# * modules depending on json library
set(MOD_LIST_JSON json pua_json)
# * modules depending on json (+libevent) library
set(MOD_LIST_JSON_EVENT jsonrpcc)
# * modules depending on jansson library
set(MOD_LIST_JANSSON jansson acc_json)
# * modules depending on jansson (+libevent) library
set(MOD_LIST_JANSSON_EVENT janssonrpcc)
# * modules depending on redis library
set(MOD_LIST_REDIS db_redis ndb_redis topos_redis)
# * modules related to IMS extensions
set(MOD_LIST_IMS
cdp
cdp_avp
ims_dialog
ims_auth
ims_isc
ims_icscf
ims_qos
ims_registrar_pcscf
ims_registrar_scscf
ims_usrloc_pcscf
ims_usrloc_scscf
ims_charging
ims_ocs
ims_diameter_server
ims_ipsec_pcscf)
# * modules depending on java library
set(MOD_LIST_JAVA app_java)
# * modules depending on gzip library
set(MOD_LIST_GZCOMPRESS gzcompress)
# * modules depending on uuid library
set(MOD_LIST_UUID uuid)
# * modules depending on ev library
set(MOD_LIST_EV evapi)
# * modules depending on libjwt library
set(MOD_LIST_JWT jwt)
# * modules depending on libwebsockets library
set(MOD_LIST_LWSC lwsc)
# * modules depending on libstirshaken library
set(MOD_LIST_STIRSHAKEN stirshaken)
# * modules depending on kazoo/rabbitmq
set(MOD_LIST_KAZOO kazoo)
# * modules depending on mongodb
set(MOD_LIST_MONGODB db_mongodb ndb_mongodb)
# * modules depending on redis and event library
set(MOD_LIST_CNXCC cnxcc)
# * modules depending on erlang library
set(MOD_LIST_ERLANG erlang)
# * modules depending on systemd library
set(MOD_LIST_SYSTEMD log_systemd systemdops)
# * modules depending on libnsq (+libev libevbuffsock libcurl libjson-c) library
set(MOD_LIST_NSQ nsq)
# * modules depending on librabbitmq library
set(MOD_LIST_RABBITMQ rabbitmq)
# * modules depending on libphonenumber library
set(MOD_LIST_PHONENUM phonenum)
# * modules depending on rdkafka library
set(MOD_LIST_KAFKA kafka)
# * modules depending on mqtt mosquitto and ev library
set(MOD_LIST_MQTT mqtt)
# * modules depending on nats and ev library
set(MOD_LIST_NATS nats)
# * modules depending on ruxc library
set(MOD_LIST_RUXC ruxc)
# * modules depending on microhttpd library
set(MOD_LIST_MICROHTTPD microhttpd)
# * modules depending on nghttp2 library
set(MOD_LIST_NGHTTP2 nghttp2)
# * modules depending on libgcrypt library
set(MOD_LIST_GCRYPT gcrypt)
# * modules depending on secsipid library
set(MOD_LIST_SECSIPID secsipid secsipid_proc)
# * modules depending on oRTP and mediastreamer2 libraries
set(MOD_LIST_RTP_MEDIA_SERVER rtp_media_server)
# * all modules
set(MOD_LIST_ALL
${MOD_LIST_BASIC}
${MOD_LIST_EXTRA}
${MOD_LIST_DB}
${MOD_LIST_DBUID}
${MOD_LIST_DEVEL}
${MOD_LIST_PCRE}
${MOD_LIST_RADIUS}
${MOD_LIST_LDAP}
${MOD_LIST_MYSQL}
${MOD_LIST_POSTGRES}
${MOD_LIST_UNIXODBC}
${MOD_LIST_XMLDEPS}
${MOD_LIST_PERLDEPS}
${MOD_LIST_CPL}
${MOD_LIST_XMPP}
${MOD_LIST_BERKELEY}
${MOD_LIST_UTILS}
${MOD_LIST_MEMCACHED}
${MOD_LIST_TLSDEPS}
${MOD_LIST_WEBSOCKET}
${MOD_LIST_SNMPSTATS}
${MOD_LIST_PRESENCE}
${MOD_LIST_LUA}
${MOD_LIST_PYTHON}
${MOD_LIST_PYTHON3}
${MOD_LIST_RUBY}
${MOD_LIST_GEOIP}
${MOD_LIST_SQLITE}
${MOD_LIST_JSON}
${MOD_LIST_JSON_EVENT}
${MOD_LIST_REDIS}
${MOD_LIST_IMS}
${MOD_LIST_ORACLE}
${MOD_LIST_OUTBOUND}
${MOD_LIST_JAVA}
${MOD_LIST_DNSSEC}
${MOD_LIST_SCTP}
${MOD_LIST_AUTHEPH}
${MOD_LIST_GZCOMPRESS}
${MOD_LIST_UUID}
${MOD_LIST_EV}
${MOD_LIST_KAZOO}
${MOD_LIST_MONGODB}
${MOD_LIST_CNXCC}
${MOD_LIST_JANSSON}
${MOD_LIST_JANSSON_EVENT}
${MOD_LIST_GEOIP2}
${MOD_LIST_ERLANG}
${MOD_LIST_SYSTEMD}
${MOD_LIST_HTTP_ASYNC}
${MOD_LIST_NSQ}
${MOD_LIST_RABBITMQ}
${MOD_LIST_JSDT}
${MOD_LIST_PHONENUM}
${MOD_LIST_KAFKA}
${MOD_LIST_MQTT}
${MOD_LIST_NATS}
${MOD_LIST_RUXC}
${MOD_LIST_SECSIPID}
${MOD_LIST_JWT}
${MOD_LIST_LWSC}
${MOD_LIST_STIRSHAKEN}
${MOD_LIST_TLSA}
${MOD_LIST_TLS_WOLFSSL}
${MOD_LIST_MICROHTTPD}
${MOD_LIST_NGHTTP2}
${MOD_LIST_GCRYPT}
${MOD_LIST_RTP_MEDIA_SERVER})
# sort the list
list(SORT MOD_LIST_ALL)
# --- Groups defined for source code compilation ###
# groups are sets of modules selected by compile target interest (should be
# built by combining lists)
# Modules in this group are the default compiled modules due to no external
# compile or link dependencies
set(MODULE_GROUP_ALL ${MOD_LIST_ALL})
set(MODULE_GROUP_DEFAULT ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DB}
${MOD_LIST_DBUID} ${MOD_LIST_DEVEL} ${MOD_LIST_JSDT})
# Modules in this group are the default compiled modules due to no
# internal/external compile or link dependencies
# module_group_standard=$(mod_list_basic) $(mod_list_extra) \ $(mod_list_devel)
# $(mod_list_jsdt)
set(MODULE_GROUP_STANDARD ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DEVEL}
${MOD_LIST_JSDT})
# Modules in this group are considered a standard part due to widespread usage,
# but they have dependencies that must be satisfied for compilation (e.g., lcr,
# radius, presence, tls, ...). module_group_common=$(mod_list_db)
# $(mod_list_dbuid) \ $(mod_list_pcre) $(mod_list_radius) \ $(mod_list_xmldeps)
# $(mod_list_presence) \ $(mod_list_tlsdeps)
set(MODULE_GROUP_COMMON
${MOD_LIST_DB}
${MOD_LIST_DBUID}
${MOD_LIST_PCRE}
${MOD_LIST_RADIUS}
${MOD_LIST_XMLDEPS}
${MOD_LIST_PRESENCE}
${MOD_LIST_TLSDEPS})
# For db use (db modules, excluding drivers) module_group_db=$(mod_list_db)
set(MODULE_GROUP_DB ${MOD_LIST_DB})
# For mysql module_group_mysql_driver=$(mod_list_mysql)
# module_group_mysql=$(module_group_mysql_driver) $(module_group_db)
set(MODULE_GROUP_MYSQL_DRIVER ${MOD_LIST_MYSQL})
set(MODULE_GROUP_MYSQL ${MODULE_GROUP_MYSQL_DRIVER} ${MODULE_GROUP_DB})
# For postgress module_group_postgres_driver=$(mod_list_postgres)
# module_group_postgres=$(module_group_postgres_driver) $(module_group_db)
set(MODULE_GROUP_POSTGRES_DRIVER ${MOD_LIST_POSTGRES})
set(MODULE_GROUP_POSTGRES ${MODULE_GROUP_POSTGRES_DRIVER} ${MODULE_GROUP_DB})
# For sqlite module_group_sqlite_driver=$(mod_list_sqlite)
# module_group_sqlite=$(module_group_sqlite_driver) $(module_group_db)
set(MODULE_GROUP_SQLITE_DRIVER ${MOD_LIST_SQLITE})
set(MODULE_GROUP_SQLITE ${MODULE_GROUP_SQLITE_DRIVER} ${MODULE_GROUP_DB})
# For radius
set(MODULE_GROUP_RADIUS ${MODULE_LIST_RADIUS})
# For presence kamailio modules
set(MODULE_GROUP_PRESENCE ${MOD_LIST_PRESENCE})
# For cassandra
set(MODULE_GROUP_CASSANDRA_DRIVER ${MODULE_LIST_CASSANDRA})
set(MODULE_GROUP_CASSANDRA ${MODULE_GROUP_CASSANDRA_DRIVER} ${MODULE_GROUP_DB})
# For all modules not compiled by default
# list(FILTER MOD_LIST_ALL EXCLUDE REGEX "${MODULE_GROUP_DEFAULT}")
# for all protocols (excl. local ones such as unix, tcp, etc.)
set(AVAILABLE_GROUPS ALL DEFAULT STANDARD COMMON)
# --- Groups defined for pacKaging ###
# Standard modules in main pkg
set(MODULE_GROUP_KSTANDARD ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DB}
${MOD_LIST_DBUID} ${MOD_LIST_PCRE} ${MOD_LIST_JSDT})
# Standard modules without any dependencies (such as pcre)
set(MODULE_GROUP_KMINI ${MOD_LIST_BASIC} ${MOD_LIST_EXTRA} ${MOD_LIST_DB}
${MOD_LIST_DBUID} ${MOD_LIST_JSDT})
# pkg pcre module
set(MODULE_GROUP_KPCRE ${MOD_LIST_PCRE})
# pkg mysql module
set(MODULE_GROUP_KMYSQL ${MOD_LIST_MYSQL})
# pkg postgress module
set(MODULE_GROUP_KPOSTGRES ${MOD_LIST_POSTGRES})
# pkg cpl module
set(MODULE_GROUP_KCPL ${MOD_LIST_CPL})
# pkg xml modules
set(MODULE_GROUP_KXML ${MOD_LIST_XMLDEPS})
# pkg radius modules
set(MODULE_GROUP_KRADIUS ${MOD_LIST_RADIUS})
# pkg unixodbc module
set(MODULE_GROUP_KUNIXODBC ${MOD_LIST_UNIXODBC})
# pkg perl module
set(MODULE_GROUP_KPERL ${MOD_LIST_PERLDEPS})
# pkg snmpstats module
set(MODULE_GROUP_KSNMPSTATS ${MOD_LIST_SNMPSTATS})
# pkg xmpp module
set(MODULE_GROUP_KXMPP ${MOD_LIST_XMPP})
# pkg berkeley module
set(MODULE_GROUP_KBERKELEY ${MOD_LIST_BERKELEY})
# pkg ldap modules
set(MODULE_GROUP_KLDAP ${MOD_LIST_LDAP})
# pkg utils module
set(MODULE_GROUP_KUTILS ${MOD_LIST_UTILS})
# pkg https_async module
set(MODULE_GROUP_KHTTP_ASYNC ${MOD_LIST_HTTP_ASYNC})
# pkg memcached module
set(MODULE_GROUP_KMEMCACHED ${MOD_LIST_MEMCACHED})
# pkg tls module
set(MODULE_GROUP_KTLS_BASIC ${MOD_LIST_TLSDEPS})
# pkg tls module with curl
if(KTLS_INCLUDE_TLSA)
set(MODULE_GROUP_KTLS ${MOD_LIST_TLSDEPS} ${MOD_LIST_TLSA})
else()
set(MODULE_GROUP_KTLS ${MOD_LIST_TLSDEPS})
set(MODULE_GROUP_KTLSA ${MOD_LIST_TLSA})
endif()
# pkg tls_wolfssl module
set(MODULE_GROUP_KTLS_WOLFSSL ${MOD_LIST_TLS_WOLFSSL})
# pkg websocket module
set(MODULE_GROUP_KWEBSOCKET ${MOD_LIST_WEBSOCKET})
# pkg presence modules
set(MODULE_GROUP_KPRESENCE ${MOD_LIST_PRESENCE})
# pkg lua module
set(MODULE_GROUP_KLUA ${MOD_LIST_LUA})
# pkg python module
set(MODULE_GROUP_KPYTHON ${MOD_LIST_PYTHON})
# pkg python3 module
set(MODULE_GROUP_KPYTHON3 ${MOD_LIST_PYTHON3})
# pkg ruby module
set(MODULE_GROUP_KRUBY ${MOD_LIST_RUBY})
# pkg geoip module
set(MODULE_GROUP_KGEOIP ${MOD_LIST_GEOIP})
# pkg geoip2 module
set(MODULE_GROUP_KGEOIP2 ${MOD_LIST_GEOIP2})
# pkg sqlite module
set(MODULE_GROUP_KSQLITE ${MOD_LIST_SQLITE})
# K json modules
set(MODULE_GROUP_KJSON_BASIC ${MOD_LIST_JSON})
# K json modules with libevent
set(MODULE_GROUP_KJSON ${MOD_LIST_JSON} ${MOD_LIST_JSON_EVENT})
# K jansson modules
set(MODULE_GROUP_KJANSSON_BASIC ${MOD_LIST_JANSSON})
# K jansson modules with libevent
set(MODULE_GROUP_KJANSSON ${MOD_LIST_JANSSON} ${MOD_LIST_JANSSON_EVENT})
# pkg redis module
set(MODULE_GROUP_KREDIS ${MOD_LIST_REDIS})
# pkg IMS modules
set(MODULE_GROUP_KIMS ${MOD_LIST_IMS})
# pkg outbound module
set(MODULE_GROUP_KOUTBOUND ${MOD_LIST_OUTBOUND})
# pkg java module
set(MODULE_GROUP_KJAVA ${MOD_LIST_JAVA})
# pkg dnssec module
set(MODULE_GROUP_KDNSSEC ${MOD_LIST_DNSSEC})
# pkg sctp module
set(MODULE_GROUP_KSCTP ${MOD_LIST_SCTP})
# pkg auth_ephemeral module
set(MODULE_GROUP_KAUTHEPH ${MOD_LIST_AUTHEPH})
# pkg gzcompress module
set(MODULE_GROUP_KGZCOMPRESS ${MOD_LIST_GZCOMPRESS})
# pkg uuid module
set(MODULE_GROUP_KUUID ${MOD_LIST_UUID})
# pkg libev modules
set(MODULE_GROUP_KEV ${MOD_LIST_EV})
# pkg jwt module
set(MODULE_GROUP_KJWT ${MOD_LIST_JWT})
# pkg lwsc module
set(MODULE_GROUP_KLWSC ${MOD_LIST_LWSC})
# pkg stirshaken module
set(MODULE_GROUP_KSTIRSHAKEN ${MOD_LIST_STIRSHAKEN})
# pkg kazoo module
set(MODULE_GROUP_KKAZOO ${MOD_LIST_KAZOO})
# pkg mongodb modules
set(MODULE_GROUP_KMONGODB ${MOD_LIST_MONGODB})
# pkg cnxcc module
set(MODULE_GROUP_KCNXCC ${MOD_LIST_CNXCC})
# pkg erlang module
set(MODULE_GROUP_KERLANG ${MOD_LIST_ERLANG})
# pkg systemd module
set(MODULE_GROUP_KSYSTEMD ${MOD_LIST_SYSTEMD})
# K nsq modules
set(MODULE_GROUP_KNSQ ${MOD_LIST_NSQ})
# K rabbitmq modules
set(MODULE_GROUP_KRABBITMQ ${MOD_LIST_RABBITMQ})
# K phonenumber modules
set(MODULE_GROUP_KPHONENUM ${MOD_LIST_PHONENUM})
# K kafka modules
set(MODULE_GROUP_KKAFKA ${MOD_LIST_KAFKA})
# K mqtt modules
set(MODULE_GROUP_KMQTT ${MOD_LIST_MQTT})
# K nats modules
set(MODULE_GROUP_KNATS ${MOD_LIST_NATS})
# K ruxc modules
set(MODULE_GROUP_KRUXC ${MOD_LIST_RUXC})
# K microhttpd module
set(MODULE_GROUP_KMICROHTTPD ${MOD_LIST_MICROHTTPD})
# K nghttp2 module
set(MODULE_GROUP_KNGHTTP2 ${MOD_LIST_NGHTTP2})
# K gcrypt module
set(MODULE_GROUP_KGCRYPT ${MOD_LIST_GCRYPT})
# K secsipid modules
set(MODULE_GROUP_KSECSIPID ${MOD_LIST_SECSIPID})
# K rtp_media_server modules
set(MODULE_GROUP_KRTP_MEDIA_SERVER ${MOD_LIST_RTP_MEDIA_SERVER})
# list of static modules
set(STATIC_MODULES "")
list(
APPEND
AVAILABLE_GROUPS
KSTANDARD
KMINI
KPCRE
KMYSQL
KPOSTGRES
KCPL
KXML
KRADIUS
KUNIXODBC
KPERL
KSNMPSTATS
KXMPP
KBERKELEY
KLDAP
KUTILS
KHTTP_ASYNC
KMEMCACHED
KTLS_BASIC
KTLS
KTLS_WOLFSSL
KWEBSOCKET
KPRESENCE
KLUA
KPYTHON
KPYTHON3
KRUBY
KGEOIP
KGEOIP2
KSQLITE
KJSON_BASIC
KJSON
KJANSSON_BASIC
KJANSSON
KREDIS
KIMS
KOUTBOUND
KJAVA
KDNSSEC
KSCTP
KAUTHEPH
KGZCOMPRESS
KUUID
KEV
KJWT
KLWSC
KSTIRSHAKEN
KKAZOO
KMONGODB
KCNXCC
KERLANG
KSYSTEMD
KNSQ
KRABBITMQ
KPHONENUM
KKAFKA
KMQTT
KNATS
KRUXC
KMICROHTTPD
KNGHTTP2
KGCRYPT
KSECSIPID
KRT_MEDIA_SERVER)
# # Option to allow the user to define which group to build
# set(SELECTED_PACKAGE_GROUP
# ""
# CACHE STRING "Select the package group to build from"
# PARENT_SCOPE
# )
# set_property(CACHE SELECTED_PACKAGE_GROUP PROPERTY STRINGS ${PACKAGE_GROUPS})
# # Ensure the selected group is valid
# if(NOT SELECTED_PACKAGE_GROUP IN_LIST PACKAGE_GROUPS)
# message(
# FATAL_ERROR
# "Invalid package group selected: ${SELECTED_PACKAGE_GROUP}. Please choose from: ${PACKAGE_GROUPS}."
# )
# endif()
# message(STATUS "Building package group: ${SELECTED_PACKAGE_GROUP}")