On 10/31/2017 06:21 AM, Joe MacDonald wrote: > [Re: [oe] [meta-networking][PATCH 3/6] freediameter: add new recipe] On > 17.10.30 (Mon 17:47) akuster808 wrote: > >> >> On 10/30/2017 11:11 AM, Joe MacDonald wrote: >>> From: Jackie Huang <jackie.hu...@windriver.com> >>> >>> freeDiameter is an open source Diameter protocol >>> implementation. It provides an extensible platform >>> for deploying a Diameter network for your Authentication, >>> Authorization and Accounting needs. >>> >>> Signed-off-by: Jackie Huang <jackie.hu...@windriver.com> >>> Signed-off-by: Joe MacDonald <joe_macdon...@mentor.com> >> If you want this in meta-networking, please send a patch to remove it >> from meta-security. > I never even thought of looking for it in meta-security. Since I've > always encountered it in the CGL space it just never occurred, and since > the patch was still apparently active in patchwork, I just assumed it'd > been lost. > > Do you (or anyone else using the layers) have a preference for what we > do with the recipe? Meta-networking is fine by me.
-Armin > Unfortunately at a glance they look at least a bit > different from each other, so if I'm going to include it in > meta-networking I'll want to review what's in meta-security first to > determine what changes are appropriate to the meta-networking version. > > -J. > >> - armin >>> --- >>> ...murhash-algorithm-with-Robert-Jenkin-s-ha.patch | 223 >>> +++++++++++++++++++++ >>> .../freediameter/files/freediameter.init | 72 +++++++ >>> .../freediameter/files/freediameter.service | 11 + >>> .../freediameter/files/install_test.patch | 22 ++ >>> .../freediameter/files/pass-ptest-env.patch | 72 +++++++ >>> .../recipes-protocols/freediameter/files/run-ptest | 11 + >>> .../freediameter/freediameter.inc | 98 +++++++++ >>> .../freediameter/freediameter_1.2.1.bb | 7 + >>> 8 files changed, 516 insertions(+) >>> create mode 100644 >>> meta-networking/recipes-protocols/freediameter/files/Replace-murmurhash-algorithm-with-Robert-Jenkin-s-ha.patch >>> create mode 100755 >>> meta-networking/recipes-protocols/freediameter/files/freediameter.init >>> create mode 100644 >>> meta-networking/recipes-protocols/freediameter/files/freediameter.service >>> create mode 100644 >>> meta-networking/recipes-protocols/freediameter/files/install_test.patch >>> create mode 100644 >>> meta-networking/recipes-protocols/freediameter/files/pass-ptest-env.patch >>> create mode 100644 >>> meta-networking/recipes-protocols/freediameter/files/run-ptest >>> create mode 100644 >>> meta-networking/recipes-protocols/freediameter/freediameter.inc >>> create mode 100644 >>> meta-networking/recipes-protocols/freediameter/freediameter_1.2.1.bb >>> >>> diff --git >>> a/meta-networking/recipes-protocols/freediameter/files/Replace-murmurhash-algorithm-with-Robert-Jenkin-s-ha.patch >>> >>> b/meta-networking/recipes-protocols/freediameter/files/Replace-murmurhash-algorithm-with-Robert-Jenkin-s-ha.patch >>> new file mode 100644 >>> index 0000000..71a5a1a >>> --- /dev/null >>> +++ >>> b/meta-networking/recipes-protocols/freediameter/files/Replace-murmurhash-algorithm-with-Robert-Jenkin-s-ha.patch >>> @@ -0,0 +1,223 @@ >>> +Replace murmurhash algorithm with Robert Jenkin's hash algorithm >>> + >>> +Upstream-Status: Pending >>> + >>> +From test result, murmurhash algorithm does not work in big endian >>> +processor, so replace it with Robert Jenkin's hash which has worked >>> +in linux kernel for many years and has more adaptability. >>> + >>> +Signed-off-by: Roy.Li <rongqing...@windriver.com> >>> +--- >>> + libfdproto/ostr.c | 192 >>> +++++++++++++++++++++-------------------------------- >>> + 1 file changed, 74 insertions(+), 118 deletions(-) >>> + >>> +diff --git a/libfdproto/ostr.c b/libfdproto/ostr.c >>> +index 8f29b48..ce1f4dd 100644 >>> +--- a/libfdproto/ostr.c >>> ++++ b/libfdproto/ostr.c >>> +@@ -430,128 +430,84 @@ after_proto: >>> + >>> + >>> + >>> /********************************************************************************************************/ >>> +-/* Hash function -- credits to Austin Appleby, thank you ^^ */ >>> +-/* See http://murmurhash.googlepages.com for more information on this >>> function */ >>> +- >>> +-/* the strings are NOT always aligned properly (ex: received in RADIUS >>> message), so we use the aligned MurmurHash2 function as needed */ >>> +-#define _HASH_MIX(h,k,m) { k *= m; k ^= k >> r; k *= m; h *= m; h ^= k; } >>> +-uint32_t fd_os_hash ( uint8_t * string, size_t len ) >>> ++/* >>> ++ * Robert Jenkin's hash function. >>> ++ * http://burtleburtle.net/bob/hash/evahash.html >>> ++ * This is in the public domain. >>> ++ */ >>> ++#define mix(a, b, c) \ >>> ++ do { \ >>> ++ a = a - b; a = a - c; a = a ^ (c >> 13); \ >>> ++ b = b - c; b = b - a; b = b ^ (a << 8); \ >>> ++ c = c - a; c = c - b; c = c ^ (b >> 13); \ >>> ++ a = a - b; a = a - c; a = a ^ (c >> 12); \ >>> ++ b = b - c; b = b - a; b = b ^ (a << 16); \ >>> ++ c = c - a; c = c - b; c = c ^ (b >> 5); \ >>> ++ a = a - b; a = a - c; a = a ^ (c >> 3); \ >>> ++ b = b - c; b = b - a; b = b ^ (a << 10); \ >>> ++ c = c - a; c = c - b; c = c ^ (b >> 15); \ >>> ++ } while (0) >>> ++ >>> ++unsigned hash_rjenkins(const char *str, unsigned length) >>> + { >>> +- uint32_t hash = len; >>> +- uint8_t * data = string; >>> +- >>> +- const unsigned int m = 0x5bd1e995; >>> +- const int r = 24; >>> +- int align = (long)string & 3; >>> +- >>> +- if (!align || (len < 4)) { >>> +- /* In case data is aligned, MurmurHash2 function */ >>> +- while(len >= 4) >>> +- { >>> +- /* Mix 4 bytes at a time into the hash */ >>> +- uint32_t k = *(uint32_t *)data; /* We don't care about >>> the byte order */ >>> +- >>> +- _HASH_MIX(hash, k, m); >>> +- >>> +- data += 4; >>> +- len -= 4; >>> +- } >>> +- >>> +- /* Handle the last few bytes of the input */ >>> +- switch(len) { >>> +- case 3: hash ^= data[2] << 16; >>> +- case 2: hash ^= data[1] << 8; >>> +- case 1: hash ^= data[0]; >>> +- hash *= m; >>> +- } >>> +- >>> +- } else { >>> +- /* Unaligned data, use alignment-safe slower version */ >>> +- >>> +- /* Pre-load the temp registers */ >>> +- uint32_t t = 0, d = 0; >>> +- switch(align) >>> +- { >>> +- case 1: t |= data[2] << 16; >>> +- case 2: t |= data[1] << 8; >>> +- case 3: t |= data[0]; >>> +- } >>> +- t <<= (8 * align); >>> +- >>> +- data += 4-align; >>> +- len -= 4-align; >>> +- >>> +- /* From this point, "data" can be read by chunks of 4 bytes */ >>> +- >>> +- int sl = 8 * (4-align); >>> +- int sr = 8 * align; >>> +- >>> +- /* Mix */ >>> +- while(len >= 4) >>> +- { >>> +- uint32_t k; >>> +- >>> +- d = *(unsigned int *)data; >>> +- k = (t >> sr) | (d << sl); >>> +- >>> +- _HASH_MIX(hash, k, m); >>> +- >>> +- t = d; >>> +- >>> +- data += 4; >>> +- len -= 4; >>> +- } >>> +- >>> +- /* Handle leftover data in temp registers */ >>> +- d = 0; >>> +- if(len >= align) >>> +- { >>> +- uint32_t k; >>> +- >>> +- switch(align) >>> +- { >>> +- case 3: d |= data[2] << 16; >>> +- case 2: d |= data[1] << 8; >>> +- case 1: d |= data[0]; >>> +- } >>> +- >>> +- k = (t >> sr) | (d << sl); >>> +- _HASH_MIX(hash, k, m); >>> +- >>> +- data += align; >>> +- len -= align; >>> +- >>> +- /* Handle tail bytes */ >>> +- >>> +- switch(len) >>> +- { >>> +- case 3: hash ^= data[2] << 16; >>> +- case 2: hash ^= data[1] << 8; >>> +- case 1: hash ^= data[0]; >>> +- hash *= m; >>> +- }; >>> +- } >>> +- else >>> +- { >>> +- switch(len) >>> +- { >>> +- case 3: d |= data[2] << 16; >>> +- case 2: d |= data[1] << 8; >>> +- case 1: d |= data[0]; >>> +- case 0: hash ^= (t >> sr) | (d << sl); >>> +- hash *= m; >>> +- } >>> +- } >>> +- >>> ++ const unsigned char *k = (const unsigned char *)str; >>> ++ uint32_t a, b, c; /* the internal state */ >>> ++ uint32_t len; /* how many key bytes still need mixing */ >>> ++ >>> ++ /* Set up the internal state */ >>> ++ len = length; >>> ++ a = 0x9e3779b9; /* the golden ratio; an arbitrary value */ >>> ++ b = a; >>> ++ c = 0; /* variable initialization of internal state */ >>> ++ >>> ++ /* handle most of the key */ >>> ++ while (len >= 12) { >>> ++ a = a + (k[0] + ((uint32_t)k[1] << 8) + ((uint32_t)k[2] << 16) + >>> ++ ((uint32_t)k[3] << 24)); >>> ++ b = b + (k[4] + ((uint32_t)k[5] << 8) + ((uint32_t)k[6] << 16) + >>> ++ ((uint32_t)k[7] << 24)); >>> ++ c = c + (k[8] + ((uint32_t)k[9] << 8) + ((uint32_t)k[10] << 16) >>> + >>> ++ ((uint32_t)k[11] << 24)); >>> ++ mix(a, b, c); >>> ++ k = k + 12; >>> ++ len = len - 12; >>> ++ } >>> + >>> ++ /* handle the last 11 bytes */ >>> ++ c = c + length; >>> ++ switch (len) { /* all the case statements fall through */ >>> ++ case 11: >>> ++ c = c + ((uint32_t)k[10] << 24); >>> ++ case 10: >>> ++ c = c + ((uint32_t)k[9] << 16); >>> ++ case 9: >>> ++ c = c + ((uint32_t)k[8] << 8); >>> ++ /* the first byte of c is reserved for the length */ >>> ++ case 8: >>> ++ b = b + ((uint32_t)k[7] << 24); >>> ++ case 7: >>> ++ b = b + ((uint32_t)k[6] << 16); >>> ++ case 6: >>> ++ b = b + ((uint32_t)k[5] << 8); >>> ++ case 5: >>> ++ b = b + k[4]; >>> ++ case 4: >>> ++ a = a + ((uint32_t)k[3] << 24); >>> ++ case 3: >>> ++ a = a + ((uint32_t)k[2] << 16); >>> ++ case 2: >>> ++ a = a + ((uint32_t)k[1] << 8); >>> ++ case 1: >>> ++ a = a + k[0]; >>> ++ /* case 0: nothing left to add */ >>> + } >>> ++ mix(a, b, c); >>> + >>> +- /* Do a few final mixes of the hash to ensure the last few >>> +- bytes are well-incorporated. */ >>> +- hash ^= hash >> 13; >>> +- hash *= m; >>> +- hash ^= hash >> 15; >>> ++ return c; >>> ++} >>> + >>> +- return hash; >>> ++uint32_t fd_os_hash ( uint8_t * string, size_t len ) >>> ++{ >>> ++ return hash_rjenkins(string, len); >>> + } >>> + >>> +-- >>> +1.7.10.4 >>> + >>> diff --git >>> a/meta-networking/recipes-protocols/freediameter/files/freediameter.init >>> b/meta-networking/recipes-protocols/freediameter/files/freediameter.init >>> new file mode 100755 >>> index 0000000..e63a42a >>> --- /dev/null >>> +++ b/meta-networking/recipes-protocols/freediameter/files/freediameter.init >>> @@ -0,0 +1,72 @@ >>> +#!/bin/sh >>> +# >>> +### BEGIN INIT INFO >>> +# Provides: freediameter >>> +# Default-Start: 2 3 4 5 >>> +# Default-Stop: 0 1 6 >>> +# Required-Start: $remote_fs $syslog >>> +# Required-Stop: $remote_fs $syslog >>> +# Short-Description: Start freeDiameter daemon at boot time >>> +# Description: Start the freeDiameter daemon at boot time. >>> +# freeDiameter is an extensible implementation of the Diameter >>> protocol, >>> +# designed for Authentication, Authorization and Accounting. >>> Diameter is >>> +# an evolution of the RADIUS protocol. >>> +### END INIT INFO# >>> +DAEMON=/usr/bin/freeDiameterd >>> +CONF=/etc/freeDiameter/freeDiameter.conf >>> +NAME=freediameter >>> +DESC="freeDiameter daemon" >>> + >>> +. /etc/init.d/functions >>> +start() { >>> + [ -x $DAEMON ] || exit 5 >>> + echo -n $"Starting $DAEMON: " >>> + start-stop-daemon -S -b -x ${DAEMON} && success || failure >>> + retval=$? >>> + echo "" >>> + return $retval >>> +} >>> + >>> +stop() { >>> + echo -n $"Stopping $prog: " >>> + start-stop-daemon -K -x $DAEMON >>> + retval=$? >>> + echo "" >>> + return $retval >>> +} >>> + >>> +restart() { >>> + stop >>> + sleep 3 >>> + start >>> +} >>> + >>> +rh_status() { >>> + status $DAEMON >>> +} >>> + >>> +rh_status_q() { >>> + rh_status > /dev/null 2>&1 >>> +} >>> + >>> +case "$1" in >>> + start) >>> + rh_status_q && exit 0 >>> + start >>> + ;; >>> + stop) >>> + rh_status_q || exit 0 >>> + stop >>> + ;; >>> + restart) >>> + restart >>> + ;; >>> + status) >>> + rh_status >>> + ;; >>> + *) >>> + echo $"Usage: $prog {start|stop|status|restart}" >>> + exit 2 >>> +esac >>> + >>> +exit $? >>> diff --git >>> a/meta-networking/recipes-protocols/freediameter/files/freediameter.service >>> b/meta-networking/recipes-protocols/freediameter/files/freediameter.service >>> new file mode 100644 >>> index 0000000..514481b >>> --- /dev/null >>> +++ >>> b/meta-networking/recipes-protocols/freediameter/files/freediameter.service >>> @@ -0,0 +1,11 @@ >>> +[Unit] >>> +Description=freediameter daemon >>> +After=network.target >>> + >>> +[Service] >>> +Type=simple >>> +PIDFile=/var/run/freediameter.pid >>> +ExecStart=@BINDIR@/freeDiameterd >>> + >>> +[Install] >>> +WantedBy=multi-user.target >>> diff --git >>> a/meta-networking/recipes-protocols/freediameter/files/install_test.patch >>> b/meta-networking/recipes-protocols/freediameter/files/install_test.patch >>> new file mode 100644 >>> index 0000000..151037d >>> --- /dev/null >>> +++ >>> b/meta-networking/recipes-protocols/freediameter/files/install_test.patch >>> @@ -0,0 +1,22 @@ >>> +CMakeLists: add an option to install tests >>> + >>> +Upstream-Status: Inappropriate [OE ptest specific] >>> + >>> +Original author: Yao Zhao <yao.z...@windriver.com> >>> +Signed-off-by: Jackie Huang <jackie.hu...@windriver.com> >>> + >>> +diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt >>> +index da8da1b..de04059 100644 >>> +--- a/tests/CMakeLists.txt >>> ++++ b/tests/CMakeLists.txt >>> +@@ -113,4 +113,9 @@ ENDFOREACH( TEST ) >>> + #### >>> + ## INSTALL section ## >>> + >>> +-# we do not install the tests >>> ++# install the tests >>> ++SET(INSTALL_TEST_SUFFIX /opt/${FD_PROJECT_NAME}-tests CACHE PATH >>> "Directory where the test binary is installed.") >>> ++ >>> ++INSTALL(TARGETS ${TEST_LIST} >>> ++ RUNTIME DESTINATION ${INSTALL_TEST_SUFFIX} >>> ++ COMPONENT freeDiameter-common) >>> diff --git >>> a/meta-networking/recipes-protocols/freediameter/files/pass-ptest-env.patch >>> b/meta-networking/recipes-protocols/freediameter/files/pass-ptest-env.patch >>> new file mode 100644 >>> index 0000000..ea857af >>> --- /dev/null >>> +++ >>> b/meta-networking/recipes-protocols/freediameter/files/pass-ptest-env.patch >>> @@ -0,0 +1,72 @@ >>> +freediameter ptest cases testmesg_stress.c and testloadext.c need load >>> +extensions both build time and runtime. Then they search extensions with >>> +build directory that causes runtime failures. >>> + >>> +Pass an environment variable to define runtime extension path. >>> + >>> +Upstream-Status: Inappropriate [OE ptest specific] >>> + >>> +Signed-off-by: Kai Kang <kai.k...@windriver.com> >>> +Signed-off-by: Jackie Huang <jackie.hu...@windriver.com> >>> + >>> +diff -Nur freeDiameter-1.2.0.orig/tests/testloadext.c >>> freeDiameter-1.2.0/tests/testloadext.c >>> +--- freeDiameter-1.2.0.orig/tests/testloadext.c 2014-02-19 >>> 17:33:24.785405032 +0800 >>> ++++ freeDiameter-1.2.0/tests/testloadext.c 2014-02-19 20:08:03.871403924 >>> +0800 >>> +@@ -49,7 +49,7 @@ >>> + { >>> + DIR *dir; >>> + struct dirent *dp; >>> +- char fullname[512]; >>> ++ char fullname[1024]; >>> + int pathlen; >>> + >>> + /* First, initialize the daemon modules */ >>> +@@ -57,11 +57,16 @@ >>> + CHECK( 0, fd_queues_init() ); >>> + CHECK( 0, fd_msg_init() ); >>> + CHECK( 0, fd_rtdisp_init() ); >>> +- >>> ++ >>> ++ char *ext_dir = getenv("EXTENSIONS_DIR"); >>> ++ if (ext_dir) >>> ++ pathlen = snprintf(fullname, sizeof(fullname), "%s", ext_dir); >>> ++ else >>> ++ pathlen = snprintf(fullname, sizeof(fullname), BUILD_DIR >>> "/extensions/"); >>> ++ >>> + /* Find all extensions which have been compiled along the test */ >>> +- TRACE_DEBUG(INFO, "Loading from: '%s'", BUILD_DIR "/extensions"); >>> +- CHECK( 0, (dir = opendir (BUILD_DIR "/extensions")) == NULL ? 1 : 0 ); >>> +- pathlen = snprintf(fullname, sizeof(fullname), BUILD_DIR >>> "/extensions/"); >>> ++ TRACE_DEBUG(INFO, "Loading from: '%s'", fullname); >>> ++ CHECK( 0, (dir = opendir (fullname)) == NULL ? 1 : 0 ); >>> + >>> + while ((dp = readdir (dir)) != NULL) { >>> + char * dot = strrchr(dp->d_name, '.'); >>> +diff -Nur freeDiameter-1.2.0.orig/tests/testmesg_stress.c >>> freeDiameter-1.2.0/tests/testmesg_stress.c >>> +--- freeDiameter-1.2.0.orig/tests/testmesg_stress.c 2014-02-19 >>> 17:33:24.785405032 +0800 >>> ++++ freeDiameter-1.2.0/tests/testmesg_stress.c 2014-02-19 >>> 20:08:03.928403924 +0800 >>> +@@ -67,15 +67,20 @@ >>> + { >>> + DIR *dir; >>> + struct dirent *dp; >>> +- char fullname[512]; >>> ++ char fullname[1024]; >>> + int pathlen; >>> + struct fd_list all_extensions = FD_LIST_INITIALIZER(all_extensions); >>> + struct fd_list ext_with_depends = FD_LIST_INITIALIZER(ext_with_depends); >>> + >>> ++ char *ext_dir = getenv("EXTENSIONS_DIR"); >>> ++ if (ext_dir) >>> ++ pathlen = snprintf(fullname, sizeof(fullname), "%s", ext_dir); >>> ++ else >>> ++ pathlen = snprintf(fullname, sizeof(fullname), BUILD_DIR >>> "/extensions/"); >>> ++ >>> + /* Find all extensions which have been compiled along the test */ >>> +- LOG_D("Loading %s*.fdx from: '%s'", BUILD_DIR "/extensions", prefix ?: >>> ""); >>> +- CHECK( 0, (dir = opendir (BUILD_DIR "/extensions")) == NULL ? 1 : 0 ); >>> +- pathlen = snprintf(fullname, sizeof(fullname), BUILD_DIR >>> "/extensions/"); >>> ++ TRACE_DEBUG(INFO, "Loading from: '%s'", fullname); >>> ++ CHECK( 0, (dir = opendir (fullname)) == NULL ? 1 : 0 ); >>> + >>> + while ((dp = readdir (dir)) != NULL) { >>> + char * dot = strrchr(dp->d_name, '.'); >>> diff --git a/meta-networking/recipes-protocols/freediameter/files/run-ptest >>> b/meta-networking/recipes-protocols/freediameter/files/run-ptest >>> new file mode 100644 >>> index 0000000..d0ca8d9 >>> --- /dev/null >>> +++ b/meta-networking/recipes-protocols/freediameter/files/run-ptest >>> @@ -0,0 +1,11 @@ >>> +#!/bin/sh >>> + >>> +if ! lsmod | grep -q sctp && ! modprobe sctp 2>/dev/null; then >>> + echo "Couldn't load kernel module sctp." >>> + echo "Test cases testsctp and testcnx will fail." >>> + echo >>> +fi >>> + >>> +export EXTENSIONS_DIR=$EXTENSIONS_DIR >>> +cmake -E cmake_echo_color --cyan "Running tests..." >>> +ctest --force-new-ctest-process >>> diff --git >>> a/meta-networking/recipes-protocols/freediameter/freediameter.inc >>> b/meta-networking/recipes-protocols/freediameter/freediameter.inc >>> new file mode 100644 >>> index 0000000..6880d26 >>> --- /dev/null >>> +++ b/meta-networking/recipes-protocols/freediameter/freediameter.inc >>> @@ -0,0 +1,98 @@ >>> +SUMMARY = "An open source implementation of the diameter protocol" >>> +DESCRIPTION = "\ >>> +freeDiameter is an open source Diameter protocol implementation. 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" >>> + >>> +pkgname = "freeDiameter" >>> + >>> +SRC_URI = >>> "http://www.freediameter.net/hg/${pkgname}/archive/${PV}.tar.gz;downloadfilename=${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)} \ >>> + " >>> + >>> +S = "${WORKDIR}/${pkgname}-${PV}" >>> + >>> +PTEST_PATH = "${libdir}/${pkgname}/ptest" >>> + >>> +inherit cmake update-rc.d ptest systemd >>> + >>> +EXTRA_OECMAKE = " \ >>> + -DDEFAULT_CONF_PATH:PATH=${sysconfdir}/${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}/${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 >>> + >>> +do_install_append() { >>> + # install the sample configuration file >>> + install -d -m 0755 ${D}${sysconfdir}/${pkgname} >>> + for i in ${S}/doc/*.conf.sample; do >>> + install -m 0644 $i ${D}${sysconfdir}/${pkgname}/ >>> + done >>> + mv ${D}${sysconfdir}/${pkgname}/freediameter.conf.sample \ >>> + ${D}${sysconfdir}/${pkgname}/freeDiameter.conf.sample >>> + >>> + # 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 >>> +} >>> + >>> +do_install_ptest() { >>> + sed -i "s#\(EXTENSIONS_DIR=\).*\$#\1${libdir}/${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}/${pkgname}/.debug/*" >>> + >>> +# include the extensions in main package >>> +FILES_${PN} += "${libdir}/${pkgname}/*" >>> + >>> +RDEPENDS_${PN} = "glib-2.0 gnutls libidn" >>> +RDEPENDS_${PN}-ptest = "cmake" >>> + >>> +INITSCRIPT_NAME = "${BPN}" >>> +INITSCRIPT_PARAMS = "start 30 . stop 70 0 1 2 3 4 5 6 ." >>> + >>> +SYSTEMD_SERVICE_${PN} = "freediameter.service" >>> +SYSTEMD_AUTO_ENABLE = "disable" >>> diff --git >>> a/meta-networking/recipes-protocols/freediameter/freediameter_1.2.1.bb >>> b/meta-networking/recipes-protocols/freediameter/freediameter_1.2.1.bb >>> new file mode 100644 >>> index 0000000..3fb929a >>> --- /dev/null >>> +++ b/meta-networking/recipes-protocols/freediameter/freediameter_1.2.1.bb >>> @@ -0,0 +1,7 @@ >>> +include freediameter.inc >>> + >>> +LICENSE = "BSD" >>> +LIC_FILES_CHKSUM = "file://LICENSE;md5=892b2ed6ae815488a08416ff7ee74a35" >>> + >>> +SRC_URI[md5sum] = "61b1062aa144b5f12eed514611e6d697" >>> +SRC_URI[sha256sum] = >>> "bd7f105542e9903e776aa006c6931c1f5d3d477cb59af33a9162422efa477097" -- _______________________________________________ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-devel