diff --git a/meta-telephony/README b/meta-telephony/README new file mode 100644 index 0000000000..3caf92bfae --- /dev/null +++ b/meta-telephony/README @@ -0,0 +1 @@ +This is a collection of OE recipes for Osmocom and things related to Osmocom diff --git a/meta-telephony/classes/waf-samba.bbclass b/meta-telephony/classes/waf-samba.bbclass new file mode 100644 index 0000000000..4b6e3c9f93 --- /dev/null +++ b/meta-telephony/classes/waf-samba.bbclass @@ -0,0 +1,54 @@ +# waf is a build system which is used by samba related project. +# Obtain details from https://wiki.samba.org/index.php/Waf +# +inherit qemu pythonnative + +DEPENDS += "qemu-native python" + +CONFIGUREOPTS = " --prefix=${prefix} \ + --bindir=${bindir} \ + --sbindir=${sbindir} \ + --libexecdir=${libexecdir} \ + --datadir=${datadir} \ + --sysconfdir=${sysconfdir} \ + --sharedstatedir=${sharedstatedir} \ + --localstatedir=${localstatedir} \ + --libdir=${libdir} \ + --includedir=${includedir} \ + --oldincludedir=${oldincludedir} \ + --infodir=${infodir} \ + --mandir=${mandir} \ + " + +do_configure() { + qemu_binary="${@qemu_target_binary(d)}" + if [ "${qemu_binary}" = "qemu-allarch" ]; then + qemu_binary="qemuwrapper" + fi + + libdir_qemu="${STAGING_DIR_HOST}/${libdir}" + base_libdir_qemu="${STAGING_DIR_HOST}/${base_libdir}" + + CROSS_EXEC="${qemu_binary} \ + ${QEMU_OPTIONS} \ + -L ${STAGING_DIR_HOST} \ + -E LD_LIBRARY_PATH=${libdir_qemu}:${base_libdir_qemu}" + + export BUILD_SYS=${BUILD_SYS} + export HOST_SYS=${HOST_SYS} + export BUILD_ARCH=${BUILD_ARCH} + export HOST_ARCH=${HOST_ARCH} + export STAGING_LIBDIR=${STAGING_LIBDIR} + export STAGING_INCDIR=${STAGING_INCDIR} + export PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} + + ./configure ${CONFIGUREOPTS} ${EXTRA_OECONF} --cross-compile --cross-execute="${CROSS_EXEC}" +} + +do_compile () { + python ./buildtools/bin/waf ${PARALLEL_MAKE} +} + +do_install() { + oe_runmake install DESTDIR=${D} +} diff --git a/meta-telephony/conf/layer.conf b/meta-telephony/conf/layer.conf new file mode 100644 index 0000000000..da1f278dac --- /dev/null +++ b/meta-telephony/conf/layer.conf @@ -0,0 +1,12 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH .= ":${LAYERDIR}" + +# We have a packages directory, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "telephony" +BBFILE_PATTERN_telephony = "^${LAYERDIR}/" +BBFILE_PRIORITY_telephony = "5" + +META_TELEPHONY_OSMO_INC = "18" diff --git a/meta-telephony/recipes-asterisk/asterisk/asterisk_13.5.0.bb b/meta-telephony/recipes-asterisk/asterisk/asterisk_13.5.0.bb new file mode 100644 index 0000000000..ff71607cb9 --- /dev/null +++ b/meta-telephony/recipes-asterisk/asterisk/asterisk_13.5.0.bb @@ -0,0 +1,158 @@ +DESCRIPTION = "Asterisk is an Open Source PBX and telephony toolkit." +HOMEPAGE = "http://www.asterisk.org/" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3aa955c628d43053f8ba9569d173105a" + +DEPENDS += "jansson sqlite3 libedit alsa-lib util-linux" + +SRC_URI = "\ + http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-${PV}.tar.gz \ + file://0001-Use-pkgconfig-to-find-sdl.patch \ + file://0002-Use-pkgconfig-to-find-libxml2.patch \ + file://asterisk.init.d \ +" + +SRC_URI[md5sum] = "2fb7d247aacdbb9736c82b133053dfdf" +SRC_URI[sha256sum] = "e8b8d071f783edea82de510194dd272070ffbb7cdb2f5f6b020be5d15b67e8b9" + +S = "${WORKDIR}/asterisk-${PV}" + +inherit autotools pkgconfig useradd update-rc.d + +# dora doesn't have autotools-brokensep. Still needed for sysmocom +B = "${S}" + +USERADD_PACKAGES = "${PN}" +USERADD_PARAM_${PN} = "--system -g asterisk --shell /bin/false asterisk" +GROUPADD_PARAM_${PN} = "--system asterisk" + +PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'largefile', 'largefile', '', d)}" +# Optional features +PACKAGECONFIG[dev-mode] = "--enable-dev-mode,--disable-dev-mode" +PACKAGECONFIG[coverage] = "--enable-coverage,--disable-coverage" +PACKAGECONFIG[xmldoc] = "--enable-xmldoc,--disable-xmldoc" +PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile" +PACKAGECONFIG[internal-poll] = "--enable-internal-poll,--disable-internal-poll" +PACKAGECONFIG[asteriskssl] = "--enable-asteriskssl,--disable-asteriskssl,openssl" +PACKAGECONFIG[rpath] = "--enable-rpath,--disable-rpath" +# Optional packages +PACKAGECONFIG[bfd] = "--with-bfd,--without-bfd" +PACKAGECONFIG[bluetooth] = "--with-bluetooth,--without-bluetooth,bluez5" +PACKAGECONFIG[backtrace] = "--with-execinfo,--without-execinfo" +PACKAGECONFIG[cap] = "--with-cap,--without-cap,libcap" +PACKAGECONFIG[corosync] = "--with-cpg,--without-cpg,corosync" +PACKAGECONFIG[curses] = "--with-curses,--without-curses,ncurses" +PACKAGECONFIG[crypt] = "--with-crypt,--without-crypt" +PACKAGECONFIG[crypto] = "--with-crypto,--without-crypto" +PACKAGECONFIG[dahdi] = "--with-dahdi,--without-dahdi,dahdi-tools" +# To enable FFMPEG add LICENSE_FLAGS_WHITELIST = "commercial" to your local.conf +PACKAGECONFIG[ffmpeg] = "--with-avcodec,--without-avcodec,libav" +PACKAGECONFIG[gsm] = "--with-gsm,--without-gsm,libgsm" +PACKAGECONFIG[ilbc] = "--with-ilbc,--without-ilbc" +PACKAGECONFIG[gtk2] = "--with-gtk2,--without-gtk2,gtk+" +PACKAGECONFIG[gmime] = "--with-gmime,--without-gmime" +PACKAGECONFIG[openh323] = "--with-h323,--without-h323" +PACKAGECONFIG[hoard] = "--with-hoard,--without-hoard" +PACKAGECONFIG[ical] = "--with-ical,--without-ical" +PACKAGECONFIG[iconv] = "--with-iconv,--without-iconv,libiconv" +PACKAGECONFIG[iksemel] = "--with-iksemel,--without-iksemel,iksemel" +PACKAGECONFIG[imap_tk] = "--with-imap,--without-imap,uw-imap" +PACKAGECONFIG[inotify] = "--with-inotify,--without-inotify" +PACKAGECONFIG[iodbc] = "--with-iodbc,--without-iodbc" +PACKAGECONFIG[isdnnet] = "--with-isdnnet,--without-isdnnet" +# Jack depends on kqeueu +PACKAGECONFIG[jack] = "--with-jack,--without-jack,jack" +PACKAGECONFIG[uriparser] = "--with-uriparser,--without-uriparser" +PACKAGECONFIG[kqueue] = "--with-kqueue,--without-kqueue" +PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap" +PACKAGECONFIG[libcurl] = "--with-libcurl,--without-libcurl,curl" +PACKAGECONFIG[libxml2] = "--with-libxml2,--without-libxml2,libxml2" +PACKAGECONFIG[libxslt] = "--with-libxslt,--without-libxslt,libxslt" +PACKAGECONFIG[ltdl] = "--with-ltdl,--without-ltdl,libtool" +PACKAGECONFIG[lua] = "--with-lua,--without-lua,lua" +PACKAGECONFIG[misdn] = "--with-misdn,--without-misdn,misdn-utils" +PACKAGECONFIG[mysqlclient] = "--with-mysqlclient,--without-mysqlclient,mariadb" +PACKAGECONFIG[nbs] = "--with-nbs,--without-nbs" +PACKAGECONFIG[ncurses] = "--with-curses,--without-curses,ncurses" +PACKAGECONFIG[neon] = "--with-neon,--without-neon,neon" +PACKAGECONFIG[netsnmp] = "--with-netsnmp,--without-netsnmp,net-snmp" +PACKAGECONFIG[newt] = "--with-newt,--without-newt,libnewt" +PACKAGECONFIG[ogg] = "--with-ogg,--without-ogg,libogg" +PACKAGECONFIG[openr2] = "--with-openr2,--without-openr2" +PACKAGECONFIG[opus] = "--with-opus,--without-opus,libopus" +PACKAGECONFIG[osptk] = "--with-osptk,--without-osptk" +PACKAGECONFIG[oss] = "--with-oss,--without-oss,alsa-oss" +PACKAGECONFIG[pgsql] = "--with-postgres,--without-postgres,postgresql" +PACKAGECONFIG[pjproject] = "--with-pjproject,--without-pjproject,pjproject" +PACKAGECONFIG[popt] = "--with-popt,--without-popt,popt" +PACKAGECONFIG[portaudio] = "--with-portaudio,--without-portaudio,portaudio-v19" +PACKAGECONFIG[pri] = "--with-pri,--without-pri,misdn-utils" +PACKAGECONFIG[pwlib] = "--with-pwlib,--without-pwlib,pwlib" +PACKAGECONFIG[radius] = "--with-radius,--without-radius,radiusclient-ng" +PACKAGECONFIG[resample] = "--with-resample,--without-resample,ncurses" +# Need to enable sdl_images to use sdl +PACKAGECONFIG[sdl] = "--with-sdl,--without-sdl,libsdl" +PACKAGECONFIG[sdl_image] = "--with-SDL_image,--without-SDL_image,libsdl-image" +PACKAGECONFIG[sounds-cache] = "--with-sounds-cache,--without-sounds-cache" +PACKAGECONFIG[spandsp] = "--with-spandsp,--without-spandsp" +PACKAGECONFIG[ss7] = "--with-ss7,--without-ss7" +PACKAGECONFIG[speex] = "--with-speex,--without-speex,speex" +PACKAGECONFIG[speexdsp] = "--with-speexdsp,--without-speexdsp,speexdsp" +PACKAGECONFIG[srtp] = "--with-srtp,--without-srtp" +PACKAGECONFIG[openssl] = "--with-ssl,--without-ssl,openssl" +PACKAGECONFIG[suppserv] = "--with-suppserv,--without-suppserv,misdn-utils" +PACKAGECONFIG[freetds] = "--with-tds,--without-tds" +PACKAGECONFIG[termcap] = "--with-termcap,--without-termcap,libcap" +PACKAGECONFIG[timerfd] = "--with-timerfd,--without-timerfd" +PACKAGECONFIG[tinfo] = "--with-tinfo,--without-tinfo,ncurses" +PACKAGECONFIG[tonezone] = "--with-tonezone,--without-tonezone" +PACKAGECONFIG[unixodbc] = "--with-unixodbc,--without-unixodbc,libodbc" +PACKAGECONFIG[vorbis] = "--with-vorbis,--without-vorbis,libvorbis" +PACKAGECONFIG[vpb] = "--with-vpb,--without-vpb" +PACKAGECONFIG[x11] = "--with-x11,--without-x11,libx11" +PACKAGECONFIG[zlib] = "--with-z,--without-z,zlib" + +EXTRA_OECONF += " \ + --with-libedit=${STAGING_INCDIR} \ +" + +INITSCRIPT_NAME = "asterisk" +INITSCRIPT_PARAMS = "defaults" + +do_configure_append() { + echo "Regenerate the configure scripts" + for d in ${S}/menuselect; do + echo " - $d" + (cd $d; autoreconf -I ${S}/autoconf) + done + + echo "Starting the build of menuselect" + cd ${B}/menuselect + CC="${HOST_CC}" \ + CXX="${HOST_CXX}" \ + LD="" \ + AR="" \ + RANLIB="" \ + CFLAGS="${HOST_CFLAGS}" \ + LDFLAGS="${HOST_LDFLAGS}" \ + ./configure +} + +do_install_append() { + oe_runmake DESTDIR=${D} samples + install -Dm 0755 ${WORKDIR}/asterisk.init.d ${D}${sysconfdir}/init.d/asterisk + # Set file permissions and ownerships + chown -R root:asterisk ${D}${sysconfdir}/asterisk + chmod -R u=rwX,g=rwX,o= ${D}${sysconfdir}/asterisk + for x in spool run lib log; do + chown -R asterisk:asterisk ${D}${localstatedir}/${x}/asterisk + chmod -R u=rwX,g=rwX,o= ${D}${localstatedir}/${x}/asterisk + done +} + +FILES_${PN} += "\ + /run/asterisk \ + ${datadir}/dahdi/* \ + ${libdir}/hotplug/firmware \ +" +FILES_${PN}-dbg += "${libdir}/*/*/.debug" diff --git a/meta-telephony/recipes-asterisk/asterisk/files/0001-Use-pkgconfig-to-find-sdl.patch b/meta-telephony/recipes-asterisk/asterisk/files/0001-Use-pkgconfig-to-find-sdl.patch new file mode 100644 index 0000000000..a0cc4b2510 --- /dev/null +++ b/meta-telephony/recipes-asterisk/asterisk/files/0001-Use-pkgconfig-to-find-sdl.patch @@ -0,0 +1,26 @@ +Upstream-Status: Pending + +Subject: [PATCH 1/2] Use pkgconfig to find sdl +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 971f9bf..c371d19 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2427,7 +2427,7 @@ AC_SUBST(PBX_IXJUSER) + AST_C_DEFINE_CHECK([MSG_NOSIGNAL], [MSG_NOSIGNAL], [sys/socket.h]) + AST_C_DEFINE_CHECK([SO_NOSIGPIPE], [SO_NOSIGPIPE], [sys/socket.h]) + +-AST_EXT_TOOL_CHECK([SDL], [sdl-config]) ++AST_PKG_CONFIG_CHECK([SDL], [sdl]) + AST_EXT_LIB_CHECK([SDL_IMAGE], [SDL_image], [IMG_Load], [SDL_image.h], [${SDL_LIB}], [${SDL_INCLUDE}]) + AST_EXT_LIB_CHECK([FFMPEG], [avcodec], [sws_getContext], [ffmpeg/avcodec.h], [${PTHREAD_LIBS} -lz -lm], [${PTHREAD_CFLAGS}]) + +-- +2.1.4 + diff --git a/meta-telephony/recipes-asterisk/asterisk/files/0002-Use-pkgconfig-to-find-libxml2.patch b/meta-telephony/recipes-asterisk/asterisk/files/0002-Use-pkgconfig-to-find-libxml2.patch new file mode 100644 index 0000000000..f5c8d260d9 --- /dev/null +++ b/meta-telephony/recipes-asterisk/asterisk/files/0002-Use-pkgconfig-to-find-libxml2.patch @@ -0,0 +1,73 @@ +Upstream-Status: Pending + +Subject: [PATCH 2/2] Use pkgconfig to find libxml2 +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + configure.ac | 12 +----------- + menuselect/configure.ac | 11 +++-------- + 2 files changed, 4 insertions(+), 19 deletions(-) + +diff --git a/configure.ac b/configure.ac +index c371d19..17f0d2d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -575,17 +575,6 @@ if test "x$JANSSON_LIB" == "x"; then + AC_MSG_ERROR([*** JSON support not found (this typically means the libjansson development package is missing)]) + fi + +-AST_EXT_TOOL_CHECK([LIBXML2], [xml2-config], , , +- [#include +- #include ], +- [LIBXML_TEST_VERSION]) +- +-if test "${PBX_LIBXML2}" != 1; then +- AC_MSG_NOTICE(*** The Asterisk menuselect tool requires the 'libxml2' development package.) +- AC_MSG_NOTICE(*** Please install the 'libxml2' development package.) +- exit 1 +-fi +- + AST_EXT_LIB_CHECK([URIPARSER], [uriparser], [uriParseUriA], [uriparser/Uri.h]) + + # Another mandatory item (unless it's explicitly disabled) +@@ -1280,6 +1269,7 @@ PKG_PROG_PKG_CONFIG() + + + # do the package library checks now ++AST_PKG_CONFIG_CHECK([LIBXML2], [libxml-2.0]) + + AST_EXT_LIB_CHECK([ALSA], [asound], [snd_spcm_init], [alsa/asoundlib.h], [-lm -ldl]) + +diff --git a/menuselect/configure.ac b/menuselect/configure.ac +index 5989f5c..675113b 100644 +--- a/menuselect/configure.ac ++++ b/menuselect/configure.ac +@@ -125,14 +125,6 @@ AST_EXT_LIB_SETUP([LIBXML2], [LibXML2], [libxml2]) + AST_EXT_LIB_CHECK([NEWT], [newt], [newtBell], [newt.h]) + AST_EXT_LIB_CHECK([CURSES], [curses], [initscr], [curses.h]) + AST_EXT_LIB_CHECK([NCURSES], [ncurses], [initscr], [curses.h]) +-AST_EXT_TOOL_CHECK([LIBXML2], [xml2-config], , , +- [#include +- #include ], +- [LIBXML_TEST_VERSION]) +- +-if test "${PBX_LIBXML2}" != 1; then +- AC_MSG_ERROR([Could not find required 'Libxml2' development package]) +-fi + + PBX_GTK2=0 + AC_CHECK_TOOL(PKGCONFIG, pkg-config, No) +@@ -146,6 +138,9 @@ AC_SUBST(PBX_GTK2) + AC_SUBST(GTK2_INCLUDE) + AC_SUBST(GTK2_LIB) + ++PKG_PROG_PKG_CONFIG() ++AST_PKG_CONFIG_CHECK([LIBXML2], [libxml-2.0]) ++ + test "$silent"=yes && ac_sub_configure_args="${ac_sub_configure_args} --silent" + + AC_CONFIG_FILES([makeopts]) +-- +2.1.4 + diff --git a/meta-telephony/recipes-asterisk/asterisk/files/asterisk.init.d b/meta-telephony/recipes-asterisk/asterisk/files/asterisk.init.d new file mode 100644 index 0000000000..631ce1d808 --- /dev/null +++ b/meta-telephony/recipes-asterisk/asterisk/files/asterisk.init.d @@ -0,0 +1,150 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: asterisk +# Required-Start: $network $syslog $named $local_fs $remote_fs +# Required-Stop: $network $syslog $named $local_fs $remote_fs +# Should-Start: dahdi misdn lcr wanrouter mysql postgresql +# Should-Stop: dahdi misdn lcr wanrouter mysql postgresql +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Asterisk PBX +# Description: Asterisk Open Source PBX +### END INIT INFO + +# Do NOT "set -e" + +log_daemon_msg() { + echo $* +} + +log_end_msg() { + if [ $1 -eq 0 ]; then + success $* + else + failure $* + fi +} + +log_failure_msg() { + echo $* +} + +log_success_msg() { + echo $* +} + + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="Asterisk PBX" +NAME=asterisk +DAEMON=/usr/sbin/$NAME +DAEMON_ARGS="" +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME +CHROOT=/var/run/$NAME + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# LSB log_* functions +. /etc/init.d/functions + +do_start() +{ + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ + $DAEMON_ARGS \ + || return 2 +} + +do_stop() +{ + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + [ "$?" = 2 ] && return 2 + rm -f $PIDFILE + return "$RETVAL" +} + +do_reload() { + start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME + return 0 +} + +# +# Function that shows the daemon/service status +# +status_of_proc () { + local pid status + + status=0 + # pidof output null when no program is running, so no "2>/dev/null". + pid=`pidofproc $NAME` || status=$? + case $status in + 0) + echo "$DESC is running ($pid)." + exit 0 + ;; + *) + echo "$DESC is not running." >&2 + exit $status + ;; + esac +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + reload) + log_daemon_msg "Reloading $DESC" "$NAME" + do_reload + log_end_msg $? + ;; + restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + status) + status_of_proc $DAEMON $NAME -p $PIDFILE && exit 0 || exit $? + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload|status}" >&2 + exit 3 + ;; +esac + +: + diff --git a/meta-telephony/recipes-devtools/python/python-argparse_1.2.1.bbappend b/meta-telephony/recipes-devtools/python/python-argparse_1.2.1.bbappend new file mode 100644 index 0000000000..077365c350 --- /dev/null +++ b/meta-telephony/recipes-devtools/python/python-argparse_1.2.1.bbappend @@ -0,0 +1 @@ +BBCLASSEXTEND_append = " nativesdk" diff --git a/meta-telephony/recipes-isdn/dahdi-linux/dahdi-linux_2.10.2.bb b/meta-telephony/recipes-isdn/dahdi-linux/dahdi-linux_2.10.2.bb new file mode 100644 index 0000000000..dc7926e68d --- /dev/null +++ b/meta-telephony/recipes-isdn/dahdi-linux/dahdi-linux_2.10.2.bb @@ -0,0 +1,142 @@ +DESCRITOPN = "Digium Asterisk Hardware Driver Interface - Linux kernel part" +SECTION = "base" +HOMEPAGE = "http://www.asterisk.org" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ea5bed2f60d357618ca161ad539f7c0a" + +DEPENDS = "virtual/kernel" + +# those firmware images are normally downloaded as part of the 'make' +# process of dahdi-linux. In the context of OE, we want to list them +# here so they are part of the 'downloads' directory and thus don't need +# to be downloaded all the time. +FIRMWARE_URI = "\ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-a4a-a0017.tar.gz;name=dahdi-fw-a4a-a0017 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-a4b-d001e.tar.gz;name=dahdi-fw-a4b-d001e \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-a8a-1d0017.tar.gz;name=dahdi-fw-a8a-1d0017 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-a8b-1f001e.tar.gz;name=dahdi-fw-a8b-1f001e \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-hx8-2.06.tar.gz;name=dahdi-fw-hx8 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-oct6114-032-1.05.01.tar.gz;name=dahdi-fw-oct6114-032 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-oct6114-064-1.05.01.tar.gz;name=dahdi-fw-oct6114-064 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-oct6114-128-1.05.01.tar.gz;name=dahdi-fw-oct6114-128 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-oct6114-256-1.05.01.tar.gz;name=dahdi-fw-oct6114-256 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-tc400m-MR6.12.tar.gz;name=dahdi-fw-tc400m-MR6 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-te133-7a001e.tar.gz;name=dahdi-fw-te133-7a001e \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-te134-780017.tar.gz;name=dahdi-fw-te134-780017 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-te435-13001e.tar.gz;name=dahdi-fw-te435-13001e \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-te436-10017.tar.gz;name=dahdi-fw-te436-10017 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-te820-1.76.tar.gz;name=dahdi-fw-te820-1.76 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-vpmoct032-1.12.0.tar.gz;name=dahdi-fw-vpmoct032 \ + http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fwload-vpmadt032-1.25.0.tar.gz;name=dahdi-fwload-vpmadt032 \ +" + +SRC_URI[dahdi-fw-a4a-a0017.md5sum] = "7fab377be2dff23188e234475bc044f9" +SRC_URI[dahdi-fw-a4a-a0017.sha256sum] = "d5b6ab6851e431afcfec2ecc39d95fa88fe3939ffdb2e3d4f28a43cabf30e95b" +SRC_URI[dahdi-fw-a4b-d001e.md5sum] = "f16247c3d92d9b1d183de28230fa85b1" +SRC_URI[dahdi-fw-a4b-d001e.sha256sum] = "e039af8bec36407b74e1dd9ebdd49ba077469eda79d4e6093721ed2836d4536f" +SRC_URI[dahdi-fw-a8a-1d0017.md5sum] = "1e771e250721105013cbdb6b6e66f9dc" +SRC_URI[dahdi-fw-a8a-1d0017.sha256sum] = "5064f9877b8aec99b19fd57988216fe1a9c0b7c07853dd3b32b5a55ab7b418e6" +SRC_URI[dahdi-fw-a8b-1f001e.md5sum] = "014b46ac0b04cd93327908a082304dd0" +SRC_URI[dahdi-fw-a8b-1f001e.sha256sum] = "09a8992786309e025aa60b400a2c7d21226ac9bb6f1b66f562a5e7e9dc892b03" +SRC_URI[dahdi-fw-hx8.md5sum] = "a7f3886942bb3e9fed349a41b3390c9f" +SRC_URI[dahdi-fw-hx8.sha256sum] = "449ab3fd03d55d808e999efb7677cd04de202b92c9fcb039539a7e48a39a80f5" +SRC_URI[dahdi-fw-oct6114-032.md5sum] = "5e0b48da8a9912f2a40a0e0508c96948" +SRC_URI[dahdi-fw-oct6114-032.sha256sum] = "7a006073202d67e45f1d5ff1e9c6e8663e6056cef9dc4c5abae86a1018db349c" +SRC_URI[dahdi-fw-oct6114-064.md5sum] = "88db9b7a07d8392736171b1b3e6bcc66" +SRC_URI[dahdi-fw-oct6114-064.sha256sum] = "56bac1f2024c76ecf9b6f40992eeea29a1fbee676bb2a37a058179bacfbb1c91" +SRC_URI[dahdi-fw-oct6114-128.md5sum] = "c1f1a18d3e20d283f42c71e580a64b5a" +SRC_URI[dahdi-fw-oct6114-128.sha256sum] = "e1146749d205c41603b9b76852c3f8104dac233d0025d700db24504d10c99775" +SRC_URI[dahdi-fw-oct6114-256.md5sum] = "4b3b763fc89f81d569a42da7c9ef0eee" +SRC_URI[dahdi-fw-oct6114-256.sha256sum] = "5fe5036a2766cf0e8a968b0c58b700507d86e1cde9296ca437170cc626a9c79c" +SRC_URI[dahdi-fw-tc400m-MR6.md5sum] = "2ea860bb8a9d8ede2858b9557b74ee3c" +SRC_URI[dahdi-fw-tc400m-MR6.sha256sum] = "11dd8d009809e41fc9a3a36766f59ff73d29075eede5b8724331d9a6e5259774" +SRC_URI[dahdi-fw-te133-7a001e.md5sum] = "74f0ca211d31dc6683126cfaf399de91" +SRC_URI[dahdi-fw-te133-7a001e.sha256sum] = "511c1966295a20df673bb87af30245f0ad165efd6ccb92b4d8ed535ca7f5ac65" +SRC_URI[dahdi-fw-te134-780017.md5sum] = "71eda5003be050e9cd2f9ecea4fc898b" +SRC_URI[dahdi-fw-te134-780017.sha256sum] = "99f7c410bf47d2a5ae687d717e51448ce5b52aca902830bf39bffe683150fa2d" +SRC_URI[dahdi-fw-te435-13001e.md5sum] = "19bd5ac1ac886c38258d7079ff18ca83" +SRC_URI[dahdi-fw-te435-13001e.sha256sum] = "c8f55d57cc0bf332e8d96cdf9ff6dd0e322f33581e1efc24c2b9a0e0c5eb7ee4" +SRC_URI[dahdi-fw-te436-10017.md5sum] = "44b5a653aeab6f0e1e73348195c04a58" +SRC_URI[dahdi-fw-te436-10017.sha256sum] = "0980f4a8d191c6872aa27d971758046f0e7827ac161549f2cc1b0eeab0ae9333" +SRC_URI[dahdi-fw-te820-1.76.md5sum] = "07b389e2a4f2a2513240187f1c295626" +SRC_URI[dahdi-fw-te820-1.76.sha256sum] = "5b823e25828e2c1c6548886ad408b2e31dbc8cd17170c52592792d9c754a199c" +SRC_URI[dahdi-fw-vpmoct032.md5sum] = "2c7d5b17c23c34624158ee640818043b" +SRC_URI[dahdi-fw-vpmoct032.sha256sum] = "6b199cf836f150f9cb35f763f0f502fb52cfa2724a449b500429c746973904ad" +SRC_URI[dahdi-fwload-vpmadt032.md5sum] = "19a660c2073749641072ca644e983cbc" +SRC_URI[dahdi-fwload-vpmadt032.sha256sum] = "3ff26cf80555fd7470b43a87c51d03c1db2a75abcd4561d79f69b6c48298e4a1" + +SRC_URI = "\ + http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-linux-${PV}.tar.gz;name=dahdi-linux \ + file://0001-Use-objcopy-from-toolchain.patch \ +" +SRC_URI[dahdi-linux.md5sum] = "0281de245f4fa056f765ae2a6e1f1a4b" +SRC_URI[dahdi-linux.sha256sum] = "6270444cb9b345941267b162038cc45f5ef4485139176e88e2c4d22fa35a2c59" + +SRC_URI =+ "${FIRMWARE_URI}" + +inherit module + +export TARGET_SYS +EXTRA_OEMAKE += "KSRC=${STAGING_KERNEL_BUILDDIR}" + +do_configure() { + # make sure the extracted firmware.bin are where Makefile expects + cp ../*.bin drivers/dahdi/firmware/ + cp ${DL_DIR}/dahdi-fwload-*.tar.gz drivers/dahdi/firmware/ + cp ${DL_DIR}/dahdi-fw-*.tar.gz drivers/dahdi/firmware/ +} + +do_install() { + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + oe_runmake DEPMOD=echo DESTDIR="${D}" \ + CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + O=${STAGING_KERNEL_BUILDDIR} \ + install +} + +DAHDI_KERNEL_MODULE = "\ + kernel-module-oct612x \ + kernel-module-dahdi-echocan-jpah \ + kernel-module-dahdi \ + kernel-module-xpd-fxo \ + kernel-module-wctdm \ + kernel-module-dahdi-dynamic-loc \ + kernel-module-xpp-usb \ + kernel-module-xpp \ + kernel-module-wcb4xxp \ + kernel-module-wcte43x \ + kernel-module-wctdm24xxp \ + kernel-module-pciradio \ + kernel-module-wcte12xp \ + kernel-module-dahdi-voicebus \ + kernel-module-dahdi-dynamic-ethmf \ + kernel-module-dahdi-dynamic \ + kernel-module-wctc4xxp \ + kernel-module-dahdi-echocan-sec2 \ + kernel-module-xpd-bri \ + kernel-module-wcaxx \ + kernel-module-dahdi-transcode \ + kernel-module-wcte11xp \ + kernel-module-dahdi-echocan-kb1 \ + kernel-module-wcte13xp \ + kernel-module-dahdi-dynamic-eth \ + kernel-module-dahdi-echocan-mg2 \ + kernel-module-wct1xx \ + kernel-module-wct4xxp \ + kernel-module-tor2 \ + kernel-module-xpd-pri \ + kernel-module-wct1xxp \ + kernel-module-wcfxo \ + kernel-module-dahdi-echocan-sec \ + kernel-module-xpd-echo \ + kernel-module-xpd-fxs \ + kernel-module-dahdi-vpmadt032-loader \ +" + +PACKAGE_ARCH_dahdi-firmware = "all" +PACKAGES =+ "dahdi-firmware ${DAHDI_KERNEL_MODULE}" + +FILES_${PN} = "${base_libdir}/modules/ ${sysconfdir}/udev/rules.d" +FILES_dahdi-firmware = "${base_libdir}/firmware ${datadir}/dahdi ${libdir}/hotplug/firmware " + +RRECOMMENDS_${PN} = "dahdi-firmware" diff --git a/meta-telephony/recipes-isdn/dahdi-linux/files/0001-Use-objcopy-from-toolchain.patch b/meta-telephony/recipes-isdn/dahdi-linux/files/0001-Use-objcopy-from-toolchain.patch new file mode 100644 index 0000000000..a6a199379a --- /dev/null +++ b/meta-telephony/recipes-isdn/dahdi-linux/files/0001-Use-objcopy-from-toolchain.patch @@ -0,0 +1,39 @@ +Upstream-Status: Inappropriate [configuration] + +Subject: [PATCH] Use objcopy from toolchain +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + drivers/dahdi/firmware/Makefile | 4 ++-- + drivers/dahdi/firmware/make_firmware_object.in | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/dahdi/firmware/Makefile b/drivers/dahdi/firmware/Makefile +index fbd6582..1f9ce7f 100644 +--- a/drivers/dahdi/firmware/Makefile ++++ b/drivers/dahdi/firmware/Makefile +@@ -158,8 +158,8 @@ hotplug-uninstall: + fi + + make_firmware_object: make_firmware_object.in ../dahdi-base.o +- @export BFDNAME=`LANG=C objdump -f ../dahdi-base.o | grep -e "dahdi-base.o:" | sed "s/.*file format \(.*\)/\1/"`; \ +- export BFDARCH=`LANG=C objdump -f ../dahdi-base.o | grep -e "architecture:" | sed "s/.*ture: \(.*\),.*/\1/"`; \ ++ @export BFDNAME=`LANG=C ${TARGET_SYS}-objdump -f ../dahdi-base.o | grep -e "dahdi-base.o:" | sed "s/.*file format \(.*\)/\1/"`; \ ++ export BFDARCH=`LANG=C ${TARGET_SYS}-objdump -f ../dahdi-base.o | grep -e "architecture:" | sed "s/.*ture: \(.*\),.*/\1/"`; \ + sed -e s/BFDNAME/$${BFDNAME}/ -e s/BFDARCH/$${BFDARCH}/ $< > $@ + @chmod +x $@ + +diff --git a/drivers/dahdi/firmware/make_firmware_object.in b/drivers/dahdi/firmware/make_firmware_object.in +index 0effb32..6fe232a 100644 +--- a/drivers/dahdi/firmware/make_firmware_object.in ++++ b/drivers/dahdi/firmware/make_firmware_object.in +@@ -5,4 +5,4 @@ + # 1 - firmware file + # 2 - output file + +-objcopy -I binary ${1} -B BFDARCH -O BFDNAME ${2} --rename-section .data=.rodata,alloc,load,data,contents,readonly ++${TARGET_SYS}-objcopy -I binary ${1} -B BFDARCH -O BFDNAME ${2} --rename-section .data=.rodata,alloc,load,data,contents,readonly +-- +2.1.4 + diff --git a/meta-telephony/recipes-isdn/dahdi-tools/dahdi-tools_2.10.2.bb b/meta-telephony/recipes-isdn/dahdi-tools/dahdi-tools_2.10.2.bb new file mode 100644 index 0000000000..7dec897f87 --- /dev/null +++ b/meta-telephony/recipes-isdn/dahdi-tools/dahdi-tools_2.10.2.bb @@ -0,0 +1,46 @@ +DESCRITOPN = "Utilities for the DAHDI Asterisk Linux kernel drivers" +HOMEPAGE = "http://www.asterisk.org" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "\ + file://LICENSE;md5=ea5bed2f60d357618ca161ad539f7c0a \ + file://LICENSE.LGPL;md5=fb504b67c50331fc78734fed90fb0e09 \ +" + +DEPENDS = "dahdi-linux libnewt libusb" + +SRC_URI = "\ + http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi-tools-${PV}.tar.gz \ + file://0001-Set-perllibdir.patch \ + file://0002-Use-sh-not-bash.patch \ + file://0003-Remove-Werror-from-Makefile.patch \ + file://dahdi.init.d \ +" + +SRC_URI[md5sum] = "6928cdf6f7710299ecbcacbac20d5c92" +SRC_URI[sha256sum] = "9e904815dedab231084c542d2d7d5dcc832ebec4b5d5d999a5d757df8b2d571a" + +S = "${WORKDIR}/${PN}-${PV}" + +inherit autotools pkgconfig perlnative cpan-base update-rc.d +# dora doesn't have autotools-brokensep. Still needed for sysmocom +B = "${S}" + +export DAHDI_PERLLIBDIR="${PERLLIBDIRS}/${@get_perl_version(d)}" + +INITSCRIPT_NAME = "dahdi" +INITSCRIPT_PARAMS = "defaults" + +do_install_append(){ + oe_runmake DESTDIR=${D} config + install -Dm 0755 ${WORKDIR}/dahdi.init.d ${D}${sysconfdir}/init.d/dahdi + chown -R root:root ${D}${datadir}/dahdi/ +} + +FILES_${PN} += "${datadir}/dahdi" + +RDEPENDS_${PN} += "\ + perl perl-module-strict perl-module-file-basename perl-module-config \ + perl-module-warnings perl-module-getopt-std perl-module-file-glob \ + perl-module-xsloader perl-module-dynaloader perl-module-carp \ + perl-module-errno perl-module-file-basename dahdi-linux \ +" diff --git a/meta-telephony/recipes-isdn/dahdi-tools/files/0001-Set-perllibdir.patch b/meta-telephony/recipes-isdn/dahdi-tools/files/0001-Set-perllibdir.patch new file mode 100644 index 0000000000..6bf46af1fa --- /dev/null +++ b/meta-telephony/recipes-isdn/dahdi-tools/files/0001-Set-perllibdir.patch @@ -0,0 +1,26 @@ +Upstream-Status: Inappropriate [configuration] + +Subject: [PATCH 1/3] Set perllibdir +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + xpp/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xpp/Makefile b/xpp/Makefile +index 12909f2..8e8b6c9 100644 +--- a/xpp/Makefile ++++ b/xpp/Makefile +@@ -30,7 +30,7 @@ SBINDIR = $(prefix)/sbin + DATADIR = $(datadir)/dahdi + MANDIR = $(mandir)/man8 + HOTPLUG_USB_DIR = $(sysconfdir)/hotplug/usb +-PERLLIBDIR := $(shell eval `perl -V:sitelib`; echo "$$sitelib") ++PERLLIBDIR = $(DAHDI_PERLLIBDIR) + PERL_DIRS := $(shell cd perl_modules; find * -name '[A-Z]*' -type d| xargs) + PERL_MODS_PAT := *.pm $(PERL_DIRS:%=%/*.pm) + PERL_MODS := $(shell cd perl_modules; echo $(PERL_MODS_PAT)) +-- +2.1.4 + diff --git a/meta-telephony/recipes-isdn/dahdi-tools/files/0002-Use-sh-not-bash.patch b/meta-telephony/recipes-isdn/dahdi-tools/files/0002-Use-sh-not-bash.patch new file mode 100644 index 0000000000..e6d15b5d7c --- /dev/null +++ b/meta-telephony/recipes-isdn/dahdi-tools/files/0002-Use-sh-not-bash.patch @@ -0,0 +1,23 @@ +Upstream-Status: Inappropriate [configuration] + +Subject: [PATCH 2/3] Use sh not bash +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + xpp/xpp_fxloader | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xpp/xpp_fxloader b/xpp/xpp_fxloader +index 5135ebf..8598004 100644 +--- a/xpp/xpp_fxloader ++++ b/xpp/xpp_fxloader +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + + # xpp_fxloader: load Xorcom Astribank (XPP) firmware + # $Id$ +-- +2.1.4 + diff --git a/meta-telephony/recipes-isdn/dahdi-tools/files/0003-Remove-Werror-from-Makefile.patch b/meta-telephony/recipes-isdn/dahdi-tools/files/0003-Remove-Werror-from-Makefile.patch new file mode 100644 index 0000000000..9c1f9fa25a --- /dev/null +++ b/meta-telephony/recipes-isdn/dahdi-tools/files/0003-Remove-Werror-from-Makefile.patch @@ -0,0 +1,42 @@ +Upstream-Status: Pending + +Fix error: "cc1: all warnings being treated as errors" + +Subject: [PATCH 3/3] Remove Werror from Makefile +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + Makefile | 2 +- + xpp/Makefile | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 69741e6..1a5eefc 100644 +--- a/Makefile ++++ b/Makefile +@@ -27,7 +27,7 @@ CFLAGS+=-m64 + endif + + ifeq ($(DAHDI_DEVMODE),yes) +- CFLAGS+=-Werror -Wunused -Wundef $(DAHDI_DECLARATION_AFTER_STATEMENT) -Wmissing-format-attribute -Wformat-security #-Wformat=2 ++ CFLAGS+= -Wunused -Wundef $(DAHDI_DECLARATION_AFTER_STATEMENT) -Wmissing-format-attribute -Wformat-security #-Wformat=2 + endif + + ROOT_PREFIX= +diff --git a/xpp/Makefile b/xpp/Makefile +index 8e8b6c9..001e476 100644 +--- a/xpp/Makefile ++++ b/xpp/Makefile +@@ -146,7 +146,7 @@ ifneq (,$(PERLLIBDIR)) + done + endif + +-CFLAGS += -I. -Ixtalk -Wall -Werror ++CFLAGS += -I. -Ixtalk -Wall + + astribank_hexload: $(ABHEXLOAD_OBJS) + astribank_hexload: LIBS+=$(EXTRA_LIBS) $(USB_LIB) +-- +2.1.4 + diff --git a/meta-telephony/recipes-isdn/dahdi-tools/files/dahdi.init.d b/meta-telephony/recipes-isdn/dahdi-tools/files/dahdi.init.d new file mode 100644 index 0000000000..87b57d5db1 --- /dev/null +++ b/meta-telephony/recipes-isdn/dahdi-tools/files/dahdi.init.d @@ -0,0 +1,343 @@ +#!/bin/sh +# +# dahdi This shell script takes care of loading and unloading \ +# DAHDI Telephony interfaces +# chkconfig: 2345 9 92 +# description: The DAHDI drivers allow you to use your linux \ +# computer to accept incoming data and voice interfaces +# +# config: /etc/dahdi/init.conf + +### BEGIN INIT INFO +# Provides: dahdi +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Should-Start: $network $syslog +# Should-Stop: $network $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: DAHDI kernel modules +# Description: dahdi - load and configure DAHDI modules +### END INIT INFO + +initdir=/etc/init.d + +# Don't edit the following values. Edit /etc/dahdi/init.conf instead. + +DAHDI_CFG=/usr/sbin/dahdi_cfg +DAHDI_CFG_CMD=${DAHDI_CFG_CMD:-"$DAHDI_CFG"} # e.g: for a custom system.conf location + +FXOTUNE=/usr/sbin/fxotune + +# The default syncer Astribank. Usually set automatically to a sane +# value by xpp_sync(1) if you have an Astribank. You can set this to an +# explicit Astribank (e.g: 01). +XPP_SYNC=auto + +# The maximal timeout (seconds) to wait for udevd to finish generating +# device nodes after the modules have loaded and before running dahdi_cfg. +DAHDI_DEV_TIMEOUT=20 + +# A list of modules to unload when stopping. +# All of their dependencies will be unloaded as well. +DAHDI_UNLOAD_MODULES="dahdi" + +# +# Determine which kind of configuration we're using +# +system=debian # assume debian +if [ -f /etc/debian_version ]; then + system=debian +fi + +if [ -f /etc/gentoo-release ]; then + system=debian +fi + +if [ -f /etc/SuSE-release -o -f /etc/novell-release ] +then + system=debian +fi + +# Source function library. +if [ $system = debian ]; then + . $initdir/functions || exit 0 +fi + +DAHDI_MODULES_FILE="/etc/dahdi/modules" + +[ -r /etc/dahdi/init.conf ] && . /etc/dahdi/init.conf + +if [ $system = redhat ]; then + LOCKFILE=/var/lock/subsys/dahdi +fi + +# recursively unload a module and its dependencies, if possible. +# where's modprobe -r when you need it? +# inputs: module to unload. +# returns: the result from +unload_module() { + module="$1" + line=`lsmod 2>/dev/null | grep "^$1 "` + if [ "$line" = '' ]; then return; fi # module was not loaded + + set -- $line + # $1: the original module, $2: size, $3: refcount, $4: deps list + mods=`echo $4 | tr , ' '` + ec_modules="" + # xpp_usb keeps the xpds below busy if an xpp hardware is + # connected. Hence must be removed before them: + case "$module" in xpd_*) mods="xpp_usb $mods";; esac + + for mod in $mods; do + case "$mod" in + dahdi_echocan_*) + ec_modules="$mod $ec_modules" + ;; + *) + # run in a subshell, so it won't step over our vars: + (unload_module $mod) + ;; + esac + done + # Now that all the other dependencies are unloaded, we can unload the + # dahdi_echocan modules. The drivers that register spans may keep + # references on the echocan modules before they are unloaded. + for mod in $ec_modules; do + (unload_module $mod) + done + rmmod $module +} + +unload_modules() { + for module in $DAHDI_UNLOAD_MODULES; do + unload_module $module + done +} + +# In (xpp) hotplug mode, the init script is also executed from the +# hotplug hook. In that case it should not attempt to loade modules. +# +# This function only retunrs false (1) if we're in hotplug mode and +# coming from the hotplug hook script. +hotplug_should_load_modules() { + if [ "$XPP_HOTPLUG_DAHDI" = yes -a "$CALLED_FROM_ATRIBANK_HOOK" != '' ] + then + return 1 + fi + return 0 +} + +# In (xpp) hotplug mode: quit after we loaded modules. +# +# In hotplug mode, the main run should end here, whereas the rest of the +# script should be finished by the instance running from the hook. +# Note that we only get here if there are actually Astribanks on the +# system (otherwise noone will trigger the run of the hotplug hook +# script). +hotplug_exit_after_load() { + if [ "$XPP_HOTPLUG_DAHDI" = yes -a "$CALLED_FROM_ATRIBANK_HOOK" = '' ] + then + exit 0 + fi +} + +# Initialize the Xorcom Astribank (xpp/) using perl utiliites: +xpp_startup() { + if [ "$ASTERISK_SUPPORTS_DAHDI_HOTPLUG" = yes ]; then + aas_param='/sys/module/dahdi/parameters/auto_assign_spans' + aas=`cat "$aas_param" 2>/dev/null` + if [ "$aas" = 0 ]; then + echo 1>&2 "Don't wait for Astribanks (use Asterisk hotplug-support)" + return 0 + fi + fi + # do nothing if there are no astribank devices: + if ! /usr/share/dahdi/waitfor_xpds; then return 0; fi + + hotplug_exit_after_load +} + + +hpec_start() { + # HPEC license found + if ! echo /var/lib/digium/licenses/HPEC-*.lic | grep -v '\*' | grep -q .; then + return + fi + + # dahdihpec_enable not installed in /usr/sbin + if [ ! -f /usr/sbin/dahdihpec_enable ]; then + echo -n "Running dahdihpec_enable: Failed" + echo -n "." + echo " The dahdihpec_enable binary is not installed in /usr/sbin." + return + fi + + # dahdihpec_enable not set executable + if [ ! -x /usr/sbin/dahdihpec_enable ]; then + echo -n "Running dahdihpec_enable: Failed" + echo -n "." + echo " /usr/sbin/dahdihpec_enable is not set as executable." + return + fi + + # dahdihpec_enable properly installed + if [ $system = debian ]; then + echo -n "Running dahdihpec_enable: " + /usr/sbin/dahdihpec_enable 2> /dev/null + elif [ $system = redhat ]; then + action "Running dahdihpec_enable: " /usr/sbin/dahdihpec_enable + fi + if [ $? = 0 ]; then + echo -n "done" + echo "." + else + echo -n "Failed" + echo -n "." + echo " This can be caused if you had already run dahdihpec_enable, or if your HPEC license is no longer valid." + fi +} + +shutdown_dynamic() { + if ! grep -q ' DYN/' /proc/dahdi/* 2>/dev/null; then return; fi + + # we should only get here if we have dynamic spans. Right? + $DAHDI_CFG_CMD -s +} + +load_modules() { + # Some systems, e.g. Debian Lenny, add here -b, which will break + # loading of modules blacklisted in modprobe.d/* + unset MODPROBE_OPTIONS + modules=`sed -e 's/#.*$//' $DAHDI_MODULES_FILE 2>/dev/null` + #if [ "$modules" = '' ]; then + # what? + #fi + echo "Loading DAHDI hardware modules:" + modprobe dahdi + for line in $modules; do + if [ $system = debian ]; then + echo -n " ${line}: " + if modprobe $line 2> /dev/null; then + echo -n "done" + else + echo -n "error" + fi + elif [ $system = redhat ]; then + action " ${line}: " modprobe $line + fi + done + echo "" +} + +# Make sure that either dahdi is loaded or modprobe-able +dahdi_modules_loadable() { + modinfo dahdi >/dev/null 2>&1 || lsmod | grep -q -w ^dahdi +} + +if [ ! -x "$DAHDI_CFG" ]; then + echo "dahdi_cfg not executable" + exit 0 +fi + +RETVAL=0 + +# See how we were called. +case "$1" in + start) + if ! dahdi_modules_loadable; then + echo "No DAHDI modules on the system. Not starting" + exit 0 + fi + if hotplug_should_load_modules; then + load_modules + fi + + TMOUT=$DAHDI_DEV_TIMEOUT # max secs to wait + + while [ ! -d /dev/dahdi ] ; do + sleep 1 + TMOUT=`expr $TMOUT - 1` + if [ $TMOUT -eq 0 ] ; then + echo "Error: missing /dev/dahdi!" + exit 1 + fi + done + + xpp_startup + + # Assign all spans that weren't handled via udev + /etc/dahdi/assigned-spans.conf + /usr/share/dahdi/dahdi_auto_assign_compat + + if [ $system = debian ]; then + echo -n "Running dahdi_cfg: " + $DAHDI_CFG_CMD 2> /dev/null && echo -n "done" + echo "." + elif [ $system = redhat ]; then + action "Running dahdi_cfg: " $DAHDI_CFG_CMD + fi + RETVAL=$? + + if [ "$LOCKFILE" != '' ]; then + [ $RETVAL -eq 0 ] && touch $LOCKFILE + fi + + if [ -x "$FXOTUNE" ] && [ -r /etc/fxotune.conf ]; then + # Allowed to fail if e.g. Asterisk already uses channels: + $FXOTUNE -s || : + fi + + # Do not try to call xpp_sync if there are no Astribank devices + # installed. + if test -e /sys/bus/astribanks; then + # Set the right Astribanks ticker: + LC_ALL=C xpp_sync "$XPP_SYNC" + fi + + hpec_start + ;; + stop) + # Unload drivers + #shutdown_dynamic # FIXME: needs test from someone with dynamic spans + echo -n "Unloading DAHDI hardware modules: " + if unload_modules; then + echo "done" + else + echo "error" + fi + if [ "$LOCKFILE" != '' ]; then + [ $RETVAL -eq 0 ] && rm -f $LOCKFILE + fi + ;; + unload) + unload_modules + ;; + restart|force-reload) + $0 stop + $0 start + ;; + reload) + if [ $system = debian ]; then + echo -n "Rerunning dahdi_cfg: " + $DAHDI_CFG_CMD 2> /dev/null && echo -n "done" + echo "." + elif [ $system = redhat ]; then + action "Rerunning dahdi_cfg: " $DAHDI_CFG_CMD + fi + RETVAL=$? + ;; + status) + if [ -d /proc/dahdi ]; then + /usr/sbin/lsdahdi + RETVAL=0 + else + RETVAL=3 + fi + ;; + *) + echo "Usage: dahdi {start|stop|restart|status|reload|unload}" + exit 1 +esac + +exit $RETVAL + diff --git a/meta-telephony/recipes-isdn/lcr/files/0001-Fixed-compiler-warnings.patch b/meta-telephony/recipes-isdn/lcr/files/0001-Fixed-compiler-warnings.patch new file mode 100644 index 0000000000..dcb99ae454 --- /dev/null +++ b/meta-telephony/recipes-isdn/lcr/files/0001-Fixed-compiler-warnings.patch @@ -0,0 +1,167 @@ +From 2aac6a668be131c610b6705a99817e6baf10599f Mon Sep 17 00:00:00 2001 +From: Andreas Eversberg +Date: Tue, 15 Dec 2015 20:49:18 +0100 +Subject: [PATCH] Fixed compiler warnings + +--- + alawulaw.c | 18 +++++++++--------- + gentones.c | 8 ++++---- + genwave.c | 10 +++++----- + 3 files changed, 18 insertions(+), 18 deletions(-) + +diff --git a/alawulaw.c b/alawulaw.c +index cafe1af..f38fa46 100644 +--- a/alawulaw.c ++++ b/alawulaw.c +@@ -13,7 +13,7 @@ signed int *audio_law_to_s32; + unsigned char silence; + + /* ulaw -> signed 16-bit */ +-static signed int audio_ulaw_to_s32[] = ++static unsigned int audio_ulaw_to_s32[] = + { + 0xffff8284, 0xffff8684, 0xffff8a84, 0xffff8e84, + 0xffff9284, 0xffff9684, 0xffff9a84, 0xffff9e84, +@@ -82,7 +82,7 @@ static signed int audio_ulaw_to_s32[] = + }; + + /* alaw -> signed 16-bit */ +-static signed int audio_alaw_to_s32[] = ++static unsigned int audio_alaw_to_s32[] = + { + 0x000013fc, 0xffffec04, 0x00000144, 0xfffffebc, + 0x0000517c, 0xffffae84, 0x0000051c, 0xfffffae4, +@@ -155,7 +155,7 @@ unsigned char audio_s16_to_law[65536]; + + + /* table is used to generate s16_to_alaw */ +-static short audio_alaw_relations[] = ++static unsigned short audio_alaw_relations[] = + { + 0x8684, 0x55, 0x8a84, 0xd5, 0x8e84, 0x15, 0x9284, 0x95, + 0x9684, 0x75, 0x9a84, 0xf5, 0x9e84, 0x35, 0xa284, 0xb5, +@@ -231,32 +231,32 @@ void generate_tables(char law) + + if (law == 'a') { + silence = 0x2a; +- audio_law_to_s32=audio_alaw_to_s32; ++ audio_law_to_s32 = (signed int *)audio_alaw_to_s32; + /* generating alaw-table */ + i = j = 0; + while(i < 65536) { +- if (i-32768 > audio_alaw_relations[j<<1]) ++ if (i-32768 > (signed short)audio_alaw_relations[j<<1]) + j++; + if (j>255) + j=255; + audio_s16_to_law[(i-32768) & 0xffff] +- = audio_alaw_relations[(j<<1)|1]; ++ = (signed short)audio_alaw_relations[(j<<1)|1]; + i++; + } + } else { + silence = 0xff; +- audio_law_to_s32=audio_ulaw_to_s32; ++ audio_law_to_s32 = (signed int *)audio_ulaw_to_s32; + /* generating ulaw-table */ + i = j = 0; + while(i < 32768) { +- if (i-32768 > audio_ulaw_to_s32[j]) ++ if (i-32768 > (signed int)audio_ulaw_to_s32[j]) + j++; + audio_s16_to_law[(i-32768) & 0xffff] = j; + i++; + } + j = 255; + while(i < 65536) { +- if (i-0x32768 > audio_ulaw_to_s32[j]) ++ if (i-0x32768 > (signed int)audio_ulaw_to_s32[j]) + j--; + audio_s16_to_law[(i-32768) & 0xffff] = j; + i++; +diff --git a/gentones.c b/gentones.c +index aaac659..a712f1a 100644 +--- a/gentones.c ++++ b/gentones.c +@@ -10,7 +10,7 @@ + + + /* ulaw -> signed 16-bit */ +-static short isdn_audio_ulaw_to_s16[] = ++static unsigned short isdn_audio_ulaw_to_s16[] = + { + 0x8284, 0x8684, 0x8a84, 0x8e84, 0x9284, 0x9684, 0x9a84, 0x9e84, + 0xa284, 0xa684, 0xaa84, 0xae84, 0xb284, 0xb684, 0xba84, 0xbe84, +@@ -47,7 +47,7 @@ static short isdn_audio_ulaw_to_s16[] = + }; + + /* alaw -> signed 16-bit */ +-static short isdn_audio_alaw_to_s16[] = ++static unsigned short isdn_audio_alaw_to_s16[] = + { + 0x13fc, 0xec04, 0x0144, 0xfebc, 0x517c, 0xae84, 0x051c, 0xfae4, + 0x0a3c, 0xf5c4, 0x0048, 0xffb8, 0x287c, 0xd784, 0x028c, 0xfd74, +@@ -92,7 +92,7 @@ unsigned char encode_isdn(short sample, char law) + + i=0; + while(i<256) { +- diff = (law=='u')?isdn_audio_ulaw_to_s16[i]:isdn_audio_alaw_to_s16[i]-sample; ++ diff = (law=='u')?((signed short)isdn_audio_ulaw_to_s16[i]):((signed short)isdn_audio_alaw_to_s16[i])-sample; + //printf("s16=%d sample%d diff=%d\n",isdn_audio_to_s16[i],sample,diff); + if (diff<0) + diff=0-diff; +@@ -150,7 +150,7 @@ void write_wav(FILE *fp, char *wav, char law) + short sample, sample2; + signed int size, chunk; + int gotfmt = 0, gotdata = 0; +- int ret; ++ int __attribute__((__unused__)) ret; + + if ((wfp=fopen(wav,"r"))) { + ret=fread(buffer,8,1,wfp); +diff --git a/genwave.c b/genwave.c +index 685b5fa..fe74658 100644 +--- a/genwave.c ++++ b/genwave.c +@@ -9,7 +9,7 @@ + + + /* ulaw -> signed 16-bit */ +-static short isdn_audio_ulaw_to_s16[] = ++static unsigned short isdn_audio_ulaw_to_s16[] = + { + 0x8284, 0x8684, 0x8a84, 0x8e84, 0x9284, 0x9684, 0x9a84, 0x9e84, + 0xa284, 0xa684, 0xaa84, 0xae84, 0xb284, 0xb684, 0xba84, 0xbe84, +@@ -46,7 +46,7 @@ static short isdn_audio_ulaw_to_s16[] = + }; + + /* alaw -> signed 16-bit */ +-static short isdn_audio_alaw_to_s16[] = ++static unsigned short isdn_audio_alaw_to_s16[] = + { + 0x13fc, 0xec04, 0x0144, 0xfebc, 0x517c, 0xae84, 0x051c, 0xfae4, + 0x0a3c, 0xf5c4, 0x0048, 0xffb8, 0x287c, 0xd784, 0x028c, 0xfd74, +@@ -100,7 +100,7 @@ void write_law(FILE *fp, char *name, char law) + unsigned int i; + short sample; + unsigned int size, wsize; +- int ret; ++ int __attribute__((__unused__)) ret; + + if ((lfp=fopen(name,"r"))) { + /* get size */ +@@ -134,9 +134,9 @@ void write_law(FILE *fp, char *name, char law) + while(i < size) { + ret = fread(buffer, 1, 1, lfp); + if (law == 'a') +- sample = isdn_audio_alaw_to_s16[*buffer]; ++ sample = (signed short)isdn_audio_alaw_to_s16[*buffer]; + else +- sample = isdn_audio_ulaw_to_s16[*buffer]; ++ sample = (signed short)isdn_audio_ulaw_to_s16[*buffer]; + ret = fwrite(&sample, 2, 1, fp); + i+=2; + } +-- +1.9.1 + diff --git a/meta-telephony/recipes-isdn/lcr/files/lcr-disable-gsmfr.diff b/meta-telephony/recipes-isdn/lcr/files/lcr-disable-gsmfr.diff new file mode 100644 index 0000000000..1c94c6569a --- /dev/null +++ b/meta-telephony/recipes-isdn/lcr/files/lcr-disable-gsmfr.diff @@ -0,0 +1,44 @@ +diff --git a/Makefile.am b/Makefile.am +index b1fab38..df19a20 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -53,23 +53,14 @@ MISDN_LIB = -lmisdn + + endif + +-SUBDIRS = +- + GSM_INCLUDE = + GSM_SOURCE = + GSM_LIB = + + if ENABLE_GSM + +-#if ENABLE_GSMFR +- + GSM_INCLUDE += -DWITH_GSMFR +- +-GSM_LIB += libgsmfr/lib/libgsm.a +- +-SUBDIRS += libgsmfr +- +-#endif ++GSM_LIB += -lgsm + + if ENABLE_GSMHR + +@@ -205,14 +196,6 @@ TONEDIRS = tones_american tones_efi tones_german vbox_english vbox_german + EXTRA_DIST = default debian $(TONEDIRS) + + install-data-hook: +- @fns='strcpy strncpy strcat strncat sprintf snprintf' ; \ +- files=$$( find $(srcdir) -type f -name "*.c*" \ +- | $(GREP) -v -e chan_lcr.c -e callerid.c ) ; \ +- test -z "$$files" || { for fn in $$fns ; do \ +- $(GREP) -n $$fn $$files ; if test $$? = 0 ; then \ +- ( echo "dont use $$fn, use makro instead." ; exit -1 ) ; \ +- fi ; \ +- done ; } + mkdir -p '$(DESTDIR)$(CONFIGdir)' + mkdir -p '$(DESTDIR)$(SHAREdir)' + mkdir -p '$(DESTDIR)$(LOGdir)' diff --git a/meta-telephony/recipes-isdn/lcr/files/lcr.init b/meta-telephony/recipes-isdn/lcr/files/lcr.init new file mode 100644 index 0000000000..3bf79809ab --- /dev/null +++ b/meta-telephony/recipes-isdn/lcr/files/lcr.init @@ -0,0 +1,21 @@ +#!/bin/sh + +NAME=lcr + +set -e + +case "$1" in + start) + /usr/sbin/lcr fork + echo "Forked LCR" + ;; + stop) + echo "Can not stop it" + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 +esac + +exit 0 diff --git a/meta-telephony/recipes-isdn/lcr/lcr_git.bb b/meta-telephony/recipes-isdn/lcr/lcr_git.bb new file mode 100644 index 0000000000..5858c895a4 --- /dev/null +++ b/meta-telephony/recipes-isdn/lcr/lcr_git.bb @@ -0,0 +1,42 @@ +DESCRITOPN = "Linux Call Router" +DEPENDS = "libgsm libopencore-amr sofia-sip" +HOMEPAGE = "http://isdn.eversberg.eu/" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=de9327a12ae1ccc94dade892a360f996" + +PV = "1.14+gitr${SRCPV}" +PR = "r4" + +SRCREV = "38fce218f8897d120aeba56e811ef7dada898c2c" +SRC_URI = "git://git.misdn.eu/lcr.git \ + file://lcr-disable-gsmfr.diff \ + file://0001-Fixed-compiler-warnings.patch \ + file://lcr.init " +S = "${WORKDIR}/git" + +EXTRA_OECONF = "--with-gsm-bs --without-asterisk --without-misdn --with-sip" + +inherit autotools update-rc.d pkgconfig + +PACKAGES =+ "${PN}-tones-de ${PN}-vbox-de \ + ${PN}-tones-en ${PN}-vbox-en" + +CONFFILES_${PN} = "${sysconfdir}/lcr/options.conf" +INITSCRIPT_PACKAGES = "${PN}" +INITSCRIPT_NAME_${PN} = "lcr" +INITSCRIPT_PARAMS_${PN} = "defaults 30 30" + +FILES_${PN}-tones-de = "/usr/share/lcr/tones_german" +FILES_${PN}-tones-en = "/usr/share/lcr/tones_american" +FILES_${PN}-vbox-de = "/usr/share/lcr/vbox_german" +FILES_${PN}-vbox-en = "/usr/share/lcr/vbox_english" + + +do_install_append() { + install -d ${D}${sysconfdir}/init.d + install -m 0775 ${WORKDIR}/lcr.init ${D}${sysconfdir}/init.d/lcr + + rm ${D}${sysconfdir}/lcr/routing.conf + rm ${D}${sysconfdir}/lcr/interface.conf + rm ${D}${sysconfdir}/lcr/directory.list +} diff --git a/meta-telephony/recipes-isdn/libgsm/files/0001-Configure-Makefile.patch b/meta-telephony/recipes-isdn/libgsm/files/0001-Configure-Makefile.patch new file mode 100644 index 0000000000..60aa78d660 --- /dev/null +++ b/meta-telephony/recipes-isdn/libgsm/files/0001-Configure-Makefile.patch @@ -0,0 +1,85 @@ +Upstream-Status: Inappropriate [configuration] + +Subject: [PATCH 1/5] Configure Makefile +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + Makefile | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +diff --git a/Makefile b/Makefile +index cfab74f..410d3f6 100644 +--- a/Makefile ++++ b/Makefile +@@ -96,7 +96,7 @@ TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/man/man1 + # Other tools + + SHELL = /bin/sh +-LN = ln ++LN = ln -s + BASENAME = basename + AR = ar + ARFLAGS = cr +@@ -140,6 +140,7 @@ LFLAGS = $(LDFLAGS) $(LDINC) + # Targets + + LIBGSM = $(LIB)/libgsm.a ++LIBGSMSO = $(LIB)/libgsm.so + + TOAST = $(BIN)/toast + UNTOAST = $(BIN)/untoast +@@ -279,7 +280,7 @@ TOAST_INSTALL_TARGETS = \ + + # Target rules + +-all: $(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST) ++all: $(LIBGSM) $(LIBGSMSO) $(TOAST) $(TCAT) $(UNTOAST) + @-echo $(ROOT): Done. + + tst: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result +@@ -299,6 +300,11 @@ install: toastinstall gsminstall + + # The basic API: libgsm + ++$(LIBGSMSO): $(LIB) $(GSM_OBJECTS) ++ $(LD) -o $@.1.0.12 -shared -Xlinker -soname -Xlinker libgsm.so.1 $(GSM_OBJECTS) -lc $(LDFLAGS) ++ ln -fs libgsm.so.1.0.12 lib/libgsm.so.1 ++ ln -fs libgsm.so.1.0.12 lib/libgsm.so ++ + $(LIBGSM): $(LIB) $(GSM_OBJECTS) + -rm $(RMFLAGS) $(LIBGSM) + $(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS) +@@ -308,15 +314,15 @@ $(LIBGSM): $(LIB) $(GSM_OBJECTS) + # Toast, Untoast and Tcat -- the compress-like frontends to gsm. + + $(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSM) +- $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB) ++ $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSMSO) $(LDLIB) + + $(UNTOAST): $(BIN) $(TOAST) + -rm $(RMFLAGS) $(UNTOAST) +- $(LN) $(TOAST) $(UNTOAST) ++ $(LN) toast $(UNTOAST) + + $(TCAT): $(BIN) $(TOAST) + -rm $(RMFLAGS) $(TCAT) +- $(LN) $(TOAST) $(TCAT) ++ $(LN) toast $(TCAT) + + + # The local bin and lib directories +@@ -426,7 +432,9 @@ semi-clean: + + clean: semi-clean + -rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add \ +- $(TOAST) $(TCAT) $(UNTOAST) \ ++ $(LIBGSMSO) $(LIB)/libgsm.so.1.0.12 \ ++ $(LIB)libgsm.so.1 \ ++ $(TOAST) $(TCAT) $(UNTOAST) \ + $(ROOT)/gsm-1.0.tar.Z + + +-- +2.1.4 + diff --git a/meta-telephony/recipes-isdn/libgsm/files/0002-Add-defines-to-c.patch b/meta-telephony/recipes-isdn/libgsm/files/0002-Add-defines-to-c.patch new file mode 100644 index 0000000000..70f34f2a59 --- /dev/null +++ b/meta-telephony/recipes-isdn/libgsm/files/0002-Add-defines-to-c.patch @@ -0,0 +1,39 @@ +Upstream-Status: Inappropriate [configuration] + +Subject: [PATCH 2/5] Add defines to c++ +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + inc/gsm.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/inc/gsm.h b/inc/gsm.h +index 4714ab6..eb2d5e7 100644 +--- a/inc/gsm.h ++++ b/inc/gsm.h +@@ -54,6 +54,10 @@ typedef gsm_byte gsm_frame[33]; /* 33 * 8 bits */ + #define GSM_OPT_FRAME_INDEX 5 + #define GSM_OPT_FRAME_CHAIN 6 + ++#ifdef __cplusplus ++extern "C" { ++#endif ++ + extern gsm gsm_create GSM_P((void)); + extern void gsm_destroy GSM_P((gsm)); + +@@ -66,6 +70,10 @@ extern int gsm_decode GSM_P((gsm, gsm_byte *, gsm_signal *)); + extern int gsm_explode GSM_P((gsm, gsm_byte *, gsm_signal *)); + extern void gsm_implode GSM_P((gsm, gsm_signal *, gsm_byte *)); + ++#ifdef __cplusplus ++} ++#endif ++ + #undef GSM_P + + #endif /* GSM_H */ +-- +2.1.4 + diff --git a/meta-telephony/recipes-isdn/libgsm/files/0003-Use-gsm_config.-header-instead-of-config.h.patch b/meta-telephony/recipes-isdn/libgsm/files/0003-Use-gsm_config.-header-instead-of-config.h.patch new file mode 100644 index 0000000000..675512456a --- /dev/null +++ b/meta-telephony/recipes-isdn/libgsm/files/0003-Use-gsm_config.-header-instead-of-config.h.patch @@ -0,0 +1,186 @@ +Upstream-Status: Inappropriate [configuration] + +Subject: [PATCH 3/5] Use gsm_config. header instead of config.h +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + Makefile | 2 +- + inc/config.h | 37 ------------------------------------- + inc/gsm_config.h | 37 +++++++++++++++++++++++++++++++++++++ + inc/toast.h | 2 +- + src/code.c | 2 +- + src/gsm_create.c | 2 +- + src/gsm_destroy.c | 2 +- + tls/taste.c | 2 +- + 8 files changed, 43 insertions(+), 43 deletions(-) + delete mode 100644 inc/config.h + create mode 100644 inc/gsm_config.h + +diff --git a/Makefile b/Makefile +index 410d3f6..c8c5b58 100644 +--- a/Makefile ++++ b/Makefile +@@ -152,7 +152,7 @@ GSM_HEADERS = $(INC)/gsm.h + + HEADERS = $(INC)/proto.h \ + $(INC)/unproto.h \ +- $(INC)/config.h \ ++ $(INC)/gsm_config.h \ + $(INC)/private.h \ + $(INC)/gsm.h \ + $(INC)/toast.h \ +diff --git a/inc/config.h b/inc/config.h +deleted file mode 100644 +index dfb1ead..0000000 +--- a/inc/config.h ++++ /dev/null +@@ -1,37 +0,0 @@ +-/* +- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische +- * Universitaet Berlin. See the accompanying file "COPYRIGHT" for +- * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. +- */ +- +-/*$Header: /tmp_amd/presto/export/kbs/jutta/src/gsm/RCS/config.h,v 1.5 1996/07/02 11:26:20 jutta Exp $*/ +- +-#ifndef CONFIG_H +-#define CONFIG_H +- +-/*efine SIGHANDLER_T int /* signal handlers are void */ +-/*efine HAS_SYSV_SIGNAL 1 /* sigs not blocked/reset? */ +- +-#define HAS_STDLIB_H 1 /* /usr/include/stdlib.h */ +-#define HAS_LIMITS_H 1 /* /usr/include/limits.h */ +-#define HAS_FCNTL_H 1 /* /usr/include/fcntl.h */ +-#define HAS_ERRNO_DECL 1 /* errno.h declares errno */ +- +-#define HAS_FSTAT 1 /* fstat syscall */ +-#define HAS_FCHMOD 1 /* fchmod syscall */ +-#define HAS_CHMOD 1 /* chmod syscall */ +-#define HAS_FCHOWN 1 /* fchown syscall */ +-#define HAS_CHOWN 1 /* chown syscall */ +-/*efine HAS__FSETMODE 1 /* _fsetmode -- set file mode */ +- +-#define HAS_STRING_H 1 /* /usr/include/string.h */ +-/*efine HAS_STRINGS_H 1 /* /usr/include/strings.h */ +- +-#define HAS_UNISTD_H 1 /* /usr/include/unistd.h */ +-#define HAS_UTIME 1 /* POSIX utime(path, times) */ +-/*efine HAS_UTIMES 1 /* use utimes() syscall instead */ +-#define HAS_UTIME_H 1 /* UTIME header file */ +-#define HAS_UTIMBUF 1 /* struct utimbuf */ +-/*efine HAS_UTIMEUSEC 1 /* microseconds in utimbuf? */ +- +-#endif /* CONFIG_H */ +diff --git a/inc/gsm_config.h b/inc/gsm_config.h +new file mode 100644 +index 0000000..28cee6d +--- /dev/null ++++ b/inc/gsm_config.h +@@ -0,0 +1,37 @@ ++/* ++ * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische ++ * Universitaet Berlin. See the accompanying file "COPYRIGHT" for ++ * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. ++ */ ++ ++/*$Header: /tmp_amd/presto/export/kbs/jutta/src/gsm/RCS/config.h,v 1.5 1996/07/02 11:26:20 jutta Exp $*/ ++ ++#ifndef CONFIG_H ++#define CONFIG_H ++ ++/*efine SIGHANDLER_T int -* signal handlers are void */ ++/*efine HAS_SYSV_SIGNAL 1 -* sigs not blocked/reset? */ ++ ++#define HAS_STDLIB_H 1 /* /usr/include/stdlib.h */ ++#define HAS_STDIO_H 1 /* /usr/include/stdio.h */ ++/*efine HAS_LIMITS_H 1 -* /usr/include/limits.h */ ++#define HAS_FCNTL_H 1 /* /usr/include/fcntl.h */ ++ ++#define HAS_FSTAT 1 /* fstat syscall */ ++#define HAS_FCHMOD 1 /* fchmod syscall */ ++#define HAS_CHMOD 1 /* chmod syscall */ ++#define HAS_FCHOWN 1 /* fchown syscall */ ++#define HAS_CHOWN 1 /* chown syscall */ ++/*efine HAS__FSETMODE 1 -* _fsetmode -- set file mode */ ++ ++#define HAS_STRING_H 1 /* /usr/include/string.h */ ++/*efine HAS_STRINGS_H 1 -* /usr/include/strings.h */ ++ ++#define HAS_UNISTD_H 1 /* /usr/include/unistd.h */ ++#define HAS_UTIME 1 /* POSIX utime(path, times) */ ++/*efine HAS_UTIMES 1 -* use utimes() syscall instead */ ++#define HAS_UTIME_H 1 /* UTIME header file */ ++/*efine HAS_UTIMBUF 1 -* struct utimbuf */ ++/*efine HAS_UTIMEUSEC 1 -* microseconds in utimbuf? */ ++ ++#endif /* CONFIG_H */ +diff --git a/inc/toast.h b/inc/toast.h +index b42d9ae..911769d 100644 +--- a/inc/toast.h ++++ b/inc/toast.h +@@ -9,7 +9,7 @@ + #ifndef TOAST_H + #define TOAST_H /* Guard against multiple includes */ + +-#include "config.h" ++#include "gsm_config.h" + + #include + #include +diff --git a/src/code.c b/src/code.c +index 402f614..5222727 100644 +--- a/src/code.c ++++ b/src/code.c +@@ -6,7 +6,7 @@ + + /* $Header: /tmp_amd/presto/export/kbs/jutta/src/gsm/RCS/code.c,v 1.3 1996/07/02 09:59:05 jutta Exp $ */ + +-#include "config.h" ++#include "gsm_config.h" + + + #ifdef HAS_STRING_H +diff --git a/src/gsm_create.c b/src/gsm_create.c +index a0bf634..9cc2670 100644 +--- a/src/gsm_create.c ++++ b/src/gsm_create.c +@@ -6,7 +6,7 @@ + + static char const ident[] = "$Header: /tmp_amd/presto/export/kbs/jutta/src/gsm/RCS/gsm_create.c,v 1.4 1996/07/02 09:59:05 jutta Exp $"; + +-#include "config.h" ++#include "gsm_config.h" + + #ifdef HAS_STRING_H + #include +diff --git a/src/gsm_destroy.c b/src/gsm_destroy.c +index 03c8659..274dc4c 100644 +--- a/src/gsm_destroy.c ++++ b/src/gsm_destroy.c +@@ -7,7 +7,7 @@ + /* $Header: /tmp_amd/presto/export/kbs/jutta/src/gsm/RCS/gsm_destroy.c,v 1.3 1994/11/28 19:52:25 jutta Exp $ */ + + #include "gsm.h" +-#include "config.h" ++#include "gsm_config.h" + #include "proto.h" + + #ifdef HAS_STDLIB_H +diff --git a/tls/taste.c b/tls/taste.c +index 4bc84ad..56d1a93 100644 +--- a/tls/taste.c ++++ b/tls/taste.c +@@ -10,7 +10,7 @@ + #include + #include + +-#include "config.h" ++#include "gsm_config.h" + + #ifdef HAS_STDLIB_H + # include +-- +2.1.4 + diff --git a/meta-telephony/recipes-isdn/libgsm/files/0004-Add-includes.patch b/meta-telephony/recipes-isdn/libgsm/files/0004-Add-includes.patch new file mode 100644 index 0000000000..efb113358e --- /dev/null +++ b/meta-telephony/recipes-isdn/libgsm/files/0004-Add-includes.patch @@ -0,0 +1,41 @@ +Upstream-Status: Inappropriate [configuration] + +Subject: [PATCH 4/5] Add includes +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + inc/toast.h | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/inc/toast.h b/inc/toast.h +index 911769d..3e710d0 100644 +--- a/inc/toast.h ++++ b/inc/toast.h +@@ -16,10 +16,11 @@ + + #include + #include ++#include + #include + + #include +-#ifndef HAS_ERRNO_DECL ++#ifndef errno + extern int errno; + #endif + +@@ -37,6 +38,10 @@ + # endif + #endif + ++#ifdef HAS_STDIO_H ++# include ++#endif ++ + #include "gsm.h" + + #ifndef S_ISREG +-- +2.1.4 + diff --git a/meta-telephony/recipes-isdn/libgsm/files/0005-Change-compiler-warnings.patch b/meta-telephony/recipes-isdn/libgsm/files/0005-Change-compiler-warnings.patch new file mode 100644 index 0000000000..126d4ff5a0 --- /dev/null +++ b/meta-telephony/recipes-isdn/libgsm/files/0005-Change-compiler-warnings.patch @@ -0,0 +1,114 @@ +Upstream-Status: Inappropriate [configuration] + +Subject: [PATCH 5/5] Change compiler warnings +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + src/debug.c | 6 +++--- + src/toast.c | 17 +++++++---------- + 2 files changed, 10 insertions(+), 13 deletions(-) + +diff --git a/src/debug.c b/src/debug.c +index 04c3907..a2a5136 100644 +--- a/src/debug.c ++++ b/src/debug.c +@@ -49,7 +49,7 @@ void gsm_debug_longwords P4( (name, from, to, ptr), + fprintf( stderr, "%s [%d .. %d]: ", name, from, to ); + while (from <= to) { + +- fprintf(stderr, "%d ", ptr[ from ] ); ++ fprintf(stderr, "%ld ", ptr[ from ] ); + from++; + if (nprinted++ >= 7) { + nprinted = 0; +@@ -63,14 +63,14 @@ void gsm_debug_longword P2( (name, value), + char * name, + longword value ) + { +- fprintf(stderr, "%s: %d\n", name, (long)value ); ++ fprintf(stderr, "%s: %ld\n", name, (long)value ); + } + + void gsm_debug_word P2( (name, value), + char * name, + word value ) + { +- fprintf(stderr, "%s: %d\n", name, (long)value); ++ fprintf(stderr, "%s: %ld\n", name, (long)value); + } + + #endif +diff --git a/src/toast.c b/src/toast.c +index 9823642..55606d7 100644 +--- a/src/toast.c ++++ b/src/toast.c +@@ -251,8 +251,8 @@ static char * emalloc P1((len), size_t len) + { + char * s; + if (!(s = malloc(len))) { +- fprintf(stderr, "%s: failed to malloc %d bytes -- abort\n", +- progname, len); ++ fprintf(stderr, "%s: failed to malloc %ld bytes -- abort\n", ++ progname, (long) len); + onintr(); + exit(1); + } +@@ -270,7 +270,7 @@ static char* normalname P3((name, want, cut), char *name, char *want,char *cut) + maxlen = strlen(name) + 1 + strlen(want) + strlen(cut); + p = strcpy(emalloc(maxlen), name); + +- if (s = suffix(p, cut)) strcpy(s, want); ++ if ((s = suffix(p, cut))) strcpy(s, want); + else if (*want && !suffix(p, want)) strcat(p, want); + + return p; +@@ -386,7 +386,7 @@ static void update_times P0() + ut[0] = instat.st_atime; + ut[1] = instat.st_mtime; + +- (void) utime(outname, ut); ++ (void) utime(outname, (struct utimbuf *)ut); + + #endif /* UTIMBUF */ + } +@@ -416,7 +416,7 @@ static int okay_as_input P3((name,f,st), char* name, FILE* f, struct stat * st) + } + if (st->st_nlink > 1 && !f_cat && !f_precious) { + fprintf(stderr, +- "%s: \"%s\" has %s other link%s -- unchanged.\n", ++ "%s: \"%s\" has %d other link%s -- unchanged.\n", + progname,name,st->st_nlink - 1,"s" + (st->st_nlink<=2)); + return 0; + } +@@ -585,8 +585,8 @@ static int process_decode P0() + + if (cc != sizeof(s)) { + if (cc >= 0) fprintf(stderr, +- "%s: incomplete frame (%d byte%s missing) from %s\n", +- progname, sizeof(s) - cc, ++ "%s: incomplete frame (%ld byte%s missing) from %s\n", ++ progname, (long) sizeof(s) - cc, + "s" + (sizeof(s) - cc == 1), + inname ? inname : "stdin" ); + gsm_destroy(r); +@@ -624,8 +624,6 @@ static int process_decode P0() + + static int process P1((name), char * name) + { +- int step = 0; +- + out = (FILE *)0; + in = (FILE *)0; + +@@ -779,7 +777,6 @@ int main P2((ac, av), int ac, char **av) + case 'h': help(); exit(0); + + default: +- usage: + fprintf(stderr, + "Usage: %s [-fcpdhvuaslFC] [files...] (-h for help)\n", + progname); +-- +2.1.4 + diff --git a/meta-telephony/recipes-isdn/libgsm/libgsm_1.0.14.bb b/meta-telephony/recipes-isdn/libgsm/libgsm_1.0.14.bb new file mode 100644 index 0000000000..690b40f03a --- /dev/null +++ b/meta-telephony/recipes-isdn/libgsm/libgsm_1.0.14.bb @@ -0,0 +1,37 @@ +DESCRIPTION = "GSM Audio Library" +SECTION = "libs" +PRIORITY = "optional" +LICENSE = "ISC" +LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=fc1372895b173aaf543a122db37e04f5" + +SRC_URI = "\ + http://www.quut.com/gsm/gsm-${PV}.tar.gz \ + file://0001-Configure-Makefile.patch \ + file://0002-Add-defines-to-c.patch \ + file://0003-Use-gsm_config.-header-instead-of-config.h.patch \ + file://0004-Add-includes.patch \ + file://0005-Change-compiler-warnings.patch \ +" + +SRC_URI[md5sum] = "4cbb4e7b73842de3d12d30b0d74200d4" +SRC_URI[sha256sum] = "5814a16a30b3c026871b3739812dc4a2a84299331182c987da1c212c93e9352c" + +S = "${WORKDIR}/gsm-1.0-pl14/" + +CFLAGS += "-c -g -fPIC -Wall -D_GNU_SOURCE -D_REENTRANT -DNeedFunctionPrototypes=1 -DWAV49 -I./inc" + +PARALLEL_MAKE = "" + +do_compile(){ + unset LD + oe_runmake CCFLAGS="${CFLAGS}" CC="${CC}" +} + +do_install(){ + oe_libinstall -a -C lib libgsm ${D}${libdir} + oe_libinstall -so -C lib libgsm ${D}${libdir} + install -d ${D}${includedir}/gsm + install -m 0644 ${S}/inc/gsm.h ${D}${includedir}/gsm/ + cd ${D}${includedir} + ln -s gsm/gsm.h gsm.h +} diff --git a/meta-telephony/recipes-isdn/misdn/files/0001-mbuffer-data-size.patch b/meta-telephony/recipes-isdn/misdn/files/0001-mbuffer-data-size.patch new file mode 100644 index 0000000000..1160fe4a0b --- /dev/null +++ b/meta-telephony/recipes-isdn/misdn/files/0001-mbuffer-data-size.patch @@ -0,0 +1,26 @@ +Upstream-Status: Pending + +Subject: [PATCH] mbuffer data size +Organization: O.S. Systems Software LTDA. + +Signed-off-by: Fabio Berton +--- + include/mISDN/mbuffer.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/mISDN/mbuffer.h b/include/mISDN/mbuffer.h +index 96afa5e..fe1a1e9 100644 +--- a/include/mISDN/mbuffer.h ++++ b/include/mISDN/mbuffer.h +@@ -72,7 +72,7 @@ struct mbuffer { + #endif + } __attribute__((__may_alias__)); + +-#define MBUFFER_DATA_SIZE 280 ++#define MBUFFER_DATA_SIZE 400 + + /* + * init mbuffer caching +-- +2.1.4 + diff --git a/meta-telephony/recipes-isdn/misdn/misdn-utils_git.bb b/meta-telephony/recipes-isdn/misdn/misdn-utils_git.bb new file mode 100644 index 0000000000..1d9f0f2ecc --- /dev/null +++ b/meta-telephony/recipes-isdn/misdn/misdn-utils_git.bb @@ -0,0 +1,22 @@ +DESCRITOPN = "mISDNutils userspace library" +HOMEPAGE = "http://misdn.org" +LICENSE = "LGPLv2+" +LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605" + +SRC_URI = "\ + git://git.misdn.eu/mISDNuser.git;branch=socket \ + file://0001-mbuffer-data-size.patch \ +" +# Release v2.0.19 +SRCREV = "3638cf36df506b96015e1f37ce3bb36ec94a01fb" + +S = "${WORKDIR}/git" + +inherit autotools + +PACKAGES =+ "misdn-tools-dbg misdn-tools" + +FILES_misdn-tools = "${bindir} ${sbindir}" +FILES_misdn-tools-dbg = "${bindir}/.debug ${sbindir}/.debug" + +RDEPENDS_misdn-tools-dbg = "${PN}-dbg" diff --git a/meta-telephony/recipes-misc/bcg729/bcg729_git.bb b/meta-telephony/recipes-misc/bcg729/bcg729_git.bb new file mode 100644 index 0000000000..27b2b755bf --- /dev/null +++ b/meta-telephony/recipes-misc/bcg729/bcg729_git.bb @@ -0,0 +1,12 @@ +DESCRIPTION = "G729 codec library" +HOMEPAGE = "http://www.linphone.org/eng/documentation/dev/bcg729.html" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" + +SRC_URI = "git://git.linphone.org/bcg729.git" +SRCREV = "2e36a5d4bc6e992c654eee6b0a8db729da7b1d31" +PV = "0+gitr${SRCPV}" + +S = "${WORKDIR}/git" + +inherit autotools pkgconfig diff --git a/meta-telephony/recipes-misc/c-ares/c-ares_1.10.0.bb b/meta-telephony/recipes-misc/c-ares/c-ares_1.10.0.bb new file mode 100644 index 0000000000..0d1ef9d62b --- /dev/null +++ b/meta-telephony/recipes-misc/c-ares/c-ares_1.10.0.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "C library for asynchronous DNS requests (including name resolves)" +HOMEPAGE = "http://c-ares.haxx.se/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://README;beginline=17;endline=23;md5=d08205a43bc63c12cf394ac1d2cce7c3" + +PR = "r0" + +SRC_URI = "http://c-ares.haxx.se/download/c-ares-${PV}.tar.gz" + +SRC_URI[md5sum] = "1196067641411a75d3cbebe074fd36d8" +SRC_URI[sha256sum] = "3d701674615d1158e56a59aaede7891f2dde3da0f46a6d3c684e0ae70f52d3db" + +inherit autotools diff --git a/meta-telephony/recipes-misc/libdbi/files/memory-corruption-fixes.patch b/meta-telephony/recipes-misc/libdbi/files/memory-corruption-fixes.patch new file mode 100644 index 0000000000..ff42752a44 --- /dev/null +++ b/meta-telephony/recipes-misc/libdbi/files/memory-corruption-fixes.patch @@ -0,0 +1,17 @@ +This is a backport of a fix from Holger Freyther to the +libdbd sqlite3 driver. + +Index: libdbi-drivers-0.8.3-1/drivers/sqlite3/dbd_sqlite3.c +=================================================================== +--- libdbi-drivers-0.8.3-1.orig/drivers/sqlite3/dbd_sqlite3.c ++++ libdbi-drivers-0.8.3-1/drivers/sqlite3/dbd_sqlite3.c +@@ -502,7 +502,8 @@ size_t dbd_quote_binary(dbi_conn_t *conn + unsigned char *temp; + size_t len; + +- if ((temp = malloc(from_length*2)) == NULL) { ++ /* allocate an extra byte for NULL and two for the quotes */ ++ if ((temp = malloc(2*from_length+1+2)) == NULL) { + return 0; + } + diff --git a/meta-telephony/recipes-misc/libdbi/libdbi-drivers.inc b/meta-telephony/recipes-misc/libdbi/libdbi-drivers.inc new file mode 100644 index 0000000000..2fe0da7ce5 --- /dev/null +++ b/meta-telephony/recipes-misc/libdbi/libdbi-drivers.inc @@ -0,0 +1,35 @@ +# libdbi-drivers OE build file +# Copyright (C) 2005, Koninklijke Philips Electronics NV. All Rights Reserved +# Released under the MIT license (see packages/COPYING) + +DESCRIPTION = "Database Drivers for libdbi" +HOMEPAGE = "http://libdbi-drivers.sourceforge.net/" +LICENSE = "LGPLv2.1+" +LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499" +SECTION = "libs" + +PROVIDES = "libdbd-sqlite" +DEPENDS = "libdbi sqlite3" + +INC_PR = "r1" + +SRC_URI = "${SOURCEFORGE_MIRROR}/libdbi-drivers/libdbi-drivers-${PV}.tar.gz" + +inherit autotools + +PACKAGES += "libdbd-sqlite3" + +EXTRA_OECONF = "--with-dbi-incdir=${STAGING_INCDIR} \ + --with-dbi-libdir=${STAGING_LIBDIR} \ + --with-sqlite3 \ + --with-sqlite3-incdir=${STAGING_INCDIR} \ + --with-sqlite3-libdir=${STAGING_LIBDIR} \ + --disable-docs" + +FILES_${PN}-dbg += " ${libdir}/dbd/.debug/*.so" +FILES_${PN}-dev += " ${libdir}/dbd/*.la " +FILES_${PN}-staticdev += " ${libdir}/dbd/*.a" + +DESCRIPTION_libdbd-sqlite3 = "SQLite3 database driver for libdbi" +FILES_libdbd-sqlite3 = "${libdir}/dbd/libdbdsqlite3.so" + diff --git a/meta-telephony/recipes-misc/libdbi/libdbi-drivers_0.8.3-1.bb b/meta-telephony/recipes-misc/libdbi/libdbi-drivers_0.8.3-1.bb new file mode 100644 index 0000000000..deeb56ec3d --- /dev/null +++ b/meta-telephony/recipes-misc/libdbi/libdbi-drivers_0.8.3-1.bb @@ -0,0 +1,8 @@ +require ${PN}.inc + +PR = "${INC_PR}.1" + +SRC_URI[md5sum] = "4de79b323162a5a7652b65b608eca6cd" +SRC_URI[sha256sum] = "4ab9944398ce769c0deeb64d2f73555c67bc25ccd2ade1ccf552226c7b2acf72" + +SRC_URI += "file://memory-corruption-fixes.patch" diff --git a/meta-telephony/recipes-misc/libdbi/libdbi.inc b/meta-telephony/recipes-misc/libdbi/libdbi.inc new file mode 100644 index 0000000000..e77a5eec3c --- /dev/null +++ b/meta-telephony/recipes-misc/libdbi/libdbi.inc @@ -0,0 +1,21 @@ +# libdbi OE build file +# Copyright (C) 2005, Koninklijke Philips Electronics NV. All Rights Reserved +# Released under the MIT license (see packages/COPYING) + +DESCRIPTION = "Database Independent Abstraction Layer for C" +HOMEPAGE = "http://libdbi.sourceforge.net/" +LICENSE = "LGPLv2.1+" +LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499" +SECTION = "libs" + +INC_PR = "r1" + +SRC_URI = "${SOURCEFORGE_MIRROR}/libdbi/libdbi-${PV}.tar.gz" + +inherit autotools + +EXTRA_OECONF = "--disable-docs" + +do_configure () { + autotools_do_configure +} diff --git a/meta-telephony/recipes-misc/libdbi/libdbi_0.7.2.bb b/meta-telephony/recipes-misc/libdbi/libdbi_0.7.2.bb new file mode 100644 index 0000000000..d5803c0ec4 --- /dev/null +++ b/meta-telephony/recipes-misc/libdbi/libdbi_0.7.2.bb @@ -0,0 +1,3 @@ +require ${PN}.inc + +PR = "${INC_PR}.0" diff --git a/meta-telephony/recipes-misc/libdbi/libdbi_0.8.3.bb b/meta-telephony/recipes-misc/libdbi/libdbi_0.8.3.bb new file mode 100644 index 0000000000..ec1628539a --- /dev/null +++ b/meta-telephony/recipes-misc/libdbi/libdbi_0.8.3.bb @@ -0,0 +1,7 @@ +require ${PN}.inc + +PR = "${INC_PR}.0" + +SRC_URI[md5sum] = "ca66db78d479cbfa727cf3245b5864ae" +SRC_URI[sha256sum] = "72e41856bebb1da7b1fd1e6369358c294913f329c5e594e338b3983e6369a5e3" + diff --git a/meta-telephony/recipes-misc/libopencore-amr/libopencore-amr_0.1.3.bb b/meta-telephony/recipes-misc/libopencore-amr/libopencore-amr_0.1.3.bb new file mode 100644 index 0000000000..34304b7b72 --- /dev/null +++ b/meta-telephony/recipes-misc/libopencore-amr/libopencore-amr_0.1.3.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "OpenCORE AMR decoder library" +SECTION = "libs" +LICENSE="Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=dd2c2486aca02190153cf399e508c7e7" +PR = "r0" + +SRC_URI = "${SOURCEFORGE_MIRROR}/opencore-amr/opencore-amr-${PV}.tar.gz" +S = "${WORKDIR}/opencore-amr-${PV}" + +inherit autotools + +SRC_URI[md5sum] = "09d2c5dfb43a9f6e9fec8b1ae678e725" +SRC_URI[sha256sum] = "106bf811c1f36444d7671d8fd2589f8b2e0cca58a2c764da62ffc4a070595385" diff --git a/meta-telephony/recipes-misc/libsmpp/libsmpp34_1.10.bb b/meta-telephony/recipes-misc/libsmpp/libsmpp34_1.10.bb new file mode 100644 index 0000000000..dbd4f5c10a --- /dev/null +++ b/meta-telephony/recipes-misc/libsmpp/libsmpp34_1.10.bb @@ -0,0 +1,19 @@ +DESCRIPTION = "C Open SMPP library" +HOMEPAGE = "http://sourceforge.net/projects/c-open-smpp-34/" +LICENSE = "LGPLv2.1+" +LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24" +SECTION = "libs" +DEPENDS = "libxml2" + +PR = "r3" + +SRC_URI = "${SOURCEFORGE_MIRROR}/c-open-smpp-34/c-open-smpp-34/libsmpp34-1.10%20%28LGPL%29/libsmpp34-${PV}.tar.gz" +SRC_URI = "git://git.osmocom.org/${PN}" +SRCREV = "9288d59cfdc452fa3a92728149537372ee5c6c56" +S = "${WORKDIR}/git" + +PARALLEL_MAKE = "" + +inherit autotools + + diff --git a/meta-telephony/recipes-misc/libsmpp/libsmpp34_git.bb b/meta-telephony/recipes-misc/libsmpp/libsmpp34_git.bb new file mode 100644 index 0000000000..4edbebdc67 --- /dev/null +++ b/meta-telephony/recipes-misc/libsmpp/libsmpp34_git.bb @@ -0,0 +1,20 @@ +DESCRIPTION = "C Open SMPP library" +HOMEPAGE = "http://sourceforge.net/projects/c-open-smpp-34/" +LICENSE = "LGPLv2.1+" +LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24" +SECTION = "libs" +DEPENDS = "libxml2" + +S = "${WORKDIR}/git" +SRCREV = "84f2905c5bfed2e1f5bae52a2bb9bc771fd8b895" +SRC_URI = "git://git.osmocom.org/libsmpp34.git;protocol=git" +PV = "1.10+gitr${SRCPV}" +PR = "r1" + +PARALLEL_MAKE = "" + +inherit autotools pkgconfig + +PACKAGES =+ "${PN}-apps" +FILES_${PN}-apps = "${bindir}/*" + diff --git a/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools/run-ptest b/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools/run-ptest new file mode 100644 index 0000000000..e67f18e55a --- /dev/null +++ b/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools/run-ptest @@ -0,0 +1,5 @@ +#!/bin/sh + +sh v4test.sh +sh v6test.sh + diff --git a/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools/v4test.sh b/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools/v4test.sh new file mode 100644 index 0000000000..5130856999 --- /dev/null +++ b/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools/v4test.sh @@ -0,0 +1,11 @@ +#!/bin/sh +echo "v4test starting:" +for t in $(find -maxdepth 1 -type f \! -name test\*_v6 -name test\*); do + echo "$t"; + if $t; then + echo "PASS: $t"; echo ""; + else + echo "FAIL: $t"; echo ""; + fi + sleep 1; +done diff --git a/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools/v6test.sh b/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools/v6test.sh new file mode 100644 index 0000000000..3a667df820 --- /dev/null +++ b/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools/v6test.sh @@ -0,0 +1,11 @@ +#!/bin/sh +echo "v6test starting:" +for t in $(find -maxdepth 1 -name test\*_v6); do + echo "$t"; + if $t; then + echo "PASS: $t"; echo ""; + else + echo "FAIL: $t"; echo ""; + fi + sleep 1; +done diff --git a/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools_1.0.16.bb b/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools_1.0.16.bb new file mode 100644 index 0000000000..d3e6a5dda8 --- /dev/null +++ b/meta-telephony/recipes-misc/lksctp-tools/lksctp-tools_1.0.16.bb @@ -0,0 +1,65 @@ +SUMMARY = "The Linux Kernel Stream Control Transmission Protocol (lksctp) project" +HOMEPAGE = "http://lksctp.org" +SECTION = "net" +LICENSE = "LGPLv2.1 & GPLv2" + +LIC_FILES_CHKSUM = " \ + file://COPYING.lib;md5=0a1b79af951c42a9c8573533fbba9a92 \ + file://COPYING;md5=0c56db0143f4f80c369ee3af7425af6e \ +" + +SRC_URI = "${SOURCEFORGE_MIRROR}/lksctp/${BP}.tar.gz \ + file://run-ptest \ + file://v4test.sh \ + file://v6test.sh \ + " + +SRC_URI[md5sum] = "708bb0b5a6806ad6e8d13c55b067518e" +SRC_URI[sha256sum] = "0903dd526b7f30a89d5031aa2c82757612becc38ed7bc6e4f972f8deae351f26" + +#| arm-oe-linux-gnueabi-libtool: link: arm-oe-linux-gnueabi-gcc -march=armv5te -marm -mthumb-interwork --sysroot=/home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/qemuarm -shared -fPIC -DPIC .libs/bindx.o .libs/connectx.o .libs/peeloff.o .libs/opt_info.o .libs/addrs.o .libs/sendmsg.o .libs/recvmsg.o -march=armv5te -marm -mthumb-interwork --sysroot=/home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/qemuarm -O2 -Wl,--version-script=/home/jenkins/oe/world/shr-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/lksctp-tools/1.0.16-r0/lksctp-tools-1.0.16/src/lib/Versions.map -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-soname -Wl,libsctp.so.1 -o .libs/libsctp.so.1.0.16 +#| /home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.0/ld: error: symbol sctp_connectx has undefined version +#| collect2: error: ld returned 1 exit status +#| make[4]: *** [libsctp.la] Error 1 +PNBLACKLIST[lksctp-tools] ?= "${@base_contains('DISTRO_FEATURES', 'ld-is-gold', "BROKEN: fails to link against sctp_connectx symbol", '', d)}" + +S = "${WORKDIR}/${BP}" + +BBCLASSEXTEND = "native" + +inherit autotools pkgconfig binconfig ptest + +do_install_ptest () { + install -m 0755 ${WORKDIR}/v4test.sh ${D}${PTEST_PATH} + install -m 0755 ${WORKDIR}/v6test.sh ${D}${PTEST_PATH} + for testcase in `find ${B}/src/apps/.libs ${B}/src/func_tests/.libs -maxdepth 1 -type f -executable`; do + install $testcase ${D}${PTEST_PATH} + done +} + +SOLIBVERSION="${PV}" +SOLIBMAJORVERSION="1" + +PACKAGES =+ "${PN}-withsctp ${PN}-utils" + +FILES_${PN} = " \ + ${libdir}/libsctp.so.${SOLIBVERSION} \ + ${libdir}/libsctp.so.${SOLIBMAJORVERSION} \ +" + +FILES_${PN}-withsctp = " \ + ${libdir}/lksctp-tools/libwithsctp.so.${SOLIBVERSION} \ + ${libdir}/lksctp-tools/libwithsctp.so.${SOLIBMAJORVERSION} \ +" + +FILES_${PN}-dev += " \ + ${libdir}/libsctp.so \ + ${libdir}/lksctp-tools/libwithsctp.so \ + ${datadir}/lksctp-tools/*.c \ + ${datadir}/lksctp-tools/*.h \ +" + +FILES_${PN}-utils = "${bindir}/*" + +RRECOMMENDS_${PN}-utils += "kernel-module-sctp" +RRECOMMENDS_${PN}-ptest += "kernel-module-sctp" diff --git a/meta-telephony/recipes-misc/ortp/files/0001-fix-unused-variables.patch b/meta-telephony/recipes-misc/ortp/files/0001-fix-unused-variables.patch new file mode 100644 index 0000000000..a57eaff7ca --- /dev/null +++ b/meta-telephony/recipes-misc/ortp/files/0001-fix-unused-variables.patch @@ -0,0 +1,75 @@ +From eb4f54377e2560a76a05f62a22c961edbce8f4c2 Mon Sep 17 00:00:00 2001 +From: Simon Morlat +Date: Tue, 31 May 2011 10:52:49 +0200 +Subject: [PATCH] fix unused variables + +--- + src/stun.c | 10 +++++----- + src/tests/rtprecv.c | 6 +++++- + 2 files changed, 10 insertions(+), 6 deletions(-) + +diff --git a/src/stun.c b/src/stun.c +index ccac58f..e0d7c80 100644 +--- a/src/stun.c ++++ b/src/stun.c +@@ -1993,7 +1993,6 @@ stunSendTest( Socket myFd, StunAddress4 *dest, + + bool_t changePort=FALSE; + bool_t changeIP=FALSE; +- bool_t discard=FALSE; + + StunMessage req; + char buf[STUN_MAX_MESSAGE_SIZE]; +@@ -2015,9 +2014,10 @@ stunSendTest( Socket myFd, StunAddress4 *dest, + case 4: + changeIP=TRUE; + break; +- case 5: ++ /* case 5: + discard=TRUE; + break; ++ */ + default: + ortp_error("stun: Test %i is unkown\n", testNum); + return ; /* error */ +@@ -2162,7 +2162,7 @@ stunNatType( StunAddress4 *dest, + + bool_t respTestI=FALSE; + bool_t isNat=TRUE; +- StunAddress4 testIchangedAddr; ++ /*StunAddress4 testIchangedAddr;*/ + StunAddress4 testImappedAddr; + bool_t respTestI2=FALSE; + bool_t mappedIpSame = TRUE; +@@ -2345,8 +2345,8 @@ stunNatType( StunAddress4 *dest, + if ( !respTestI ) + { + +- testIchangedAddr.addr = resp.changedAddress.ipv4.addr; +- testIchangedAddr.port = resp.changedAddress.ipv4.port; ++ /*testIchangedAddr.addr = resp.changedAddress.ipv4.addr; ++ testIchangedAddr.port = resp.changedAddress.ipv4.port;*/ + testImappedAddr.addr = resp.mappedAddress.ipv4.addr; + testImappedAddr.port = resp.mappedAddress.ipv4.port; + +diff --git a/src/tests/rtprecv.c b/src/tests/rtprecv.c +index 1861592..5eee649 100644 +--- a/src/tests/rtprecv.c ++++ b/src/tests/rtprecv.c +@@ -163,8 +163,12 @@ int main(int argc, char*argv[]) + /* this is to avoid to write to disk some silence before the first RTP packet is returned*/ + if ((stream_received) && (err>0)) { + size_t ret = fwrite(buffer,1,err,outfile); +- if (sound_fd>0) ++ if (sound_fd>0){ + ret = write(sound_fd,buffer,err); ++ if (ret==-1){ ++ fprintf(stderr,"write to sound card failed (%s)",strerror(errno)); ++ } ++ } + } + } + ts+=160; +-- +1.7.5.4 + diff --git a/meta-telephony/recipes-misc/ortp/files/compile-fixes-newer-gcc.diff b/meta-telephony/recipes-misc/ortp/files/compile-fixes-newer-gcc.diff new file mode 100644 index 0000000000..94ddde0bf8 --- /dev/null +++ b/meta-telephony/recipes-misc/ortp/files/compile-fixes-newer-gcc.diff @@ -0,0 +1,13 @@ +Index: ortp-0.16.5/src/stun.c +=================================================================== +--- ortp-0.16.5.orig/src/stun.c ++++ ortp-0.16.5/src/stun.c +@@ -399,7 +399,7 @@ stunParseMessage( char* buf, unsigned in + char* body; + unsigned int size; + ortp_debug("stun: Received stun message: %i bytes\n", bufLen); +- memset(msg, 0, sizeof(msg)); ++ memset(msg, 0, sizeof(*msg)); + + if (sizeof(StunMsgHdr) > bufLen) + { diff --git a/meta-telephony/recipes-misc/ortp/ortp.inc b/meta-telephony/recipes-misc/ortp/ortp.inc new file mode 100644 index 0000000000..2e75bcdc0d --- /dev/null +++ b/meta-telephony/recipes-misc/ortp/ortp.inc @@ -0,0 +1,18 @@ +DESCRIPTION = "An LGPL implementation of RTP - RFC3550" +LICENSE = "LGPLv2.1+" + +INC_PR = "r1" + +inherit autotools pkgconfig + +SRC_URI = "http://download.savannah.nongnu.org/releases/linphone/${PN}/sources/${P}.tar.gz" + +LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34" + +do_compile_append() { + sed -i -e s:${STAGING_DIR_TARGET}::g \ + -e s:/${TARGET_SYS}::g \ + ortp.pc + +} + diff --git a/meta-telephony/recipes-misc/ortp/ortp_0.16.5.bb b/meta-telephony/recipes-misc/ortp/ortp_0.16.5.bb new file mode 100644 index 0000000000..919405fdfb --- /dev/null +++ b/meta-telephony/recipes-misc/ortp/ortp_0.16.5.bb @@ -0,0 +1,9 @@ +require ortp.inc +DEPENDS = "glib-2.0 openssl" +PR = "${INC_PR}.1" + +SRC_URI += "file://0001-fix-unused-variables.patch;patch=1 \ + file://compile-fixes-newer-gcc.diff" + +SRC_URI[md5sum] = "94546901d14b85f97342f4ecf39489b1" +SRC_URI[sha256sum] = "3b655a79f9122afd298e9cd702e542908bbd6ea1337c02553110c57e0b3c5835" diff --git a/meta-telephony/recipes-misc/sofia-sip/files/msg_parser.c.diff b/meta-telephony/recipes-misc/sofia-sip/files/msg_parser.c.diff new file mode 100644 index 0000000000..66c73395de --- /dev/null +++ b/meta-telephony/recipes-misc/sofia-sip/files/msg_parser.c.diff @@ -0,0 +1,35 @@ +--- sofia-sip-1.12.11+20110422.1.orig/libsofia-sip-ua/msg/msg_parser.c ++++ sofia-sip-1.12.11+20110422.1/libsofia-sip-ua/msg/msg_parser.c +@@ -2468,8 +2468,6 @@ + msg_header_t ** + msg_hclass_offset(msg_mclass_t const *mc, msg_pub_t const *mo, msg_hclass_t *hc) + { +- int i; +- + assert(mc && hc); + + if (mc == NULL || hc == NULL) +@@ -2484,9 +2482,20 @@ + } + else + /* Header has no name. */ +- for (i = 0; i <= 6; i++) +- if (hc->hc_hash == mc->mc_request[i].hr_class->hc_hash) +- return (msg_header_t **)((char *)mo + mc->mc_request[i].hr_offset); ++ if (hc->hc_hash == mc->mc_request[0].hr_class->hc_hash) ++ return (msg_header_t **)((char *)mo + mc->mc_request[0].hr_offset); ++ else if (hc->hc_hash == mc->mc_status[0].hr_class->hc_hash) ++ return (msg_header_t **)((char *)mo + mc->mc_status[0].hr_offset); ++ else if (hc->hc_hash == mc->mc_separator[0].hr_class->hc_hash) ++ return (msg_header_t **)((char *)mo + mc->mc_separator[0].hr_offset); ++ else if (hc->hc_hash == mc->mc_payload[0].hr_class->hc_hash) ++ return (msg_header_t **)((char *)mo + mc->mc_payload[0].hr_offset); ++ else if (hc->hc_hash == mc->mc_unknown[0].hr_class->hc_hash) ++ return (msg_header_t **)((char *)mo + mc->mc_unknown[0].hr_offset); ++ else if (hc->hc_hash == mc->mc_error[0].hr_class->hc_hash) ++ return (msg_header_t **)((char *)mo + mc->mc_error[0].hr_offset); ++ else if (hc->hc_hash == mc->mc_multipart[0].hr_class->hc_hash) ++ return (msg_header_t **)((char *)mo + mc->mc_multipart[0].hr_offset); + + return NULL; + } diff --git a/meta-telephony/recipes-misc/sofia-sip/sofia-sip.inc b/meta-telephony/recipes-misc/sofia-sip/sofia-sip.inc new file mode 100644 index 0000000000..d282ed11cf --- /dev/null +++ b/meta-telephony/recipes-misc/sofia-sip/sofia-sip.inc @@ -0,0 +1,22 @@ +DESCRIPTION = "Sofia-SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification." +HOMEPAGE = "http://sofia-sip.sourceforge.net/" +LICENSE = "LGPL-2.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=03068f550c635f6520e0f0252da412fc" +SECTION = "libs" +DEPENDS = "glib-2.0 openssl" + +SRC_URI = "\ + ${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz \ + file://msg_parser.c.diff \ + " + +inherit autotools pkgconfig + +PACKAGES += " ${PN}-bin ${PN}-glib" + +FILES_${PN}-bin = "${bindir}" +FILES_${PN} = "${libdir}/libsofia-sip-ua.so.*" +FILES_${PN}-dev += "${datadir}/sofia-sip/*.awk" +FILES_${PN}-glib = "${libdir}/libsofia-sip-ua-glib.so.*" + +LEAD_SONAME = "libsofia-sip-ua.so" diff --git a/meta-telephony/recipes-misc/sofia-sip/sofia-sip_1.12.11.bb b/meta-telephony/recipes-misc/sofia-sip/sofia-sip_1.12.11.bb new file mode 100644 index 0000000000..7d8bb85ec4 --- /dev/null +++ b/meta-telephony/recipes-misc/sofia-sip/sofia-sip_1.12.11.bb @@ -0,0 +1,6 @@ +require sofia-sip.inc + +PR = "r1" + +SRC_URI[md5sum] = "f3582c62080eeecd3fa4cd5d4ccb4225" +SRC_URI[sha256sum] = "2b01bc2e1826e00d1f7f57d29a2854b15fd5fe24695e47a14a735d195dd37c81" diff --git a/meta-telephony/recipes-openmoko/openmoko-gsmd/files/cell-log b/meta-telephony/recipes-openmoko/openmoko-gsmd/files/cell-log new file mode 100644 index 0000000000..cb913dd839 --- /dev/null +++ b/meta-telephony/recipes-openmoko/openmoko-gsmd/files/cell-log @@ -0,0 +1,39 @@ +#! /bin/sh +# +# cell-log This shell script starts and stops cell-log. +# +# chkconfig: 345 90 40 +# description: Cell-log monitors cell in the neighborhood. +# processname: cell_log + +PATH=/bin:/usr/bin:/sbin:/usr/sbin +PIDFILE=/var/run/cell_log.pid + +case "$1" in + start) + echo -n "Starting cell-log: " + start-stop-daemon -S -b -p $PIDFILE \ + -x /usr/bin/osmo-service-respawn.sh /usr/bin/cell_log + + if [ $? = 0 ]; then + echo "cell-log" + else + echo "(failed.)" + fi + ;; + stop) + echo -n "Stopping cell-log daemon: " + start-stop-daemon -K -x bash -p $PIDFILE + echo "cell-log." + ;; + restart|force-reload) + $0 stop + $0 start + ;; + *) + echo "Usage: /etc/init.d/cell-log {start|stop|restart|force-reload}" + exit 1 + ;; +esac + +exit 0 diff --git a/meta-telephony/recipes-openmoko/openmoko-gsmd/files/default b/meta-telephony/recipes-openmoko/openmoko-gsmd/files/default new file mode 100644 index 0000000000..766b38955a --- /dev/null +++ b/meta-telephony/recipes-openmoko/openmoko-gsmd/files/default @@ -0,0 +1,58 @@ +# gsmd This shell script configures for the gsmd init script. + +. /etc/init.d/functions + +case `machine_id` in + "gta01"|"gta02") + GSMD_OPTS="-s 115200 -F" + if [ -d '/sys/bus/platform/devices/gta01-pm-gsm.0' ] ; then + GSM_POW="/sys/bus/platform/devices/gta01-pm-gsm.0/power_on" + GSM_RES="/sys/bus/platform/devices/gta01-pm-gsm.0/reset" + else + GSM_POW="/sys/bus/platform/devices/neo1973-pm-gsm.0/power_on" + GSM_RES="/sys/bus/platform/devices/neo1973-pm-gsm.0/reset" + fi + GSM_DEV="/dev/ttySAC0" + GSM_DL="/sys/devices/platform/neo1973-pm-gsm.0/download" + ;; + "htc_apache"|"htc_blueangel"|"htc_universal") + GSMD_OPTS="-s 115200 -F" + GSM_DEV="/dev/ttyS0" + ;; + "htc_himalaya") + GSMD_OPTS="-s 115200 -F" + GSM_DEV="/dev/ttyS2" + ;; + "htc_magician") + GSMD_OPTS="-s 115200 -F" + GSM_DEV="/dev/ttyS1" + ;; + "palm_treo_650") + GSMD_OPTS="-s 460800 -F -w 1" + GSM_DEV="/dev/ttyS0" + ;; + "motorola_ezx_platform") + GSMD_OPTS="-s 115200 -F -v ti" + GSM_DEV="/dev/mux0" + ;; + "sysmocom_sysmobts_v2") + GSMD_OPTS="-v wavecom" + GSM_DEV="/dev/ttyS2" + ;; + *) + # Unknown board + + # If you must specify special options, uncomment and modify the next line + #GSMD_OPTS="-s 115200 -F" + + # If your GSM device needs to be powered up, uncomment and modify the next line + #GSM_POW="/sys/bus/platform/devices/gta01-pm-gsm.0/power_on" + + # If your GSM device then needs to be reset, uncomment and modify the next line + #GSM_RES="/sys/bus/platform/devices/gta01-pm-gsm.0/reset" + + # This should be in a common /etc/default/serial, together with + # BT_DEV and IR_DEV for devices that have those on a serial port + #GSM_DEV="/dev/ttyS1" + ;; +esac diff --git a/meta-telephony/recipes-openmoko/openmoko-gsmd/files/gsmd b/meta-telephony/recipes-openmoko/openmoko-gsmd/files/gsmd new file mode 100644 index 0000000000..d6ac135c09 --- /dev/null +++ b/meta-telephony/recipes-openmoko/openmoko-gsmd/files/gsmd @@ -0,0 +1,49 @@ +#! /bin/sh +# +# gsmd This shell script starts and stops gsmd. +# +# chkconfig: 345 90 40 +# description: Gsmd manages access to a serial- or USB-connected GSM +# processname: gsmd + +PATH=/bin:/usr/bin:/sbin:/usr/sbin +PIDFILE=/var/run/gsmd.pid + +[ -f /etc/default/rcS ] && . /etc/default/rcS +[ -f /etc/default/gsmd ] && . /etc/default/gsmd + +case "$1" in + start) + [ -n "$GSM_POW" ] && ( echo "0" >$GSM_POW; sleep 1 ) + [ -n "$GSM_POW" ] && ( echo "1" >$GSM_POW; sleep 1 ) + [ -n "$GSM_RES" ] && ( echo "1" >$GSM_RES; sleep 1 ) + [ -n "$GSM_RES" ] && ( echo "0" >$GSM_RES; sleep 2 ) + + echo -n "Starting GSM daemon: " + start-stop-daemon -S -p $PIDFILE -b \ + -x /usr/bin/osmo-service-respawn.sh /usr/sbin/gsmd -- gsmd -p $GSM_DEV $GSMD_OPTS -l syslog + + if [ $? = 0 ]; then + echo "gsmd." + else + echo "(failed.)" + fi + ;; + stop) + [ -n "$GSM_POW" ] && echo "0" >$GSM_POW + + echo -n "Stopping GSM daemon: " + start-stop-daemon -K -x bash -p $PIDFILE + echo "gsmd." + ;; + restart|force-reload) + $0 stop + $0 start + ;; + *) + echo "Usage: /etc/init.d/gsmd {start|stop|restart|force-reload}" + exit 1 + ;; +esac + +exit 0 diff --git a/meta-telephony/recipes-openmoko/openmoko-gsmd/openmoko-gsmd_git.bb b/meta-telephony/recipes-openmoko/openmoko-gsmd/openmoko-gsmd_git.bb new file mode 100644 index 0000000000..1aeb49fb42 --- /dev/null +++ b/meta-telephony/recipes-openmoko/openmoko-gsmd/openmoko-gsmd_git.bb @@ -0,0 +1,92 @@ +DESCRIPTION = "GSM libraries and daemons implementing the ETSI 07.10 specification" +HOMEPAGE = "http://www.openmoko.org" +SECTION = "telephony" + +LICENSE = "GPLv2+ & LGPLv2.1+" +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \ + file://COPYING.library;md5=2d5025d4aa3495befef8f17206a5b0a1 " + +# Fork with wavecom support +SRC_URI = "git://git.gnumonks.org/openmoko-gsmd.git;branch=master \ + file://gsmd \ + file://cell-log \ + file://default" +SRCREV = "ea175de97e6ecf87129a7412a67ce3146f56b5d1" +S = "${WORKDIR}/git" + +PR = "r19.0" + +inherit autotools pkgconfig update-rc.d + + +# handle update-rc.d RDEPENDS_${PN} manually, we don't need it on +# anything but gsmd + +INITSCRIPT_PACKAGES = "${PN} ${PN}-tools-cell-log" +INITSCRIPT_NAME_${PN} = "gsmd" +INITSCRIPT_PARAMS_${PN} = "defaults 35" + +INITSCRIPT_NAME_${PN}-tools-cell-log = "cell-log" +INITSCRIPT_PARAMS_${PN}-tools-cell-log = "defaults 40" + +do_install_append() { + install -d ${D}/${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/gsmd ${D}/${sysconfdir}/init.d/ + install -m 0755 ${WORKDIR}/cell-log ${D}/${sysconfdir}/init.d/ + install -d ${D}/${sysconfdir}/default + install ${WORKDIR}/default ${D}/${sysconfdir}/default/gsmd +} + +PACKAGES =+ "\ + ${PN}-tools-cell-log \ + ${PN}-tools \ + ${PN}-plugins \ + ${PN}-plugin-machine-generic \ + ${PN}-plugin-machine-tihtc \ + ${PN}-plugin-machine-gta01 \ + ${PN}-plugin-machine-telit \ + ${PN}-plugin-vendor-bcm \ + ${PN}-plugin-vendor-qc \ + ${PN}-plugin-vendor-telit \ + ${PN}-plugin-vendor-ti \ + ${PN}-plugin-vendor-tihtc \ + ${PN}-plugin-vendor-wavecom \ +" + +RDEPENDS_${PN}-plugins = "\ + ${PN}-plugin-machine-generic \ + ${PN}-plugin-machine-tihtc \ + ${PN}-plugin-machine-gta01 \ + ${PN}-plugin-machine-telit \ + ${PN}-plugin-vendor-bcm \ + ${PN}-plugin-vendor-qc \ + ${PN}-plugin-vendor-telit \ + ${PN}-plugin-vendor-ti \ + ${PN}-plugin-vendor-tihtc \ + ${PN}-plugin-vendor-wavecom \ +" + +RDEPENDS_${PN} += "update-rc.d osmo-service-respawn" +RDEPENDS_${PN}-tools-cell-log += "update-rc.d ${PN} osmo-service-respawn" + +FILES_${PN}-dbg += "${libdir}/gsmd/.debug/*" +FILES_${PN}-tools-cell-log = "${bindir}/cell_log ${sysconfdir}/cell-log" +FILES_${PN}-tools = "${bindir}/*" +FILES_${PN}-plugins = "" +FILES_${PN}-dev += " ${libdir}/gsmd/*.la " +FILES_${PN}-staticdev += " ${libdir}/gsmd/*.a" +FILES_${PN}-plugin-machine-generic = "${libdir}/gsmd/libgsmd-machine_generic.so*" +FILES_${PN}-plugin-machine-tihtc = "${libdir}/gsmd/libgsmd-machine_tihtc.so*" +FILES_${PN}-plugin-machine-gta01 = "${libdir}/gsmd/libgsmd-machine_gta01.so*" +FILES_${PN}-plugin-machine-telit = "${libdir}/gsmd/libgsmd-machine_telit.so*" +FILES_${PN}-plugin-vendor-qc = "${libdir}/gsmd/libgsmd-vendor_qc.so*" +FILES_${PN}-plugin-vendor-bcm = "${libdir}/gsmd/libgsmd-vendor_bcm.so*" +FILES_${PN}-plugin-vendor-telit = "${libdir}/gsmd/libgsmd-vendor_telit.so*" +FILES_${PN}-plugin-vendor-ti = "${libdir}/gsmd/libgsmd-vendor_ti.so*" +FILES_${PN}-plugin-vendor-tihtc = "${libdir}/gsmd/libgsmd-vendor_tihtc.so*" +FILES_${PN}-plugin-vendor-wavecom = "${libdir}/gsmd/libgsmd-vendor_wavecom.so*" + +PACKAGES_DYNAMIC = "lib${PN}* ${PN}" + +ALLOW_EMPTY_${PN}-plugins = "1" + diff --git a/meta-telephony/recipes-osmocom/libosmo-abis/files/fix-rsl-connect.patch b/meta-telephony/recipes-osmocom/libosmo-abis/files/fix-rsl-connect.patch new file mode 100644 index 0000000000..63c505251c --- /dev/null +++ b/meta-telephony/recipes-osmocom/libosmo-abis/files/fix-rsl-connect.patch @@ -0,0 +1,21 @@ +The line is not initiliazed to E1INP_TS_TYPE_SIGN by default + +diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c +index 145e471..49424e7 100644 +--- a/src/input/ipaccess.c ++++ b/src/input/ipaccess.c +@@ -915,12 +915,14 @@ int e1inp_ipa_bts_rsl_connect_n(struct e1inp_line *line, + "trx_nr (%d) out of range\n", trx_nr); + return -EINVAL; + } ++/* + if (line->ts[E1INP_SIGN_RSL+trx_nr-1].type != E1INP_TS_TYPE_SIGN) { + LOGP(DLINP, LOGL_ERROR, "cannot create RSL BTS link: " + "trx_nr (%d) does not refer to a signalling link\n", + trx_nr); + return -EINVAL; + } ++*/ + + rsl_link = ipa_client_conn_create(tall_ipa_ctx, + &line->ts[E1INP_SIGN_RSL+trx_nr-1], diff --git a/meta-telephony/recipes-osmocom/libosmo-abis/libosmo-abis.inc b/meta-telephony/recipes-osmocom/libosmo-abis/libosmo-abis.inc new file mode 100644 index 0000000000..f6c19f5882 --- /dev/null +++ b/meta-telephony/recipes-osmocom/libosmo-abis/libosmo-abis.inc @@ -0,0 +1,13 @@ +DESCRITOPN = "An utility library for Open Source Mobile Communications" +DEPENDS = "libosmocore ortp" +DEPENDS_append_geode = "dahdi-linux" +HOMEPAGE = "http://openbsc.gnumonks.org" +LICENSE = "AGPLv3" + +INC_PR="r2.${META_TELEPHONY_OSMO_INC}" + +LIC_FILES_CHKSUM = "file://COPYING;md5=73f1eb20517c55bf9493b7dd6e480788" + +inherit autotools pkgconfig + +ALLOW_EMPTY_libosmo-abis = "1" diff --git a/meta-telephony/recipes-osmocom/libosmo-abis/libosmo-abis_git.bb b/meta-telephony/recipes-osmocom/libosmo-abis/libosmo-abis_git.bb new file mode 100644 index 0000000000..8010389286 --- /dev/null +++ b/meta-telephony/recipes-osmocom/libosmo-abis/libosmo-abis_git.bb @@ -0,0 +1,7 @@ +require ${PN}.inc + +S = "${WORKDIR}/git" +SRCREV = "3cef39b03cb46de4a7aba65137d724a000b184cb" +SRC_URI = "git://git.osmocom.org/libosmo-abis.git;protocol=git" +PV = "0.3.2+gitr${SRCPV}" +PR = "${INC_PR}.1" diff --git a/meta-telephony/recipes-osmocom/libosmo-netif/libosmo-netif.inc b/meta-telephony/recipes-osmocom/libosmo-netif/libosmo-netif.inc new file mode 100644 index 0000000000..e8c6e21369 --- /dev/null +++ b/meta-telephony/recipes-osmocom/libosmo-netif/libosmo-netif.inc @@ -0,0 +1,10 @@ +DESCRITOPN = "Osmux utility classes" +DEPENDS = "libosmo-abis" +HOMEPAGE = "http://git.osmocom.org" +LICENSE = "GPLv2+" + +INC_PR="r2.${META_TELEPHONY_OSMO_INC}" + +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" + +inherit autotools pkgconfig diff --git a/meta-telephony/recipes-osmocom/libosmo-netif/libosmo-netif_git.bb b/meta-telephony/recipes-osmocom/libosmo-netif/libosmo-netif_git.bb new file mode 100644 index 0000000000..bbfa7c07b9 --- /dev/null +++ b/meta-telephony/recipes-osmocom/libosmo-netif/libosmo-netif_git.bb @@ -0,0 +1,7 @@ +require ${PN}.inc + +S = "${WORKDIR}/git" +SRCREV = "efb9af4dada5e2426e69d670f4549f8fec3c9cb2" +SRC_URI = "git://git.osmocom.org/libosmo-netif.git;protocol=git" +PV = "0.4.0+gitr${SRCPV}" +PR = "${INC_PR}.2" diff --git a/meta-telephony/recipes-osmocom/libosmo-sccp/libosmo-sccp.inc b/meta-telephony/recipes-osmocom/libosmo-sccp/libosmo-sccp.inc new file mode 100644 index 0000000000..3925ed862d --- /dev/null +++ b/meta-telephony/recipes-osmocom/libosmo-sccp/libosmo-sccp.inc @@ -0,0 +1,12 @@ +DESCRITOPN = "An utility library for Open Source Mobile Communications" +DEPENDS = "libosmocore" +HOMEPAGE = "http://openbsc.gnumonks.org" +LICENSE = "AGPLv3" + +INC_PR="r1.${META_TELEPHONY_OSMO_INC}" + +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" + +inherit autotools pkgconfig + +ALLOW_EMPTY_libosmo-sccp = "1" diff --git a/meta-telephony/recipes-osmocom/libosmo-sccp/libosmo-sccp_0.0.6.1.bb b/meta-telephony/recipes-osmocom/libosmo-sccp/libosmo-sccp_0.0.6.1.bb new file mode 100644 index 0000000000..7e8b92f83c --- /dev/null +++ b/meta-telephony/recipes-osmocom/libosmo-sccp/libosmo-sccp_0.0.6.1.bb @@ -0,0 +1,11 @@ +require ${PN}.inc + +S = "${WORKDIR}/git" +SRCREV = "2d2d885bd124b8ae2d3a04f3583a756029820dc0" +SRC_URI = "git://git.osmocom.org/libosmo-sccp.git;protocol=git" +PR = "${INC_PR}.1" + +# because "${WORKDIR}/git" is not a git repo, it can't figure out the version +do_configure_prepend() { + echo "${PV}" > ${S}/.tarball-version +} diff --git a/meta-telephony/recipes-osmocom/libosmocore/libosmocore.inc b/meta-telephony/recipes-osmocom/libosmocore/libosmocore.inc new file mode 100644 index 0000000000..de5742f448 --- /dev/null +++ b/meta-telephony/recipes-osmocom/libosmocore/libosmocore.inc @@ -0,0 +1,10 @@ +DESCRITOPN = "An utility library for Open Source Mobile Communications" +HOMEPAGE = "http://openbsc.gnumonks.org" +LICENSE = "GPLv2+" + +INC_PR="r1.${META_TELEPHONY_OSMO_INC}" + +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" + +inherit autotools pkgconfig + diff --git a/meta-telephony/recipes-osmocom/libosmocore/libosmocore_git.bb b/meta-telephony/recipes-osmocom/libosmocore/libosmocore_git.bb new file mode 100644 index 0000000000..e482f8c538 --- /dev/null +++ b/meta-telephony/recipes-osmocom/libosmocore/libosmocore_git.bb @@ -0,0 +1,26 @@ +require ${PN}.inc + +S = "${WORKDIR}/git" +SRCREV = "70fcbda6dd733a503e9a046e01986d8bfc2e2bb2" +SRC_URI = "git://git.osmocom.org/libosmocore.git;protocol=git;nobranch=1" +PV = "0.9.0+gitr${SRCPV}" +PR = "r1" + +PACKAGES =+ "libosmoctrl libosmocodec libosmogb libosmogsm libosmovty osmo-arfcn osmo-auc-gen" +FILES_libosmoctrl = "${libdir}/libosmoctrl${SOLIBS}" +FILES_libosmocodec = "${libdir}/libosmocodec${SOLIBS}" +FILES_libosmogb = "${libdir}/libosmogb${SOLIBS}" +FILES_libosmogsm = "${libdir}/libosmogsm${SOLIBS}" +FILES_libosmovty = "${libdir}/libosmovty${SOLIBS}" +FILES_osmo-arfcn = "${bindir}/osmo-arfcn" +FILES_osmo-auc-gen = "${bindir}/osmo-auc-gen" + +# Requires fix for upgrades +RREPLACES_libosmocore = "DONOTREPLACElibosmocore" +RREPLACES_libosmoctrl = "DONOTREPLACElibosmocore" +RREPLACES_libosmocodec = "DONOTREPLACElibosmocore" +RREPLACES_libosmogb = "DONOTREPLACElibosmocore" +RREPLACES_libosmogsm = "DONOTREPLACElibosmocore" +RREPLACES_libosmovty = "DONOTREPLACElibosmocore" + +EXTRA_OECONF += "--disable-pcsc" diff --git a/meta-telephony/recipes-osmocom/meta/meta-toolchain-osmo.bb b/meta-telephony/recipes-osmocom/meta/meta-toolchain-osmo.bb new file mode 100644 index 0000000000..0350005ee0 --- /dev/null +++ b/meta-telephony/recipes-osmocom/meta/meta-toolchain-osmo.bb @@ -0,0 +1,25 @@ +TOOLCHAIN_TARGET_OSMOTASK ?= "packagegroup-core-standalone-osmo-sdk-target" +TOOLCHAIN_TARGET_TASK = "${TOOLCHAIN_TARGET_OSMOTASK}" +TOOLCHAIN_OUTPUT_BASENAME = "${SDK_NAME}-toolchain-osmo-${DISTRO_VERSION}" +TOOLCHAIN_OUTPUTNAME = "${TOOLCHAIN_OUTPUT_BASENAME}-${DATETIME}" +TOOLCHAIN_OUTPUTNAME[vardepsexclude] = "DATETIME" +TOOLCHAIN_HOST_TASK_append = " nativesdk-python-argparse" +PROVIDES = "meta-toolchain-sdk" +require recipes-core/meta/meta-toolchain.bb + +do_populate_sdk_append() { + bb.build.exec_func("create_symlink", d) +} + + +create_symlink() { + # master or dora? + if [ -e ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh ]; then + cd ${SDKDEPLOYDIR}/ + else + cd ${SDK_DEPLOY}/ + fi + + rm -f ${TOOLCHAIN_OUTPUT_BASENAME}.sh + ln -s ${TOOLCHAIN_OUTPUTNAME}.sh ${TOOLCHAIN_OUTPUT_BASENAME}.sh +} diff --git a/meta-telephony/recipes-osmocom/openbsc/openbsc.inc b/meta-telephony/recipes-osmocom/openbsc/openbsc.inc new file mode 100644 index 0000000000..a965040333 --- /dev/null +++ b/meta-telephony/recipes-osmocom/openbsc/openbsc.inc @@ -0,0 +1,100 @@ +DESCRIPTION = "OpenBSC a Free Software GSM BaseStationController" +DEPENDS = "libdbi libosmocore libosmo-sccp libosmo-abis libosmo-netif openggsn libsmpp34 bcg729 libgsm libpcap c-ares" +HOMEPAGE = "http://openbsc.osmocom.org/" +LICENSE = "AGPLv3+" +LIC_FILES_CHKSUM = "file://COPYING;md5=73f1eb20517c55bf9493b7dd6e480788" + +RDEPENDS_osmo-nitb = "libdbd-sqlite3" + +SRC_URI = "file://osmo-nitb.init \ + file://osmo-bsc_mgcp.init \ + file://osmo-bsc.init \ + file://osmo-sgsn.init" + +INC_PR = "r21.${META_TELEPHONY_OSMO_INC}" + + +EXTRA_OECONF += " --enable-nat --enable-osmo-bsc --enable-smpp --enable-mgcp-transcoding --with-g729" + +inherit autotools update-rc.d pkgconfig + +# because "${WORKDIR}/git" is not a git repo, it can't figure out the version +do_configure_prepend() { + echo "${PV}" > ${S}/.tarball-version +} + +do_install_append() { + install -d ${D}${sysconfdir}/osmocom + install -m 0660 ${S}/doc/examples/osmo-nitb/nanobts/openbsc.cfg ${D}${sysconfdir}/osmocom/osmo-nitb.cfg + install -m 0660 ${S}/doc/examples/osmo-bsc/osmo-bsc.cfg ${D}${sysconfdir}/osmocom/osmo-bsc.cfg + install -m 0660 ${S}/doc/examples/osmo-bsc_mgcp/mgcp.cfg ${D}${sysconfdir}/osmocom/osmo-bsc-mgcp.cfg + install -m 0660 ${S}/doc/examples/osmo-sgsn/osmo-sgsn.cfg ${D}${sysconfdir}/osmocom/osmo-sgsn.cfg + + # Install sysv-init files + install -d ${D}${sysconfdir}/init.d + install -d ${D}${sysconfdir}/rc5.d + install -m 0775 ${WORKDIR}/osmo-nitb.init ${D}${sysconfdir}/init.d/osmo-nitb + install -m 0775 ${WORKDIR}/osmo-bsc_mgcp.init ${D}${sysconfdir}/init.d/osmo-bsc-mgcp + install -m 0775 ${WORKDIR}/osmo-bsc.init ${D}${sysconfdir}/init.d/osmo-bsc + install -m 0775 ${WORKDIR}/osmo-sgsn.init ${D}${sysconfdir}/init.d/osmo-sgsn + + # Install systemd files and enable on sysinit + install -d ${D}${systemd_unitdir}/system + for i in `ls ${S}/contrib/systemd`; do + install -m 0644 ${S}/contrib/systemd/$i ${D}${systemd_unitdir}/system/ + done + + install -d ${D}/var/lib/osmocom +} + +PACKAGES =+ "osmo-bsc osmo-nitb osmo-gbproxy osmo-gbproxy-dbg osmo-sgsn ipaccess-utils osmo-bsc-mgcp osmo-bsc-nat" + +INITSCRIPT_PACKAGES = "osmo-bsc osmo-bsc-mgcp osmo-nitb osmo-sgsn" + +# Do not start any of the services by default +SYSTEMD_AUTO_ENABLE = "disable" + +CONFFILES_osmo-bsc = "${sysconfdir}/osmocom/osmo-bsc.cfg" +INITSCRIPT_NAME_osmo-bsc = "osmo-bsc" +INITSCRIPT_PARAMS_osmo-bsc = "defaults 30 30" +FILES_osmo-bsc = " ${bindir}/osmo-bsc \ + ${sysconfdir}/osmocom/osmo-bsc.cfg \ + ${sysconfdir}/init.d/osmo-bsc \ + ${systemd_unitdir}/system/osmo-bsc.service \ + " + +CONFFILES_osmo-bsc-mgcp = "${sysconfdir}/osmocom/osmo-bsc-mgcp.cfg" +INITSCRIPT_NAME_osmo-bsc-mgcp = "osmo-bsc-mgcp" +INITSCRIPT_PARAMS_osmo-bsc-mgcp = "defaults 30 30" +FILES_osmo-bsc-mgcp = " ${bindir}/osmo-bsc_mgcp \ + ${sysconfdir}/osmocom/osmo-bsc-mgcp.cfg \ + ${sysconfdir}/init.d/osmo-bsc-mgcp \ + ${systemd_unitdir}/system/osmo-bsc-mgcp.service \ + " + +CONFFILES_osmo-nitb = "${sysconfdir}/osmocom/osmo-nitb.cfg" +INITSCRIPT_NAME_osmo-nitb = "osmo-nitb" +INITSCRIPT_PARAMS_osmo-nitb = "defaults 30 30" +FILES_osmo-nitb = " ${bindir}/osmo-nitb \ + /var/lib/osmocom \ + ${sysconfdir}/init.d/osmo-nitb \ + ${sysconfdir}/osmocom/osmo-nitb.cfg \ + ${systemd_unitdir}/system/osmo-nitb.service \ + " + +CONFFILES_osmo-sgsn = "${sysconfdir}/osmocom/osmo-sgsn.cfg" +INITSCRIPT_NAME_osmo-sgsn = "osmo-sgsn" +INITSCRIPT_PARAMS_osmo-sgsn = "defaults 30 30" +FILES_osmo-sgsn = " ${bindir}/osmo-sgsn \ + ${sysconfdir}/init.d/osmo-sgsn \ + ${sysconfdir}/osmocom/osmo-sgsn.cfg \ + ${systemd_unitdir}/system/osmo-sgsn.service \ + " + +FILES_ipaccess-utils = " ${bindir}/ipaccess-find ${bindir}/ipaccess-config ${bindir}/ipaccess-proxy " +FILES_osmo-bsc-nat = " ${bindir}/osmo-bsc_nat " +FILES_osmo-gbproxy = " ${bindir}/osmo-gbproxy \ + ${systemd_unitdir}/system/osmo-gbproxy.service \ + " +FILES_osmo-gbproxy-dbg = " ${bindir}/.debug/osmo-gbproxy " + diff --git a/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-bsc.init b/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-bsc.init new file mode 100755 index 0000000000..c793a0b2c6 --- /dev/null +++ b/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-bsc.init @@ -0,0 +1,48 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: osmo-bsc +# Required-Start: $syslog $networking +# Required-Stop: $syslog +# Default-Start: 5 +# Default-Stop: 1 +# Short-Description: Osmocom GSM Base Station Controller +### END INIT INFO + +DAEMON=/usr/bin/osmo-bsc +NAME=osmo-bsc +DESC="Osmocom GSM Base Station Controller" +NORMAL_ARGS="-D -c /etc/osmocom/osmo-bsc.cfg -r /var/run/openbsc.ctl" + +OSMOBTS_EXTRA_ARGS="" +NO_START=1 + +set -e + +test ! -r /etc/default/osmo-bsc || . /etc/default/osmo-bsc +test "$NO_START" = "0" || exit 0 +test -x "$DAEMON" || exit 0 + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon -S \ + -x "$DAEMON" -- $NORMAL_ARGS $OSMOBTS_EXTRA_ARGS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon -K -x "$DAEMON" + echo "$NAME." + ;; + restart) + $0 stop + $0 start + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-bsc_mgcp.init b/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-bsc_mgcp.init new file mode 100755 index 0000000000..f41758880a --- /dev/null +++ b/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-bsc_mgcp.init @@ -0,0 +1,48 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: osmo-bsc_mgcp +# Required-Start: $syslog $networking +# Required-Stop: $syslog +# Default-Start: 5 +# Default-Stop: 1 +# Short-Description: Osmocom GSM BSC MGCP proxy +### END INIT INFO + +DAEMON=/usr/bin/osmo-bsc_mgcp +NAME=osmo-bsc_mgcp +DESC="Osmocom GSM BSC MGCP proxy" +NORMAL_ARGS="-D -c /etc/osmocom/osmo-bsc-mgcp.cfg" + +OSMOBTS_EXTRA_ARGS="" +NO_START=1 + +set -e + +test ! -r /etc/default/osmo-bsc_mgcp || . /etc/default/osmo-bsc_mgcp +test "$NO_START" = "0" || exit 0 +test -x "$DAEMON" || exit 0 + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon -S \ + -x "$DAEMON" -- $NORMAL_ARGS $OSMOBTS_EXTRA_ARGS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon -K -x "$DAEMON" + echo "$NAME." + ;; + restart) + $0 stop + $0 start + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-nitb.init b/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-nitb.init new file mode 100755 index 0000000000..bd74cc0607 --- /dev/null +++ b/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-nitb.init @@ -0,0 +1,48 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: osmo-nitb +# Required-Start: $syslog $networking +# Required-Stop: $syslog +# Default-Start: 5 +# Default-Stop: 1 +# Short-Description: Osmocom GSM Network in the Box +### END INIT INFO + +DAEMON=/usr/bin/osmo-nitb +NAME=osmo-nitb +DESC="Osmocom GSM Network in the Box" +NORMAL_ARGS="-C -D -c /etc/osmocom/osmo-nitb.cfg -l /var/lib/osmocom/hlr.sqlite3" + +OSMOBTS_EXTRA_ARGS="" +NO_START=1 + +set -e + +test ! -r /etc/default/osmo-nitb || . /etc/default/osmo-nitb +test "$NO_START" = "0" || exit 0 +test -x "$DAEMON" || exit 0 + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon -S \ + -x "$DAEMON" -- $NORMAL_ARGS $OSMOBTS_EXTRA_ARGS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon -K -x "$DAEMON" + echo "$NAME." + ;; + restart|force-reload) + $0 stop + $0 start + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-sgsn.init b/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-sgsn.init new file mode 100755 index 0000000000..44811351e1 --- /dev/null +++ b/meta-telephony/recipes-osmocom/openbsc/openbsc/osmo-sgsn.init @@ -0,0 +1,48 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: osmo-sgsn +# Required-Start: $syslog $networking +# Required-Stop: $syslog +# Default-Start: 5 +# Default-Stop: 1 +# Short-Description: Osmocom Serving GPRS Support Node +### END INIT INFO + +DAEMON=/usr/bin/osmo-sgsn +NAME=osmo-sgsn +DESC="Osmocom Serving GPRS Support Node" +NORMAL_ARGS="-D -c /etc/osmocom/osmo-sgsn.cfg" + +OSMOSGSN_EXTRA_ARGS="" +NO_START=0 + +set -e + +test ! -r /etc/default/osmo-sgsn || . /etc/default/osmo-sgsn +test "$NO_START" = "0" || exit 0 +test -x "$DAEMON" || exit 0 + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon -S \ + -x "$DAEMON" -- $NORMAL_ARGS $OSMOSGSN_EXTRA_ARGS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon -K -x "$DAEMON" + echo "$NAME." + ;; + restart|force-reload) + $0 stop + $0 start + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/meta-telephony/recipes-osmocom/openbsc/openbsc/revert-mncc-version.patch b/meta-telephony/recipes-osmocom/openbsc/openbsc/revert-mncc-version.patch new file mode 100644 index 0000000000..c4c2ee8a46 --- /dev/null +++ b/meta-telephony/recipes-osmocom/openbsc/openbsc/revert-mncc-version.patch @@ -0,0 +1,19 @@ +OpenBSC has bumped the version from 2 to 4 but only introduced +new defines so the actual wire protocol has not been changed +yet. This is why we can just turn the version back. At least I +hope so. + + +Index: openbsc/include/openbsc/mncc.h +=================================================================== +--- openbsc.orig/include/openbsc/mncc.h ++++ openbsc/include/openbsc/mncc.h +@@ -163,7 +163,7 @@ struct gsm_data_frame { + unsigned char data[0]; + }; + +-#define MNCC_SOCK_VERSION 4 ++#define MNCC_SOCK_VERSION 2 + struct gsm_mncc_hello { + uint32_t msg_type; + uint32_t version; diff --git a/meta-telephony/recipes-osmocom/openbsc/openbsc/upgrade-mncc-version.patch b/meta-telephony/recipes-osmocom/openbsc/openbsc/upgrade-mncc-version.patch new file mode 100644 index 0000000000..b856cc3ce3 --- /dev/null +++ b/meta-telephony/recipes-osmocom/openbsc/openbsc/upgrade-mncc-version.patch @@ -0,0 +1,17 @@ +lcr uses MNCC_SOCK_VERSION 5, but this is binary compatible to +what openbsc thinks is version 4. The only difference is the added +RTP related commands, which are optional. + +Index: openbsc/include/openbsc/mncc.h +=================================================================== +--- openbsc.orig/include/openbsc/mncc.h ++++ openbsc/include/openbsc/mncc.h +@@ -163,7 +163,7 @@ struct gsm_data_frame { + unsigned char data[0]; + }; + +-#define MNCC_SOCK_VERSION 4 ++#define MNCC_SOCK_VERSION 5 + struct gsm_mncc_hello { + uint32_t msg_type; + uint32_t version; diff --git a/meta-telephony/recipes-osmocom/openbsc/openbsc_git.bb b/meta-telephony/recipes-osmocom/openbsc/openbsc_git.bb new file mode 100644 index 0000000000..920ba341bc --- /dev/null +++ b/meta-telephony/recipes-osmocom/openbsc/openbsc_git.bb @@ -0,0 +1,11 @@ +require ${PN}.inc + +PV = "0.14.0+gitr${SRCPV}" +PRINC = "0" +PR = "${INC_PR}.6" + +SRCREV = "57ee78078905c7499bd4e6857f8981d22badfcac" +SRC_URI += "git://git.osmocom.org/openbsc.git;protocol=git \ + file://upgrade-mncc-version.patch" + +S = "${WORKDIR}/git/openbsc" diff --git a/meta-telephony/recipes-osmocom/openggsn/files/libgtp-queue_depth_32.patch b/meta-telephony/recipes-osmocom/openggsn/files/libgtp-queue_depth_32.patch new file mode 100644 index 0000000000..52bc37bcac --- /dev/null +++ b/meta-telephony/recipes-osmocom/openggsn/files/libgtp-queue_depth_32.patch @@ -0,0 +1,13 @@ +diff --git a/gtp/queue.h b/gtp/queue.h +index 556b6ef..d59a1a3 100644 +--- a/gtp/queue.h ++++ b/gtp/queue.h +@@ -19,7 +19,7 @@ + + #define QUEUE_DEBUG 0 /* Print debug information */ + +-#define QUEUE_SIZE 1024 /* Size of retransmission queue */ ++#define QUEUE_SIZE 32 /* Size of retransmission queue */ + #define QUEUE_HASH_SIZE 65536 /* Size of hash table (2^16) */ + + struct qmsg_t { /* Holder for queued packets */ diff --git a/meta-telephony/recipes-osmocom/openggsn/files/openggsn.init b/meta-telephony/recipes-osmocom/openggsn/files/openggsn.init new file mode 100755 index 0000000000..695a6cc930 --- /dev/null +++ b/meta-telephony/recipes-osmocom/openggsn/files/openggsn.init @@ -0,0 +1,169 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: openggsn +# Required-Start: $network $local_fs +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Osmocom GSM network-in-a-box +# Description: A minimal implementation of the GSM Base Station Controller, +# Mobile Switching Center, Home Location regster and all other +# components to run a self-contained GSM network. +### END INIT INFO + +# Author: Harald Welte + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="OpenGGSN Gateway GPRS Support Node" +NAME=openggsn +DAEMON=/usr/bin/ggsn +DAEMON_ARGS="" # Arguments to run the daemon with +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME +CONFIG_FILE=/etc/ggsn.conf + +# Exit if the package is not installed +[ -x $DAEMON ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load the VERBOSE setting and other rcS variables +# . /lib/init/vars.sh + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. +# . /lib/lsb/init-functions + +DAEMON_ARGS="$DAEMON_ARGS -c $CONFIG_FILE" + +# +# Function that starts the daemon/service +# +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + /sbin/modprobe tun + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + || return 1 + + # Check for runtime directory of nonvolatile data + if [ ! -d /var/lib/ggsn ]; then + mkdir /var/lib/ggsn + fi + + # Check for GTP restart counter + if [ ! -f /var/lib/ggsn/gsn_restart ]; then + echo 0 > /var/lib/ggsn/gsn_restart + fi + + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ + $DAEMON_ARGS \ + || return 2 + # Add code here, if necessary, that waits for the process to be ready + # to handle requests from services started subsequently which depend + # on this one. As a last resort, sleep for some time. +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + # Wait for children to finish too if this is a daemon that forks + # and if the daemon is only ever run from this initscript. + # If the above conditions are not satisfied then add some other code + # that waits for the process to drop all resources that could be + # needed by services started subsequently. A last resort is to + # sleep for some time. + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + [ "$?" = 2 ] && return 2 + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return "$RETVAL" +} + +# +# Function that sends a SIGHUP to the daemon/service +# +do_reload() { + # + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + # + start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME + return 0 +} + +case "$1" in + start) + #[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME" + do_start + #case "$?" in + # 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + # 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + # esac + ;; + stop) + #[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + #case "$?" in + # 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + # 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + #esac + ;; + status) + status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? + ;; + #reload|force-reload) + # + # If do_reload() is not implemented then leave this commented out + # and leave 'force-reload' as an alias for 'restart'. + # + #log_daemon_msg "Reloading $DESC" "$NAME" + #do_reload + #log_end_msg $? + #;; + restart|force-reload) + # + # If the "reload" option is implemented then remove the + # 'force-reload' alias + # + #log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + #case "$?" in + # 0) log_end_msg 0 ;; + # 1) log_end_msg 1 ;; # Old process is still running + # *) log_end_msg 1 ;; # Failed to start + #esac + ;; + *) + # Failed to stop + #log_end_msg 1 + ;; + esac + ;; + *) + #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 + ;; +esac + +: diff --git a/meta-telephony/recipes-osmocom/openggsn/openggsn_git.bb b/meta-telephony/recipes-osmocom/openggsn/openggsn_git.bb new file mode 100644 index 0000000000..790bf56fa1 --- /dev/null +++ b/meta-telephony/recipes-osmocom/openggsn/openggsn_git.bb @@ -0,0 +1,40 @@ +DESCRITOPN = "OpenGGSN a Free Software GGSN" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b" +PV = "0.91+gitr${SRCPV}" +PR = "r14" + +SRCREV = "b07d07072e70ac4f920be9dfdf45615193b4ec2d" +SRC_URI = "git://git.osmocom.org/openggsn \ + file://openggsn.init \ + file://libgtp-queue_depth_32.patch \ + " +S = "${WORKDIR}/git" + +DEPENDS = "libosmocore" + +PACKAGES =+ " libgtp libgtp-dev libgtp-staticdev openggsn-sgsnemu" +RDEPENDS_${PN} += "kernel-module-tun" + +inherit autotools update-rc.d pkgconfig + +do_install_append() { + install -d ${D}${sysconfdir}/init.d + install -d ${D}${systemd_unitdir}/system + + install -m 0776 ${WORKDIR}/openggsn.init ${D}${sysconfdir}/init.d/openggsn + install -m 0644 ${S}/contrib/openggsn.service ${D}${systemd_unitdir}/system/ +} + +INITSCRIPT_PACKAGES = "openggsn" + +INITSCRIPT_NAME_openggsn = "openggsn" +INITSCRIPT_PARAMS_openggsn = "defaults 29 29" +RDEPENDS_${PN} += "iptables kernel-module-ipt-masquerade" + +FILES_libgtp = "${libdir}/*${SOLIBS}" +FILES_libgtp-dev = "${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la" +FILES_libgtp-staticdev = "${libdir}/*.a" + +FILES_openggsn-sgsnemu = "${bindir}/sgsnemu" +FILES_${PN} += "${systemd_unitdir}/system/*" diff --git a/meta-telephony/recipes-osmocom/osmo-service-respawn/files/osmo-service-respawn.sh b/meta-telephony/recipes-osmocom/osmo-service-respawn/files/osmo-service-respawn.sh new file mode 100755 index 0000000000..e7274d4f30 --- /dev/null +++ b/meta-telephony/recipes-osmocom/osmo-service-respawn/files/osmo-service-respawn.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +NAME=`basename $1` +PIDFILE="/var/run/$NAME.pid" +PID=$$ +echo "$PID" > $PIDFILE +echo "-1000" > /proc/$PID/oom_score_adj + +trap "{ rm -f $PIDFILE ; kill 0; }" EXIT + +while true; +do + echo "Restarting not dealing well with spaces.." + (echo "0" > /proc/self/oom_score_adj && exec $@) & + LAST_PID=$! + wait $LAST_PID + sleep 10s +done + diff --git a/meta-telephony/recipes-osmocom/osmo-service-respawn/osmo-service-respawn_1.0.bb b/meta-telephony/recipes-osmocom/osmo-service-respawn/osmo-service-respawn_1.0.bb new file mode 100644 index 0000000000..52d1031ccc --- /dev/null +++ b/meta-telephony/recipes-osmocom/osmo-service-respawn/osmo-service-respawn_1.0.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "Shell script to start, nice and respawn services" +HOMEPAGE = "http://openbsc.osmocom.org/" +LICENSE = "AGPLv3+" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +SRC_URI = "file://osmo-service-respawn.sh" + +RDEPENDS_${PN} = "bash" + +do_install() { + install -d ${D}${bindir} + install -m 0775 ${WORKDIR}/osmo-service-respawn.sh ${D}${bindir} +} diff --git a/meta-telephony/recipes-osmocom/osmocom-tcpdump/files/osmocom-tcpdump b/meta-telephony/recipes-osmocom/osmocom-tcpdump/files/osmocom-tcpdump new file mode 100755 index 0000000000..71478c9155 --- /dev/null +++ b/meta-telephony/recipes-osmocom/osmocom-tcpdump/files/osmocom-tcpdump @@ -0,0 +1,111 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: osmocom-tcpdump +# Required-Start: $remote_fs $network +# Should-Start: udev +# Required-Stop: $remote_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +### END INIT INFO + +# Do NOT "set -e" + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="Osmocom traffic capture" +NAME="tcpdump" +DAEMON=/usr/sbin/$NAME +PIDFILE=/var/run/osmocom-tcpdump-$NAME.pid +SCRIPTNAME=/etc/init.d/osmocom-tcpdump + + +CAPTURE_ENABLED="0" +CAPTURE_LIMIT="8" +CAPTURE_SIZE="1" +CAPTURE_BASENAME="/tmp/tcpdump-capture-" +CAPTURE_COMPRESS="-z /usr/sbin/tcpdump-compress" + +if [ -e /etc/default/osmocom-tcpdump ]; then + . /etc/default/osmocom-tcpdump +fi + + +CAPTURE_OPTIONS="-pi $CAPTURE_DEVICE -s0 -w $CAPTURE_BASENAME -C $CAPTURE_SIZE -W $CAPTURE_LIMIT $CAPTURE_COMPRESS" + +# +# Function that starts the daemon/service +# +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + if [ -z "$CAPTURE_DEVICE" -o -z "$CAPTURE_FILTER" ]; then + echo "Unable to start $DESC" "$NAME" "(unconfigured)" + exit 2 + fi + if [ "$CAPTURE_ENABLED" != "1" ]; then + echo "Not starting $DESC" "$NAME" "(disabled)" + exit 0 + fi + #start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + # || return 1 + echo "Starting $DESC" "$NAME" + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \ + --background --make-pidfile -- $CAPTURE_OPTIONS $CAPTURE_FILTER \ + || return 2 +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + echo "Stopping $DESC" "$NAME" + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return "$RETVAL" +} + +case "$1" in + start) + do_start + exit $? + ;; + stop) + do_stop + exit $? + ;; + restart) + # + # If the "reload" option is implemented then remove the + # 'force-reload' alias + # + do_stop + case "$?" in + 0|1) + do_start + exit $? + ;; + *) + # Failed to stop + exit 1 + ;; + esac + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2 + exit 3 + ;; +esac + +: diff --git a/meta-telephony/recipes-osmocom/osmocom-tcpdump/files/tcpdump-compress b/meta-telephony/recipes-osmocom/osmocom-tcpdump/files/tcpdump-compress new file mode 100755 index 0000000000..0a55605a5a --- /dev/null +++ b/meta-telephony/recipes-osmocom/osmocom-tcpdump/files/tcpdump-compress @@ -0,0 +1,4 @@ +#!/bin/bash + +rm -f $1.pcap.gz || true +gzip -c $1 > $1.pcap.gz && rm -f $1 || true diff --git a/meta-telephony/recipes-osmocom/osmocom-tcpdump/osmocom-tcpdump_1.0.bb b/meta-telephony/recipes-osmocom/osmocom-tcpdump/osmocom-tcpdump_1.0.bb new file mode 100644 index 0000000000..a1e9558aa5 --- /dev/null +++ b/meta-telephony/recipes-osmocom/osmocom-tcpdump/osmocom-tcpdump_1.0.bb @@ -0,0 +1,25 @@ +DESCRIPTION = "Osmocom round-robin tcpdump/capture" +LICENSE = "GPLv3+" +RDEPENDS_${PN} = "tcpdump bash" +PR = "r11" + +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +SRC_URI = " \ + file://osmocom-tcpdump \ + file://tcpdump-compress \ +" + +do_install () { + install -d ${D}${sysconfdir}/init.d + install -d ${D}${sysconfdir}/default + install -d ${D}${sbindir} + + install -m 0755 ${WORKDIR}/osmocom-tcpdump ${D}${sysconfdir}/init.d/ + install -m 0755 ${WORKDIR}/tcpdump-compress ${D}${sbindir}/ +} + +inherit update-rc.d + +INITSCRIPT_NAME = "osmocom-tcpdump" +INITSCRIPT_PARAMS = "defaults 21" diff --git a/meta-telephony/recipes-osmocom/packagegroup/packagegroup-core-standalone-osmo-sdk-target.bb b/meta-telephony/recipes-osmocom/packagegroup/packagegroup-core-standalone-osmo-sdk-target.bb new file mode 100644 index 0000000000..dd5072b5be --- /dev/null +++ b/meta-telephony/recipes-osmocom/packagegroup/packagegroup-core-standalone-osmo-sdk-target.bb @@ -0,0 +1,23 @@ +# +# Copyright (C) 2007 OpenedHand Ltd. +# + +DESCRIPTION = "Software Development Kit for Osmocom devices" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +PR = "r5" + +ALLOW_EMPTY_${PN} = "1" + +# TODO: We need to rename this task to packagegroup but for now we +# will need to skip this test. +INSANE_SKIP_${PN} += "dev-deps" + +require packagegroup-sdk-osmo.inc + +PACKAGES = "${PN} ${PN}-dbg" + +RDEPENDS_${PN} = "\ + packagegroup-core-standalone-sdk-target \ + ${SDK-OSMO} \ + ${SDK-EXTRAS}" diff --git a/meta-telephony/recipes-osmocom/packagegroup/packagegroup-osmocom.bb b/meta-telephony/recipes-osmocom/packagegroup/packagegroup-osmocom.bb new file mode 100644 index 0000000000..d95d76fd8e --- /dev/null +++ b/meta-telephony/recipes-osmocom/packagegroup/packagegroup-osmocom.bb @@ -0,0 +1,16 @@ +DESCRIPTION = "Task for Osmocom tools and header files" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +DEPENDS = "virtual/kernel" +ALLOW_EMPTY_${PN} = "1" +PR = "r2" + +# For backwards compatibility after rename +RPROVIDES_${PN} = "task-osmocom" +RREPLACES_${PN} = "task-osmocom" +RCONFLICTS_${PN} = "task-osmocom" + +RDEPENDS_${PN} = "\ + libosmocore \ + " + diff --git a/meta-telephony/recipes-osmocom/packagegroup/packagegroup-sdk-osmo.inc b/meta-telephony/recipes-osmocom/packagegroup/packagegroup-sdk-osmo.inc new file mode 100644 index 0000000000..0a3f1d4c95 --- /dev/null +++ b/meta-telephony/recipes-osmocom/packagegroup/packagegroup-sdk-osmo.inc @@ -0,0 +1,18 @@ +SDK-OSMO = " \ + lksctp-tools-dev \ + libusb1-dev \ + libtalloc-dev \ + libosmocore-dev \ + libosmo-sccp-staticdev \ + libosmo-abis-dev \ + libgtp-dev \ + libdbi-dev \ + libsmpp34-dev \ + gpsd-dev \ + " + +SDK-EXTRAS ?= "" +#SDK-EXTRAS_qemux86 ?= " valgrind lttng-ust-dev" +#SDK-EXTRAS_qemux86-64 ?= " lttng-ust-dev" +#SDK-EXTRAS_qemuppc ?= " lttng-ust-dev" +#SDK-EXTRAS_qemuarm ?= " lttng-ust-dev" diff --git a/meta-telephony/recipes-support/libtalloc/libtalloc/avoid-attr-unless-wanted.patch b/meta-telephony/recipes-support/libtalloc/libtalloc/avoid-attr-unless-wanted.patch new file mode 100644 index 0000000000..a3ee9ccd97 --- /dev/null +++ b/meta-telephony/recipes-support/libtalloc/libtalloc/avoid-attr-unless-wanted.patch @@ -0,0 +1,20 @@ +--- a/lib/replace/wscript 2015-11-13 16:04:04.000000000 +0100 ++++ b/lib/replace/wscript 2015-11-13 16:23:20.000000000 +0100 +@@ -636,8 +636,6 @@ + if not bld.CONFIG_SET('HAVE_INET_ATON'): REPLACE_SOURCE += ' inet_aton.c' + if not bld.CONFIG_SET('HAVE_INET_NTOP'): REPLACE_SOURCE += ' inet_ntop.c' + if not bld.CONFIG_SET('HAVE_INET_PTON'): REPLACE_SOURCE += ' inet_pton.c' +- if not bld.CONFIG_SET('HAVE_GETXATTR') or bld.CONFIG_SET('XATTR_ADDITIONAL_OPTIONS'): +- REPLACE_SOURCE += ' xattr.c' + + bld.SAMBA_LIBRARY('replace', + source=REPLACE_SOURCE, +@@ -648,7 +646,7 @@ + # at the moment: + # hide_symbols=bld.BUILTIN_LIBRARY('replace'), + private_library=True, +- deps='crypt dl nsl socket rt attr' + extra_libs) ++ deps='crypt dl nsl socket rt ' + extra_libs) + + bld.SAMBA_SUBSYSTEM('replace-test', + source='''test/testsuite.c test/strptime.c diff --git a/meta-telephony/recipes-support/libtalloc/libtalloc_2.1.3.bb b/meta-telephony/recipes-support/libtalloc/libtalloc_2.1.3.bb new file mode 100644 index 0000000000..8209264966 --- /dev/null +++ b/meta-telephony/recipes-support/libtalloc/libtalloc_2.1.3.bb @@ -0,0 +1,41 @@ +SUMMARY = "Hierarchical, reference counted memory pool system with destructors" +HOMEPAGE = "http://talloc.samba.org" +SECTION = "libs" +LICENSE = "LGPL-3.0+ & GPL-3.0+" + +DEPENDS += "libbsd" + +SRC_URI = "http://samba.org/ftp/talloc/talloc-${PV}.tar.gz" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=bfccfe952269fff2b407dd11f2f3083b \ + file://${COREBASE}/meta/files/common-licenses/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891" + +SRC_URI[md5sum] = "3e285de2228ae67ff0a0f5cec658f627" +SRC_URI[sha256sum] = "7aa5f75b22d4ef9c737b25515f2a2837ddc13014ff4ac6e58dd9e311f41f2cb0" + +inherit waf-samba + +PACKAGECONFIG[attr] = ",,attr" + +SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'attr', '', 'file://avoid-attr-unless-wanted.patch', d)}" + +S = "${WORKDIR}/talloc-${PV}" + +EXTRA_OECONF += "--disable-rpath \ + --disable-rpath-install \ + --bundled-libraries=NONE \ + --builtin-libraries=replace \ + --disable-silent-rules \ + --with-libiconv=${STAGING_DIR_HOST}${prefix}\ + " +DISABLE_STATIC = "" + +PACKAGES += "pytalloc pytalloc-dbg pytalloc-dev" + +FILES_pytalloc = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/* \ + ${libdir}/libpytalloc-util.so.2 \ + ${libdir}/libpytalloc-util.so.2.1.1 \ + " +FILES_pytalloc-dbg = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/.debug \ + ${libdir}/.debug/libpytalloc-util.so.2.1.1" +FILES_pytalloc-dev = "${libdir}/libpytalloc-util.so" +RDEPENDS_pytalloc = "python" diff --git a/meta-telephony/recipes-telephony/tasks/task-telephony-all.bb b/meta-telephony/recipes-telephony/tasks/task-telephony-all.bb new file mode 100644 index 0000000000..cc1ca0b010 --- /dev/null +++ b/meta-telephony/recipes-telephony/tasks/task-telephony-all.bb @@ -0,0 +1,24 @@ +DESCRIPTION = "Task for the meta-telephony layer. This is to build everything" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420 \ + file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +ALLOW_EMPTY_${PN} = "1" +PR = "r4" + +DEPENDS = "\ + libosmo-abis \ + libosmo-sccp \ + libosmocore \ + openbsc \ + packagegroup-osmocom \ + openggsn \ + misdn-utils \ + dahdi-linux \ + dahdi-tools \ + lcr \ + libgsm \ + ortp \ + libdbi \ + libdbi-drivers \ + " +