| SUMMARY = "An open source implementation of the diameter protocol" |
| DESCRIPTION = "\ |
| freeDiameter is an open source Diameter protocol implementation \ |
| (RFC3588). It provides an extensible platform for deploying a \ |
| Diameter network for your Authentication, Authorization and \ |
| Accounting needs." |
| |
| HOMEPAGE = "http://www.freediameter.net" |
| |
| DEPENDS = "flex bison cmake-native libgcrypt gnutls libidn lksctp-tools virtual/kernel bison-native" |
| |
| PACKAGE_ARCH = "${MACHINE_ARCH}" |
| |
| fd_pkgname = "freeDiameter" |
| |
| SRC_URI = "\ |
| http://www.freediameter.net/hg/${fd_pkgname}/archive/${PV}.tar.gz;downloadfilename=${fd_pkgname}-${PV}.tar.gz \ |
| file://Replace-murmurhash-algorithm-with-Robert-Jenkin-s-ha.patch \ |
| file://freediameter.service \ |
| file://freediameter.init \ |
| ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'file://install_test.patch file://run-ptest file://pass-ptest-env.patch', '', d)} \ |
| file://freeDiameter.conf \ |
| file://0001-libfdcore-sctp.c-update-the-old-sctp-api-check.patch \ |
| " |
| |
| SRC_URI[sha256sum] = "7a537401bd110c606594b7c6be71b993f0ccc73ae151ad68040979286ba4e50e" |
| |
| S = "${WORKDIR}/${fd_pkgname}-${PV}" |
| |
| LICENSE = "BSD-3-Clause" |
| LIC_FILES_CHKSUM = "file://LICENSE;md5=69bdc1d97648a2d35914563fcbbb361a" |
| |
| PTEST_PATH = "${libdir}/${fd_pkgname}/ptest" |
| |
| inherit cmake pkgconfig update-rc.d ptest systemd |
| |
| EXTRA_OECMAKE = " \ |
| -DDEFAULT_CONF_PATH:PATH=${sysconfdir}/${fd_pkgname} \ |
| -DBUILD_DBG_MONITOR:BOOL=ON \ |
| -DBUILD_TEST_APP:BOOL=ON \ |
| -DBUILD_TESTING:BOOL=ON \ |
| -DBUILD_APP_RADGW:BOOL=ON \ |
| -DBUILD_APP_REDIRECT:BOOL=ON \ |
| -DBUILD_TEST_ACCT:BOOL=ON \ |
| -DBUILD_TEST_NETEMUL:BOOL=ON \ |
| -DBUILD_TEST_RT_ANY:BOOL=ON \ |
| -DINSTALL_LIBRARY_SUFFIX:PATH=${baselib} \ |
| -DINSTALL_EXTENSIONS_SUFFIX:PATH=${baselib}/${fd_pkgname} \ |
| -DINSTALL_TEST_SUFFIX:PATH=${PTEST_PATH}-tests \ |
| -DCMAKE_SKIP_RPATH:BOOL=ON \ |
| " |
| # INSTALL_LIBRARY_SUFFIX is relative to CMAKE_INSTALL_PREFIX |
| # specify it on cmd line will fix the SET bug in CMakeList.txt |
| |
| # -DBUILD_APP_ACCT:BOOL=ON This needs POSTGRESQL support |
| |
| # -DBUILD_APP_DIAMEAP:BOOL=ON -DBUILD_APP_SIP:BOOL=ON -DBUILD_TEST_SIP:BOOL=ON |
| # These need MySQL support |
| |
| # -DBUILD_DBG_INTERACTIVE:BOOL=ON This needs SWIG support |
| |
| # -DALL_EXTENSIONS=ON will enable all |
| |
| FD_KEY ?="${BPN}.key" |
| FD_PEM ?= "${BPN}.pem" |
| FD_CA ?= "${BPN}.pem" |
| FD_DH_PEM ?= "${BPN}-dh.pem" |
| FD_HOSTNAME ?= "${MACHINE}" |
| FD_REALM ?= "openembedded.org" |
| |
| do_install:append() { |
| # install the sample configuration files |
| install -d -m 0755 ${D}${sysconfdir}/${fd_pkgname} |
| for i in ${S}/doc/*.conf.sample; do |
| install -m 0644 $i ${D}${sysconfdir}/${fd_pkgname}/ |
| done |
| mv ${D}${sysconfdir}/${fd_pkgname}/freediameter.conf.sample \ |
| ${D}${sysconfdir}/${fd_pkgname}/freeDiameter.conf.sample |
| install -d ${D}${sysconfdir}/freeDiameter |
| install ${WORKDIR}/freeDiameter.conf ${D}${sysconfdir}/${fd_pkgname}/freeDiameter.conf |
| |
| # install daemon init related files |
| install -d -m 0755 ${D}${sysconfdir}/default |
| install -d -m 0755 ${D}${sysconfdir}/init.d |
| install -m 0644 ${S}/contrib/debian/freediameter-daemon.default \ |
| ${D}${sysconfdir}/default/${BPN} |
| install -m 0755 ${WORKDIR}/freediameter.init ${D}${sysconfdir}/init.d/${BPN} |
| |
| # install for systemd |
| install -d ${D}${systemd_system_unitdir} |
| install -m 0644 ${WORKDIR}/freediameter.service ${D}${systemd_system_unitdir} |
| sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_system_unitdir}/*.service |
| |
| cat >> ${D}${sysconfdir}/freeDiameter/freeDiameter.conf <<EOF |
| ## OE specific ## |
| #Identity="${FD_HOSTNAME}"; |
| Identity = "${FD_HOSTNAME}.${FD_REALM}"; |
| Realm = "${FD_REALM}"; |
| Port = 30868; |
| SecPort = 30869; |
| TLS_Cred = "/etc/freeDiameter/${FD_PEM}" , "/etc/freeDiameter/${FD_KEY}"; |
| TLS_CA = "/etc/freeDiameter/${FD_CA}"; |
| TLS_DH_File = "/etc/freeDiameter/${FD_DH_PEM}"; |
| EOF |
| |
| # create self cert |
| openssl req -x509 -config ${STAGING_DIR_NATIVE}/etc/ssl/openssl.cnf -newkey rsa:4096 -sha256 -nodes -out ${D}${sysconfdir}/freeDiameter/${FD_PEM} -keyout ${D}${sysconfdir}/freeDiameter/${FD_KEY} -days 3650 -subj '/CN=${FD_HOSTNAME}.${FD_REALM}' |
| openssl dhparam -out ${D}${sysconfdir}/freeDiameter/${FD_DH_PEM} 1024 |
| |
| } |
| |
| do_install_ptest() { |
| sed -i "s#\(EXTENSIONS_DIR=\).*\$#\1${libdir}/${fd_pkgname}/#" ${D}${PTEST_PATH}/run-ptest |
| mv ${D}${PTEST_PATH}-tests/* ${D}${PTEST_PATH}/ |
| rmdir ${D}${PTEST_PATH}-tests |
| install -m 0644 ${B}/tests/CTestTestfile.cmake ${D}${PTEST_PATH}/ |
| } |
| |
| FILES:${PN}-dbg += "${libdir}/${fd_pkgname}/.debug/*" |
| |
| # include the extensions in main package |
| FILES:${PN} += "${libdir}/${fd_pkgname}/*" |
| |
| RDEPENDS:${PN} = "glib-2.0 gnutls libidn" |
| RDEPENDS:${PN} += "openssl openssl-conf openssl-engines" |
| RRECOMMENDS:${PN} += "kernel-module-tipc kernel-module-sctp" |
| RRECOMMENDS:${PN} += "kernel-module-udp-tunnel kernel-module-ipip" |
| RDEPENDS:${PN}-ptest = "cmake" |
| |
| INITSCRIPT_PACKAGES = "${PN}" |
| INITSCRIPT_NAME:${PN} = "${BPN}" |
| INITSCRIPT_PARAMS$_${PN} = "start 30 . stop 70 0 1 2 3 4 5 6 ." |
| |
| SYSTEMD_SERVICE:${PN} = "freediameter.service" |
| SYSTEMD_AUTO_ENABLE = "disable" |
| |
| CONFFILES:${PN} = "${sysconfdir}/freediameter.conf" |
| |