diff options
author | Jesse Gilles <jgilles@multitech.com> | 2014-11-04 11:51:34 -0600 |
---|---|---|
committer | Jesse Gilles <jgilles@multitech.com> | 2014-11-04 11:51:34 -0600 |
commit | e243c30f04c18722dc65effe6d4f275a3f35de46 (patch) | |
tree | 807610ce8af0ead02681d6c3cc89d902ec941652 | |
download | meta-mlinux-e243c30f04c18722dc65effe6d4f275a3f35de46.tar.gz meta-mlinux-e243c30f04c18722dc65effe6d4f275a3f35de46.tar.bz2 meta-mlinux-e243c30f04c18722dc65effe6d4f275a3f35de46.zip |
initial commit of mLinux layer
113 files changed, 6114 insertions, 0 deletions
diff --git a/COPYING.MIT b/COPYING.MIT new file mode 100644 index 0000000..fb950dc --- /dev/null +++ b/COPYING.MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. @@ -0,0 +1,9 @@ +All MultiTech-copyrighted software contained in mLinux is covered by +GPL (GNU General Public License) version 2, unless provided under a different license. + +All bitbake metadata is MIT licensed unless otherwise stated. Source code +included in tree for individual recipes is under the LICENSE stated in +the associated recipe (.bb file) unless otherwise stated. + +License information for any other files is either explicitly stated +or defaults to GPL version 2. @@ -0,0 +1,38 @@ +MultiTech mLinux distribution OpenEmbedded layer + +This layer depends on: + +URI: git://git.openembedded.org/openembedded-core +branch: daisy +revision: HEAD + +Numerous layers in: +URI: git://git.openembedded.org/meta-openembedded +branch: daisy +revision: HEAD + +MultiTech hardware layer: +URI: git://git.multitech.net/meta-multitech +branch: daisy +revision: HEAD + +URI: git://github.com/woglinde/meta-java.git +branch: master +revision: f4c4649 + +URI: git://git.yoctoproject.org/meta-mono +branch: daisy +revision: HEAD + +URI: git://github.com/imyller/meta-nodejs.git +branch: master +revision: HEAD + +------------ + BUILDING +------------ + +mLinux should be built using the mlinux integration repo at git://git.multitech.net/mlinux +or using the downloadable tarball. See http://www.multitech.net for instructions and +downloads. + diff --git a/classes/mlinux-image.bbclass b/classes/mlinux-image.bbclass new file mode 100644 index 0000000..8da5e97 --- /dev/null +++ b/classes/mlinux-image.bbclass @@ -0,0 +1,33 @@ +# set specified root password in image using ROOT_PASSWORD_HASH +mlinux_set_root_password () { + if [ -e ${IMAGE_ROOTFS}/etc/shadow ]; then + sed -i "s%^root:[^:]*:%root:${ROOT_PASSWORD_HASH}:%" ${IMAGE_ROOTFS}/etc/shadow + elif [ -e ${IMAGE_ROOTFS}/etc/passwd ]; then + sed -i "s%^root:[^:]*:%root:${ROOT_PASSWORD_HASH}:%" ${IMAGE_ROOTFS}/etc/passwd + fi +} +ROOTFS_POSTPROCESS_COMMAND += "mlinux_set_root_password;" + +# make links to images in TFTPBOOT_DIR for ease of development +do_tftpboot_links() { + TFTPBOOT_CLEAN="oe_bootstrap.bin oe_bootstrap_pmecc_padded.bin \ + oe_u-boot.bin oe_uImage.bin oe_rootfs.jffs2 oe_images" + + if [ -n "${TFTPBOOT_DIR}" ]; then + install -d ${DEPLOY_DIR_IMAGE} + + for f in ${TFTPBOOT_CLEAN}; do + rm -f ${TFTPBOOT_DIR}/$f + done + + ln -nfs ${DEPLOY_DIR_IMAGE}/at91bootstrap.bin ${TFTPBOOT_DIR}/oe_bootstrap.bin + if [ -f ${DEPLOY_DIR_IMAGE}/at91bootstrap_pmecc_padded.bin ]; then + ln -nfs ${DEPLOY_DIR_IMAGE}/at91bootstrap_pmecc_padded.bin ${TFTPBOOT_DIR}/oe_bootstrap_pmecc_padded.bin + fi + ln -nfs ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.bin ${TFTPBOOT_DIR}/oe_u-boot.bin + ln -nfs ${DEPLOY_DIR_IMAGE}/uImage-${MACHINE}.bin ${TFTPBOOT_DIR}/oe_uImage.bin + ln -nfs ${DEPLOY_DIR_IMAGE}/${IMAGE_BASENAME}-${MACHINE}.jffs2 ${TFTPBOOT_DIR}/oe_rootfs.jffs2 + ln -nfs ${DEPLOY_DIR_IMAGE} ${TFTPBOOT_DIR}/oe_images + fi +} +addtask tftpboot_links after do_rootfs before do_build diff --git a/classes/mlinux_metadata_scm.bbclass b/classes/mlinux_metadata_scm.bbclass new file mode 100644 index 0000000..e394910 --- /dev/null +++ b/classes/mlinux_metadata_scm.bbclass @@ -0,0 +1,14 @@ +MLINUX_METADATA_REVISION = "${@base_get_metadata_git_revision("${OETREE}",None)}" +MLINUX_METADATA_BRANCH = "${@base_get_metadata_git_branch("${OETREE}",None).strip()}" +MLINUX_LAYERS = "${@mlinux_layers(bb,d)}" + +def mlinux_layers(bb, d): + layers = (bb.data.getVar("BBLAYERS", d, 1) or "").split() + layer_revs = "" + + for layer in layers: + branch = base_get_metadata_git_branch(layer, d).strip() + rev = base_get_metadata_git_revision(layer, d) + layer_revs += "%-20s = %s:%s\n" % (os.path.basename(layer), branch, rev) + + return layer_revs diff --git a/conf/distro/java.inc b/conf/distro/java.inc new file mode 100644 index 0000000..ff620d8 --- /dev/null +++ b/conf/distro/java.inc @@ -0,0 +1,9 @@ +PREFERRED_PROVIDER_virtual/java-initial = "cacao-initial" + +PREFERRED_PROVIDER_virtual/java-native = "jamvm-native" +PREFERRED_PROVIDER_virtual/javac-native = "ecj-bootstrap-native" + +PREFERRED_VERSION_openjdk-7-jre = "25b30-2.3.12" +PREFERRED_VERSION_icedtea7-native = "2.1.3" + +PREFERRED_PROVIDER_openjdk-7-jre = "openjdk-7-jre" diff --git a/conf/distro/mlinux.conf b/conf/distro/mlinux.conf new file mode 100644 index 0000000..0b1c18e --- /dev/null +++ b/conf/distro/mlinux.conf @@ -0,0 +1,62 @@ +DISTRO = "mlinux" +DISTRO_NAME = "mLinux" +DISTRO_VERSION = "3.0" +DISTRO_CODENAME = "" +SDK_VENDOR = "-mlinux" +SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}" +SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}" +SDKPATH = "/opt/${DISTRO}/${SDK_VERSION}" + +MAINTAINER = "MultiTech Systems <oe-devel@multitech.net>" + +TARGET_VENDOR = "-mlinux" + +LOCALCONF_VERSION = "1" +LAYER_CONF_VERSION ?= "6" + +DISTRO_FEATURES_MLINUX = "argp largefile xattr \ + ipv6 ipsec ppp \ + bluetooth irda usbgadget usbhost wifi \ + cramfs ext2 smbfs nfs \ + libc-crypt pam \ + sysvinit x11" +DISTRO_FEATURES ?= "${DISTRO_FEATURES_LIBC} ${DISTRO_FEATURES_MLINUX}" + +# disable pulseaudio +DISTRO_FEATURES_BACKFILL_CONSIDERED = "pulseaudio" + +# extra packages to add to images +DISTRO_EXTRA_RDEPENDS += "mlinux-version" + +EXTRAOPKGCONFIG = "" + +# don't append to tmpdir +TCLIBCAPPEND = "" + +IPKG_VARIANT = "opkg" +DEFAULT_TIMEZONE = "America/Chicago" + +# default root password +ROOT_PASSWORD_HASH ?= "e97PZLy9l09O6" + +SANITY_TESTED_DISTROS ?= " \ + Ubuntu-12.04 \n \ + Ubuntu-13.10 \n \ + Ubuntu-14.04 \n \ + Fedora-19 \n \ + Fedora-20 \n \ + CentOS-6.4 \n \ + CentOS-6.5 \n \ + Debian-7.0 \n \ + Debian-7.1 \n \ + Debian-7.2 \n \ + Debian-7.3 \n \ + Debian-7.4 \n \ + SUSE-LINUX-12.2 \n \ + openSUSE-project-12.3 \n \ + openSUSE-project-13.1 \n \ + " + +PREFERRED_PROVIDER_jpeg = "jpeg" +PREFERRED_PROVIDER_jpeg-native = "jpeg-native" +require java.inc diff --git a/conf/layer.conf b/conf/layer.conf new file mode 100644 index 0000000..719bdf9 --- /dev/null +++ b/conf/layer.conf @@ -0,0 +1,10 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH .= ":${LAYERDIR}" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "mlinux" +BBFILE_PATTERN_mlinux = "^${LAYERDIR}/" +BBFILE_PRIORITY_mlinux = "10" diff --git a/contrib/env-oe.sh b/contrib/env-oe.sh new file mode 100644 index 0000000..53a3297 --- /dev/null +++ b/contrib/env-oe.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +export OETREE=$(pwd) + +OECORE="${OETREE}/layers/openembedded-core" + +if [[ ! "${PATH}" =~ ${OETREE}/bitbake/bin ]]; then + export PATH="${OECORE}/scripts:${OETREE}/bitbake/bin:${PATH}" +fi + +# define if you wish to create soft links to the image in the tftpboot dir +#export TFTPBOOT_DIR=/tftpboot + +export BUILDDIR="${OETREE}" +export BBPATH="${OETREE}:${OECORE}/meta" +export BB_ENV_EXTRAWHITE="MACHINE DISTRO OETREE TFTPBOOT_DIR TCLIBC TCMODE GIT_PROXY_COMMAND http_proxy ftp_proxy https_proxy all_proxy ALL_PROXY no_proxy SSH_AGENT_PID SSH_AUTH_SOCK BB_SRCREV_POLICY SDKMACHINE BB_NUMBER_THREADS" diff --git a/contrib/local.conf b/contrib/local.conf new file mode 100644 index 0000000..66a1312 --- /dev/null +++ b/contrib/local.conf @@ -0,0 +1,51 @@ +# CONF_VERSION is increased each time build/conf/ changes incompatibly +CONF_VERSION = "1" + +# Use MultiTech mLinux distribution +DISTRO = "mlinux" +MACHINE ?= "mtcdt" + +# Where to store downloaded sources +DL_DIR = "${TOPDIR}/downloads" + +# Where to save shared state +SSTATE_DIR = "${TOPDIR}/build/sstate-cache" +# bitbake cache location +PERSISTENT_DIR = "${TOPDIR}/build/cache" +# build output +TMPDIR = "${TOPDIR}/build/tmp" + +# Which files do we want to parse: +BBFILES ?= "${TOPDIR}/layers/openembedded-core/meta/recipes-*/*/*.bb" + +# Go through the Firewall +#HTTP_PROXY = "http://:/" + +# Uncomment this to remove unpacked source and intermediate work +# after successfully building a package. +# Saves a LOT of disk space, but leaving work around is useful for debugging. +INHERIT += "rm_work" + +# skip parsing of masked files +BBMASK = "" + +# Make use of SMP: +# PARALLEL_MAKE specifies how many concurrent compiler threads are spawned per bitbake process +# BB_NUMBER_THREADS specifies how many concurrent bitbake tasks will be run +PARALLEL_MAKE = "-j4" +BB_NUMBER_THREADS = "4" + +# Don't generate the mirror tarball for SCM repos, the snapshot is enough +BB_GENERATE_MIRROR_TARBALLS = "0" + +# Disable build time patch resolution. This would lauch a devshell +# and wait for manual intervention. We disable it. +PATCHRESOLVE = "noop" + +# enable local PR server +PRSERV_HOST = "localhost:0" + +# enable buildhistory for images +INHERIT += "buildhistory" +BUILDHISTORY_COMMIT = "0" +BUILDHISTORY_FEATURES = "image" diff --git a/contrib/user-layer.conf b/contrib/user-layer.conf new file mode 100644 index 0000000..609f95b --- /dev/null +++ b/contrib/user-layer.conf @@ -0,0 +1,10 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH .= ":${LAYERDIR}" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "user" +BBFILE_PATTERN_user = "^${LAYERDIR}/" +BBFILE_PRIORITY_user = "99" diff --git a/recipes-connectivity/hostapd/hostap-daemon-1.0/default b/recipes-connectivity/hostapd/hostap-daemon-1.0/default new file mode 100644 index 0000000..0923a8c --- /dev/null +++ b/recipes-connectivity/hostapd/hostap-daemon-1.0/default @@ -0,0 +1,2 @@ +# set to "yes" to start hostapd on boot +START_ON_BOOT="no" diff --git a/recipes-connectivity/hostapd/hostap-daemon-1.0/init b/recipes-connectivity/hostapd/hostap-daemon-1.0/init new file mode 100644 index 0000000..a8d622f --- /dev/null +++ b/recipes-connectivity/hostapd/hostap-daemon-1.0/init @@ -0,0 +1,43 @@ +#!/bin/sh +DAEMON=/usr/sbin/hostapd +NAME=hostapd +DESC="HOSTAP Daemon" +ARGS="/etc/hostapd.conf -B" + +test -f $DAEMON || exit 0 + +[ -f /etc/default/$NAME ] && . /etc/default/$NAME + +if [ "$START_ON_BOOT" != "yes" ]; then + exit 0 +fi + +set -e + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon -S -x $DAEMON -- $ARGS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon -K -x $DAEMON + echo "$NAME." + ;; + restart) + $0 stop + $0 start + ;; + reload) + echo -n "Reloading $DESC: " + killall -HUP $(basename ${DAEMON}) + echo "$NAME." + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 + ;; +esac + +exit 0 diff --git a/recipes-connectivity/hostapd/hostap-daemon_1.0.bbappend b/recipes-connectivity/hostapd/hostap-daemon_1.0.bbappend new file mode 100644 index 0000000..48af903 --- /dev/null +++ b/recipes-connectivity/hostapd/hostap-daemon_1.0.bbappend @@ -0,0 +1,8 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" + +SRC_URI += "file://default" + +do_install_append() { + mkdir -p ${D}${sysconfdir}/default + install -m 644 ${WORKDIR}/default ${D}${sysconfdir}/default/hostapd +} diff --git a/recipes-connectivity/openssh/openssh/ssh.default b/recipes-connectivity/openssh/openssh/ssh.default new file mode 100644 index 0000000..d5c0507 --- /dev/null +++ b/recipes-connectivity/openssh/openssh/ssh.default @@ -0,0 +1,2 @@ +# put keys here +SYSCONFDIR=/var/config/ssh diff --git a/recipes-connectivity/openssh/openssh_6.5p1.bbappend b/recipes-connectivity/openssh/openssh_6.5p1.bbappend new file mode 100644 index 0000000..87891c8 --- /dev/null +++ b/recipes-connectivity/openssh/openssh_6.5p1.bbappend @@ -0,0 +1,21 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://ssh.default" + +KEYFILES = "ssh_host_dsa_key \ +ssh_host_dsa_key.pub \ +ssh_host_ecdsa_key \ +ssh_host_ecdsa_key.pub \ +ssh_host_rsa_key \ +ssh_host_rsa_key.pub \ +ssh_host_ed25519_key \ +ssh_host_ed25519_key.pub \ +" + +do_install_append() { + install -d ${D}${sysconfdir}/default + install -m 644 ${WORKDIR}/ssh.default ${D}${sysconfdir}/default/ssh + for f in ${KEYFILES}; do + ln -sf /var/config/ssh/$f ${D}${sysconfdir}/ssh/$f + done +} diff --git a/recipes-connectivity/ppp/ppp-2.4.7/0001-ppp-Fix-compilation-errors-in-Makefile.patch b/recipes-connectivity/ppp/ppp-2.4.7/0001-ppp-Fix-compilation-errors-in-Makefile.patch new file mode 100644 index 0000000..8aa2d2e --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/0001-ppp-Fix-compilation-errors-in-Makefile.patch @@ -0,0 +1,75 @@ +From ba0f6058d1f25b2b60fc31ab2656bf12a71ffdab Mon Sep 17 00:00:00 2001 +From: Lu Chong <Chong.Lu@windriver.com> +Date: Tue, 5 Nov 2013 17:32:56 +0800 +Subject: [PATCH] ppp: Fix compilation errors in Makefile + +This patch fixes below issues: + +1. Make can't exit while compilation error occurs in subdir for plugins building. + +2. If build ppp with newer kernel (3.10.10), it will pick 'if_pppox.h' from sysroot-dir and + 'if_pppol2tp.h' from its own source dir, this cause below build errors: + + bitbake_build/tmp/sysroots/intel-x86-64/usr/include/linux/if_pppox.h:84:26: + error: field 'pppol2tp' has incomplete type + struct pppol2tpin6_addr pppol2tp; + ^ + bitbake_build/tmp/sysroots/intel-x86-64/usr/include/linux/if_pppox.h:99:28: + error: field 'pppol2tp' has incomplete type + struct pppol2tpv3in6_addr pppol2tp; + ^ + +The 'sysroot-dir/if_pppox.h' enabled ipv6 support but the 'source-dir/if_pppol2tp.h' lost +related structure definitions, we should use both header files from sysroots to fix this +build failure. + +Upstream-Status: Pending + +Signed-off-by: Lu Chong <Chong.Lu@windriver.com> +--- + pppd/plugins/Makefile.linux | 2 +- + pppd/plugins/pppol2tp/Makefile.linux | 2 +- + pppd/plugins/rp-pppoe/Makefile.linux | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/pppd/plugins/Makefile.linux b/pppd/plugins/Makefile.linux +index 0a7ec7b..2a2c15a 100644 +--- a/pppd/plugins/Makefile.linux ++++ b/pppd/plugins/Makefile.linux +@@ -20,7 +20,7 @@ include .depend + endif + + all: $(PLUGINS) +- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all; done ++ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all || exit 1; done + + %.so: %.c + $(CC) -o $@ $(LDFLAGS) $(CFLAGS) $^ +diff --git a/pppd/plugins/pppol2tp/Makefile.linux b/pppd/plugins/pppol2tp/Makefile.linux +index 19eff67..feb2f52 100644 +--- a/pppd/plugins/pppol2tp/Makefile.linux ++++ b/pppd/plugins/pppol2tp/Makefile.linux +@@ -1,6 +1,6 @@ + #CC = gcc + COPTS = -O2 -g +-CFLAGS = $(COPTS) -I. -I../.. -I../../../include -fPIC ++CFLAGS = $(COPTS) -I. -I../.. -fPIC + LDFLAGS = -shared + INSTALL = install + +diff --git a/pppd/plugins/rp-pppoe/Makefile.linux b/pppd/plugins/rp-pppoe/Makefile.linux +index f078991..15b9118 100644 +--- a/pppd/plugins/rp-pppoe/Makefile.linux ++++ b/pppd/plugins/rp-pppoe/Makefile.linux +@@ -26,7 +26,7 @@ INSTALL = install + RP_VERSION=3.8p + + COPTS=-O2 -g +-CFLAGS=$(COPTS) -I../../../include '-DRP_VERSION="$(RP_VERSION)"' ++CFLAGS=$(COPTS) '-DRP_VERSION="$(RP_VERSION)"' + all: rp-pppoe.so pppoe-discovery + + pppoe-discovery: pppoe-discovery.o debug.o +-- +1.7.9.5 + diff --git a/recipes-connectivity/ppp/ppp-2.4.7/08setupdns b/recipes-connectivity/ppp/ppp-2.4.7/08setupdns new file mode 100644 index 0000000..998219d --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/08setupdns @@ -0,0 +1,12 @@ +#!/bin/sh +ACTUALCONF=/var/run/resolv.conf +PPPCONF=/var/run/ppp/resolv.conf +if [ -f $PPPCONF ] ; then + if [ -f $ACTUALCONF ] ; then + if [ ! -h $ACTUALCONF -o ! "`readlink $ACTUALCONF 2>&1`" = "$PPPCONF" ] ; then + mv $ACTUALCONF $ACTUALCONF.ppporig + fi + fi + + ln -sf $PPPCONF $ACTUALCONF +fi diff --git a/recipes-connectivity/ppp/ppp-2.4.7/92removedns b/recipes-connectivity/ppp/ppp-2.4.7/92removedns new file mode 100644 index 0000000..2eadec6 --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/92removedns @@ -0,0 +1,5 @@ +#!/bin/sh +ACTUALCONF=/var/run/resolv.conf +if [ -f $ACTUALCONF.ppporig ] ; then + mv $ACTUALCONF.ppporig $ACTUALCONF +fi diff --git a/recipes-connectivity/ppp/ppp-2.4.7/cifdefroute.patch b/recipes-connectivity/ppp/ppp-2.4.7/cifdefroute.patch new file mode 100644 index 0000000..db4dbc2 --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/cifdefroute.patch @@ -0,0 +1,292 @@ +This patch comes from OpenEmbedded. +The original patch is from Debian / SuSE to implement replacedefaultroute +Rebased it to fit ppp-2.4.5. Dongxiao Xu <dongxiao.xu@intel.com> + +Upstream-Status: Inappropriate [debian/suse patches] + +diff -urN ppp-2.4.5-orig/pppd/ipcp.c ppp-2.4.5/pppd/ipcp.c +--- ppp-2.4.5-orig/pppd/ipcp.c 2010-06-30 15:51:12.050166398 +0800 ++++ ppp-2.4.5/pppd/ipcp.c 2010-06-30 16:40:00.478716855 +0800 +@@ -198,6 +198,16 @@ + "disable defaultroute option", OPT_ALIAS | OPT_A2CLR, + &ipcp_wantoptions[0].default_route }, + ++#ifdef __linux__ ++ { "replacedefaultroute", o_bool, ++ &ipcp_wantoptions[0].replace_default_route, ++ "Replace default route", 1 ++ }, ++ { "noreplacedefaultroute", o_bool, ++ &ipcp_allowoptions[0].replace_default_route, ++ "Never replace default route", OPT_A2COPY, ++ &ipcp_wantoptions[0].replace_default_route }, ++#endif + { "proxyarp", o_bool, &ipcp_wantoptions[0].proxy_arp, + "Add proxy ARP entry", OPT_ENABLE|1, &ipcp_allowoptions[0].proxy_arp }, + { "noproxyarp", o_bool, &ipcp_allowoptions[0].proxy_arp, +@@ -271,7 +281,7 @@ + ip_active_pkt + }; + +-static void ipcp_clear_addrs __P((int, u_int32_t, u_int32_t)); ++static void ipcp_clear_addrs __P((int, u_int32_t, u_int32_t, bool)); + static void ipcp_script __P((char *, int)); /* Run an up/down script */ + static void ipcp_script_done __P((void *)); + +@@ -1742,7 +1752,12 @@ + if (!sifnpmode(u, PPP_IP, NPMODE_QUEUE)) + return 0; + if (wo->default_route) ++#ifndef __linux__ + if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr)) ++#else ++ if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr, ++ wo->replace_default_route)) ++#endif + default_route_set[u] = 1; + if (wo->proxy_arp) + if (sifproxyarp(u, wo->hisaddr)) +@@ -1830,7 +1845,8 @@ + */ + if (demand) { + if (go->ouraddr != wo->ouraddr || ho->hisaddr != wo->hisaddr) { +- ipcp_clear_addrs(f->unit, wo->ouraddr, wo->hisaddr); ++ ipcp_clear_addrs(f->unit, wo->ouraddr, wo->hisaddr, ++ wo->replace_default_route); + if (go->ouraddr != wo->ouraddr) { + warn("Local IP address changed to %I", go->ouraddr); + script_setenv("OLDIPLOCAL", ip_ntoa(wo->ouraddr), 0); +@@ -1855,7 +1871,12 @@ + + /* assign a default route through the interface if required */ + if (ipcp_wantoptions[f->unit].default_route) ++#ifndef __linux__ + if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr)) ++#else ++ if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr, ++ wo->replace_default_route)) ++#endif + default_route_set[f->unit] = 1; + + /* Make a proxy ARP entry if requested. */ +@@ -1905,7 +1926,12 @@ + + /* assign a default route through the interface if required */ + if (ipcp_wantoptions[f->unit].default_route) ++#ifndef __linux__ + if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr)) ++#else ++ if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr, ++ wo->replace_default_route)) ++#endif + default_route_set[f->unit] = 1; + + /* Make a proxy ARP entry if requested. */ +@@ -1983,7 +2009,7 @@ + sifnpmode(f->unit, PPP_IP, NPMODE_DROP); + sifdown(f->unit); + ipcp_clear_addrs(f->unit, ipcp_gotoptions[f->unit].ouraddr, +- ipcp_hisoptions[f->unit].hisaddr); ++ ipcp_hisoptions[f->unit].hisaddr, 0); + } + + /* Execute the ip-down script */ +@@ -1999,12 +2025,21 @@ + * proxy arp entries, etc. + */ + static void +-ipcp_clear_addrs(unit, ouraddr, hisaddr) ++ipcp_clear_addrs(unit, ouraddr, hisaddr, replacedefaultroute) + int unit; + u_int32_t ouraddr; /* local address */ + u_int32_t hisaddr; /* remote address */ ++ bool replacedefaultroute; + { +- if (proxy_arp_set[unit]) { ++ /* If replacedefaultroute, sifdefaultroute will be called soon ++ * with replacedefaultroute set and that will overwrite the current ++ * default route. This is the case only when doing demand, otherwise ++ * during demand, this cifdefaultroute would restore the old default ++ * route which is not what we want in this case. In the non-demand ++ * case, we'll delete the default route and restore the old if there ++ * is one saved by an sifdefaultroute with replacedefaultroute. ++ */ ++ if (!replacedefaultroute && default_route_set[unit]) { + cifproxyarp(unit, hisaddr); + proxy_arp_set[unit] = 0; + } +diff -urN ppp-2.4.5-orig/pppd/ipcp.h ppp-2.4.5/pppd/ipcp.h +--- ppp-2.4.5-orig/pppd/ipcp.h 2010-06-30 15:51:12.043682063 +0800 ++++ ppp-2.4.5/pppd/ipcp.h 2010-06-30 16:40:49.586203129 +0800 +@@ -70,6 +70,7 @@ + bool old_addrs; /* Use old (IP-Addresses) option? */ + bool req_addr; /* Ask peer to send IP address? */ + bool default_route; /* Assign default route through interface? */ ++ bool replace_default_route; /* Replace default route through interface? */ + bool proxy_arp; /* Make proxy ARP entry for peer? */ + bool neg_vj; /* Van Jacobson Compression? */ + bool old_vj; /* use old (short) form of VJ option? */ +diff -urN ppp-2.4.5-orig/pppd/pppd.8 ppp-2.4.5/pppd/pppd.8 +--- ppp-2.4.5-orig/pppd/pppd.8 2010-06-30 15:51:12.043682063 +0800 ++++ ppp-2.4.5/pppd/pppd.8 2010-06-30 16:42:47.102413859 +0800 +@@ -121,6 +121,13 @@ + This entry is removed when the PPP connection is broken. This option + is privileged if the \fInodefaultroute\fR option has been specified. + .TP ++.B replacedefaultroute ++This option is a flag to the defaultroute option. If defaultroute is ++set and this flag is also set, pppd replaces an existing default route ++with the new default route. ++ ++ ++.TP + .B disconnect \fIscript + Execute the command specified by \fIscript\fR, by passing it to a + shell, after +@@ -717,7 +724,12 @@ + .TP + .B nodefaultroute + Disable the \fIdefaultroute\fR option. The system administrator who +-wishes to prevent users from creating default routes with pppd ++wishes to prevent users from adding a default route with pppd ++can do so by placing this option in the /etc/ppp/options file. ++.TP ++.B noreplacedefaultroute ++Disable the \fIreplacedefaultroute\fR option. The system administrator who ++wishes to prevent users from replacing a default route with pppd + can do so by placing this option in the /etc/ppp/options file. + .TP + .B nodeflate +diff -urN ppp-2.4.5-orig/pppd/pppd.h ppp-2.4.5/pppd/pppd.h +--- ppp-2.4.5-orig/pppd/pppd.h 2010-06-30 15:51:12.050166398 +0800 ++++ ppp-2.4.5/pppd/pppd.h 2010-06-30 16:43:36.514148327 +0800 +@@ -643,7 +643,11 @@ + int cif6addr __P((int, eui64_t, eui64_t)); + /* Remove an IPv6 address from i/f */ + #endif ++#ifndef __linux__ + int sifdefaultroute __P((int, u_int32_t, u_int32_t)); ++#else ++int sifdefaultroute __P((int, u_int32_t, u_int32_t, bool replace_default_rt)); ++#endif + /* Create default route through i/f */ + int cifdefaultroute __P((int, u_int32_t, u_int32_t)); + /* Delete default route through i/f */ +diff -urN ppp-2.4.5-orig/pppd/sys-linux.c ppp-2.4.5/pppd/sys-linux.c +--- ppp-2.4.5-orig/pppd/sys-linux.c 2010-06-30 15:51:12.050166398 +0800 ++++ ppp-2.4.5/pppd/sys-linux.c 2010-06-30 16:54:00.362716231 +0800 +@@ -206,6 +206,8 @@ + + static int if_is_up; /* Interface has been marked up */ + static int have_default_route; /* Gateway for default route added */ ++static struct rtentry old_def_rt; /* Old default route */ ++static int default_rt_repl_rest; /* replace and restore old default rt */ + static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */ + static char proxy_arp_dev[16]; /* Device for proxy arp entry */ + static u_int32_t our_old_addr; /* for detecting address changes */ +@@ -1537,6 +1539,9 @@ + p = NULL; + } + ++ SET_SA_FAMILY (rt->rt_dst, AF_INET); ++ SET_SA_FAMILY (rt->rt_gateway, AF_INET); ++ + SIN_ADDR(rt->rt_dst) = strtoul(cols[route_dest_col], NULL, 16); + SIN_ADDR(rt->rt_gateway) = strtoul(cols[route_gw_col], NULL, 16); + SIN_ADDR(rt->rt_genmask) = strtoul(cols[route_mask_col], NULL, 16); +@@ -1606,20 +1611,51 @@ + /******************************************************************** + * + * sifdefaultroute - assign a default route through the address given. +- */ +- +-int sifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway) +-{ +- struct rtentry rt; +- +- if (defaultroute_exists(&rt) && strcmp(rt.rt_dev, ifname) != 0) { +- if (rt.rt_flags & RTF_GATEWAY) +- error("not replacing existing default route via %I", +- SIN_ADDR(rt.rt_gateway)); +- else +- error("not replacing existing default route through %s", +- rt.rt_dev); +- return 0; ++ * ++ * If the global default_rt_repl_rest flag is set, then this function ++ * already replaced the original system defaultroute with some other ++ * route and it should just replace the current defaultroute with ++ * another one, without saving the current route. Use: demand mode, ++ * when pppd sets first a defaultroute it it's temporary ppp0 addresses ++ * and then changes the temporary addresses to the addresses for the real ++ * ppp connection when it has come up. ++ */ ++ ++int sifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway, bool replace) ++{ ++ struct rtentry rt, tmp_rt; ++ struct rtentry *del_rt = NULL; ++ ++ if (default_rt_repl_rest) { ++ /* We have already reclaced the original defaultroute, if we ++ * are called again, we will delete the current default route ++ * and set the new default route in this function. ++ * - this is normally only the case the doing demand: */ ++ if (defaultroute_exists( &tmp_rt )) ++ del_rt = &tmp_rt; ++ } else if ( defaultroute_exists( &old_def_rt ) && ++ strcmp( old_def_rt.rt_dev, ifname ) != 0) { ++ /* We did not yet replace an existing default route, let's ++ * check if we should save and replace a default route: ++ */ ++ u_int32_t old_gateway = SIN_ADDR(old_def_rt.rt_gateway); ++ if (old_gateway != gateway) { ++ if (!replace) { ++ error("not replacing default route to %s [%I]", ++ old_def_rt.rt_dev, old_gateway); ++ return 0; ++ } else { ++ // we need to copy rt_dev because we need it permanent too: ++ char * tmp_dev = malloc(strlen(old_def_rt.rt_dev)+1); ++ strcpy(tmp_dev, old_def_rt.rt_dev); ++ old_def_rt.rt_dev = tmp_dev; ++ ++ notice("replacing old default route to %s [%I]", ++ old_def_rt.rt_dev, old_gateway); ++ default_rt_repl_rest = 1; ++ del_rt = &old_def_rt; ++ } ++ } + } + + memset (&rt, 0, sizeof (rt)); +@@ -1638,6 +1674,12 @@ + error("default route ioctl(SIOCADDRT): %m"); + return 0; + } ++ if (default_rt_repl_rest && del_rt) ++ if (ioctl(sock_fd, SIOCDELRT, del_rt) < 0) { ++ if ( ! ok_error ( errno )) ++ error("del old default route ioctl(SIOCDELRT): %m(%d)", errno); ++ return 0; ++ } + + have_default_route = 1; + return 1; +@@ -1673,6 +1715,16 @@ + return 0; + } + } ++ if (default_rt_repl_rest) { ++ notice("restoring old default route to %s [%I]", ++ old_def_rt.rt_dev, SIN_ADDR(old_def_rt.rt_gateway)); ++ if (ioctl(sock_fd, SIOCADDRT, &old_def_rt) < 0) { ++ if ( ! ok_error ( errno )) ++ error("restore default route ioctl(SIOCADDRT): %m(%d)", errno); ++ return 0; ++ } ++ default_rt_repl_rest = 0; ++ } + + return 1; + } diff --git a/recipes-connectivity/ppp/ppp-2.4.7/copts.patch b/recipes-connectivity/ppp/ppp-2.4.7/copts.patch new file mode 100644 index 0000000..53ff06e --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/copts.patch @@ -0,0 +1,21 @@ +ppp: use build system CFLAGS when compiling + +Upstream-Status: Pending + +Override the hard-coded COPTS make variables with +CFLAGS. Add COPTS into one Makefile that did not +use it. + +Signed-off-by: Joe Slater <jslater@windriver.com> + +--- a/pppd/plugins/radius/Makefile.linux ++++ b/pppd/plugins/radius/Makefile.linux +@@ -12,7 +12,7 @@ VERSION = $(shell awk -F '"' '/VERSION/ + INSTALL = install + + PLUGIN=radius.so radattr.so radrealms.so +-CFLAGS=-I. -I../.. -I../../../include -O2 -fPIC -DRC_LOG_FACILITY=LOG_DAEMON ++CFLAGS=-I. -I../.. -I../../../include $(COPTS) -fPIC -DRC_LOG_FACILITY=LOG_DAEMON + + # Uncomment the next line to include support for Microsoft's + # MS-CHAP authentication protocol. diff --git a/recipes-connectivity/ppp/ppp-2.4.7/init b/recipes-connectivity/ppp/ppp-2.4.7/init new file mode 100755 index 0000000..5b3b7ab --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/init @@ -0,0 +1,50 @@ +#!/bin/sh +# +# /etc/init.d/ppp: start or stop PPP link. +# +# If you want PPP started on boot time (most dialup systems won't need it) +# rename the /etc/ppp/no_ppp_on_boot file to /etc/ppp/ppp_on_boot, and +# follow the instructions in the comments in that file. + +test -x /usr/sbin/pppd -a -f /etc/ppp/ppp_on_boot || exit 0 +if [ -x /etc/ppp/ppp_on_boot ]; then RUNFILE=1; fi + +case "$1" in + start) + echo -n "Starting up PPP link: pppd" + if [ "$RUNFILE" = "1" ]; then + /etc/ppp/ppp_on_boot + else + pppd call provider + fi + echo "." + ;; + stop) + echo -n "Shutting down PPP link: pppd" + if [ "$RUNFILE" = "1" ]; then + poff + else + poff provider + fi + echo "." + ;; + restart|force-reload) + echo -n "Restarting PPP link: pppd" + if [ "$RUNFILE" = "1" ]; then + poff + sleep 5 + /etc/ppp/ppp_on_boot + else + poff provider + sleep 5 + pppd call provider + fi + echo "." + ;; + *) + echo "Usage: /etc/init.d/ppp {start|stop|restart|force-reload}" + exit 1 + ;; +esac + +exit 0 diff --git a/recipes-connectivity/ppp/ppp-2.4.7/ip-down b/recipes-connectivity/ppp/ppp-2.4.7/ip-down new file mode 100755 index 0000000..06d3548 --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/ip-down @@ -0,0 +1,43 @@ +#!/bin/sh +# +# $Id: ip-down,v 1.2 1998/02/10 21:21:55 phil Exp $ +# +# This script is run by the pppd _after_ the link is brought down. +# It uses run-parts to run scripts in /etc/ppp/ip-down.d, so to delete +# routes, unset IP addresses etc. you should create script(s) there. +# +# Be aware that other packages may include /etc/ppp/ip-down.d scripts (named +# after that package), so choose local script names with that in mind. +# +# This script is called with the following arguments: +# Arg Name Example +# $1 Interface name ppp0 +# $2 The tty ttyS1 +# $3 The link speed 38400 +# $4 Local IP number 12.34.56.78 +# $5 Peer IP number 12.34.56.99 +# $6 Optional ``ipparam'' value foo + +# The environment is cleared before executing this script +# so the path must be reset +PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin +export PATH +# These variables are for the use of the scripts run by run-parts +PPP_IFACE="$1" +PPP_TTY="$2" +PPP_SPEED="$3" +PPP_LOCAL="$4" +PPP_REMOTE="$5" +PPP_IPPARAM="$6" +export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM + +# as an additional convenience, $PPP_TTYNAME is set to the tty name, +# stripped of /dev/ (if present) for easier matching. +PPP_TTYNAME=`/usr/bin/basename "$2"` +export PPP_TTYNAME + +# Main Script starts here + +run-parts /etc/ppp/ip-down.d + +# last line diff --git a/recipes-connectivity/ppp/ppp-2.4.7/ip-up b/recipes-connectivity/ppp/ppp-2.4.7/ip-up new file mode 100755 index 0000000..fc2fae9 --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/ip-up @@ -0,0 +1,44 @@ +#!/bin/sh +# +# $Id: ip-up,v 1.2 1998/02/10 21:25:34 phil Exp $ +# +# This script is run by the pppd after the link is established. +# It uses run-parts to run scripts in /etc/ppp/ip-up.d, so to add routes, +# set IP address, run the mailq etc. you should create script(s) there. +# +# Be aware that other packages may include /etc/ppp/ip-up.d scripts (named +# after that package), so choose local script names with that in mind. +# +# This script is called with the following arguments: +# Arg Name Example +# $1 Interface name ppp0 +# $2 The tty ttyS1 +# $3 The link speed 38400 +# $4 Local IP number 12.34.56.78 +# $5 Peer IP number 12.34.56.99 +# $6 Optional ``ipparam'' value foo + +# The environment is cleared before executing this script +# so the path must be reset +PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin +export PATH +# These variables are for the use of the scripts run by run-parts +PPP_IFACE="$1" +PPP_TTY="$2" +PPP_SPEED="$3" +PPP_LOCAL="$4" +PPP_REMOTE="$5" +PPP_IPPARAM="$6" +export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM + + +# as an additional convenience, $PPP_TTYNAME is set to the tty name, +# stripped of /dev/ (if present) for easier matching. +PPP_TTYNAME=`/usr/bin/basename "$2"` +export PPP_TTYNAME + +# Main Script starts here + +run-parts /etc/ppp/ip-up.d + +# last line diff --git a/recipes-connectivity/ppp/ppp-2.4.7/makefile-remove-hard-usr-reference.patch b/recipes-connectivity/ppp/ppp-2.4.7/makefile-remove-hard-usr-reference.patch new file mode 100644 index 0000000..d59717e --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/makefile-remove-hard-usr-reference.patch @@ -0,0 +1,37 @@ +The patch comes from OpenEmbedded. +Rebased for ppp-2.4.5. Dongxiao Xu <dongxiao.xu@intel.com> + +Updated from OE-Classic to include the pcap hunk. +Signed-off-by: Andreas Oberritter <obi@opendreambox.org> + +Upstream-Status: Inappropriate [configuration] + +diff -urN ppp-2.4.5-orig/pppd/Makefile.linux ppp-2.4.5/pppd/Makefile.linux +--- ppp-2.4.5-orig/pppd/Makefile.linux 2010-06-30 15:51:12.043682063 +0800 ++++ ppp-2.4.5/pppd/Makefile.linux 2010-06-30 17:08:21.806363042 +0800 +@@ -117,10 +117,10 @@ + #LIBS += -lshadow $(LIBS) + endif + +-ifneq ($(wildcard /usr/include/crypt.h),) ++#ifneq ($(wildcard /usr/include/crypt.h),) + CFLAGS += -DHAVE_CRYPT_H=1 + LIBS += -lcrypt +-endif ++#endif + + ifdef NEEDDES + ifndef USE_CRYPT +@@ -169,10 +169,10 @@ + endif + + ifdef FILTER +-ifneq ($(wildcard /usr/include/pcap-bpf.h),) ++#ifneq ($(wildcard /usr/include/pcap-bpf.h),) + LIBS += -lpcap + CFLAGS += -DPPP_FILTER +-endif ++#endif + endif + + ifdef HAVE_INET6 diff --git a/recipes-connectivity/ppp/ppp-2.4.7/makefile.patch b/recipes-connectivity/ppp/ppp-2.4.7/makefile.patch new file mode 100644 index 0000000..2d09baf --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/makefile.patch @@ -0,0 +1,95 @@ +The patch comes from OpenEmbedded +Rebased for ppp-2.4.5. Dongxiao Xu <dongxiao.xu@intel.com> + +Upstream-Status: Inappropriate [configuration] + +diff -ruN ppp-2.4.5-orig/chat/Makefile.linux ppp-2.4.5/chat/Makefile.linux +--- ppp-2.4.5-orig/chat/Makefile.linux 2010-06-30 15:51:12.050166398 +0800 ++++ ppp-2.4.5/chat/Makefile.linux 2010-06-30 15:51:30.450118446 +0800 +@@ -25,7 +25,7 @@ + + install: chat + mkdir -p $(BINDIR) $(MANDIR) +- $(INSTALL) -s -c chat $(BINDIR) ++ $(INSTALL) -c chat $(BINDIR) + $(INSTALL) -c -m 644 chat.8 $(MANDIR) + + clean: +diff -ruN ppp-2.4.5-orig/pppd/Makefile.linux ppp-2.4.5/pppd/Makefile.linux +--- ppp-2.4.5-orig/pppd/Makefile.linux 2010-06-30 15:51:12.043682063 +0800 ++++ ppp-2.4.5/pppd/Makefile.linux 2010-06-30 15:52:11.214170607 +0800 +@@ -99,7 +99,7 @@ + CFLAGS += -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include + LIBS += -lsrp -L/usr/local/ssl/lib -lcrypto + TARGETS += srp-entry +-EXTRAINSTALL = $(INSTALL) -s -c -m 555 srp-entry $(BINDIR)/srp-entry ++EXTRAINSTALL = $(INSTALL) -c -m 555 srp-entry $(BINDIR)/srp-entry + MANPAGES += srp-entry.8 + EXTRACLEAN += srp-entry.o + NEEDDES=y +@@ -200,7 +200,7 @@ + install: pppd + mkdir -p $(BINDIR) $(MANDIR) + $(EXTRAINSTALL) +- $(INSTALL) -s -c -m 555 pppd $(BINDIR)/pppd ++ $(INSTALL) -c -m 555 pppd $(BINDIR)/pppd + if chgrp pppusers $(BINDIR)/pppd 2>/dev/null; then \ + chmod o-rx,u+s $(BINDIR)/pppd; fi + $(INSTALL) -c -m 444 pppd.8 $(MANDIR) +diff -ruN ppp-2.4.5-orig/pppd/plugins/radius/Makefile.linux ppp-2.4.5/pppd/plugins/radius/Makefile.linux +--- ppp-2.4.5-orig/pppd/plugins/radius/Makefile.linux 2010-06-30 15:51:12.047676187 +0800 ++++ ppp-2.4.5/pppd/plugins/radius/Makefile.linux 2010-06-30 15:53:47.750182267 +0800 +@@ -36,11 +36,11 @@ + + install: all + $(INSTALL) -d -m 755 $(LIBDIR) +- $(INSTALL) -s -c -m 755 radius.so $(LIBDIR) +- $(INSTALL) -s -c -m 755 radattr.so $(LIBDIR) +- $(INSTALL) -s -c -m 755 radrealms.so $(LIBDIR) +- $(INSTALL) -c -m 444 pppd-radius.8 $(MANDIR) +- $(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR) ++ $(INSTALL) -c -m 755 radius.so $(LIBDIR) ++ $(INSTALL) -c -m 755 radattr.so $(LIBDIR) ++ $(INSTALL) -c -m 755 radrealms.so $(LIBDIR) ++ $(INSTALL) -m 444 pppd-radius.8 $(MANDIR) ++ $(INSTALL) -m 444 pppd-radattr.8 $(MANDIR) + + radius.so: radius.o libradiusclient.a + $(CC) -o radius.so -shared radius.o libradiusclient.a +diff -ruN ppp-2.4.5-orig/pppd/plugins/rp-pppoe/Makefile.linux ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux +--- ppp-2.4.5-orig/pppd/plugins/rp-pppoe/Makefile.linux 2010-06-30 15:51:12.047676187 +0800 ++++ ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux 2010-06-30 15:53:15.454486877 +0800 +@@ -43,9 +43,9 @@ + + install: all + $(INSTALL) -d -m 755 $(LIBDIR) +- $(INSTALL) -s -c -m 4550 rp-pppoe.so $(LIBDIR) ++ $(INSTALL) -c -m 4550 rp-pppoe.so $(LIBDIR) + $(INSTALL) -d -m 755 $(BINDIR) +- $(INSTALL) -s -c -m 555 pppoe-discovery $(BINDIR) ++ $(INSTALL) -c -m 555 pppoe-discovery $(BINDIR) + + clean: + rm -f *.o *.so pppoe-discovery +diff -ruN ppp-2.4.5-orig/pppdump/Makefile.linux ppp-2.4.5/pppdump/Makefile.linux +--- ppp-2.4.5-orig/pppdump/Makefile.linux 2010-06-30 15:51:12.058183383 +0800 ++++ ppp-2.4.5/pppdump/Makefile.linux 2010-06-30 15:52:25.762183537 +0800 +@@ -17,5 +17,5 @@ + + install: + mkdir -p $(BINDIR) $(MANDIR) +- $(INSTALL) -s -c pppdump $(BINDIR) ++ $(INSTALL) -c pppdump $(BINDIR) + $(INSTALL) -c -m 444 pppdump.8 $(MANDIR) +diff -ruN ppp-2.4.5-orig/pppstats/Makefile.linux ppp-2.4.5/pppstats/Makefile.linux +--- ppp-2.4.5-orig/pppstats/Makefile.linux 2010-06-30 15:51:12.058183383 +0800 ++++ ppp-2.4.5/pppstats/Makefile.linux 2010-06-30 15:52:42.486341081 +0800 +@@ -22,7 +22,7 @@ + + install: pppstats + -mkdir -p $(MANDIR) +- $(INSTALL) -s -c pppstats $(BINDIR) ++ $(INSTALL) -c pppstats $(BINDIR) + $(INSTALL) -c -m 444 pppstats.8 $(MANDIR) + + pppstats: $(PPPSTATSRCS) diff --git a/recipes-connectivity/ppp/ppp-2.4.7/pap b/recipes-connectivity/ppp/ppp-2.4.7/pap new file mode 100644 index 0000000..093c326 --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/pap @@ -0,0 +1,22 @@ +# You can use this script unmodified to connect to sites which allow +# authentication via PAP, CHAP and similar protocols. +# This script can be shared among different pppd peer configurations. +# To use it, add something like this to your /etc/ppp/peers/ file: +# +# connect "/usr/sbin/chat -v -f /etc/chatscripts/pap -T PHONE-NUMBER" +# user YOUR-USERNAME-IN-PAP-SECRETS +# noauth + +# Uncomment the following line to see the connect speed. +# It will be logged to stderr or to the file specified with the -r chat option. +#REPORT CONNECT + +ABORT BUSY +ABORT VOICE +ABORT "NO CARRIER" +ABORT "NO DIALTONE" +ABORT "NO DIAL TONE" +"" ATZ +OK ATDT\T +CONNECT "" + diff --git a/recipes-connectivity/ppp/ppp-2.4.7/poff b/recipes-connectivity/ppp/ppp-2.4.7/poff new file mode 100644 index 0000000..0521a94 --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/poff @@ -0,0 +1,26 @@ +#!/bin/sh + +# Lets see how many pppds are running.... +set -- `cat /var/run/ppp*.pid 2>/dev/null` + +case $# in + 0) # pppd only creates a pid file once ppp is up, so let's try killing pppd + # on the assumption that we've not got that far yet. + killall pppd + ;; + 1) # If only one was running then it can be killed (apparently killall + # caused problems for some, so lets try killing the pid from the file) + kill $1 + ;; + *) # More than one! Aieehh.. Dont know which one to kill. + echo "More than one pppd running. None stopped" + exit 1 + ;; +esac + +if [ -r /var/run/ppp-quick ] +then + rm -f /var/run/ppp-quick +fi + +exit 0 diff --git a/recipes-connectivity/ppp/ppp-2.4.7/pon b/recipes-connectivity/ppp/ppp-2.4.7/pon new file mode 100644 index 0000000..91c0595 --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/pon @@ -0,0 +1,9 @@ +#!/bin/sh + +if [ "$1" = "quick" ] +then + touch /var/run/ppp-quick + shift +fi + +/usr/sbin/pppd call ${1:-provider} diff --git a/recipes-connectivity/ppp/ppp-2.4.7/ppp_on_boot b/recipes-connectivity/ppp/ppp-2.4.7/ppp_on_boot new file mode 100644 index 0000000..9793761 --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/ppp_on_boot @@ -0,0 +1,21 @@ +###!/bin/sh +# +# Rename this file to ppp_on_boot and pppd will be fired up as +# soon as the system comes up, connecting to `provider'. +# +# If you also make this file executable, and replace the first line +# with just "#!/bin/sh", the commands below will be executed instead. +# + +# The location of the ppp daemon itself (shouldn't need to be changed) +PPPD=/usr/sbin/pppd + +# The default provider to connect to +$PPPD call provider + +# Additional connections, which would just use settings from +# /etc/ppp/options.<tty> +#$PPPD ttyS0 +#$PPPD ttyS1 +#$PPPD ttyS2 +#$PPPD ttyS3 diff --git a/recipes-connectivity/ppp/ppp-2.4.7/pppd-resolv-varrun.patch b/recipes-connectivity/ppp/ppp-2.4.7/pppd-resolv-varrun.patch new file mode 100644 index 0000000..a72414f --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/pppd-resolv-varrun.patch @@ -0,0 +1,45 @@ +The patch comes from OpenEmbedded +Rebased for ppp-2.4.5. Dongxiao Xu <dongxiao.xu@intel.com> + +Upstream-Status: Inappropriate [embedded specific] + +diff -ruN ppp-2.4.5-orig/pppd/ipcp.c ppp-2.4.5/pppd/ipcp.c +--- ppp-2.4.5-orig/pppd/ipcp.c 2010-06-30 15:51:12.050166398 +0800 ++++ ppp-2.4.5/pppd/ipcp.c 2010-06-30 17:02:33.930393283 +0800 +@@ -55,6 +55,8 @@ + #include <sys/socket.h> + #include <netinet/in.h> + #include <arpa/inet.h> ++#include <sys/stat.h> ++#include <unistd.h> + + #include "pppd.h" + #include "fsm.h" +@@ -2095,6 +2097,14 @@ + u_int32_t peerdns1, peerdns2; + { + FILE *f; ++ struct stat dirinfo; ++ ++ if(stat(_PATH_OUTDIR, &dirinfo)) { ++ if(mkdir(_PATH_OUTDIR, 0775)) { ++ error("Failed to create directory %s: %m", _PATH_OUTDIR); ++ return; ++ } ++ } + + f = fopen(_PATH_RESOLV, "w"); + if (f == NULL) { +diff -ruN ppp-2.4.5-orig/pppd/pathnames.h ppp-2.4.5/pppd/pathnames.h +--- ppp-2.4.5-orig/pppd/pathnames.h 2010-06-30 15:51:12.043682063 +0800 ++++ ppp-2.4.5/pppd/pathnames.h 2010-06-30 17:03:20.594371055 +0800 +@@ -30,7 +30,8 @@ + #define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options." + #define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors" + #define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/" +-#define _PATH_RESOLV _ROOT_PATH "/etc/ppp/resolv.conf" ++#define _PATH_OUTDIR _ROOT_PATH _PATH_VARRUN "/ppp" ++#define _PATH_RESOLV _PATH_OUTDIR "/resolv.conf" + + #define _PATH_USEROPT ".ppprc" + #define _PATH_PSEUDONYM ".ppp_pseudonym" diff --git a/recipes-connectivity/ppp/ppp-2.4.7/provider b/recipes-connectivity/ppp/ppp-2.4.7/provider new file mode 100644 index 0000000..e74d71a --- /dev/null +++ b/recipes-connectivity/ppp/ppp-2.4.7/provider @@ -0,0 +1,35 @@ +# example configuration for a dialup connection authenticated with PAP or CHAP +# +# This is the default configuration used by pon(1) and poff(1). +# See the manual page pppd(8) for information on all the options. + +# MUST CHANGE: replace myusername@realm with the PPP login name given to +# your by your provider. +# There should be a matching entry with the password in /etc/ppp/pap-secrets +# and/or /etc/ppp/chap-secrets. +user "myusername@realm" + +# MUST CHANGE: replace ******** with the phone number of your provider. +# The /etc/chatscripts/pap chat script may be modified to change the +# modem initialization string. +connect "/usr/sbin/chat -v -f /etc/chatscripts/pap -T ********" + +# Serial device to which the modem is connected. +/dev/modem + +# Speed of the serial line. +115200 + +# Assumes that your IP address is allocated dynamically by the ISP. +noipdefault +# Try to get the name server addresses from the ISP. +usepeerdns +# Use this connection as the default route. +defaultroute + +# Makes pppd "dial again" when the connection is lost. +persist + +# Do not ask the remote to authenticate. +noauth + diff --git a/recipes-connectivity/ppp/ppp_2.4.7.bb b/recipes-connectivity/ppp/ppp_2.4.7.bb new file mode 100644 index 0000000..a106442 --- /dev/null +++ b/recipes-connectivity/ppp/ppp_2.4.7.bb @@ -0,0 +1,88 @@ +SUMMARY = "Point-to-Point Protocol (PPP) support" +DESCRIPTION = "ppp (Paul's PPP Package) is an open source package which implements \ +the Point-to-Point Protocol (PPP) on Linux and Solaris systems." +SECTION = "console/network" +HOMEPAGE = "http://samba.org/ppp/" +BUGTRACKER = "http://ppp.samba.org/cgi-bin/ppp-bugs" +DEPENDS = "libpcap" +LICENSE = "BSD & GPLv2+ & LGPLv2+ & PD" +LIC_FILES_CHKSUM = "file://pppd/ccp.c;beginline=1;endline=29;md5=e2c43fe6e81ff77d87dc9c290a424dea \ + file://pppd/plugins/passprompt.c;beginline=1;endline=10;md5=3bcbcdbf0e369c9a3e0b8c8275b065d8 \ + file://pppd/tdb.c;beginline=1;endline=27;md5=4ca3a9991b011038d085d6675ae7c4e6 \ + file://chat/chat.c;beginline=1;endline=15;md5=0d374b8545ee5c62d7aff1acbd38add2" +PR = "r6" + +SRC_URI = "http://ppp.samba.org/ftp/ppp/ppp-${PV}.tar.gz \ + file://makefile.patch \ + file://cifdefroute.patch \ + file://pppd-resolv-varrun.patch \ + file://makefile-remove-hard-usr-reference.patch \ + file://pon \ + file://poff \ + file://init \ + file://ip-up \ + file://ip-down \ + file://08setupdns \ + file://92removedns \ + file://copts.patch \ + file://pap \ + file://ppp_on_boot \ + file://provider \ + file://0001-ppp-Fix-compilation-errors-in-Makefile.patch \ +" + +SRC_URI[md5sum] = "78818f40e6d33a1d1de68a1551f6595a" +SRC_URI[sha256sum] = "02e0a3dd3e4799e33103f70ec7df75348c8540966ee7c948e4ed8a42bbccfb30" + +inherit autotools + +TARGET_CC_ARCH += " ${LDFLAGS}" +EXTRA_OEMAKE = "STRIPPROG=${STRIP} MANDIR=${D}${datadir}/man/man8 INCDIR=${D}${includedir} LIBDIR=${D}${libdir}/pppd/${PV} BINDIR=${D}${sbindir}" +EXTRA_OECONF = "--disable-strip" + +# Package Makefile computes CFLAGS, referencing COPTS. +# Typically hard-coded to '-O2 -g' in the Makefile's. +# +EXTRA_OEMAKE += ' COPTS="${CFLAGS}"' + +do_install_append () { + make install-etcppp ETCDIR=${D}/${sysconfdir}/ppp + mkdir -p ${D}${bindir}/ ${D}${sysconfdir}/init.d + mkdir -p ${D}${sysconfdir}/ppp/ip-up.d/ + mkdir -p ${D}${sysconfdir}/ppp/ip-down.d/ + install -m 0755 ${WORKDIR}/pon ${D}${bindir}/pon + install -m 0755 ${WORKDIR}/poff ${D}${bindir}/poff + install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/ppp + install -m 0755 ${WORKDIR}/ip-up ${D}${sysconfdir}/ppp/ + install -m 0755 ${WORKDIR}/ip-down ${D}${sysconfdir}/ppp/ + install -m 0755 ${WORKDIR}/08setupdns ${D}${sysconfdir}/ppp/ip-up.d/ + install -m 0755 ${WORKDIR}/92removedns ${D}${sysconfdir}/ppp/ip-down.d/ + mkdir -p ${D}${sysconfdir}/chatscripts + mkdir -p ${D}${sysconfdir}/ppp/peers + install -m 0755 ${WORKDIR}/pap ${D}${sysconfdir}/chatscripts + install -m 0755 ${WORKDIR}/ppp_on_boot ${D}${sysconfdir}/ppp/ppp_on_boot + install -m 0755 ${WORKDIR}/provider ${D}${sysconfdir}/ppp/peers/provider + rm -rf ${D}/${mandir}/man8/man8 + chmod u+s ${D}${sbindir}/pppd +} + +CONFFILES_${PN} = "${sysconfdir}/ppp/pap-secrets ${sysconfdir}/ppp/chap-secrets ${sysconfdir}/ppp/options" +PACKAGES =+ "${PN}-oa ${PN}-oe ${PN}-radius ${PN}-winbind ${PN}-minconn ${PN}-password ${PN}-l2tp ${PN}-tools" +FILES_${PN} = "${sysconfdir} ${bindir} ${sbindir}/chat ${sbindir}/pppd" +FILES_${PN}-dbg += "${libdir}/pppd/${PV}/.debug" +FILES_${PN}-oa = "${libdir}/pppd/${PV}/pppoatm.so" +FILES_${PN}-oe = "${sbindir}/pppoe-discovery ${libdir}/pppd/${PV}/rp-pppoe.so" +FILES_${PN}-radius = "${libdir}/pppd/${PV}/radius.so ${libdir}/pppd/${PV}/radattr.so ${libdir}/pppd/${PV}/radrealms.so" +FILES_${PN}-winbind = "${libdir}/pppd/${PV}/winbind.so" +FILES_${PN}-minconn = "${libdir}/pppd/${PV}/minconn.so" +FILES_${PN}-password = "${libdir}/pppd/${PV}/pass*.so" +FILES_${PN}-l2tp = "${libdir}/pppd/${PV}/*l2tp.so" +FILES_${PN}-tools = "${sbindir}/pppstats ${sbindir}/pppdump" +DESCRIPTION_${PN}-oa = "Plugin for PPP needed for PPP-over-ATM" +DESCRIPTION_${PN}-oe = "Plugin for PPP needed for PPP-over-Ethernet" +DESCRIPTION_${PN}-radius = "Plugin for PPP that are related to RADIUS" +DESCRIPTION_${PN}-winbind = "Plugin for PPP to authenticate against Samba or Windows" +DESCRIPTION_${PN}-minconn = "Plugin for PPP to specify a minimum connect time before the idle timeout applies" +DESCRIPTION_${PN}-password = "Plugin for PPP to get passwords via a pipe" +DESCRIPTION_${PN}-l2tp = "Plugin for PPP for l2tp support" +DESCRIPTION_${PN}-tools = "The pppdump and pppstats utitilities" diff --git a/recipes-connectivity/usb-gadget-mode/files/usb-gadget b/recipes-connectivity/usb-gadget-mode/files/usb-gadget new file mode 100755 index 0000000..8da88ad --- /dev/null +++ b/recipes-connectivity/usb-gadget-mode/files/usb-gadget @@ -0,0 +1,69 @@ +#! /bin/sh +# +# Copyright Matthias Hentges <devel@hentges.net> (c) 2007 +# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license) +# +# Filename: usb-gadget +# Date: 20070606 (YMD) +# +################################################################################# +# +# 20070606 - v0.0.1 - Initial release +# 20070630 - v0.0.2 - Add forgotten host mode +# 20090529 - add support for all gadgets in 2.6.29 (koen) + +CONF_FILE="/etc/default/usb-gadget" + +die() { + echo "ERROR: $1" + exit 1 +} + +go() { + test -e "$CONF_FILE" && . "$CONF_FILE" + + case "$USB_MODE" in + networking) setup_usb g_ether ;; + zero) setup_usb g_zero ;; + midi) setup_usb g_midi ;; + printer) setup_usb g_printer ;; + gadgetfs) setup_usb gadgetfs ;; + composite) setup_usb g_cdc ;; + serial) setup_usb g_serial ;; + storage) setup_usb g_file_storage ;; + hostmode) unload_usb_gadgets + setup_usb ohci_hcd ;; + none) unload_usb_gadgets ;; + esac + +} + +setup_usb() { + + if ! ( lsmod | grep -q "$1" ) + then + unload_usb_gadgets + echo "Loading [$1]" + modprobe "$1" $MODULE_OPTIONS + else + echo "Already loaded: [$1]" + fi +} + +unload_usb_gadgets() { + KERNEL_VERSION="`uname -r`" + GADGET_MODULES="`find /lib/modules/$KERNEL_VERSION/kernel/drivers/usb/gadget -name "*g_*"`" + + for module in $GADGET_MODULES + do + MODULE_NAME="`basename $module | sed "s/\.ko//"`" + + if ( lsmod | grep -q "$MODULE_NAME" ) + then + echo "Unloading [$MODULE_NAME]" + rmmod "$module" + fi + done +} + +go diff --git a/recipes-connectivity/usb-gadget-mode/files/usb-gadget.conf b/recipes-connectivity/usb-gadget-mode/files/usb-gadget.conf new file mode 100644 index 0000000..ecf0844 --- /dev/null +++ b/recipes-connectivity/usb-gadget-mode/files/usb-gadget.conf @@ -0,0 +1,3 @@ +USB_MODE="serial" +MODULE_OPTIONS="" + diff --git a/recipes-connectivity/usb-gadget-mode/files/usb-gadget.init b/recipes-connectivity/usb-gadget-mode/files/usb-gadget.init new file mode 100755 index 0000000..7bf456b --- /dev/null +++ b/recipes-connectivity/usb-gadget-mode/files/usb-gadget.init @@ -0,0 +1,16 @@ +#! /bin/sh +# +# Copyright Matthias Hentges <devel@hentges.net> (c) 2007 +# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license) +# +# Filename: usb-gadget.init +# Date: 20070606 (YMD) +# +################################################################################# +# +# 20070606 - v0.0.1 - Initial release + +case "$1" in +start) usb-gadget ;; +esac + diff --git a/recipes-connectivity/usb-gadget-mode/usb-gadget-mode.bb b/recipes-connectivity/usb-gadget-mode/usb-gadget-mode.bb new file mode 100644 index 0000000..3b547cb --- /dev/null +++ b/recipes-connectivity/usb-gadget-mode/usb-gadget-mode.bb @@ -0,0 +1,42 @@ +# Copyright Matthias Hentges <devel@hentges.net> (c) 2007 +# License: MIT (see http://www.opensource.org/licenses/mit-license.php +# for a copy of the license) +# +# Filename: usb-gadget-mode.bb +# Date: 20070606 (YMD) + +DESCRIPTION = "Manage the default USB gadget mode" +SECTION = "console/network" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" +PV = "0.0.2" +PR = "r2" + +SRC_URI = "\ + file://usb-gadget.conf \ + file://usb-gadget \ + file://usb-gadget.init \ +" + +do_install() { + install -d ${D}${sysconfdir} + install -d ${D}${sysconfdir}/init.d + install -d ${D}${bindir} + install -d ${D}${sysconfdir}/default + + install -m 0644 ${WORKDIR}/usb-gadget.conf ${D}${sysconfdir}/default/usb-gadget + install -m 0755 ${WORKDIR}/usb-gadget.init ${D}${sysconfdir}/init.d/usb-gadget + install -m 0755 ${WORKDIR}/usb-gadget ${D}${bindir} +} + +pkg_postinst_${PN}() { + test -n "$D" && opt="-r $D" + update-rc.d $opt usb-gadget defaults 50 +} + +pkg_postrm_${PN}() { + update-rc.d -f usb-gadget remove +} + +PACKAGE_ARCH = "${MACHINE_ARCH}" + diff --git a/recipes-core/base-files/base-files/mlinux/issue b/recipes-core/base-files/base-files/mlinux/issue new file mode 100644 index 0000000..9de31d4 --- /dev/null +++ b/recipes-core/base-files/base-files/mlinux/issue @@ -0,0 +1,7 @@ + _ _ + _ __ ___ | | (_)_ __ _ ___ __ + | '_ ` _ \\| | | | '_ \\| | | \\ \\/ / + | | | | | | |___| | | | | |_| |> < + |_| |_| |_|_____|_|_| |_|\\__,_/_/\\_\\ + +MultiTech Systems mLinux GNU/Linux diff --git a/recipes-core/base-files/base-files/mlinux/issue.net b/recipes-core/base-files/base-files/mlinux/issue.net new file mode 100644 index 0000000..efd075c --- /dev/null +++ b/recipes-core/base-files/base-files/mlinux/issue.net @@ -0,0 +1,7 @@ + _ _ + _ __ ___ | | (_)_ __ _ ___ __ + | '_ ` _ \| | | | '_ \| | | \ \/ / + | | | | | | |___| | | | | |_| |> < + |_| |_| |_|_____|_|_| |_|\__,_/_/\_\ + +Multi-Tech Systems mLinux GNU/Linux diff --git a/recipes-core/base-files/base-files/mtcdt/fstab b/recipes-core/base-files/base-files/mtcdt/fstab new file mode 100644 index 0000000..ed71d2f --- /dev/null +++ b/recipes-core/base-files/base-files/mtcdt/fstab @@ -0,0 +1,12 @@ +rootfs / auto defaults 1 1 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts mode=0620,gid=5 0 0 +usbdevfs /proc/bus/usb usbdevfs noauto 0 0 +tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0 +tmpfs /var/volatile tmpfs defaults 0 0 + +/dev/mtdblock6 /var/config jffs2 defaults 0 0 +/dev/mtdblock7 /var/oem jffs2 defaults,ro 0 0 + +# SD card +/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0 diff --git a/recipes-core/base-files/base-files_3.0.14.bbappend b/recipes-core/base-files/base-files_3.0.14.bbappend new file mode 100644 index 0000000..461f869 --- /dev/null +++ b/recipes-core/base-files/base-files_3.0.14.bbappend @@ -0,0 +1,4 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}" + +# add SD card dir +dirs755_append = " /media/card" diff --git a/recipes-core/busybox/busybox-1.22.1/defconfig b/recipes-core/busybox/busybox-1.22.1/defconfig new file mode 100644 index 0000000..0387a9d --- /dev/null +++ b/recipes-core/busybox/busybox-1.22.1/defconfig @@ -0,0 +1,1020 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.20.2 +# Mon Aug 20 17:01:45 2012 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Busybox Settings +# + +# +# General Configuration +# +# CONFIG_DESKTOP is not set +# CONFIG_EXTRA_COMPAT is not set +# CONFIG_INCLUDE_SUSv2 is not set +# CONFIG_USE_PORTABLE_CODE is not set +CONFIG_PLATFORM_LINUX=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_SHOW_USAGE=y +CONFIG_FEATURE_VERBOSE_USAGE=y +CONFIG_FEATURE_COMPRESS_USAGE=y +# CONFIG_FEATURE_INSTALLER is not set +# CONFIG_INSTALL_NO_USR is not set +# CONFIG_LOCALE_SUPPORT is not set +# CONFIG_UNICODE_SUPPORT is not set +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=0 +CONFIG_LAST_SUPPORTED_WCHAR=0 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set +CONFIG_LONG_OPTS=y +CONFIG_FEATURE_DEVPTS=y +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_UTMP=y +# CONFIG_FEATURE_WTMP is not set +CONFIG_FEATURE_PIDFILE=y +CONFIG_FEATURE_SUID=y +CONFIG_FEATURE_SUID_CONFIG=y +CONFIG_FEATURE_SUID_CONFIG_QUIET=y +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_PREFER_APPLETS is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +CONFIG_FEATURE_SYSLOG=y +CONFIG_FEATURE_HAVE_RPC=y + +# +# Build Options +# +# CONFIG_STATIC is not set +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_LFS=y +# CONFIG_CROSS_COMPILER_PREFIX is not set +CONFIG_SYSROOT="" +# CONFIG_EXTRA_CFLAGS is not set +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_WERROR is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Installation Options ("make install" behavior) +# +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="./_install" + +# +# Busybox Library Tuning +# +CONFIG_FEATURE_SYSTEMD=y +CONFIG_FEATURE_RTMINMAX=y +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_FEATURE_FAST_TOP=y +# CONFIG_FEATURE_ETC_NETWORKS is not set +CONFIG_FEATURE_USE_TERMIOS=y +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +# CONFIG_FEATURE_EDITING_VI is not set +CONFIG_FEATURE_EDITING_HISTORY=64 +CONFIG_FEATURE_EDITING_SAVEHISTORY=y +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set +# CONFIG_FEATURE_REVERSE_SEARCH is not set +CONFIG_FEATURE_TAB_COMPLETION=y +CONFIG_FEATURE_USERNAME_COMPLETION=y +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +CONFIG_FEATURE_NON_POSIX_CP=y +CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_FEATURE_SKIP_ROOTFS=y +CONFIG_MONOTONIC_SYSCALL=y +CONFIG_IOCTL_HEX2STR_ERROR=y +CONFIG_FEATURE_HWIB=y + +# +# Applets +# + +# +# Archival Utilities +# +CONFIG_FEATURE_SEAMLESS_XZ=y +CONFIG_FEATURE_SEAMLESS_LZMA=y +CONFIG_FEATURE_SEAMLESS_BZ2=y +CONFIG_FEATURE_SEAMLESS_GZ=y +CONFIG_FEATURE_SEAMLESS_Z=y +CONFIG_AR=y +# CONFIG_FEATURE_AR_LONG_FILENAMES is not set +CONFIG_FEATURE_AR_CREATE=y +CONFIG_BUNZIP2=y +CONFIG_BZIP2=y +CONFIG_CPIO=y +# CONFIG_FEATURE_CPIO_O is not set +# CONFIG_FEATURE_CPIO_P is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set +CONFIG_GUNZIP=y +CONFIG_GZIP=y +CONFIG_FEATURE_GZIP_LONG_OPTIONS=y +CONFIG_GZIP_FAST=0 +CONFIG_LZOP=y +# CONFIG_LZOP_COMPR_HIGH is not set +# CONFIG_RPM2CPIO is not set +# CONFIG_RPM is not set +CONFIG_TAR=y +CONFIG_FEATURE_TAR_CREATE=y +CONFIG_FEATURE_TAR_AUTODETECT=y +CONFIG_FEATURE_TAR_FROM=y +CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y +# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +CONFIG_FEATURE_TAR_LONG_OPTIONS=y +CONFIG_FEATURE_TAR_TO_COMMAND=y +CONFIG_FEATURE_TAR_UNAME_GNAME=y +CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y +# CONFIG_FEATURE_TAR_SELINUX is not set +# CONFIG_UNCOMPRESS is not set +# CONFIG_UNLZMA is not set +# CONFIG_FEATURE_LZMA_FAST is not set +# CONFIG_LZMA is not set +CONFIG_UNXZ=y +CONFIG_XZ=y +CONFIG_UNZIP=y + +# +# Coreutils +# +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +# CONFIG_FEATURE_DATE_NANO is not set +CONFIG_FEATURE_DATE_COMPAT=y +# CONFIG_HOSTID is not set +CONFIG_ID=y +CONFIG_GROUPS=y +CONFIG_TEST=y +CONFIG_FEATURE_TEST_64=y +CONFIG_TOUCH=y +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +# CONFIG_FEATURE_TR_EQUIV is not set +CONFIG_BASE64=y +CONFIG_WHO=y +CONFIG_USERS=y +# CONFIG_CAL is not set +# CONFIG_CATV is not set +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y +CONFIG_CHROOT=y +# CONFIG_CKSUM is not set +# CONFIG_COMM is not set +CONFIG_CP=y +CONFIG_FEATURE_CP_LONG_OPTIONS=y +CONFIG_CUT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y +# CONFIG_FEATURE_DD_IBS_OBS is not set +CONFIG_DF=y +CONFIG_FEATURE_DF_FANCY=y +CONFIG_DIRNAME=y +# CONFIG_DOS2UNIX is not set +# CONFIG_UNIX2DOS is not set +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +CONFIG_FEATURE_ENV_LONG_OPTIONS=y +# CONFIG_EXPAND is not set +# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FALSE=y +# CONFIG_FOLD is not set +CONFIG_FSYNC=y +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +# CONFIG_INSTALL is not set +# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set +CONFIG_LN=y +CONFIG_LOGNAME=y +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set +CONFIG_MD5SUM=y +CONFIG_MKDIR=y +CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +CONFIG_MV=y +CONFIG_FEATURE_MV_LONG_OPTIONS=y +CONFIG_NICE=y +CONFIG_NOHUP=y +CONFIG_OD=y +# CONFIG_PRINTENV is not set +CONFIG_PRINTF=y +CONFIG_PWD=y +CONFIG_READLINK=y +CONFIG_FEATURE_READLINK_FOLLOW=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +CONFIG_FEATURE_RMDIR_LONG_OPTIONS=y +CONFIG_SEQ=y +# CONFIG_SHA1SUM is not set +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SLEEP=y +CONFIG_FEATURE_FANCY_SLEEP=y +CONFIG_FEATURE_FLOAT_SLEEP=y +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +# CONFIG_SPLIT is not set +# CONFIG_FEATURE_SPLIT_FANCY is not set +CONFIG_STAT=y +CONFIG_FEATURE_STAT_FORMAT=y +CONFIG_STTY=y +# CONFIG_SUM is not set +CONFIG_SYNC=y +# CONFIG_TAC is not set +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TRUE=y +CONFIG_TTY=y +CONFIG_UNAME=y +# CONFIG_UNEXPAND is not set +# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set +CONFIG_UNIQ=y +CONFIG_USLEEP=y +# CONFIG_UUDECODE is not set +# CONFIG_UUENCODE is not set +CONFIG_WC=y +# CONFIG_FEATURE_WC_LARGE is not set +CONFIG_WHOAMI=y +CONFIG_YES=y + +# +# Common options for cp and mv +# +# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set + +# +# Common options for ls, more and telnet +# +CONFIG_FEATURE_AUTOWIDTH=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y + +# +# Console Utilities +# +CONFIG_CHVT=y +# CONFIG_FGCONSOLE is not set +CONFIG_CLEAR=y +CONFIG_DEALLOCVT=y +CONFIG_DUMPKMAP=y +# CONFIG_KBD_MODE is not set +CONFIG_LOADFONT=y +CONFIG_LOADKMAP=y +CONFIG_OPENVT=y +CONFIG_RESET=y +# CONFIG_RESIZE is not set +# CONFIG_FEATURE_RESIZE_PRINT is not set +CONFIG_SETCONSOLE=y +# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set +# CONFIG_SETFONT is not set +# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_DEFAULT_SETFONT_DIR="" +# CONFIG_SETKEYCODES is not set +# CONFIG_SETLOGCONS is not set +# CONFIG_SHOWKEY is not set + +# +# Common options for loadfont and setfont +# +# CONFIG_FEATURE_LOADFONT_PSF2 is not set +# CONFIG_FEATURE_LOADFONT_RAW is not set + +# +# Debian Utilities +# +CONFIG_MKTEMP=y +# CONFIG_PIPE_PROGRESS is not set +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +CONFIG_FEATURE_RUN_PARTS_FANCY=y +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_WHICH=y + +# +# Editors +# +CONFIG_PATCH=y +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=1024 +CONFIG_FEATURE_VI_8BIT=y +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +CONFIG_FEATURE_VI_REGEX_SEARCH=y +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +# CONFIG_FEATURE_VI_READONLY is not set +CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_FEATURE_VI_SET=y +CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_FEATURE_VI_ASK_TERMINAL=y +CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y +CONFIG_AWK=y +CONFIG_FEATURE_AWK_LIBM=y +CONFIG_CMP=y +CONFIG_DIFF=y +CONFIG_FEATURE_DIFF_LONG_OPTIONS=y +CONFIG_FEATURE_DIFF_DIR=y +# CONFIG_ED is not set +CONFIG_SED=y +CONFIG_FEATURE_ALLOW_EXEC=y + +# +# Finding Utilities +# +CONFIG_FIND=y +CONFIG_FEATURE_FIND_PRINT0=y +CONFIG_FEATURE_FIND_MTIME=y +CONFIG_FEATURE_FIND_MMIN=y +CONFIG_FEATURE_FIND_PERM=y +CONFIG_FEATURE_FIND_TYPE=y +CONFIG_FEATURE_FIND_XDEV=y +CONFIG_FEATURE_FIND_MAXDEPTH=y +CONFIG_FEATURE_FIND_NEWER=y +CONFIG_FEATURE_FIND_INUM=y +CONFIG_FEATURE_FIND_EXEC=y +CONFIG_FEATURE_FIND_USER=y +CONFIG_FEATURE_FIND_GROUP=y +CONFIG_FEATURE_FIND_NOT=y +CONFIG_FEATURE_FIND_DEPTH=y +CONFIG_FEATURE_FIND_PAREN=y +CONFIG_FEATURE_FIND_SIZE=y +CONFIG_FEATURE_FIND_PRUNE=y +CONFIG_FEATURE_FIND_DELETE=y +CONFIG_FEATURE_FIND_PATH=y +CONFIG_FEATURE_FIND_REGEX=y +# CONFIG_FEATURE_FIND_CONTEXT is not set +CONFIG_FEATURE_FIND_LINKS=y +CONFIG_GREP=y +CONFIG_FEATURE_GREP_EGREP_ALIAS=y +CONFIG_FEATURE_GREP_FGREP_ALIAS=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_HALT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +# CONFIG_INIT is not set +# CONFIG_FEATURE_USE_INITTAB is not set +# CONFIG_FEATURE_KILL_REMOVED is not set +CONFIG_FEATURE_KILL_DELAY=0 +# CONFIG_FEATURE_INIT_SCTTY is not set +# CONFIG_FEATURE_INIT_SYSLOG is not set +# CONFIG_FEATURE_EXTRA_QUIET is not set +# CONFIG_FEATURE_INIT_COREDUMPS is not set +# CONFIG_FEATURE_INITRD is not set +CONFIG_INIT_TERMINAL_TYPE="" +# CONFIG_MESG is not set +# CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set + +# +# Login/Password Management Utilities +# +# CONFIG_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +# CONFIG_FEATURE_SHADOWPASSWDS is not set +# CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_USE_BB_SHADOW is not set +CONFIG_USE_BB_CRYPT=y +# CONFIG_USE_BB_CRYPT_SHA is not set +# CONFIG_ADDUSER is not set +# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set +# CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +# CONFIG_ADDGROUP is not set +# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set +# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set +# CONFIG_DELUSER is not set +# CONFIG_DELGROUP is not set +# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set +# CONFIG_GETTY is not set +# CONFIG_LOGIN is not set +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_PAM is not set +# CONFIG_LOGIN_SCRIPTS is not set +# CONFIG_FEATURE_NOLOGIN is not set +# CONFIG_FEATURE_SECURETTY is not set +# CONFIG_PASSWD is not set +# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set +# CONFIG_CRYPTPW is not set +# CONFIG_CHPASSWD is not set +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="" +# CONFIG_SU is not set +# CONFIG_FEATURE_SU_SYSLOG is not set +# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set +# CONFIG_SULOGIN is not set +# CONFIG_VLOCK is not set + +# +# Linux Ext2 FS Progs +# +CONFIG_CHATTR=y +CONFIG_FSCK=y +# CONFIG_LSATTR is not set +# CONFIG_TUNE2FS is not set + +# +# Linux Module Utilities +# +# CONFIG_MODINFO is not set +# CONFIG_MODPROBE_SMALL is not set +# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +CONFIG_INSMOD=y +CONFIG_RMMOD=y +CONFIG_LSMOD=y +# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set +CONFIG_MODPROBE=y +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +CONFIG_DEPMOD=y + +# +# Options common to multiple modutils +# +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +CONFIG_FEATURE_CHECK_TAINTED_MODULE=y +CONFIG_FEATURE_MODUTILS_ALIAS=y +CONFIG_FEATURE_MODUTILS_SYMBOLS=y +CONFIG_DEFAULT_MODULES_DIR="/lib/modules" +CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" + +# +# Linux System Utilities +# +# CONFIG_BLOCKDEV is not set +# CONFIG_MDEV is not set +# CONFIG_FEATURE_MDEV_CONF is not set +# CONFIG_FEATURE_MDEV_RENAME is not set +# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set +# CONFIG_FEATURE_MDEV_EXEC is not set +# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +# CONFIG_REV is not set +# CONFIG_ACPID is not set +# CONFIG_FEATURE_ACPID_COMPAT is not set +# CONFIG_BLKID is not set +# CONFIG_FEATURE_BLKID_TYPE is not set +CONFIG_DMESG=y +CONFIG_FEATURE_DMESG_PRETTY=y +CONFIG_FBSET=y +CONFIG_FEATURE_FBSET_FANCY=y +CONFIG_FEATURE_FBSET_READMODE=y +# CONFIG_FDFLUSH is not set +# CONFIG_FDFORMAT is not set +CONFIG_FDISK=y +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +CONFIG_FEATURE_FDISK_WRITABLE=y +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +# CONFIG_FEATURE_OSF_LABEL is not set +# CONFIG_FEATURE_GPT_LABEL is not set +# CONFIG_FEATURE_FDISK_ADVANCED is not set +# CONFIG_FINDFS is not set +CONFIG_FLOCK=y +# CONFIG_FREERAMDISK is not set +CONFIG_FSCK_MINIX=y +# CONFIG_MKFS_EXT2 is not set +CONFIG_MKFS_MINIX=y +CONFIG_FEATURE_MINIX2=y +# CONFIG_MKFS_REISER is not set +# CONFIG_MKFS_VFAT is not set +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +CONFIG_HEXDUMP=y +# CONFIG_FEATURE_HEXDUMP_REVERSE is not set +# CONFIG_HD is not set +CONFIG_HWCLOCK=y +CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y +CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y +# CONFIG_IPCRM is not set +# CONFIG_IPCS is not set +CONFIG_LOSETUP=y +# CONFIG_LSPCI is not set +# CONFIG_LSUSB is not set +CONFIG_MKSWAP=y +# CONFIG_FEATURE_MKSWAP_UUID is not set +CONFIG_MORE=y +CONFIG_MOUNT=y +# CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +# CONFIG_FEATURE_MOUNT_HELPERS is not set +# CONFIG_FEATURE_MOUNT_LABEL is not set +CONFIG_FEATURE_MOUNT_NFS=y +# CONFIG_FEATURE_MOUNT_CIFS is not set +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_PIVOT_ROOT=y +CONFIG_RDATE=y +# CONFIG_RDEV is not set +# CONFIG_READPROFILE is not set +# CONFIG_RTCWAKE is not set +# CONFIG_SCRIPT is not set +# CONFIG_SCRIPTREPLAY is not set +# CONFIG_SETARCH is not set +CONFIG_SWAPONOFF=y +CONFIG_FEATURE_SWAPON_PRI=y +CONFIG_SWITCH_ROOT=y +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +# CONFIG_FEATURE_MTAB_SUPPORT is not set +# CONFIG_VOLUMEID is not set +# CONFIG_FEATURE_VOLUMEID_EXT is not set +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_FEATURE_VOLUMEID_FAT is not set +# CONFIG_FEATURE_VOLUMEID_HFS is not set +# CONFIG_FEATURE_VOLUMEID_JFS is not set +# CONFIG_FEATURE_VOLUMEID_XFS is not set +# CONFIG_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_FEATURE_VOLUMEID_UDF is not set +# CONFIG_FEATURE_VOLUMEID_LUKS is not set +# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set +# CONFIG_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_FEATURE_VOLUMEID_SYSV is not set +# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set + +# +# Miscellaneous Utilities +# +# CONFIG_CONSPY is not set +CONFIG_LESS=y +CONFIG_FEATURE_LESS_MAXLINES=9999999 +CONFIG_FEATURE_LESS_BRACKETS=y +CONFIG_FEATURE_LESS_FLAGS=y +# CONFIG_FEATURE_LESS_MARKS is not set +# CONFIG_FEATURE_LESS_REGEXP is not set +# CONFIG_FEATURE_LESS_WINCH is not set +# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set +# CONFIG_FEATURE_LESS_DASHCMD is not set +# CONFIG_FEATURE_LESS_LINENUMS is not set +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +# CONFIG_SETSERIAL is not set +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +# CONFIG_UBIMKVOL is not set +# CONFIG_UBIRMVOL is not set +# CONFIG_UBIRSVOL is not set +# CONFIG_UBIUPDATEVOL is not set +# CONFIG_ADJTIMEX is not set +# CONFIG_BBCONFIG is not set +# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set +# CONFIG_BEEP is not set +CONFIG_FEATURE_BEEP_FREQ=0 +CONFIG_FEATURE_BEEP_LENGTH_MS=0 +# CONFIG_CHAT is not set +# CONFIG_FEATURE_CHAT_NOFAIL is not set +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set +# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_FEATURE_CHAT_CLR_ABORT is not set +# CONFIG_CHRT is not set +# CONFIG_CROND is not set +# CONFIG_FEATURE_CROND_D is not set +# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +CONFIG_FEATURE_CROND_DIR="" +# CONFIG_CRONTAB is not set +CONFIG_DC=y +# CONFIG_FEATURE_DC_LIBM is not set +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +# CONFIG_DEVMEM is not set +# CONFIG_EJECT is not set +# CONFIG_FEATURE_EJECT_SCSI is not set +# CONFIG_FBSPLASH is not set +# CONFIG_FLASHCP is not set +# CONFIG_FLASH_LOCK is not set +# CONFIG_FLASH_UNLOCK is not set +# CONFIG_FLASH_ERASEALL is not set +# CONFIG_IONICE is not set +# CONFIG_INOTIFYD is not set +# CONFIG_LAST is not set +# CONFIG_FEATURE_LAST_SMALL is not set +# CONFIG_FEATURE_LAST_FANCY is not set +# CONFIG_HDPARM is not set +# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set +# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set +# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set +# CONFIG_MAKEDEVS is not set +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +# CONFIG_FEATURE_MAKEDEVS_TABLE is not set +# CONFIG_MAN is not set +CONFIG_MICROCOM=y +# CONFIG_MOUNTPOINT is not set +# CONFIG_MT is not set +# CONFIG_RAIDAUTORUN is not set +# CONFIG_READAHEAD is not set +CONFIG_RFKILL=y +# CONFIG_RUNLEVEL is not set +# CONFIG_RX is not set +# CONFIG_SETSID is not set +CONFIG_STRINGS=y +# CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +CONFIG_TIME=y +# CONFIG_TIMEOUT is not set +# CONFIG_TTYSIZE is not set +# CONFIG_VOLNAME is not set +# CONFIG_WALL is not set +# CONFIG_WATCHDOG is not set + +# +# Networking Utilities +# +# CONFIG_NAMEIF is not set +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_NBDCLIENT is not set +CONFIG_NC=y +CONFIG_NC_SERVER=y +CONFIG_NC_EXTRA=y +# CONFIG_NC_110_COMPAT is not set +CONFIG_PING=y +CONFIG_PING6=y +CONFIG_FEATURE_FANCY_PING=y +# CONFIG_WHOIS is not set +CONFIG_FEATURE_IPV6=y +# CONFIG_FEATURE_UNIX_LOCAL is not set +CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y +# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +# CONFIG_ARP is not set +# CONFIG_ARPING is not set +# CONFIG_BRCTL is not set +# CONFIG_FEATURE_BRCTL_FANCY is not set +# CONFIG_FEATURE_BRCTL_SHOW is not set +# CONFIG_DNSD is not set +# CONFIG_ETHER_WAKE is not set +# CONFIG_FAKEIDENTD is not set +# CONFIG_FTPD is not set +# CONFIG_FEATURE_FTP_WRITE is not set +# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +CONFIG_HOSTNAME=y +# CONFIG_HTTPD is not set +# CONFIG_FEATURE_HTTPD_RANGES is not set +# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set +# CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_CGI is not set +# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_FEATURE_HTTPD_PROXY is not set +# CONFIG_FEATURE_HTTPD_GZIP is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +# CONFIG_FEATURE_IFCONFIG_SLIP is not set +# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set +CONFIG_FEATURE_IFCONFIG_HW=y +# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set +# CONFIG_IFENSLAVE is not set +# CONFIG_IFPLUGD is not set +CONFIG_IFUPDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +# CONFIG_FEATURE_IFUPDOWN_IP is not set +# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set +CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN=y +CONFIG_FEATURE_IFUPDOWN_IPV4=y +CONFIG_FEATURE_IFUPDOWN_IPV6=y +CONFIG_FEATURE_IFUPDOWN_MAPPING=y +# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set +# CONFIG_INETD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_TUNNEL=y +# CONFIG_FEATURE_IP_RULE is not set +# CONFIG_FEATURE_IP_SHORT_FORMS is not set +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_IPADDR is not set +# CONFIG_IPLINK is not set +# CONFIG_IPROUTE is not set +# CONFIG_IPTUNNEL is not set +# CONFIG_IPRULE is not set +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set +CONFIG_NETSTAT=y +CONFIG_FEATURE_NETSTAT_WIDE=y +CONFIG_FEATURE_NETSTAT_PRG=y +CONFIG_NSLOOKUP=y +# CONFIG_NTPD is not set +# CONFIG_FEATURE_NTPD_SERVER is not set +# CONFIG_PSCAN is not set +CONFIG_ROUTE=y +# CONFIG_SLATTACH is not set +# CONFIG_TCPSVD is not set +CONFIG_TELNET=y +# CONFIG_FEATURE_TELNET_TTYPE is not set +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +# CONFIG_TELNETD is not set +# CONFIG_FEATURE_TELNETD_STANDALONE is not set +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +CONFIG_TFTP=y +# CONFIG_TFTPD is not set + +# +# Common options for tftp/tftpd +# +CONFIG_FEATURE_TFTP_GET=y +CONFIG_FEATURE_TFTP_PUT=y +CONFIG_FEATURE_TFTP_BLOCKSIZE=y +CONFIG_FEATURE_TFTP_PROGRESS_BAR=y +# CONFIG_TFTP_DEBUG is not set +CONFIG_TRACEROUTE=y +CONFIG_TRACEROUTE6=y +CONFIG_FEATURE_TRACEROUTE_VERBOSE=y +CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y +CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y +CONFIG_TUNCTL=y +CONFIG_FEATURE_TUNCTL_UG=y +# CONFIG_UDHCPC6 is not set +CONFIG_UDHCPD=y +# CONFIG_DHCPRELAY is not set +CONFIG_DUMPLEASES=y +# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +CONFIG_DHCPD_LEASES_FILE="/var/lib/misc/udhcpd.leases" +CONFIG_UDHCPC=y +CONFIG_FEATURE_UDHCPC_ARPING=y +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=0 +# CONFIG_FEATURE_UDHCP_RFC3397 is not set +# CONFIG_FEATURE_UDHCP_8021Q is not set +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" +# CONFIG_UDPSVD is not set +# CONFIG_VCONFIG is not set +CONFIG_WGET=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y +CONFIG_FEATURE_WGET_TIMEOUT=y +# CONFIG_ZCIP is not set + +# +# Print Utilities +# +# CONFIG_LPD is not set +# CONFIG_LPR is not set +# CONFIG_LPQ is not set + +# +# Mail Utilities +# +# CONFIG_MAKEMIME is not set +CONFIG_FEATURE_MIME_CHARSET="" +# CONFIG_POPMAILDIR is not set +# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set +# CONFIG_REFORMIME is not set +# CONFIG_FEATURE_REFORMIME_COMPAT is not set +# CONFIG_SENDMAIL is not set + +# +# Process Utilities +# +# CONFIG_IOSTAT is not set +# CONFIG_LSOF is not set +# CONFIG_MPSTAT is not set +# CONFIG_NMETER is not set +# CONFIG_PMAP is not set +# CONFIG_POWERTOP is not set +# CONFIG_PSTREE is not set +# CONFIG_PWDX is not set +# CONFIG_SMEMCAP is not set +CONFIG_UPTIME=y +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +CONFIG_FREE=y +CONFIG_FUSER=y +CONFIG_KILL=y +CONFIG_KILLALL=y +# CONFIG_KILLALL5 is not set +# CONFIG_PGREP is not set +CONFIG_PIDOF=y +CONFIG_FEATURE_PIDOF_SINGLE=y +CONFIG_FEATURE_PIDOF_OMIT=y +# CONFIG_PKILL is not set +CONFIG_PS=y +CONFIG_FEATURE_PS_WIDE=y +CONFIG_FEATURE_PS_LONG=y +# CONFIG_FEATURE_PS_TIME is not set +CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +CONFIG_RENICE=y +CONFIG_BB_SYSCTL=y +CONFIG_TOP=y +CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +# CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_FEATURE_TOPMEM is not set +# CONFIG_FEATURE_SHOW_THREADS is not set +CONFIG_WATCH=y + +# +# Runit Utilities +# +# CONFIG_RUNSV is not set +# CONFIG_RUNSVDIR is not set +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_SV is not set +CONFIG_SV_DEFAULT_SERVICE_DIR="" +# CONFIG_SVLOGD is not set +# CONFIG_CHPST is not set +# CONFIG_SETUIDGID is not set +# CONFIG_ENVUIDGID is not set +# CONFIG_ENVDIR is not set +# CONFIG_SOFTLIMIT is not set +# CONFIG_CHCON is not set +# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RESTORECON is not set +# CONFIG_RUNCON is not set +# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_SETSEBOOL is not set +# CONFIG_SESTATUS is not set + +# +# Shells +# +CONFIG_ASH=y +CONFIG_ASH_BASH_COMPAT=y +# CONFIG_ASH_IDLE_TIMEOUT is not set +CONFIG_ASH_JOB_CONTROL=y +CONFIG_ASH_ALIAS=y +CONFIG_ASH_GETOPTS=y +CONFIG_ASH_BUILTIN_ECHO=y +CONFIG_ASH_BUILTIN_PRINTF=y +CONFIG_ASH_BUILTIN_TEST=y +# CONFIG_ASH_CMDCMD is not set +# CONFIG_ASH_MAIL is not set +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +# CONFIG_ASH_RANDOM_SUPPORT is not set +CONFIG_ASH_EXPAND_PRMT=y +# CONFIG_CTTYHACK is not set +# CONFIG_HUSH is not set +# CONFIG_HUSH_BASH_COMPAT is not set +# CONFIG_HUSH_BRACE_EXPANSION is not set +# CONFIG_HUSH_HELP is not set +# CONFIG_HUSH_INTERACTIVE is not set +# CONFIG_HUSH_SAVEHISTORY is not set +# CONFIG_HUSH_JOB is not set +# CONFIG_HUSH_TICK is not set +# CONFIG_HUSH_IF is not set +# CONFIG_HUSH_LOOPS is not set +# CONFIG_HUSH_CASE is not set +# CONFIG_HUSH_FUNCTIONS is not set +# CONFIG_HUSH_LOCAL is not set +# CONFIG_HUSH_RANDOM_SUPPORT is not set +# CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_MODE_X is not set +# CONFIG_MSH is not set +CONFIG_FEATURE_SH_IS_ASH=y +# CONFIG_FEATURE_SH_IS_HUSH is not set +# CONFIG_FEATURE_SH_IS_NONE is not set +# CONFIG_FEATURE_BASH_IS_ASH is not set +# CONFIG_FEATURE_BASH_IS_HUSH is not set +CONFIG_FEATURE_BASH_IS_NONE=y +CONFIG_SH_MATH_SUPPORT=y +CONFIG_SH_MATH_SUPPORT_64=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y +# CONFIG_FEATURE_SH_STANDALONE is not set +# CONFIG_FEATURE_SH_NOFORK is not set +CONFIG_FEATURE_SH_HISTFILESIZE=y + +# +# System Logging Utilities +# +CONFIG_SYSLOGD=y +CONFIG_FEATURE_ROTATE_LOGFILE=y +CONFIG_FEATURE_REMOTE_LOG=y +CONFIG_FEATURE_SYSLOGD_DUP=y +CONFIG_FEATURE_SYSLOGD_CFG=y +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 +CONFIG_FEATURE_IPC_SYSLOG=y +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=64 +CONFIG_LOGREAD=y +CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y +CONFIG_KLOGD=y +CONFIG_FEATURE_KLOGD_KLOGCTL=y +CONFIG_LOGGER=y diff --git a/recipes-core/busybox/busybox_1.22.1.bbappend b/recipes-core/busybox/busybox_1.22.1.bbappend new file mode 100644 index 0000000..b6f475d --- /dev/null +++ b/recipes-core/busybox/busybox_1.22.1.bbappend @@ -0,0 +1,8 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:${THISDIR}/files:" + +SRC_URI += "file://udhcpd.conf.example" + +do_install_append () { + install -m 600 ${WORKDIR}/udhcpd.conf.example ${D}${sysconfdir}/udhcpd.conf.example + install -m 600 ${WORKDIR}/udhcpd.conf.example ${D}${sysconfdir}/udhcpd.conf +} diff --git a/recipes-core/busybox/files/udhcpd.conf.example b/recipes-core/busybox/files/udhcpd.conf.example new file mode 100644 index 0000000..f72d672 --- /dev/null +++ b/recipes-core/busybox/files/udhcpd.conf.example @@ -0,0 +1,6 @@ +start 192.168.2.100 +end 192.168.2.254 +interface eth0 +option subnet 255.255.255.0 +option router 192.168.2.1 +option dns 8.8.8.8 # google's DNS server diff --git a/recipes-core/images/mlinux-base-image.bb b/recipes-core/images/mlinux-base-image.bb new file mode 100644 index 0000000..939b309 --- /dev/null +++ b/recipes-core/images/mlinux-base-image.bb @@ -0,0 +1,57 @@ +DESCRIPTION = "mLinux base image" +LICENSE = "MIT" + +require mlinux-minimal-image.bb + +FILESYSTEM_FEATURES = "dosfstools \ + cifs-utils \ + lsof \ + " + +NETWORKING_FEATURES += "bridge-utils \ + inetutils-ftp \ + openssl \ + rsync \ + iperf \ + mii-diag \ + tcpdump \ + " + +WIFI_FEATURES = " \ + libnl \ + wpa-supplicant \ + wireless-tools \ + iw \ + hostap-daemon hostap-utils \ + " + +BLUETOOTH_FEATURES = "bluez4" + +# Add all timezones available +# ntpdate will sync time every 30 min by default via cron +TIME_FEATURES = "tzdata tzdata-africa tzdata-americas tzdata-antarctica tzdata-arctic \ + tzdata-asia tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific \ + tzdata-misc \ + cronie \ + ntpdate \ + " + +# u-boot-linux-utils: U-Boot environment access from Linux +# ocg-scripts: sample scripts for setting up OCG for various tasks +# reset-handler: default reset button handler +MULTITECH_FEATURES += " \ + u-boot-linux-utils \ + ocg-scripts \ + reset-handler \ + " + +MISC_FEATURES = "minicom lrzsz nano" + +# Extra stuff to install +IMAGE_INSTALL += " \ + ${WIFI_FEATURES} \ + ${BLUETOOTH_FEATURES} \ + ${FILESYSTEM_FEATURES} \ + ${TIME_FEATURES} \ + ${MISC_FEATURES} \ + " diff --git a/recipes-core/images/mlinux-factory-image.bb b/recipes-core/images/mlinux-factory-image.bb new file mode 100644 index 0000000..a0d1ef4 --- /dev/null +++ b/recipes-core/images/mlinux-factory-image.bb @@ -0,0 +1,61 @@ +require mlinux-base-image.bb + +LIGHTTPD = "lighttpd \ + lighttpd-module-cgi lighttpd-module-indexfile \ + lighttpd-module-redirect lighttpd-module-auth \ + lighttpd-module-access lighttpd-module-accesslog \ + lighttpd-module-rewrite lighttpd-module-proxy lighttpd-module-fastcgi \ + lighttpd-module-scgi lighttpd-module-alias \ + lighttpd-module-dirlisting lighttpd-module-staticfile \ + " + +# Lighttpd web server +IMAGE_INSTALL += "${LIGHTTPD}" + +IMAGE_INSTALL += "sqlite3" + +IMAGE_INSTALL += "autossh" + +# Perl support +IMAGE_INSTALL += "perl" +IMAGE_INSTALL += "perl-module-io perl-module-fcntl" +# not in meta-oe or oe-core... +#IMAGE_INSTALL += "libdevice-serialport-perl" +#IMAGE_INSTALL += "libexpect-perl" + +# Python support +IMAGE_INSTALL += "python" +IMAGE_INSTALL += "python-pyserial" +IMAGE_INSTALL += "python-simplejson" +IMAGE_INSTALL += "python-unixadmin" +IMAGE_INSTALL += "python-textutils" +IMAGE_INSTALL += "python-html" +IMAGE_INSTALL += "python-sqlite3" + +# Ruby support +IMAGE_INSTALL += "ruby" +IMAGE_INSTALL += "ruby-sqlite3" +IMAGE_INSTALL += "ruby-serialport" + +# OpenJDK Java runtime +IMAGE_INSTALL += "openjdk-7-jre" +# OpenJDK with JamVM VM (Multi-Tech default) +IMAGE_INSTALL += "openjdk-7-vm-jamvm" +# OpenJDK with CACAO VM (run with 'java -cacao') +IMAGE_INSTALL += "openjdk-7-vm-cacao" +# OpenJDK Zero VM (run with 'java -zero') +IMAGE_INSTALL += "openjdk-7-vm-zero" + +# PHP support +IMAGE_INSTALL += "php php-cli php-cgi" + +# Node.js support +IMAGE_INSTALL += "nodejs" + +# Multi-Tech SMS Utility (see http://git.multitech.net) +IMAGE_INSTALL += "sms-utils" +# Multi-Tech GPS Utility +IMAGE_INSTALL += "venus-gps" + +IMAGE_INSTALL += "uvccapture" + diff --git a/recipes-core/images/mlinux-minimal-image.bb b/recipes-core/images/mlinux-minimal-image.bb new file mode 100644 index 0000000..522ee2a --- /dev/null +++ b/recipes-core/images/mlinux-minimal-image.bb @@ -0,0 +1,40 @@ +DESCRIPTION = "mLinux minimal image" +LICENSE = "MIT" + +inherit core-image +inherit mlinux-image + +IMAGE_LINGUAS = "" +IMAGE_FEATURES += "ssh-server-openssh package-management" + +CORE_FEATURES = "packagegroup-core-boot packagegroup-distro-base \ + packagegroup-base-ext2 \ + packagegroup-base-usbhost packagegroup-base-usbgadget \ + udev-extraconf usb-gadget-mode \ + sysfsutils module-init-tools kernel-modules \ + bash procps mtd-utils mtd-utils-jffs2 \ + openssh-sftp-server \ + util-linux-mount util-linux-umount \ + ${CORE_IMAGE_EXTRA_INSTALL} \ + " + +NETWORKING_FEATURES = "ppp curl iproute2 \ + iptables iputils \ + " + +# mts-io: IO Controller for Multi-Tech hardware. +# (LEDs, temp sensor, serial lines, and more) +# +# config: Handles default config files stored in /var/config. +# /var/config is mounted on a separate flash partition so that config +# files survive flashing of rootfs. See recipe for details. +MULTITECH_FEATURES = "mts-io config mts-id-eeprom" + +UPGRADE_FEATURES = "upgrade-reboot mtd-utils-static" + +IMAGE_INSTALL = "${CORE_FEATURES} \ + ${NETWORKING_FEATURES} \ + ${UPGRADE_FEATURES} \ + ${MULTITECH_FEATURES} \ + " + diff --git a/recipes-core/images/mlinux-mono-image.bb b/recipes-core/images/mlinux-mono-image.bb new file mode 100644 index 0000000..f15d7d2 --- /dev/null +++ b/recipes-core/images/mlinux-mono-image.bb @@ -0,0 +1,3 @@ +require mlinux-base-image.bb + +IMAGE_INSTALL += "mono mono-helloworld" diff --git a/recipes-core/initscripts/initscripts-1.0/umountfs b/recipes-core/initscripts/initscripts-1.0/umountfs new file mode 100644 index 0000000..1c9a9ce --- /dev/null +++ b/recipes-core/initscripts/initscripts-1.0/umountfs @@ -0,0 +1,158 @@ +#!/bin/bash +### BEGIN INIT INFO +# Provides: umountfs +# Required-Start: +# Required-Stop: +# Default-Start: +# Default-Stop: 0 6 +# Short-Description: Turn off swap and unmount all local file systems. +# Description: +### END INIT INFO + +PATH=/sbin:/bin:/usr/sbin:/usr/bin + +umount_all() { + echo "Deactivating swap..." + swapoff -a + + # We leave /proc mounted. + echo "Unmounting local filesystems..." + grep -q /mnt/ram /proc/mounts && mount -o remount,ro /mnt/ram + umount -f -a -r > /dev/null 2>&1 + + mount -o remount,ro / +} + +blink_leds() { + leds=/sys/class/leds/* + nleds=$(echo $leds | wc -w) + + # turn LEDs off + for led in $leds; do + echo "timer" > $led/trigger + echo 0 > $led/delay_off + done + + int=200 + total=$(( int * (nleds+1) )) + on=$(( total - int )) + off=$(( total - on )) + + # make a pattern + for led in $leds; do + echo "$on" > $led/delay_on + echo "$off" > $led/delay_off + on=$(( on - int )) + off=$(( total - on )) + done +} + +flash_upgrade() { + if [ $# -ne 1 ]; then + echo "need to specify flash-root" + return + fi + # flash_root must be a mountpoint that is not the rootfs and be mounted rw + local flash_root=${1} + + local flash_dir=${flash_root}/flash-upgrade + local uImage_file=${flash_dir}/uImage.bin + local rootfs_file=${flash_dir}/rootfs.jffs2 + + local reboot_cmd=/usr/sbin/upgrade-reboot + local nandwrite_cmd=/usr/bin/nandwrite.static + local mode= + local uImage_mtd= + local rootfs_mtd= + + if [ ! -d "${flash_dir}" ]; then + echo "${flash_dir} not present, skipping" + return + fi + + if ! mountpoint -q "${flash_root}"; then + echo "${flash_root} is not a mountpoint" + return + fi + + mode=$(grep "${flash_root}" /proc/mounts | cut -d ' ' -f 4 | cut -d ',' -f 1) + if [ "${mode}" != "rw" ]; then + echo "${flash_root} is not mounted rw" + return + fi + + if [ ! -x "${reboot_cmd}" ]; then + echo "${reboot_cmd} is not installed" + return + fi + + if [ ! -x "${nandwrite_cmd}" ]; then + echo "${nandwrite_cmd} is not installed" + return + fi + + uImage_mtd="/dev/$(cat /proc/mtd | grep uImage | cut -d : -f 1)" + if [ ! -c "${uImage_mtd}" ]; then + echo "No valid MTD partition is labeled uImage" + return + fi + + rootfs_mtd="/dev/$(cat /proc/mtd | grep Rootfs | cut -d : -f 1)" + if [ ! -c "${rootfs_mtd}" ]; then + echo "No valid MTD partition is labeled Rootfs" + return + fi + + echo "" + echo "Starting flash upgrade from ${flash_dir}..." + + blink_leds + + if [ -f ${uImage_file} ]; then + echo "Flashing ${uImage_mtd} (uImage) with ${uImage_file}..." + + flash_erase ${uImage_mtd} 0 0 + nandwrite -p ${uImage_mtd} ${uImage_file} + else + echo "uImage file ${uImage_file} not found" + fi + + if [ -f ${rootfs_file} ]; then + echo "Flashing ${rootfs_mtd} (rootfs) with ${rootfs_file}..." + + cp ${reboot_cmd} ${flash_dir}/upgrade-reboot + cp ${nandwrite_cmd} ${flash_dir}/nandwrite.static + + sync + sleep 2 + mount -o remount,ro ${flash_root} + + # flash_root is not going to be umounted + sed -i -e "\\|${flash_root}| d" /etc/mtab + + umount_all + + flash_erase -j ${rootfs_mtd} 0 0 + ${flash_dir}/nandwrite.static -p ${rootfs_mtd} ${rootfs_file} + + echo "Rebooting..." + + ${flash_dir}/upgrade-reboot + + # Should not get here normally + echo "upgrade-reboot failed" + exit 1 + else + echo "rootfs file ${rootfs_file} not found" + fi +} + +# do flash on reboot if do_flash_upgrade exists +if [ -f /var/volatile/do_flash_upgrade ]; then + flash_upgrade /var/volatile + flash_upgrade /media/card +fi + +umount_all + +: exit 0 diff --git a/recipes-core/initscripts/initscripts_1.0.bbappend b/recipes-core/initscripts/initscripts_1.0.bbappend new file mode 100644 index 0000000..d00d5f5 --- /dev/null +++ b/recipes-core/initscripts/initscripts_1.0.bbappend @@ -0,0 +1,4 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" + +# flash on reboot/umountfs needs regular umount (not busybox) +RDEPENDS_${PN} += "util-linux-umount util-linux-mount bash" diff --git a/recipes-core/multitech/config/config.init b/recipes-core/multitech/config/config.init new file mode 100644 index 0000000..874416c --- /dev/null +++ b/recipes-core/multitech/config/config.init @@ -0,0 +1,105 @@ +#!/bin/sh + +CONFIG_MTDC=/dev/mtd6 +CONFIG_MTDB=/dev/mtdblock6 +CONFIG_DIR=/var/config + +OEM_MTDC=/dev/mtd7 +OEM_MTDB=/dev/mtdblock7 +OEM_DIR=/var/oem + +FILES="network/interfaces \ +ppp/options \ +ppp/pap-secrets \ +ppp/chap-secrets \ +ppp/peers \ +" + +mount_config() { + echo "Mounting ${CONFIG_DIR}" + mkdir -p ${CONFIG_DIR} + mount ${CONFIG_DIR} + + # Prepare flash for JFFS2 if mount fails + if [ $? -ne 0 ]; then + echo "Creating ${CONFIG_DIR}" + flash_erase -j ${CONFIG_MTDC} 0 0 + mount ${CONFIG_DIR} + fi +} + +mount_oem() { + echo "Mounting ${OEM_DIR}" + mkdir -p ${OEM_DIR} + mount ${OEM_DIR} + + # Prepare flash for JFFS2 if mount fails + if [ $? -ne 0 ]; then + echo "Creating ${OEM_DIR}" + flash_erase -j ${OEM_MTDC} 0 0 + mount ${OEM_DIR} + fi +} + +case $1 in + start) + # mount config if not already mounted + if ! grep -q "^${CONFIG_MTDB} " /proc/mounts; then + mount_config + else + echo "$CONFIG_DIR already mounted" + fi + + # mount oem if specified in /etc/fstab and it isn't already mounted + if grep -qE "^${OEM_MTDB}\s+${OEM_DIR}\s+" /etc/fstab; then + if ! grep -q "^${OEM_MTDB} " /proc/mounts; then + mount_oem + else + echo "$OEM_DIR already mounted" + fi + fi + + # Default all config files if requested + cd ${CONFIG_DIR} + if [ -f force_defaults ]; then + echo "Extracting default config files" + tar -xvf /etc/defaults.tar.gz + + if [ -f /etc/default_pass ]; then + echo "Defaulting root password" + PASSHASH=`cat /etc/default_pass` + PASSFILE=/etc/shadow + if [ ! -e /etc/shadow ]; then + PASSFILE=/etc/passwd + fi + sed -i "s%^root:[^:]*:%root:${PASSHASH}:%" $PASSFILE + fi + + rm -f force_defaults + fi + + # Extract any missing files + TARFILES=`tar -tf /etc/defaults.tar.gz` + for file in $TARFILES; do + if [ ! -e $file ]; then + tar -xvf /etc/defaults.tar.gz $file + fi + done + + # Create links in /etc + for file in $FILES; do + if [ ! -L /etc/$file ]; then + echo "Creating link to ${CONFIG_DIR}/$file" + rm -rf /etc/$file + ln -sf ${CONFIG_DIR}/$file /etc/$file + fi + done + + ;; + + *) + echo "Usage: $0 {start}" + exit 2 + ;; + +esac diff --git a/recipes-core/multitech/config/network/interfaces b/recipes-core/multitech/config/network/interfaces new file mode 100644 index 0000000..546fd29 --- /dev/null +++ b/recipes-core/multitech/config/network/interfaces @@ -0,0 +1,29 @@ +# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) + +# The loopback interface +auto lo +iface lo inet loopback + +# Wired interface +auto eth0 +iface eth0 inet static +address 192.168.2.1 +netmask 255.255.255.0 + +# Bridge interface with eth0 (comment out eth0 lines above to use with bridge) +# iface eth0 inet manual +# +# auto br0 +# iface br0 inet static +# bridge_ports eth0 +# address 192.168.2.1 +# netmask 255.255.255.0 + +# Wifi client +# NOTE: udev rules will bring up wlan0 automatically if a wifi device is detected +# and the wlan0 interface is defined, therefore an "auto wlan0" line is not needed. +# If "auto wlan0" is also specified, startup conflicts may result. +#iface wlan0 inet dhcp +#wpa-conf /var/config/wpa_supplicant.conf +#wpa-driver nl80211 + diff --git a/recipes-core/multitech/config/ppp/chap-secrets b/recipes-core/multitech/config/ppp/chap-secrets new file mode 100644 index 0000000..60efe8f --- /dev/null +++ b/recipes-core/multitech/config/ppp/chap-secrets @@ -0,0 +1,3 @@ +# Secrets for authentication using CHAP +# client server secret IP addresses +* * "" * diff --git a/recipes-core/multitech/config/ppp/options b/recipes-core/multitech/config/ppp/options new file mode 100644 index 0000000..34654c1 --- /dev/null +++ b/recipes-core/multitech/config/ppp/options @@ -0,0 +1,22 @@ +# Select tty device +# +# First modem AT command port (symlink to actual device) +/dev/modem_at0 + +# Uncomment below to run in foreground +#nodetach + +# Uncomment below to emit debug +#debug + +# Uncomment to keep pppd up if the connection terminates +#persist +# Uncomment for unlimited connection attempts +#maxfail 0 + +# disable logging to /etc/ppp/connect-errors +# and only log to syslog +logfile /dev/null + +lock + diff --git a/recipes-core/multitech/config/ppp/pap-secrets b/recipes-core/multitech/config/ppp/pap-secrets new file mode 100644 index 0000000..f782b4a --- /dev/null +++ b/recipes-core/multitech/config/ppp/pap-secrets @@ -0,0 +1,3 @@ +# Secrets for authentication using PAP +# client server secret IP addresses +* * "" * diff --git a/recipes-core/multitech/config/ppp/peers/cdma b/recipes-core/multitech/config/ppp/peers/cdma new file mode 100644 index 0000000..3fc231f --- /dev/null +++ b/recipes-core/multitech/config/ppp/peers/cdma @@ -0,0 +1,9 @@ +linkname ppp0 +230400 +defaultroute +replacedefaultroute +usepeerdns +noauth +crtscts +novj +connect '/usr/sbin/chat -v -t 90 -f /etc/ppp/peers/cdma_chat' diff --git a/recipes-core/multitech/config/ppp/peers/cdma_chat b/recipes-core/multitech/config/ppp/peers/cdma_chat new file mode 100644 index 0000000..6ff750e --- /dev/null +++ b/recipes-core/multitech/config/ppp/peers/cdma_chat @@ -0,0 +1,18 @@ +SAY "CDMA chat\n" +ECHO OFF +ABORT 'NO DIAL TONE' +ABORT 'NO DIALTONE' +ABORT 'NO ANSWER' +ABORT 'NO CARRIER' +ABORT 'DELAYED' +ABORT 'VOICE' +ABORT 'BUSY' +'' 'AT' +OK 'ATZ' +OK 'AT+CSQ' +SAY "Dialing...\n" +OK 'ATD#777' +SAY "Waiting for CONNECT...\n" +TIMEOUT 120 +CONNECT '' +SAY "Connected\n" diff --git a/recipes-core/multitech/config/ppp/peers/gsm b/recipes-core/multitech/config/ppp/peers/gsm new file mode 100644 index 0000000..d23957e --- /dev/null +++ b/recipes-core/multitech/config/ppp/peers/gsm @@ -0,0 +1,11 @@ +linkname ppp0 +230400 +defaultroute +replacedefaultroute +usepeerdns +ipcp-max-failure 10 +ipcp-restart 10 +noauth +crtscts +novj +connect '/usr/sbin/chat -v -t 90 -f /etc/ppp/peers/gsm_chat' diff --git a/recipes-core/multitech/config/ppp/peers/gsm_chat b/recipes-core/multitech/config/ppp/peers/gsm_chat new file mode 100644 index 0000000..5e18e05 --- /dev/null +++ b/recipes-core/multitech/config/ppp/peers/gsm_chat @@ -0,0 +1,26 @@ +SAY "GSM chat\n" +ECHO OFF +ABORT 'NO DIAL TONE' +ABORT 'NO DIALTONE' +ABORT 'NO ANSWER' +ABORT 'NO CARRIER' +ABORT 'DELAYED' +ABORT 'VOICE' +ABORT 'BUSY' +'' 'AT' +OK 'ATZ' +OK 'AT+CSQ' +# ---------------------------------- +# Set the APN for your provider here +# ---------------------------------- +#OK 'AT+CGDCONT=1,"IP","proxy"' +#OK 'AT+CGDCONT=1,"IP","ISP.CINGULAR"' +#OK 'AT+CGDCONT=1,"IP","internet2.voicestream.com"' +OK 'AT+CGDCONT=1,"IP","internet"' +SAY "Dialing...\n" +#OK 'ATD*99#' +OK 'ATD*99***1#' +SAY "Waiting for CONNECT...\n" +TIMEOUT 120 +CONNECT '' +SAY "Connected\n" diff --git a/recipes-core/multitech/config_1.0.bb b/recipes-core/multitech/config_1.0.bb new file mode 100644 index 0000000..149946d --- /dev/null +++ b/recipes-core/multitech/config_1.0.bb @@ -0,0 +1,40 @@ +DESCRIPTION = "Provides default system config files and /var/config fs" +SECTION = "base" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" +PR = "r4" + +inherit update-rc.d + +INITSCRIPT_NAME = "config" +INITSCRIPT_PARAMS = "start 31 S ." + +SRC_URI = "\ + file://network \ + file://ppp \ + file://config.init \ +" + +CONFIGFILES = "network ppp" + +fakeroot do_install () { + cd ${WORKDIR} + + # default config files + rm -f defaults.tar.gz + chown root:root -R ${CONFIGFILES} + tar czf defaults.tar.gz ${CONFIGFILES} + install -d ${D}${sysconfdir} + install -m 0644 ${WORKDIR}/defaults.tar.gz ${D}${sysconfdir}/defaults.tar.gz + + # save root password for resetting to defaults + echo -n "${ROOT_PASSWORD_HASH}" > ${D}${sysconfdir}/default_pass + chmod 400 ${D}${sysconfdir}/default_pass + + # init script + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/config.init ${D}${sysconfdir}/init.d/config +} + +FILES_${PN} = "${sysconfdir}/defaults.tar.gz ${sysconfdir}/default_pass" +FILES_${PN} += "${sysconfdir}/init.d/config" diff --git a/recipes-core/multitech/mlinux-version.bb b/recipes-core/multitech/mlinux-version.bb new file mode 100644 index 0000000..f2debe1 --- /dev/null +++ b/recipes-core/multitech/mlinux-version.bb @@ -0,0 +1,22 @@ +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +inherit mlinux_metadata_scm + +# always parse this file so PV can change automatically +__BB_DONT_CACHE = "1" + +PV = "${DISTRO_VERSION}_${MLINUX_METADATA_REVISION}" +PR = "r2" +PE = "1" + +PACKAGES = "${PN}" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +do_install() { + mkdir -p ${D}${sysconfdir} + echo "mLinux ${DISTRO_VERSION}" > ${D}${sysconfdir}/mlinux-version + echo "Built from branch: ${MLINUX_METADATA_BRANCH}" >> ${D}${sysconfdir}/mlinux-version + echo "Revision: ${MLINUX_METADATA_REVISION}" >> ${D}${sysconfdir}/mlinux-version + echo "${MLINUX_LAYERS}" > ${D}${sysconfdir}/mlinux-layers +} diff --git a/recipes-core/multitech/reset-handler/reset-handler.default b/recipes-core/multitech/reset-handler/reset-handler.default new file mode 100644 index 0000000..71b3e24 --- /dev/null +++ b/recipes-core/multitech/reset-handler/reset-handler.default @@ -0,0 +1,2 @@ +# set to "no" to disable reset-handler starting on boot +ENABLED="yes" diff --git a/recipes-core/multitech/reset-handler/reset-handler.init b/recipes-core/multitech/reset-handler/reset-handler.init new file mode 100644 index 0000000..b50e7b8 --- /dev/null +++ b/recipes-core/multitech/reset-handler/reset-handler.init @@ -0,0 +1,30 @@ +#!/bin/sh + +DAEMON=/usr/sbin/reset-handler +PIDFILE=/var/run/reset-handler.pid +ENABLED="yes" + +[ -r /etc/default/reset-handler ] && . /etc/default/reset-handler +[ -x $DAEMON ] || exit 0 +[ "$ENABLED" = "yes" ] || exit 0 + +case "$1" in + start) + if [ -f $PIDFILE ]; then + echo "reset-handler pid file exists, not starting" + exit 1 + else + echo "Starting reset-handler" + start-stop-daemon --start --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON + fi + ;; + stop) + echo "Stopping reset-handler" + start-stop-daemon --stop --oknodo --pidfile $PIDFILE + rm -f $PIDFILE + ;; + *) + echo "Usage: $0 {start|stop}" + exit 2 + ;; +esac diff --git a/recipes-core/multitech/reset-handler/reset-handler.sh b/recipes-core/multitech/reset-handler/reset-handler.sh new file mode 100755 index 0000000..62eeda8 --- /dev/null +++ b/recipes-core/multitech/reset-handler/reset-handler.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +# Copyright (C) 2014 Multi-Tech Systems + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +name="reset-handler" +log="logger -t $name -s" +pid="$$" + +short_signal=10 # SIGUSR1 +long_signal=12 # SIGUSR2 +extralong_signal=1 # SIGHUP + +do_reboot() { + $log "Rebooting on button press" + sleep 1 + reboot +} + +do_restore_defaults() { + $log "Setting restore defaults on reboot" + touch /var/config/force_defaults + $log "Rebooting" + sleep 1 + reboot +} + +log_exit() { + $log "Exiting on SIGTERM" + exit 0 +} + +idle_wait() { + pipe=/var/tmp/$name.fifo + rm -f $pipe + mkfifo -m 400 $pipe + + # sneaky way to do nothing forever + while true; do + read < $pipe + done +} + +trap do_reboot $short_signal +trap do_restore_defaults $long_signal +trap do_restore_defaults $extralong_signal +trap log_exit TERM + +$log "Enabling reset-monitor for pid $pid" +mts-io-sysfs store reset-monitor "$pid $short_signal $long_signal $extralong_signal" +# set long press to 5 seconds for reset to defaults +mts-io-sysfs store reset-monitor-intervals "5 30" + +# wait for signals +idle_wait diff --git a/recipes-core/multitech/reset-handler_1.0.bb b/recipes-core/multitech/reset-handler_1.0.bb new file mode 100644 index 0000000..4342bdd --- /dev/null +++ b/recipes-core/multitech/reset-handler_1.0.bb @@ -0,0 +1,29 @@ +DESCRIPTION = "Default reset button handler" +SECTION = "base" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" +PR = "r0" + +inherit update-rc.d + +INITSCRIPT_NAME = "reset-handler" +INITSCRIPT_PARAMS = "start 99 2 3 4 5 ." +CONFFILES_${PN} = "${sysconfdir}/default/reset-handler" + +SRC_URI = "\ + file://reset-handler.sh \ + file://reset-handler.init \ + file://reset-handler.default \ +" + +do_install () { + install -d ${D}${sbindir} + install -m 0755 ${WORKDIR}/reset-handler.sh ${D}${sbindir}/reset-handler + + # init script + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/reset-handler.init ${D}${sysconfdir}/init.d/reset-handler + + install -d ${D}${sysconfdir}/default + install -m 0644 ${WORKDIR}/reset-handler.default ${D}${sysconfdir}/default/reset-handler +} diff --git a/recipes-core/multitech/upgrade-reboot_1.0.0.bb b/recipes-core/multitech/upgrade-reboot_1.0.0.bb new file mode 100644 index 0000000..c506db3 --- /dev/null +++ b/recipes-core/multitech/upgrade-reboot_1.0.0.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "Reboot command to run after firmware upgrade" +HOMEPAGE = "http://www.multitech.net/" +SECTION = "console/utils" +PRIORITY = "optional" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" +PR = "r0" + +# tag 1.0.0 +SRCREV = "6b917d88f41a4694a85b86cd047e10ddbd8c691f" + +SRC_URI = "git://git.multitech.net/upgrade-reboot.git;protocol=git" +S = "${WORKDIR}/git" + +inherit autotools + +PARALLEL_MAKE = "" diff --git a/recipes-core/ocg-scripts/ocg-scripts-1.0.inc b/recipes-core/ocg-scripts/ocg-scripts-1.0.inc new file mode 100644 index 0000000..a017f91 --- /dev/null +++ b/recipes-core/ocg-scripts/ocg-scripts-1.0.inc @@ -0,0 +1,18 @@ +HOMEPAGE = "www.multitech.net" +PRIORITY = "optional" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +SRC_URI = "file://ocg-wifi-ap \ + file://ocg-dhcpd \ + file://ocg-set-apn \ + file://ocg-cell-router" + + +do_install() { + install -d ${D}${sbindir} ${D}${sbindir} + install -m 755 ${WORKDIR}/ocg-wifi-ap ${D}${sbindir} + install -m 755 ${WORKDIR}/ocg-dhcpd ${D}${sbindir} + install -m 755 ${WORKDIR}/ocg-set-apn ${D}${sbindir} + install -m 755 ${WORKDIR}/ocg-cell-router ${D}${sbindir} +} diff --git a/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-cell-router b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-cell-router new file mode 100755 index 0000000..1607c32 --- /dev/null +++ b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-cell-router @@ -0,0 +1,147 @@ +#!/usr/bin/env bash + +# Copyright (C) 2014 Multi-Tech Systems + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +set -e + +do_start() { + lan_interfaces=$(echo "$lan" | sed "s/,/ /g") + + echo "Configuring firewall rules..." + # Flush all the tables first + iptables -t filter -F + iptables -t nat -F + iptables -t mangle -F + + # Drop all incoming packets by default + iptables -t filter -P INPUT DROP + # Accept all on local loopback + iptables -t filter -A INPUT -i lo -j ACCEPT + # Allow packets in for existing socket connections + iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT + + # Accept all from LAN interfaces + for i in $lan_interfaces; do + iptables -t filter -A INPUT -i $i -j ACCEPT + + # Accept ssh from the LAN (Wired) + #iptables -t filter -A INPUT -i $i -p tcp --dport 22 -j ACCEPT + # Accept http from the LAN (Wired) + #iptables -t filter -A INPUT -i $i -p tcp --dport 80 -j ACCEPT + # Accept tftp from the LAN (Wired) + #iptables -t filter -A INPUT -i $i -p udp --dport 69 -j ACCEPT + done + + # Accept ssh from the WAN (Wireless) + #iptables -t filter -A INPUT -i $wan -p tcp --dport 22 -j ACCEPT + # Accept http from the WAN (Wireless) + #iptables -t filter -A INPUT -i $wan -p tcp --dport 80 -j ACCEPT + + # Allow packet fowarding from LAN interfaces to WAN (cell router) + iptables -t filter -P FORWARD DROP + iptables -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT + for i in $lan_interfaces; do + iptables -t filter -A FORWARD -i $i -o $wan -j ACCEPT + done + + # Allow all output packets + iptables -t filter -P OUTPUT ACCEPT + + # enable NAT for cell router + iptables -t nat -A POSTROUTING -o $wan -j MASQUERADE + + echo "Enabling packet forwarding..." + # turn on packet forwarding last + echo 1 > /proc/sys/net/ipv4/ip_forward + echo "Done" +} + +do_stop() { + echo "Clearing firewall rules..." + # clear all tables + iptables -t filter -F + iptables -t nat -F + iptables -t mangle -F + # reset policies to ACCEPT + iptables -t filter -P INPUT ACCEPT + iptables -t filter -P OUTPUT ACCEPT + iptables -t filter -P FORWARD ACCEPT + + # turn off packet forwarding + echo "Disabling packet forwarding..." + echo 0 > /proc/sys/net/ipv4/ip_forward + echo "Done" +} + +usage() { + echo "Usage: $(basename $0) start|stop [options]" + echo " options:" + echo " -l <lan-interfaces> LAN interfaces to allow, comma-separated (defaults to \"eth0\")" + echo " -w <wan-interface> WAN interface to route out (defaults to \"ppp0\")" + exit 1 +} + +# main +if [[ $# < 1 ]]; then + usage +fi + +cmd=$1 +shift + +while getopts "l:w:h" opt; do + case "$opt" in + l) + l=$OPTARG + ;; + w) + w=$OPTARG + ;; + h) + usage + ;; + *) + usage + ;; + esac +done + +# default lan to eth0 if not specified +lan=${l-eth0} +# default wan to ppp0 if not specified +wan=${w-ppp0} + +case $cmd in + start) + echo "LAN: $lan" + echo "WAN: $wan" + do_start + ;; + stop) + do_stop + ;; + *) + usage + ;; +esac + +exit 0 + diff --git a/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-dhcpd b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-dhcpd new file mode 100755 index 0000000..976b138 --- /dev/null +++ b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-dhcpd @@ -0,0 +1,65 @@ +#!/bin/bash + +# Copyright (C) 2014 Multi-Tech Systems + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +do_start() { + echo "starting dhcp daemon" + udhcpd -S /etc/udhcpd.conf +} + +do_stop() { + echo "stopping dhcp daemon" + killall udhcpd +} + +usage() { + echo "Usage: $(basename $0) start|stop|restart" + exit 1 +} + +# main +if [[ $# != 1 ]]; then + usage +fi + +case $1 in + start) + if [[ ! -f "/etc/udhcpd.conf" ]] + then + echo "/etc/udhcpd.conf does not exist" + exit 1 + fi + do_start + ;; + stop) + do_stop + ;; + restart) + do_stop + sleep 1 + do_start + ;; + *) + usage + ;; +esac + +exit 0 diff --git a/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-set-apn b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-set-apn new file mode 100755 index 0000000..371ba7e --- /dev/null +++ b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-set-apn @@ -0,0 +1,40 @@ +#!/bin/bash + +# Copyright (C) 2014 Multi-Tech Systems + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +if [[ $# != 1 ]]; then + echo "Usage: $(basename $0) APN" + exit 1 +fi + +apn=$1 +chat_file=/etc/ppp/peers/gsm_chat + +sed -r -i "s/^OK\s+'AT\+CGDCONT=1,\"IP\",\"[^\"]*\"'$/OK 'AT\+CGDCONT=1,\"IP\",\"${apn}\"'/" $chat_file + +if [[ $? != 0 ]]; then + echo "Failed to change APN" + exit 1 +else + echo "Set APN to \"${apn}\" in $chat_file" +fi + +exit 0 diff --git a/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-wifi-ap b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-wifi-ap new file mode 100755 index 0000000..b0bc7ec --- /dev/null +++ b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-wifi-ap @@ -0,0 +1,165 @@ +#!/bin/bash + +# Copyright (C) 2014 Multi-Tech Systems + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +dhcpd_file=/etc/udhcpd.conf +hostapd_file=/etc/hostapd.conf +interface=wlan0 +bridge_mode=0 + +do_start() { + if [ "$bridge_mode" = 1 ]; then + interface=$b + if ! grep -E -q "^bridge=$interface\s*$" $hostapd_file; then + echo "Enabling bridge=br0 in $hostapd_file" + sed -r -i "s/^#?bridge=.*$/bridge=$interface/" $hostapd_file + fi + else + if grep -E -q "^bridge=.*$" $hostapd_file; then + echo "Disabling bridge in $hostapd_file" + sed -r -i "s/^bridge=/#bridge=/" $hostapd_file + fi + fi + + echo "Starting hostap daemon" + /etc/init.d/hostapd start + + if [ "$bridge_mode" != 1 ]; then + echo "Setting IP address to $ip" + ifconfig $interface $ip + # strip off end of IP address to get subnet + # assumes subnet of /24 + subnet=${ip%.*} + # escape periods for regex + subnet_regex=${subnet//./\\.} + ip_regex=${ip//./\\.} + # set default address range for dhcpd + addr_start=100 + addr_end=254 + if ! grep -E -q "^start\s+$subnet_regex\." $dhcpd_file; then + echo "Changing dhcpd start to $subnet.$addr_start" + sed -r -i "s/^start\s+.*$/start $subnet.$addr_start/" $dhcpd_file + fi + if ! grep -E -q "^end\s+$subnet_regex\." $dhcpd_file; then + echo "Changing dhcpd end to $subnet.$addr_end" + sed -r -i "s/^end\s+.*$/end $subnet.$addr_end/" $dhcpd_file + fi + # update dhcpd addresses if needed + if ! grep -E -q "^option\s+router\s+$ip_regex" $dhcpd_file; then + echo "Changing dhcpd router to $ip" + sed -r -i "s/^option\s+router\s+.*$/option router $ip/" $dhcpd_file + fi + else + # unset ip address for bridge mode + ifconfig wlan0 0.0.0.0 + fi + + if ! grep -E -q "^interface\s+$interface" $dhcpd_file; then + echo "Changing dhcpd interface to $interface" + sed -r -i "s/^interface\s+.*$/interface $interface/" $dhcpd_file + fi + ocg-dhcpd start +} + +do_stop() { + echo "Stopping hostap daemon" + /etc/init.d/hostapd stop + ocg-dhcpd stop +} + +usage() { + echo "Usage: $(basename $0) start|stop|restart [options]" + echo " options:" + echo " -a <address> Sets AP IP address (defaults to 192.168.3.1)" + echo " -b <interface> Add AP to specified bridge interface (conflicts with -a)" + exit 1 +} + +# main +if [[ $# < 1 ]]; then + usage +fi + +cmd=$1 +shift + +while getopts "a:b:h" opt; do + case "$opt" in + a) + a=$OPTARG + ;; + b) + b=$OPTARG + bridge_mode=1 + ;; + h) + usage + ;; + *) + usage + ;; + esac +done + +# can't specify both address and bridge mode +if [ -n "$a" ] && [ -n "$b" ]; then + usage +fi + +if [ -n "$a" ]; then + ret=1 + if [[ $a =~ ^([0-9]{1,3}\.){3,3}[0-9]{1,3}$ ]] + then + OIFS=$IFS + IFS='.' + ip=($a) + IFS=$OFIS + [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]] + ret=$? + fi + if [[ ret -ne 0 ]] + then + echo "invalid IP address" + exit 1 + fi + ip=$a +else + ip="192.168.3.1" +fi + +case $cmd in + start) + do_start + ;; + stop) + do_stop + ;; + restart) + do_stop + sleep 1 + do_start + ;; + *) + usage + ;; +esac + +exit 0 diff --git a/recipes-core/ocg-scripts/ocg-scripts_1.0.bb b/recipes-core/ocg-scripts/ocg-scripts_1.0.bb new file mode 100644 index 0000000..fc2fc02 --- /dev/null +++ b/recipes-core/ocg-scripts/ocg-scripts_1.0.bb @@ -0,0 +1,7 @@ +DESCRIPTION = "Scripts to easily get started with common OCG use cases" + +require ocg-scripts-1.0.inc + +PR = "r3" + +S = "${WORKDIR}/ocg-scripts-${PV}" diff --git a/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bbappend b/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bbappend new file mode 100644 index 0000000..6c79846 --- /dev/null +++ b/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bbappend @@ -0,0 +1,2 @@ +# enable gadget serial console for supported hardware +SERIAL_CONSOLES_append_mtcdt = " 115200;ttyGS0" diff --git a/recipes-core/udev/udev-182/cellular_radios.rules b/recipes-core/udev/udev-182/cellular_radios.rules new file mode 100644 index 0000000..81271ac --- /dev/null +++ b/recipes-core/udev/udev-182/cellular_radios.rules @@ -0,0 +1,47 @@ +ACTION=="remove", GOTO="mlinux_end" +SUBSYSTEM!="tty", GOTO="mlinux_end" +KERNEL!="ttyUSB[0-9]*|ttyACM[0-9]*", GOTO="mlinux_end" + +SUBSYSTEMS=="usb", ENV{ID_IFACE}="$attr{bInterfaceNumber}" +ENV{ID_IFACE}=="", GOTO="mlinux_end" + +# All modem ports +# H5 +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="00", SYMLINK+="modem0" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="02", SYMLINK+="modem1" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="04", SYMLINK+="modem2" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="06", SYMLINK+="modem3" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="08", SYMLINK+="modem4" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="0a", SYMLINK+="modem5" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="0c", SYMLINK+="modem6" +# EV3 +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="00", SYMLINK+="modem0" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="01", SYMLINK+="modem1" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="02", SYMLINK+="modem2" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="03", SYMLINK+="modem3" +# H4 +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="00", SYMLINK+="modem0" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="01", SYMLINK+="modem1" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="02", SYMLINK+="modem2" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="03", SYMLINK+="modem3" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="04", SYMLINK+="modem4" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="05", SYMLINK+="modem5" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="06", SYMLINK+="modem6" +# EV2 +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", SYMLINK+="modem$env{ID_PORT}" + +# AT Command ports +# H5: ttyACM0, ttyACM3 +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="00", SYMLINK+="modem_at0" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="06", SYMLINK+="modem_at1" +# EV3: ttyUSB2, ttyUSB3 +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="02", SYMLINK+="modem_at0" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="03", SYMLINK+="modem_at1" +# H4: ttyUSB3, ttyUSB4, ttyUSB5 +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="03", SYMLINK+="modem_at0" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="04", SYMLINK+="modem_at1" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="05", SYMLINK+="modem_at2" +# EV2: ttyUSB0 +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", ENV{ID_PORT}=="0", SYMLINK+="modem_at0" + +LABEL="mlinux_end" diff --git a/recipes-core/udev/udev-182/init b/recipes-core/udev/udev-182/init new file mode 100644 index 0000000..bd716b0 --- /dev/null +++ b/recipes-core/udev/udev-182/init @@ -0,0 +1,138 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: udev +# Required-Start: mountvirtfs +# Required-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Start udevd, populate /dev and load drivers. +### END INIT INFO + +export TZ=/etc/localtime + +[ -d /sys/class ] || exit 1 +[ -r /proc/mounts ] || exit 1 +[ -x @UDEVD@ ] || exit 1 +[ -f /etc/default/udev-cache ] && . /etc/default/udev-cache +[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf +[ -f /etc/default/rcS ] && . /etc/default/rcS + +readfiles () { + READDATA="" + for filename in $@; do + if [ -r $filename ]; then + while read line; do + READDATA="$READDATA$line" + done < $filename + fi + done +} + +kill_udevd () { + pid=`pidof -x udevd` + [ -n "$pid" ] && kill $pid +} + +case "$1" in + start) + export ACTION=add + # propagate /dev from /sys + echo "Starting udev" + + # Check for requireed devtmpfs before trying to start udev and + # mount a no-existant fs. + if ! grep -q devtmpfs /proc/filesystems + then + echo "Missing devtmpfs, which is required for udev to run"; + echo "Halting..." + halt + fi + # mount the devtmpfs on /dev, if not already done + LANG=C awk '$2 == "/dev" && ($3 == "devtmpfs") { exit 1 }' /proc/mounts && { + mount -n -o mode=0755 -t devtmpfs none "/dev" + } + [ -e /dev/pts ] || mkdir -m 0755 /dev/pts + [ -e /dev/shm ] || mkdir -m 1777 /dev/shm + # the automount rule for udev needs /tmp directory available, as /tmp is a symlink + # to /var/tmp which in turn is a symlink to /var/volatile/tmp, we need to make sure + # /var/volatile/tmp directory to be available. + mkdir -p /var/volatile/tmp + + # Cache handling. + # A list of files which are used as a criteria to judge whether the udev cache could be reused. + CMP_FILE_LIST="/proc/version /proc/cmdline /proc/devices /proc/atags" + if [ "$DEVCACHE" != "" ]; then + if [ -e $DEVCACHE ]; then + readfiles $CMP_FILE_LIST + NEWDATA="$READDATA" + readfiles /etc/udev/cache.data + OLDDATA="$READDATA" + if [ "$OLDDATA" = "$NEWDATA" ]; then + (cd /; tar xf $DEVCACHE > /dev/null 2>&1) + not_first_boot=1 + [ "$VERBOSE" != "no" ] && echo "udev: using cache file $DEVCACHE" + [ -e /dev/shm/udev.cache ] && rm -f /dev/shm/udev.cache + else + # Output detailed reason why the cached /dev is not used + if [ "$VERBOSE" != "no" ]; then + echo "udev: udev cache not used" + echo "udev: we use $CMP_FILE_LIST as criteria to judge whether the cache /dev could be resued" + echo "udev: olddata: $OLDDATA" + echo "udev: newdata: $NEWDATA" + fi + echo "$NEWDATA" > /dev/shm/udev.cache + fi + else + if [ "$ROOTFS_READ_ONLY" != "yes" ]; then + # If rootfs is not read-only, it's possible that a new udev cache would be generated; + # otherwise, we do not bother to read files. + readfiles $CMP_FILE_LIST + echo "$READDATA" > /dev/shm/udev.cache + fi + fi + fi + + # make_extra_nodes + kill_udevd > "/dev/null" 2>&1 + + # trigger the sorted events + echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug + @UDEVD@ -d + + udevadm control --env=STARTUP=1 + if [ "$not_first_boot" != "" ];then + if [ "$PROBE_PLATFORM_BUS" != "yes" ]; then + PLATFORM_BUS_NOMATCH="--subsystem-nomatch=platform" + else + PLATFORM_BUS_NOMATCH="" + fi + udevadm trigger --action=add --subsystem-nomatch=tty --subsystem-nomatch=mem --subsystem-nomatch=vc --subsystem-nomatch=vtconsole --subsystem-nomatch=misc --subsystem-nomatch=dcon --subsystem-nomatch=pci_bus --subsystem-nomatch=graphics --subsystem-nomatch=backlight --subsystem-nomatch=video4linux $PLATFORM_BUS_NOMATCH + (udevadm settle --timeout=10; udevadm control --env=STARTUP=)& + else + udevadm trigger --action=add + udevadm settle + fi + ;; + stop) + echo "Stopping udevd" + start-stop-daemon --stop --name udevd --quiet + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + status) + pid=`pidof -x udevd` + if [ -n "$pid" ]; then + echo "udevd (pid $pid) is running ..." + else + echo "udevd is stopped" + fi + ;; + *) + echo "Usage: $0 {start|stop|status|restart}" + exit 1 +esac +exit 0 diff --git a/recipes-core/udev/udev-182/mtcdt/mtcdt.rules b/recipes-core/udev/udev-182/mtcdt/mtcdt.rules new file mode 100644 index 0000000..3bdbe5d --- /dev/null +++ b/recipes-core/udev/udev-182/mtcdt/mtcdt.rules @@ -0,0 +1,12 @@ +ACTION=="remove", GOTO="mlinux_end" +SUBSYSTEM!="tty", GOTO="mlinux_end" +KERNEL!="ttyXRUSB[0-9]*", GOTO="mlinux_end" + +SUBSYSTEMS=="usb", ENV{ID_IFACE}="$attr{bInterfaceNumber}" +ENV{ID_IFACE}=="", GOTO="mlinux_end" + +# Accessory Ports +ATTRS{idVendor}=="04e2", ATTRS{idProduct}=="1412", ENV{ID_IFACE}=="00", SYMLINK+="ttyAP1" +ATTRS{idVendor}=="04e2", ATTRS{idProduct}=="1412", ENV{ID_IFACE}=="02", SYMLINK+="ttyAP2" + +LABEL="mlinux_end" diff --git a/recipes-core/udev/udev-extraconf/automount.rules b/recipes-core/udev/udev-extraconf/automount.rules new file mode 100644 index 0000000..b4a8f22 --- /dev/null +++ b/recipes-core/udev/udev-extraconf/automount.rules @@ -0,0 +1,24 @@ +# There are a number of modifiers that are allowed to be used in some +# of the different fields. They provide the following subsitutions: +# +# %n the "kernel number" of the device. +# For example, 'sda3' has a "kernel number" of '3' +# %e the smallest number for that name which does not matches an existing node +# %k the kernel name for the device +# %M the kernel major number for the device +# %m the kernel minor number for the device +# %b the bus id for the device +# %c the string returned by the PROGRAM +# %s{filename} the content of a sysfs attribute +# %% the '%' char itself +# + +SUBSYSTEM!="block", GOTO="automount_end" +# only mount SD cards and mass storage devices +KERNEL!="sd[a-z][0-9]*|mmcblk[0-9]p[0-9]*", GOTO="automount_end" + +# Media automounting +SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh" +SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh" + +LABEL="automount_end" diff --git a/recipes-core/udev/udev-extraconf_1.0.bbappend b/recipes-core/udev/udev-extraconf_1.0.bbappend new file mode 100644 index 0000000..6d4804d --- /dev/null +++ b/recipes-core/udev/udev-extraconf_1.0.bbappend @@ -0,0 +1,2 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + diff --git a/recipes-core/udev/udev_182.bbappend b/recipes-core/udev/udev_182.bbappend new file mode 100644 index 0000000..60665f9 --- /dev/null +++ b/recipes-core/udev/udev_182.bbappend @@ -0,0 +1,11 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" + +# add custom rules for persistent modem device names +SRC_URI += " file://cellular_radios.rules \ + file://${MACHINE}.rules \ + " + +do_install_append() { + install -m 644 ${WORKDIR}/cellular_radios.rules ${D}${sysconfdir}/udev/rules.d/ + install -m 644 ${WORKDIR}/${MACHINE}.rules ${D}${sysconfdir}/udev/rules.d/ +} diff --git a/recipes-devtools/mtd/mtd-utils-static_git.bb b/recipes-devtools/mtd/mtd-utils-static_git.bb new file mode 100644 index 0000000..8f64be4 --- /dev/null +++ b/recipes-devtools/mtd/mtd-utils-static_git.bb @@ -0,0 +1,17 @@ +require recipes-devtools/mtd/mtd-utils_git.bb + +# search for files in original recipe location +FILESPATH .= ":${@bb.utils.which(BBPATH, 'recipes-devtools/mtd/mtd-utils', direction=True)}" + +PR = "r0" + +PACKAGES = "${PN} ${PN}-dbg" + +# build static version of nandwrite for flash upgrading +CFLAGS += "-static" + +do_install () { + install -d ${D}${bindir} + install -m 0755 ${S}/nandwrite ${D}${bindir}/nandwrite.static +} + diff --git a/recipes-devtools/nodejs/nodejs/0001-gcc-has-a-builtin-define-to-denote-hard-abi-when-in-.patch b/recipes-devtools/nodejs/nodejs/0001-gcc-has-a-builtin-define-to-denote-hard-abi-when-in-.patch new file mode 100644 index 0000000..6268d69 --- /dev/null +++ b/recipes-devtools/nodejs/nodejs/0001-gcc-has-a-builtin-define-to-denote-hard-abi-when-in-.patch @@ -0,0 +1,60 @@ +From bf701e7cb3616631a354ed9ecbed6dd16f60c60d Mon Sep 17 00:00:00 2001 +From: Koen Kooi <koen@dominion.thruhere.net> +Date: Wed, 30 Jan 2013 10:43:47 +0100 +Subject: [PATCH] gcc has a builtin define to denote hard abi when in use, e.g. + when using -mfloat-abi=hard it will define __ARM_PCS_VFP to 1 and therefore + we should check that to determine which calling convention is in use and not + __VFP_FP__ which merely indicates presence of VFP unit + +The fix has been provided by Khem Raj <raj.khem@gmail.com> + +Upstream-Status: Forwarded + +Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> +--- + deps/v8/src/arm/assembler-arm.cc | 4 ++-- + deps/v8/src/platform-linux.cc | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/deps/v8/src/arm/assembler-arm.cc b/deps/v8/src/arm/assembler-arm.cc +index 1787d15..c64ef58 100644 +--- a/deps/v8/src/arm/assembler-arm.cc ++++ b/deps/v8/src/arm/assembler-arm.cc +@@ -71,10 +71,10 @@ static unsigned CpuFeaturesImpliedByCompiler() { + // If the compiler is allowed to use VFP then we can use VFP too in our code + // generation even when generating snapshots. ARMv7 and hardware floating + // point support implies VFPv3, see ARM DDI 0406B, page A1-6. +-#if defined(CAN_USE_ARMV7_INSTRUCTIONS) && defined(__VFP_FP__) \ ++#if defined(CAN_USE_ARMV7_INSTRUCTIONS) && defined(__ARM_PCS_VFP) \ + && !defined(__SOFTFP__) + answer |= 1u << VFP3 | 1u << ARMv7 | 1u << VFP2; +-#endif // defined(CAN_USE_ARMV7_INSTRUCTIONS) && defined(__VFP_FP__) ++#endif // defined(CAN_USE_ARMV7_INSTRUCTIONS) && defined(__ARM_PCS_VFP) + // && !defined(__SOFTFP__) + #endif // _arm__ + +diff --git a/deps/v8/src/platform-linux.cc b/deps/v8/src/platform-linux.cc +index ed9eb79..10d1879 100644 +--- a/deps/v8/src/platform-linux.cc ++++ b/deps/v8/src/platform-linux.cc +@@ -170,7 +170,7 @@ bool OS::ArmCpuHasFeature(CpuFeature feature) { + // calling this will return 1.0 and otherwise 0.0. + static void ArmUsingHardFloatHelper() { + asm("mov r0, #0":::"r0"); +-#if defined(__VFP_FP__) && !defined(__SOFTFP__) ++#if defined(__ARM_PCS_VFP) && !defined(__SOFTFP__) + // Load 0x3ff00000 into r1 using instructions available in both ARM + // and Thumb mode. + asm("mov r1, #3":::"r1"); +@@ -195,7 +195,7 @@ static void ArmUsingHardFloatHelper() { + #else + asm("vmov d0, r0, r1"); + #endif // __thumb__ +-#endif // defined(__VFP_FP__) && !defined(__SOFTFP__) ++#endif // defined(__ARM_PCS_VFP) && !defined(__SOFTFP__) + asm("mov r1, #0":::"r1"); + } + +-- +1.8.1 + diff --git a/recipes-devtools/nodejs/nodejs_0.8.27.bb b/recipes-devtools/nodejs/nodejs_0.8.27.bb new file mode 100644 index 0000000..7a2b1d7 --- /dev/null +++ b/recipes-devtools/nodejs/nodejs_0.8.27.bb @@ -0,0 +1,56 @@ +DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript" +HOMEPAGE = "http://nodejs.org" +LICENSE = "MIT & BSD" +LIC_FILES_CHKSUM = "file://LICENSE;md5=95a589a3257ab7dfe37d8a8379e3c72d" + +DEPENDS = "openssl" + +# use newer npm version that supports caret (^) versions +# https://github.com/npm/npm/issues/4849 +SRCREV_npm = "v1.4.23" + +SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.gz \ + file://0001-gcc-has-a-builtin-define-to-denote-hard-abi-when-in-.patch \ + git://github.com/npm/npm.git;destsuffix=npm;name=npm \ +" +SRC_URI[md5sum] = "afb113584498d2248825650b94e590a9" +SRC_URI[sha256sum] = "30608f9dcd9ad122f7e8e6212f95969979e3dc35309d0c422a56486334a9369e" + +S = "${WORKDIR}/node-v${PV}" + +# v8 errors out if you have set CCACHE +CCACHE = "" + +ARCHFLAGS_arm = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)}" +ARCHFLAGS ?= "" + +# Node is way too cool to use proper autotools, so we install two wrappers to forcefully inject proper arch cflags to workaround gypi +do_configure () { + export LD="${CXX}" + + ./configure --prefix=${prefix} --without-snapshot ${ARCHFLAGS} +} + +do_compile () { + export LD="${CXX}" + make BUILDTYPE=Release +} + +do_install () { + # backup original bundled npm + if [ ! -d deps/npm.orig ]; then + mv deps/npm deps/npm.orig + else + rm -rf deps/npm + fi + # install updated npm from git repo + cp -r ${WORKDIR}/npm deps/npm + + oe_runmake install DESTDIR=${D} +} + +RDEPENDS_${PN} = "curl python-shell python-datetime python-subprocess python-crypt python-textutils python-netclient " +RDEPENDS_${PN}_class-native = "" + +FILES_${PN} += "${libdir}/node/wafadmin ${libdir}/node_modules ${libdir}/dtrace" +BBCLASSEXTEND = "native" diff --git a/recipes-examples/multitech/helloworld-autotools_1.0.0.bb b/recipes-examples/multitech/helloworld-autotools_1.0.0.bb new file mode 100644 index 0000000..8b2eafb --- /dev/null +++ b/recipes-examples/multitech/helloworld-autotools_1.0.0.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "Hello World Recipe using autotools" +HOMEPAGE = "http://www.multitech.net/" +SECTION = "console/utils" +PRIORITY = "optional" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" +PR = "r0" + +SRC_URI = "git://git.multitech.net/helloworld-autotools.git;protocol=git;tag=1.0.0" +S = "${WORKDIR}/git" + +inherit autotools + +PARALLEL_MAKE = "" diff --git a/recipes-extended/autossh/autossh_1.4c.bb b/recipes-extended/autossh/autossh_1.4c.bb new file mode 100644 index 0000000..b40b53f --- /dev/null +++ b/recipes-extended/autossh/autossh_1.4c.bb @@ -0,0 +1,21 @@ +DESCRIPTION = "Keeps ssh tunnels alive" +HOMEPAGE = "http://www.harding.motd.ca/autossh" +LICENSE = "custom-freely-distributable" +LIC_FILES_CHKSUM = "file://autossh.c;start_line=10;end_line=22;md5=60abb4e02db9c8a062426f574d2fccae" +SECTION = "console/utils" +PRIORITY = "optional" + +PR = "r1" + +SRC_URI = "http://www.harding.motd.ca/autossh/autossh-1.4c.tgz" +SRC_URI[md5sum] = "26520eea934f296be0783dabe7fcfd28" +SRC_URI[sha256sum] = "6fcaba6a409a46bdf832086736bb8f09d245ebce11027f41d39588a95dc7fd1d" + +TARGET_CC_ARCH += "${LDFLAGS}" + +inherit autotools + +do_install() { + install -d ${D}/${bindir} + install -m 755 ${S}/autossh ${D}/${bindir}/autossh +} diff --git a/recipes-extended/bash/bash-4.2/build-tests.patch b/recipes-extended/bash/bash-4.2/build-tests.patch new file mode 100644 index 0000000..0360881 --- /dev/null +++ b/recipes-extended/bash/bash-4.2/build-tests.patch @@ -0,0 +1,48 @@ +Add 'ptest' target to Makefile, to run tests without checking dependencies. + +Signed-off-by: Anders Roxell <anders.roxell@enea.com> +Upstream-Status: Pending +--- +diff -uNr a/Makefile.in b/Makefile.in +--- a/Makefile.in 2012-11-06 08:40:07.552403063 +0100 ++++ b/Makefile.in 2012-11-06 11:13:36.958297555 +0100 +@@ -827,20 +827,34 @@ + fi + + recho$(EXEEXT): $(SUPPORT_SRC)recho.c +- @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)recho.c ${LIBS_FOR_BUILD} ++ @$(CC) $(CCFLAGS) -o $@ $< + + zecho$(EXEEXT): $(SUPPORT_SRC)zecho.c +- @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)zecho.c ${LIBS_FOR_BUILD} ++ @$(CC) $(CCFLAGS) -o $@ $< + + printenv$(EXEEXT): $(SUPPORT_SRC)printenv.c +- @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)printenv.c ${LIBS_FOR_BUILD} ++ @$(CC) $(CCFLAGS) -o $@ $< + + xcase$(EXEEXT): $(SUPPORT_SRC)xcase.c +- @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)xcase.c ${LIBS_FOR_BUILD} ++ @$(CC) $(CCFLAGS) -o $@ $< + +-test tests check: force $(Program) $(TESTS_SUPPORT) ++test tests check: ++ @$(MAKE) install-test ++ @$(MAKE) runtest ++ ++install-test: buildtest ++ifeq ($(origin INSTALL_TEST_DIR), undefined) + @-test -d tests || mkdir tests + @cp $(TESTS_SUPPORT) tests ++else ++ @-test -d $(INSTALL_TEST_DIR) || mkdir -p $(INSTALL_TEST_DIR) ++ @cp -r $(srcdir)/tests/* $(INSTALL_TEST_DIR)/ ++ @cp $(TESTS_SUPPORT) $(INSTALL_TEST_DIR) ++endif ++ ++buildtest: force $(Program) $(TESTS_SUPPORT) ++ ++runtest: + @( cd $(srcdir)/tests && \ + PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} ) + diff --git a/recipes-extended/bash/bash-4.2/execute_cmd.patch b/recipes-extended/bash/bash-4.2/execute_cmd.patch new file mode 100644 index 0000000..81f8f0a --- /dev/null +++ b/recipes-extended/bash/bash-4.2/execute_cmd.patch @@ -0,0 +1,17 @@ +Upstream-Status: Inappropriate [embedded specific] + +--- execute_cmd.c.orig Fri Jun 3 13:34:42 2011 ++++ execute_cmd.c Fri Jun 3 13:36:41 2011 +@@ -2202,7 +2202,11 @@ + /* If the `lastpipe' option is set with shopt, and job control is not + enabled, execute the last element of non-async pipelines in the + current shell environment. */ +- if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0) ++ if (lastpipe_opt && ++#if defined(JOB_CONTROL) ++ job_control == 0 && ++#endif ++ asynchronous == 0 && pipe_out == NO_PIPE && prev > 0) + { + lstdin = move_to_high_fd (0, 0, 255); + if (lstdin > 0) diff --git a/recipes-extended/bash/bash-4.2/mkbuiltins_have_stringize.patch b/recipes-extended/bash/bash-4.2/mkbuiltins_have_stringize.patch new file mode 100644 index 0000000..a9391d6 --- /dev/null +++ b/recipes-extended/bash/bash-4.2/mkbuiltins_have_stringize.patch @@ -0,0 +1,26 @@ +On hosts with FORTIFY_SOURCES, stringize support is required, as it's used by +the macros to wrap functions (e.g. read and open in unistd.h). Those wrappers +use the STRING() macro from unistd.h. A header in the bash sources overrides +the unistd.h macro to 'x' when HAVE_STRINGIZE is not defined, causing the +wrappers to generate calls to 'xread' and 'xopen', which do not exist, +resulting in a failure to link. + +Assume we have stringize support when cross-compiling, which works around the +issue. + +It may be best for upstream to either give up on supporting compilers without +stringize support, or to not define STRING() at all when FORTIFY_SOURCES is +defined, letting the unistd.h one be used, instead. + +Upstream-Status: Pending + +--- bash-4.2.orig/builtins/mkbuiltins.c ++++ bash-4.2/builtins/mkbuiltins.c +@@ -28,6 +28,7 @@ + # define HAVE_STDLIB_H + + # define HAVE_RENAME ++# define HAVE_STRINGIZE + #endif /* CROSS_COMPILING */ + + #if defined (HAVE_UNISTD_H) diff --git a/recipes-extended/bash/bash-4.2/run-ptest b/recipes-extended/bash/bash-4.2/run-ptest new file mode 100644 index 0000000..8dd3b99 --- /dev/null +++ b/recipes-extended/bash/bash-4.2/run-ptest @@ -0,0 +1,2 @@ +#!/bin/sh +make -k THIS_SH=/bin/bash BUILD_DIR=. runtest diff --git a/recipes-extended/bash/bash-4.2/test-output.patch b/recipes-extended/bash/bash-4.2/test-output.patch new file mode 100644 index 0000000..2b09b7d --- /dev/null +++ b/recipes-extended/bash/bash-4.2/test-output.patch @@ -0,0 +1,25 @@ +Add FAIL/PASS output to test output. + +Signed-off-by: Björn Stenberg <bjst@enea.com> +Upstream-Status: Pending +--- +diff -uNr a/tests/run-all b/tests/run-all +--- a/tests/run-all 1999-10-08 17:07:46.000000000 +0200 ++++ b/tests/run-all 2012-10-27 21:04:18.663331887 +0200 +@@ -22,7 +22,15 @@ + case $x in + $0|run-minimal|run-gprof) ;; + *.orig|*~) ;; +- *) echo $x ; sh $x ;; ++ *) echo $x ++ output=`sh $x` ++ if [ -n "$output" ]; then ++ echo "$output" ++ echo "FAIL: $x" ++ else ++ echo "PASS: $x" ++ fi ++ ;; + esac + done + diff --git a/recipes-extended/bash/bash.inc b/recipes-extended/bash/bash.inc new file mode 100644 index 0000000..64b476f --- /dev/null +++ b/recipes-extended/bash/bash.inc @@ -0,0 +1,50 @@ +DESCRIPTION = "An sh-compatible command language interpreter." +HOMEPAGE = "http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html" +SECTION = "base/shell" + +DEPENDS = "ncurses bison-native" + +inherit autotools gettext update-alternatives ptest + +PARALLEL_MAKE = "" + +EXTRA_OECONF = "--enable-job-control" + +ALTERNATIVE_${PN} = "sh" +ALTERNATIVE_LINK_NAME[sh] = "${base_bindir}/sh" +ALTERNATIVE_TARGET[sh] = "${base_bindir}/bash" +ALTERNATIVE_PRIORITY = "100" + +export AUTOHEADER = "true" + +RDEPENDS_${PN}-ptest += "make" + +do_configure_prepend () { + if [ ! -e ${S}/acinclude.m4 ]; then + cat ${S}/aclocal.m4 > ${S}/acinclude.m4 + fi +} + +do_compile_ptest () { + oe_runmake buildtest +} + +do_install_append () { + # Move /usr/bin/bash to /bin/bash, if need + if [ "${base_bindir}" != "${bindir}" ]; then + mkdir -p ${D}${base_bindir} + mv ${D}${bindir}/bash ${D}${base_bindir} + fi +} + +do_install_ptest () { + make INSTALL_TEST_DIR=${D}${PTEST_PATH}/tests install-test + cp ${B}/Makefile ${D}${PTEST_PATH} + sed -i 's/^Makefile/_Makefile/' ${D}${PTEST_PATH}/Makefile +} + +pkg_postinst_${PN} () { + touch $D${sysconfdir}/shells + grep -q "bin/bash" $D${sysconfdir}/shells || echo /bin/bash >> $D${sysconfdir}/shells + grep -q "bin/sh" $D${sysconfdir}/shells || echo /bin/sh >> $D${sysconfdir}/shells +} diff --git a/recipes-extended/bash/bash_4.2.bb b/recipes-extended/bash/bash_4.2.bb new file mode 100644 index 0000000..df196a7 --- /dev/null +++ b/recipes-extended/bash/bash_4.2.bb @@ -0,0 +1,173 @@ +require bash.inc + +# GPLv2+ (< 4.0), GPLv3+ (>= 4.0) +LICENSE = "GPLv3+" +LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" + +PR = "r7" + +SRC_URI = "${GNU_MIRROR}/bash/${BPN}-${PV}.tar.gz;name=tarball \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-001;apply=yes;striplevel=0;name=patch001 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-002;apply=yes;striplevel=0;name=patch002 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-003;apply=yes;striplevel=0;name=patch003 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-004;apply=yes;striplevel=0;name=patch004 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-005;apply=yes;striplevel=0;name=patch005 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-006;apply=yes;striplevel=0;name=patch006 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-007;apply=yes;striplevel=0;name=patch007 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-008;apply=yes;striplevel=0;name=patch008 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-009;apply=yes;striplevel=0;name=patch009 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-010;apply=yes;striplevel=0;name=patch010 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-011;apply=yes;striplevel=0;name=patch011 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-012;apply=yes;striplevel=0;name=patch012 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-013;apply=yes;striplevel=0;name=patch013 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-014;apply=yes;striplevel=0;name=patch014 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-015;apply=yes;striplevel=0;name=patch015 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-016;apply=yes;striplevel=0;name=patch016 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-017;apply=yes;striplevel=0;name=patch017 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-018;apply=yes;striplevel=0;name=patch018 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-019;apply=yes;striplevel=0;name=patch019 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-020;apply=yes;striplevel=0;name=patch020 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-021;apply=yes;striplevel=0;name=patch021 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-022;apply=yes;striplevel=0;name=patch022 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-023;apply=yes;striplevel=0;name=patch023 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-024;apply=yes;striplevel=0;name=patch024 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-025;apply=yes;striplevel=0;name=patch025 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-026;apply=yes;striplevel=0;name=patch026 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-027;apply=yes;striplevel=0;name=patch027 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-028;apply=yes;striplevel=0;name=patch028 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-029;apply=yes;striplevel=0;name=patch029 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-030;apply=yes;striplevel=0;name=patch030 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-031;apply=yes;striplevel=0;name=patch031 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-032;apply=yes;striplevel=0;name=patch032 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-033;apply=yes;striplevel=0;name=patch033 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-034;apply=yes;striplevel=0;name=patch034 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-035;apply=yes;striplevel=0;name=patch035 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-036;apply=yes;striplevel=0;name=patch036 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-037;apply=yes;striplevel=0;name=patch037 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-038;apply=yes;striplevel=0;name=patch038 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-039;apply=yes;striplevel=0;name=patch039 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-040;apply=yes;striplevel=0;name=patch040 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-041;apply=yes;striplevel=0;name=patch041 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-042;apply=yes;striplevel=0;name=patch042 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-043;apply=yes;striplevel=0;name=patch043 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-044;apply=yes;striplevel=0;name=patch044 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-045;apply=yes;striplevel=0;name=patch045 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-046;apply=yes;striplevel=0;name=patch046 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-047;apply=yes;striplevel=0;name=patch047 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-048;apply=yes;striplevel=0;name=patch048 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-049;apply=yes;striplevel=0;name=patch049 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-050;apply=yes;striplevel=0;name=patch050 \ + ${GNU_MIRROR}/bash/bash-4.2-patches/bash42-051;apply=yes;striplevel=0;name=patch051 \ + file://execute_cmd.patch;striplevel=0 \ + file://mkbuiltins_have_stringize.patch \ + file://build-tests.patch \ + file://test-output.patch \ + file://run-ptest \ + " + +SRC_URI[tarball.md5sum] = "3fb927c7c33022f1c327f14a81c0d4b0" +SRC_URI[tarball.sha256sum] = "a27a1179ec9c0830c65c6aa5d7dab60f7ce1a2a608618570f96bfa72e95ab3d8" +SRC_URI[patch001.md5sum] = "1100bc1dda2cdc06ac44d7e5d17864a3" +SRC_URI[patch001.sha256sum] = "8d6ca028576c4af23e660a2fbc2112221a11c8a785c0b37f033967e5cd12b47a" +SRC_URI[patch002.md5sum] = "30e7948079921d3261efcc6a40722135" +SRC_URI[patch002.sha256sum] = "febac927e199aceeba2004908d971d4afb49b521796c3f42d1166f9fbbfbcef9" +SRC_URI[patch003.md5sum] = "9ea06decec43a198f3d7cf29acc602f8" +SRC_URI[patch003.sha256sum] = "5a0a7c15018c87348ea87cb0beea14345faf878dbb0e25c17fa70677194cb4cd" +SRC_URI[patch004.md5sum] = "fb48f6134d7b013135929476aa0c250c" +SRC_URI[patch004.sha256sum] = "4e34b0f830d2583d56e14225a66937abc81f45bbafcd2eb49daf61c9462140c1" +SRC_URI[patch005.md5sum] = "e70e45de33426b38153b390be0dbbcd4" +SRC_URI[patch005.sha256sum] = "a81749e73004b81cfdf0fe075bec365dc1fef756ee5e3fd142821e317d1459a0" +SRC_URI[patch006.md5sum] = "ce4e5c484993705b27daa151eca242c2" +SRC_URI[patch006.sha256sum] = "c91148945a2ddafa792682d7c8668c59e7e645eae1334b15b0d5d9ad22634bd1" +SRC_URI[patch007.md5sum] = "88d1f96db29461767602e2546803bda7" +SRC_URI[patch007.sha256sum] = "405826acf443dd1084f236a15cb76d7f0ee2dbe5edff45c5fb836db571fb7e95" +SRC_URI[patch008.md5sum] = "24c574bf6d6a581e300823d9c1276af6" +SRC_URI[patch008.sha256sum] = "23080d11a60a78941210e2477f6bca066b45db03defa60da86fd765107ba2437" +SRC_URI[patch009.md5sum] = "4c5835f2fbab36c4292bb334977e5b6d" +SRC_URI[patch009.sha256sum] = "e7ed5440b4c19765786e90e4f1ded43195d38b3e4d1c4b39fcc23de9a74ccb20" +SRC_URI[patch010.md5sum] = "0a51602b535ef661ee707be6c8bdb373" +SRC_URI[patch010.sha256sum] = "acfc5482c25e6923116fcf4b4f7f6345b80f75ad7299749db4b736ad67aa43dc" +SRC_URI[patch011.md5sum] = "58deacf3d57cbd75575444ff6a3b0806" +SRC_URI[patch011.sha256sum] = "a491ae359a7ebbd7321aede561728289d71e1fc84777f402766a8afd4d261532" +SRC_URI[patch012.md5sum] = "72d5059820015231483bb7415d09e9db" +SRC_URI[patch012.sha256sum] = "354433f1d2da02f1b9652cd20a5b85bbfb5bc2aaf79c42461ebd929d89b9b7b8" +SRC_URI[patch013.md5sum] = "608336ebe215984ef126e3c29d2d3409" +SRC_URI[patch013.sha256sum] = "3412c5c6cbbce6c88592604aec054d8182ce64410038b5ecea69fc3968cf85ea" +SRC_URI[patch014.md5sum] = "ed19da878e3f630834c62b9d9dcc6fce" +SRC_URI[patch014.sha256sum] = "b5a678e609858532735f94faedb5fabce00dfd6577a4e9ec5eec85fe682c8b33" +SRC_URI[patch015.md5sum] = "2d07daba0b8ca8f876d2aa052ff594b4" +SRC_URI[patch015.sha256sum] = "2d876a8304bdf3d664e87e0a8d73bc4ccc100a9dd8c0d054e8649472d8748a98" +SRC_URI[patch016.md5sum] = "53d246537e1fffd1aaa02ba5c056211c" +SRC_URI[patch016.sha256sum] = "2895ccbcf7fc98da73a8fa3ba7440aaf2bfaef6c0af8bdd3a9c39403cf03e2a6" +SRC_URI[patch017.md5sum] = "304fd129a58fee2d8a34f8b4704db0aa" +SRC_URI[patch017.sha256sum] = "73552444498c761d6073dd67ccfe043b36ef24bb418c266d91d9750884daee7f" +SRC_URI[patch018.md5sum] = "6921a0b4228fe89b6537a5c29f027c89" +SRC_URI[patch018.sha256sum] = "e2a9457172370d454d31b84bbcba758ee6394316dbe755374553b52aadbb494d" +SRC_URI[patch019.md5sum] = "1195d85447f3d048d2c9bcd075fa765c" +SRC_URI[patch019.sha256sum] = "a8b7cd02207656976016d93cab48e073cb5da002ceb27b7a63fc5ea62007eb56" +SRC_URI[patch020.md5sum] = "b09000bba08da6ac753124593850cdf7" +SRC_URI[patch020.sha256sum] = "494773f0d0078cb35372d24caa523b00d8fdbbaed71e41dc14c9e47579da3c6f" +SRC_URI[patch021.md5sum] = "09d3f96a16b881334cfaee0cf320b47e" +SRC_URI[patch021.sha256sum] = "a887a97be226575ecf483be2c76655bd6d1edde1cdfe199c27bd2e6baf32badc" +SRC_URI[patch022.md5sum] = "597bf71a2aac6feb510b7505cdd3d4f7" +SRC_URI[patch022.sha256sum] = "9dcdf69df7f8cd2ba88d18c45a0d8f55fbe4f0e273411179db94dd6198b85c6b" +SRC_URI[patch023.md5sum] = "3fab459b4e09daea529cacad025b13b3" +SRC_URI[patch023.sha256sum] = "5dc11394f1a6c887373c081396efd4f4cc04492696722c57a4811c207965f0bf" +SRC_URI[patch024.md5sum] = "4ad8d11e72afc6090e701073ff034cf4" +SRC_URI[patch024.sha256sum] = "99c826bdd33bee281d0a9191550d62a24d0b256cd41c90afd10abd63a66b99e6" +SRC_URI[patch025.md5sum] = "c7d2493e44490f01dd20bdc8feb0a6a7" +SRC_URI[patch025.sha256sum] = "0db0646fd7a559d5702911192bdd387acbbc61cf3c29a34007c3ec840e275515" +SRC_URI[patch026.md5sum] = "9f19c199dd8d1fa9254eebe738759272" +SRC_URI[patch026.sha256sum] = "e7e90cfaabbce3b4b9c699994e9d9ea4a2f084fd9f37788a80b0b70b47d323d2" +SRC_URI[patch027.md5sum] = "a6ed82daf034587aee2f2581ba5fe829" +SRC_URI[patch027.sha256sum] = "0c1f6b7256fcc17f42c05f9bbb4138f8e8bb67e79c622c3485711b6f37f7ed42" +SRC_URI[patch028.md5sum] = "da9265aa2527fd4a7481baa3e0550287" +SRC_URI[patch028.sha256sum] = "204226de39ba81aaf3dd5a29cd59de052ec9f648538bb9e7f1c8150852b1ed7a" +SRC_URI[patch029.md5sum] = "ec444d229e8899fbaaf6fc7de2d82ae6" +SRC_URI[patch029.sha256sum] = "d0b08c0817bc5acdb28b466727622a8422ca4d61188313cf162443b7f338f581" +SRC_URI[patch030.md5sum] = "b4bc1c4dc1b508ff9cdfc44f1a5039b5" +SRC_URI[patch030.sha256sum] = "12594366591a136d8ccdcb8e218010f2ddab6be28a7f96d0ed32ca927e44afae" +SRC_URI[patch031.md5sum] = "89390ff6a3c2ef7e09dd4b8b097a8e56" +SRC_URI[patch031.sha256sum] = "55f38c4d34775fbb063510c4222b195d998dd86f88288b64a6103e3812f8d9f9" +SRC_URI[patch032.md5sum] = "eee08003395c417f677d1a4bf8c548ee" +SRC_URI[patch032.sha256sum] = "e3a8b563dbb1e5cb7ca85a53515da8b2941213973496d48c4cc5a11c604791ed" +SRC_URI[patch033.md5sum] = "2fe070dd6d75d8ff16f269184a16e9c4" +SRC_URI[patch033.sha256sum] = "f5d12790d69fdfb2f47ac86fa1ea1ecc088880141570273f38dfd3fa4a46434b" +SRC_URI[patch034.md5sum] = "4e610506c1711bf3483b965800ac3d5d" +SRC_URI[patch034.sha256sum] = "01c1f332101389cedf347c7736102966722a3b213900954e5d625bbc2f1e41b8" +SRC_URI[patch035.md5sum] = "7cd9bfdf7cbfd45274d07620ee94c8d9" +SRC_URI[patch035.sha256sum] = "cecde463b038b4849635ff0993d9b264fc92403e7ae0accb52c7877aeaed78df" +SRC_URI[patch036.md5sum] = "9c3142956064d175a880bcb186e51ef9" +SRC_URI[patch036.sha256sum] = "fe293a1bc92ac4d272ae9b9a0de3afef7c06145a2b52337a09cacccc5305aafa" +SRC_URI[patch037.md5sum] = "c10692f447d4966c879f8fb8d7c8ebc9" +SRC_URI[patch037.sha256sum] = "c7578cddd3bb2430689c740f58a03403800726dcd1268b28f91bf37f368e1674" +SRC_URI[patch038.md5sum] = "9ef3c308cde413e95866c1266cfb4e98" +SRC_URI[patch038.sha256sum] = "b8c9a81bdf206be58ba491dfad80373b3348af769e80aaf72f7611ddbbbe6d57" +SRC_URI[patch039.md5sum] = "cd48f57a404498d4e5c73a3501c4b1a5" +SRC_URI[patch039.sha256sum] = "f4f9300a60321a5088ae9e54052a64c4d3e876f9a3a17ca104d58fa38b9c1791" +SRC_URI[patch040.md5sum] = "00a2371b6c05acbfce6bc850c6d982f8" +SRC_URI[patch040.sha256sum] = "b265f9caf3c7321f95bc8e0b9e2c46bd86c226f00f05e823699aafb83c4aaa6c" +SRC_URI[patch041.md5sum] = "7bc4942a66ca4024ee964db7ede07896" +SRC_URI[patch041.sha256sum] = "05cc1951bd9f6624088dd6067486ff47f1825e333273d7df5f1b06b23baaf5eb" +SRC_URI[patch042.md5sum] = "1cf7701017ebfc8e129de92c8f8b798c" +SRC_URI[patch042.sha256sum] = "faaa5c1f456517b258b2a65eaa664dd6a01eeff73c8ca4447c3a6de371bbf304" +SRC_URI[patch043.md5sum] = "9e61168fca692d8d1a733c389a63712e" +SRC_URI[patch043.sha256sum] = "dc2683840f3e890a9c5f85338366ff6cd923285e558eb46aa818a03fa67c5c57" +SRC_URI[patch044.md5sum] = "b4b11d64b45ea9ec50dcc74c6c3861f6" +SRC_URI[patch044.sha256sum] = "10d32d6c9ccdedb1d826f46468631d475f9dcf983fac087766e16df7b99766e6" +SRC_URI[patch045.md5sum] = "1661bcc83c4715f54368877452ff2247" +SRC_URI[patch045.sha256sum] = "ddb7eff0f59d394a483b09feec3771d9026f81ba90afac32846a19b172b2986d" +SRC_URI[patch046.md5sum] = "1b68157ac0f7140e1ceafbbad4a14fee" +SRC_URI[patch046.sha256sum] = "95c1323b68c0ecc0ca09565ef2d5218625ced3957b702e04c8bcaad9e7b3816d" +SRC_URI[patch047.md5sum] = "10fbe341bd6b5dd1e94c2384f24e98b4" +SRC_URI[patch047.sha256sum] = "c1979201d0345011c419a1c82407cd2a00c60a0c75b7f07e145d17f3718daf7a" +SRC_URI[patch048.md5sum] = "87c31c1ace423d3ce8d1e26ba13bc724" +SRC_URI[patch048.sha256sum] = "751a5d2330b21ac9aba7323acbbc91c948285f30a4bb41f56796f9a36b983d24" +SRC_URI[patch049.md5sum] = "07083eeb372bd8215050a8146acc1efd" +SRC_URI[patch049.sha256sum] = "901cd74cdd9f3e9bb5cc907d563e3d4dcdf9d5f6a751e85b706a958f51bc510e" +SRC_URI[patch050.md5sum] = "d7b28ed8e839463f4554d67afb4f15e9" +SRC_URI[patch050.sha256sum] = "1a19b84455e83b46fcaa27759a5dd643dde2e11ceacd1e84e351970ea04d8ba6" +SRC_URI[patch051.md5sum] = "7dfd10542744c75aa1fd9be7109573bb" +SRC_URI[patch051.sha256sum] = "3e15347bc23a116b8ee898acec9d0ac744612ce9bbc0096fff47c4cf1149051c" + +BBCLASSEXTEND = "nativesdk" diff --git a/recipes-extended/lighttpd/lighttpd_1.4.33.bbappend b/recipes-extended/lighttpd/lighttpd_1.4.33.bbappend new file mode 100644 index 0000000..885737e --- /dev/null +++ b/recipes-extended/lighttpd/lighttpd_1.4.33.bbappend @@ -0,0 +1,5 @@ +# build with openssl support +DEPENDS += " openssl " +RDEPENDS_${PN} += " openssl " + +EXTRA_OECONF += "--with-openssl" diff --git a/recipes-extended/mii-diag/mii-diag-2.11/libmii.c b/recipes-extended/mii-diag/mii-diag-2.11/libmii.c new file mode 100644 index 0000000..96f0060 --- /dev/null +++ b/recipes-extended/mii-diag/mii-diag-2.11/libmii.c @@ -0,0 +1,630 @@ +/* libmii.c: MII diagnostic and setup library. + + Copyright 1997-2003 by Donald Becker. + This version released under the Gnu General Public License, + incorporated herein by reference. + This source code may be distributed without modification using the + existing notice. Any modification to this source code must include a + full notice as described in the GPL + Contact the author for use under other terms. + + The author may be reached as becker@scyld.com, or C/O + Scyld Computing Corporation + 914 Bay Ridge Road, Suite 220 + Annapolis MD 21403 + + References + http://www.scyld.com/expert/NWay.html + http://www.national.com/pf/DP/DP83840A.html +*/ + +static const char version_msg[] = +"libmii.c:v2.11 2/28/2005 Donald Becker (becker@scyld.com)\n" +" http://www.scyld.com/diag/index.html\n"; + +/* This library exports the following functions: + IOADDR: A token passed to the mdio_read() function. + PHY_ID: The MII transceiver address, passed uninterpreted to mdio_read(). +*/ +void show_mii_details(long ioaddr, int phy_id); +int monitor_mii(long ioaddr, int phy_id); + +/* This library expects to be able to call the following functions: */ +extern int mdio_read(long ioaddr, int phy_id, int mii_reg_num); + +#include <unistd.h> +#include <stdio.h> +#include <time.h> +#include <sys/time.h> + +#include <sys/types.h> +typedef u_int32_t u32; +typedef u_int16_t u16; +typedef u_int8_t u8; + +static const char *media_names[] = { + "10baseT", "10baseT-FD", "100baseTx", "100baseTx-FD", "100baseT4", + "Flow-control", 0, +}; + +static void ns83843(long ioaddr, int phy_id); +static void qs6612(long ioaddr, int phy_id); +static void smsc83c180(long ioaddr, int phy_id); +static void tdk78q2120(long ioaddr, int phy_id); +static void davicom_dm9101(long ioaddr, int phy_id); +static void intel_i553(long ioaddr, int phy_id); +static void enablesemi(long ioaddr, int phy_id); +static void amd_pna(long ioaddr, int phy_id); +static void amd_tx(long ioaddr, int phy_id); +static void admtek(long ioaddr, int phy_id); +static void lu3x31(long ioaddr, int phy_id); +static void myson981(long ioaddr, int phy_id); +static void via_tahoe(long ioaddr, int phy_id); +static void via_vt6103(long ioaddr, int phy_id); +static void via_vt6105(long ioaddr, int phy_id); +static void intel(long ioaddr, int phy_id); + +struct mii_partnum { + const char *vendor; /* Vendor name. */ + u16 phy_id0; /* Vendor ID (alternate ver. of ieee_oui[]) */ + u16 phy_id1; /* Vendor ID (alternate ver. of ieee_oui[]) */ + unsigned char ieee_oui[3]; /* IEEE-assigned organizationally unique ID */ + char flags; + void (*(func))(long xcvr_if, int phy_id);/* Function to emit more info. */ +} static oui_map[] = { + {"Unknown transceiver type", 0x0000, 0x0000, {0,}, 0, NULL,}, + {"National Semiconductor 83840A", 0x2000, 0x5c01, {0,}, 0, NULL,}, + {"National Semiconductor 83843", 0x2000, 0x5c10, {0,}, 0, ns83843, }, + {"Level One LXT970", 0x7810, 0x0000, {0,}, 0, NULL, }, + {"Level One LXT971", 0x7810, 0x0001, {0,}, 0, NULL, }, + {"Level One LXT971A",0x7810, 0x0003, {0,}, 0, NULL, }, + {"Level One (unknown type)", 0, 0, {0x1e,0x04,0x00}, 0, NULL, }, + {"Davicom DM9101", 0x0181, 0xB800, {0,}, 0, davicom_dm9101, }, + {"Davicom (unknown type)", 0, 0, {0x00, 0x60, 0x6e}, 0, davicom_dm9101, }, + {"Quality Semiconductor QS6612", 0x0181, 0x4410, {0,}, 0, qs6612}, + {"Quality Semiconductor (unknown type)", 0,0, {0x00, 0x60, 0x51}, 0, NULL}, + {"SMSC 83c180", 0x0282, 0x1C51, {0}, 0, smsc83c180, }, + {"TDK Semi 78Q2120 rev. 2", 0x0300, 0xE542, {0,}, 0, tdk78q2120, }, + {"TDK Semi 78Q2120 rev. 3", 0x0300, 0xE543, {0,}, 0, tdk78q2120, }, + {"TDK Semi 78Q2120 rev. 11", 0x0300, 0xE54B, {0,}, 0, tdk78q2120, }, + {"TDK transceiver (unknown type)", 0,0, {0x00, 0xc0, 0x39}, 0, tdk78q2120}, + {"Intel (unknown type)", 0,0, {0x00, 0xf8, 0x00}, 0, intel_i553}, + {"Enable Semiconductor EL40-331", 0x0043, 0x7411, {0,}, 0, enablesemi}, + {"AMD 79c901A.1 HomePNA", 0x0000, 0x6B91, {0,}, 0, amd_pna}, + {"AMD 79c901A.2 HomePNA", 0x0000, 0x6B92, {0,}, 0, amd_pna}, + {"AMD 79c901A.3 HomePNA", 0x0000, 0x6B93, {0,}, 0, amd_pna}, + {"AMD 79c901A.3 10baseT", 0x0000, 0x6B71, {0,}, 0, amd_tx}, + {"AdHoc Technology AH101LF", 0x0022, 0x561B, {0,}, 0, tdk78q2120}, + {"Altimata Communications AC101LF", 0x0022, 0x5523, {0,}, 0, tdk78q2120}, + {"Altimata Comm (unknown type)", 0, 0, {0x00,0x10,0xA9}, 0, tdk78q2120}, + {"ASIX (unknown type)", 0, 0, {0x00,0xC0,0xB4}, 0, tdk78q2120}, + {"ADMtek AN983 Comet", 0x0022, 0x5410, {0,}, 0, admtek}, + {"ADMtek AN985 Comet", 0x0022, 0x5513, {0,}, 0, admtek}, + {"ADMtek (unknown type)", 0, 0, {0x00,0xe0,0x92}, 0, admtek}, + {"Lucent LU6612", 0x0180, 0x7641, {0,}, 0, qs6612}, + {"Lucent LU3X31", 0x0043, 0x7411, {0,}, 0, lu3x31}, + {"LSI Logic (Seeq) 80225", 0, 0, {0x00,0xA0,0x7D}, 0, NULL}, + {"Myson MTD981", 0x0302, 0xD000, {0,}, 0, myson981}, + {"Myson (unknown type)", 0, 0, {0x00,0xC0,0xB4,}, 0, myson981}, + {"Alta/Kendin Sundance", 0x0022, 0x1720, {0,}, 0, NULL}, + {"Alta/Kendin Sundance", 0, 0, {0x00,0x08,0x85}, 0, NULL}, + {"VIA Tahoe VT6103", 0x0101, 0x8f20, {0,}, 0, via_vt6103}, + {"VIA Tahoe VT6104", 0x0101, 0x8f30, {0,}, 0, via_tahoe}, + {"VIA Rhine VT6105", 0x0101, 0x8f22, {0,}, 0, via_vt6105}, + {"Intel 82557 series", 0x02a8, 0x0150, {0,}, 0, intel}, + {"Intel 82555 rev 1", 0x02a8, 0x0151, {0,}, 0, intel}, + {"Intel 82559 transceiver", 0x02a8, 0x0154, {0,}, 0, intel}, + {"Intel 82555 series transceiver", 0,0, {0x00,0xaa,0x00}, 0, intel}, + {0, }, +}; + +static u16 mii_val[32]; + +void show_mii_details(long ioaddr, int phy_id) +{ + int mii_reg, i, vendor = 0; + u16 bmcr, bmsr, new_bmsr; + + /* This may not be omitted from the output. */ + printf("%s", version_msg); + printf(" MII PHY #%d transceiver registers:", phy_id); + for (mii_reg = 0; mii_reg < 32; mii_reg++) { + mii_val[mii_reg] = mdio_read(ioaddr, phy_id, mii_reg); + printf("%s %4.4x", (mii_reg % 8) == 0 ? "\n " : "", + mii_val[mii_reg]); + } + printf(".\n"); + if (mii_val[0] == 0xffff) { + printf(" No MII transceiver present!.\n"); + return; + } + bmcr = mii_val[0]; + bmsr = mii_val[1]; + printf(" Basic mode control register 0x%4.4x:", bmcr); + if (bmcr & 0x1000) + printf(" Auto-negotiation enabled.\n"); + else + printf(" Auto-negotiation disabled!\n" + " Speed fixed at 10%s mbps, %s-duplex.\n", + bmcr & 0x2000 ? "0" : "", + bmcr & 0x0100 ? "full":"half"); + if (bmcr & 0x8000) + printf(" Transceiver currently being reset!\n"); + if (bmcr & 0x4000) + printf(" Transceiver in loopback mode!\n"); + if (bmcr & 0x0800) + printf(" Transceiver powered down!\n"); + if (bmcr & 0x0400) + printf(" Transceiver isolated from the MII!\n"); + if (bmcr & 0x0200) + printf(" Restarted auto-negotiation in progress!\n"); + if (bmcr & 0x0080) + printf(" Internal Collision-Test enabled!\n"); + + new_bmsr = mdio_read(ioaddr, phy_id, 1); + printf(" Basic mode status register 0x%4.4x ... %4.4x.\n" + " Link status: %sestablished.\n" + " Capable of ", + bmsr, new_bmsr, + bmsr & 0x0004 ? "" : + (new_bmsr & 0x0004) ? "previously broken, but now re" : "not "); + if (bmsr & 0xF800) { + for (i = 15; i >= 11; i--) + if (bmsr & (1<<i)) + printf(" %s", media_names[i-11]); + } else + printf("<Warning! No media capabilities>"); + + printf(".\n" + " %s to perform Auto-negotiation, negotiation %scomplete.\n", + bmsr & 0x0008 ? "Able" : "Unable", + bmsr & 0x0020 ? "" : "not "); + + if (bmsr & 0x0010) + printf(" Remote fault detected!\n"); + if (bmsr & 0x0002) + printf(" *** Link Jabber! ***\n"); + + if (mii_val[2] ^ mii_val[3]) { /* Eliminate 0x0000 and 0xffff IDs. */ + unsigned char oui_0 = mii_val[2] >> 10; + unsigned char oui_1 = mii_val[2] >> 2; + unsigned char oui_2 = (mii_val[2] << 6) | (mii_val[3] >> 10); + + printf(" Vendor ID is %2.2x:%2.2x:%2.2x:--:--:--, model %d rev. %d.\n", + oui_0, oui_1, oui_2, + ((mii_val[3] >> 4) & 0x3f), mii_val[3] & 0x0f); + for ( i = 0; oui_map[i].vendor; i++) + /* We match either the Phy ID or the IEEE OUI. */ + if ((oui_map[i].phy_id0 == mii_val[2] && + oui_map[i].phy_id1 == mii_val[3]) || + (oui_map[i].ieee_oui[0] == oui_0 && + oui_map[i].ieee_oui[1] == oui_1 && + oui_map[i].ieee_oui[2] == oui_2)) { + printf(" Vendor/Part: %s.\n", oui_map[i].vendor); + vendor = i; + break; + } + if (oui_map[i].vendor == NULL) + printf(" No specific information is known about this transceiver" + " type.\n"); + } else + printf(" This transceiver has no vendor identification.\n"); + + { + int nway_advert = mii_val[4]; + int lkpar = mii_val[5]; + printf(" I'm advertising %4.4x:", nway_advert); + for (i = 10; i >= 5; i--) + if (nway_advert & (1<<i)) + printf(" %s", media_names[i-5]); + printf("\n Advertising %sadditional info pages.\n", + nway_advert & 0x8000 ? "" : "no "); + if ((nway_advert & 31) == 1) + printf(" IEEE 802.3 CSMA/CD protocol.\n"); + else + printf(" Using an unknown (non 802.3) encapsulation.\n"); + printf(" Link partner capability is %4.4x:", + lkpar); + for (i = 10; i >= 5; i--) + if (lkpar & (1<<i)) + printf(" %s", media_names[i-5]); + printf(".\n Negotiation %s.\n", + lkpar & 0x4000 ? " completed" : "did not complete"); + } + if (oui_map[vendor].func) + oui_map[vendor].func(ioaddr, phy_id); + +} + +int monitor_mii(long ioaddr, int phy_id) +{ + int i, last_event = 0; + unsigned short new_1, baseline_1 = mdio_read(ioaddr, phy_id, 1); + struct timeval tv, sleepval; + time_t cur_time; + char timebuf[12]; + + if (baseline_1 == 0xffff) { + fprintf(stderr, "No MII transceiver present to monitor.\n"); + return -1; + } + + gettimeofday(&tv, NULL); + cur_time = tv.tv_sec; + strftime(timebuf, sizeof(timebuf), "%H:%M:%S", localtime(&cur_time)); + + printf("Monitoring the MII transceiver status.\n" + "%s.%03d Baseline value of MII BMSR (basic mode status register)" + " is %4.4x.\n", timebuf, (int)tv.tv_usec/1000, baseline_1); + while (1) { + new_1 = mdio_read(ioaddr, phy_id, 1); + if (new_1 == 0xffff) { + fprintf(stderr, "The MII transceiver is no longer accessable!\n"); + return -1; + } + if (new_1 != baseline_1) { + gettimeofday(&tv, NULL); + cur_time = tv.tv_sec; + strftime(timebuf, sizeof(timebuf), "%H:%M:%S", + localtime(&cur_time)); + printf("%s.%03d MII BMSR now %4.4x: %4s link, NWay %s, " + "%3sJabber%s (%4.4x).\n", + timebuf, (int)tv.tv_usec/1000, new_1, + new_1 & 0x04 ? "Good" : "no", + new_1 & 0x20 ? "done" : "busy", + new_1 & 0x02 ? "" : "No ", + new_1 & 0x10 ? ", remote fault" : "", + mdio_read(ioaddr, phy_id, 5) + ); + if (!(baseline_1 & 0x20) && (new_1 & 0x20)) { + int lkpar = mdio_read(ioaddr, phy_id, 5); + printf(" New link partner capability is %4.4x %4.4x:", + lkpar, mdio_read(ioaddr, phy_id, 6)); + switch (lkpar) { + case 0x45e1: printf(" 10/100 switch w/ flow control"); break; + case 0x41e1: printf(" 10/100 HD+FD switch"); break; + case 0x40a1: printf(" 10/100 bridged repeater"); break; + case 0x4081: printf(" 100baseTx repeater w/autonegotation"); + break; + case 0x0081: printf(" 100baseTx (no autonegotation)"); break; + case 0x4021: printf(" 10baseT repeater w/autonegotation"); + break; + case 0x0021: printf(" 10baseT (no autonegotation)"); break; + default: + for (i = 9; i >= 5; i--) + if (lkpar & (1<<i)) + printf(" %s", media_names[i-5]); + } + printf(".\n"); + } + fflush(stdout); + baseline_1 = new_1; + last_event = 0; + } + sleepval.tv_sec = 0; + sleepval.tv_usec = last_event++ > 30 ? 200000 : 1000; + select(0, 0, 0, 0, &sleepval); /* Or just sleep(1); */ + } + printf(" Value of MII BMSR (basic mode status register) is %4.4x.\n", + mdio_read(ioaddr, phy_id, 1)); + return 0; +} + +/* Emit transceiver-specific info. */ + +struct msg_tbl { int bitmask; char *msg; }; + +static void msg_if_set(const int val, const struct msg_tbl msg_tbl[]) +{ + int i; + for (i = 0; msg_tbl[i].bitmask; i++) + if (msg_tbl[i].bitmask & val) + printf(" %s\n", msg_tbl[i].msg); +} + +static void msg_if_set_fmt(const int val, const struct msg_tbl msg_tbl[], + const char *fmt) +{ + int i; + for (i = 0; msg_tbl[i].bitmask; i++) + if (msg_tbl[i].bitmask & val) + printf(fmt, msg_tbl[i].msg); +} + +static void qs6612(long ioaddr, int phy_id) +{ + printf(" QS6612 extra registers: Mode %4.4x.\n" + " Interrupt source %4.4x, mask %4.4x.\n" + " PHY control %4.4x.\n", + mii_val[17], mii_val[29], mii_val[30], mii_val[31]); + return; +} + +static void ns83843(long ioaddr, int phy_id) +{ + printf(" NatSemi 83843 extra registers:\n" + " PHY status %4.4x\n" + " %s link, %d Mb/sec %s duplex\n" + " MII interrupts %sabled, %s pending.\n" + " Events since last read\n" + " Link disconnects %d\n" + " False carriers %d\n" + " Receive errors %d\n" + " Link beat is currently %sstable\n", + mii_val[0x10], + mii_val[10] & 0x0001 ? "Valid" : "Invalid", + mii_val[10] & 0x0002 ? 10 : 100, + mii_val[10] & 0x0004 ? "full" : "half", + mii_val[0x11] & 0x0002 ? "en":"dis", + mii_val[0x10] & 0x0100 ? "interrupt": "none", + mii_val[0x13], mii_val[0x14], mii_val[0x15], + mii_val[0x16] & 0x0010 ? "UN" : ""); + return; +} +static void smsc83c180(long ioaddr, int phy_id) +{ + int mii_reg25 = mii_val[25]; + printf(" SMSC 83c180 extra registers:\n" + " Auto-negotiation status 0x%4.4x.\n" + " 10baseT polarity is %s.\n" + " PHY address is %d.\n" + " Auto-negotiation %scomplete, 1%s0Mbps %s duplex.\n" + " Rx symbol errors since last read %d.\n", + mii_reg25, + mii_reg25 & 0x2000 ? "normal" : "reversed", + (mii_reg25>>8) & 0x1F, + mii_reg25 & 0x0080 ? "did not " : "", + mii_reg25 & 0x0020 ? "0" : "", + mii_reg25 & 0x0040 ? "full" : "half", + mdio_read(ioaddr, phy_id, 26)); + return; +} + +static const char *tdk_events[8] = { + "Jabber", "Rx error", "Negotiation page received", "Link detection fault", + "Link partner acknowledge", "Link status change", "Remote partner fault", + "Auto-Negotiation complete"}; + +static const struct msg_tbl tdk_reg16[] = { + {0x8000, " Transceiver is in repeater mode!"}, + {0x4000, " Interrupt pin set to active high."}, + {0x2000, " Reserved bit 12 is unexpectedly set."}, + {0x1000, " Transmit pins are internally disconnected."}, + {0x0800, " 10baseT signal quality test is disabled."}, + {0x0400, " 10baseT loopback mode."}, + {0, 0}, +}; + +static void tdk78q2120(long ioaddr, int phy_id) +{ + int mii_reg16 = mii_val[16]; + int mii_reg17 = mii_val[17]; + int mii_reg18 = mii_val[18]; + int i; + printf(" TDK format vendor-specific registers 16..18 are " + "0x%4.4x 0x%4.4x 0x%4.4x\n", mii_reg16, mii_reg17, mii_reg18); + printf(" Link polarity is %s %s.\n" + "%s%s" + " Auto-negotiation %s, 1%s0Mbps %s duplex.\n" + " Rx link in %s state, PLL %s.\n", + mii_reg16 & 0x0020 ? "OVERRIDDEN to" : "detected as", + mii_reg16 & 0x0010 ? "reversed" : "normal", + mii_reg16 & 0x0002 ? + " 100baseTx Coding and scrambling is disabled!\n":"", + mii_reg16 & 0x0001 ? " Rx_CLK power-save mode is enabled!\n":"", + mii_reg18 & 0x1000 ? "had no common media" : "complete", + mii_reg18 & 0x0400 ? "0" : "", + mii_reg18 & 0x0800 ? "full" : "half", + mii_reg18 & 0x0200 ? "pass" : "fail", + mii_reg18 & 0x0100 ? "slipped since last read" : "locked"); + + msg_if_set(mii_reg16, tdk_reg16); + if (mii_reg17 & 0x00ff) { + printf(" Events since last read:"); + for (i = 0; i < 8; i++) + if (mii_reg17 & (1 << i)) + printf(" %s", tdk_events[i]); + } else + printf(" No new link status events."); + + if (mii_reg17 & 0xff00) { + printf("\n Events that will raise an interrupt:"); + for (i = 0; i < 8; i++) + if (mii_reg17 & (0x100 << i)) + printf(" %s", tdk_events[i]); + } + printf("\n"); + return; +} + +static void davicom_dm9101(long ioaddr, int phy_id) +{ + printf(" Davicom vendor specific registers: 0x%4.4x 0x%4.4x 0x%4.4x.\n", + mii_val[16], mii_val[17], mii_val[18]); +} +static void intel_i553(long ioaddr, int phy_id) +{ + printf(" This transceiver is 100baseT4 only! Register 16 is %4.4x.\n", + mii_val[16]); +} +/* http://www.enablesemi.com/cgi-bin/byteserve/Products/Docs/3VCardBus.pdf */ +static void enablesemi(long ioaddr, int phy_id) +{ + printf(" Isolated %d times, %d false carrier events, %d Rx errors.\n", + mii_val[18], mii_val[19], mii_val[21]); + printf(" Cable polarity is %s, 100Mb PLL is %slocked.\n", + mii_val[28]&0x8000 ? "reversed" : "normal", + mii_val[27]&0x2000 ? "" : "un"); +} +/* The amd79c901 contains both PNA and 10/100 management registers. + http://www.amd.com/products/npd/techdocs/22304.pdf +*/ +static void amd_pna(long ioaddr, int phy_id) +{ + printf(" HomePNA transceiver in %s speed, %s power mode.\n", + mii_val[16] & 4 ? "high" : "low", + mii_val[16] & 2 ? "high" : "low"); + printf(" HomePNA noise level %d, peak power %d..\n", + mii_val[25] >> 8, mii_val[25] & 0xff); +} +static void amd_tx(long ioaddr, int phy_id) +{ + int mii_reg25 = mii_val[25]; + printf(" AMD vendor specific registers: 0x%4.4x 0x%4.4x 0x%4.4x.\n", + mii_val[16], mii_val[17], mii_val[18]); + printf(" The link is %s in 10%s %s duplex mode, autonegotiation state " + "has%s changed.\n", + mii_reg25 & 8 ? "up" : "down", + mii_reg25 & 1 ? "0baseTx" : "baseT", + mii_reg25 & 4 ? "full" : "half", + mii_reg25 & 2 ? "" : " not"); +} + +static const struct msg_tbl admtek_reg21[] = { + {0x4000, " Link test diabled: Ignoring lack of 10baseT link beat."}, + {0x2000, " Link forced up."}, + {0x1000, " Tx jabber check disabled."}, + {0x0080, " Transmitting 'Far End Fault'!"}, + {0x0040, " Rx error count full."}, + {0x0008, " Remote loop back enabled."}, + {0, 0}, +}; + +static void admtek(long ioaddr, int phy_id) +{ + + printf(" ADMtek vendor specific registers information:\n" + " Cable length is approximately %d meters.\n" + " The receiver has lost lock %d times since last check and " + "had %d error events.\n", + ((mii_val[20] & 0x00f0) >> 4)*10, + mii_val[23], mii_val[23]); + msg_if_set(mii_val[21], admtek_reg21); + tdk78q2120(ioaddr, phy_id); +} + +static void lu3x31(long ioaddr, int phy_id) +{ + printf(" Lucent vendor specific registers 17: 0x%4.4x" + " 29: 0x%4.4x 30: 0x%4.4x 31: 0x%4.4x.\n", + mii_val[17], mii_val[29], mii_val[30], mii_val[31]); +} + +static const struct msg_tbl myson_reg16[] = { + {0x0080, " Far end fault enabled."}, + {0x0040, " Transformer ratio 1.25:1."}, + {0x0020, " Polarity correction diabled."}, + {0x0010, " Link is forced up regardless of link beat."}, + {0x0004, " Bypass Jabber check."}, + {0x0001, " 100baseFx mode selected."}, + {0, 0}, +}; + +static void myson981(long ioaddr, int phy_id) +{ + int i, mii_reg17 = mii_val[17]; + + printf(" Myson mtd981 extra registers: %4.4x %4.4x %4.4x %4.4x.\n", + mii_val[16], mii_val[17], mii_val[18], mii_val[19]); + msg_if_set(mii_val[16] & 0xC800, tdk_reg16); + msg_if_set(mii_val[16], myson_reg16); + + if (mii_reg17 & 0x00ff) { + printf(" Events since last read:"); + for (i = 0; i < 8; i++) + if (mii_reg17 & (1 << i)) + printf(" %s", tdk_events[i]); + } else + printf(" No new link status events."); + if (mii_reg17 & 0xff00) { + printf("\n Events that will raise an interrupt:"); + for (i = 0; i < 8; i++) + if (mii_reg17 & (0x100 << i)) + printf(" %s", tdk_events[i]); + } + printf("\n"); + + return; +} + +/* These are much like the TDK events in reversed order. */ +static const struct msg_tbl via_reg17[] = { + {0x0001, "Auto-Negotiation complete"}, + {0x0002, "Remote fault detected"}, + {0x0004, "Link failure detected"}, + {0x0008, "Bad Start Stream detected"}, + {0x0010, "Parallel detection fault"}, + {0x0020, "Extended negotiation page received"}, + {0x0040, "5B/4B code error detected"}, + {0x0080, "Jabber detected"}, + {0, 0}, +}; + +static void via_tahoe(long ioaddr, int phy_id) +{ + int mii_reg16 = mii_val[16]; + int mii_reg17 = mii_val[17]; + int mii_reg18 = mii_val[18]; + + printf(" VIA Tahoe extended registers: 16 %4.4x #17 %4.4x #18 %4.4x.\n", + mii_reg16, mii_reg17, mii_reg18); + msg_if_set_fmt(mii_reg17, via_reg17, " %s\n"); + printf(" Link %s 10%s Mbps %s duplex\n", + mii_reg18 & 0x2000 ? "up" : "down", + mii_reg18 & 0x0400 ? "0" : "", + mii_reg18 & 0x0800 ? "full" : "half"); +} + +/* Information from + http://www.via.com.tw/en/datasheet/DS6103110.pdf +*/ + +static void via_vt6103(long ioaddr, int phy_id) +{ + printf(" VIA vt6103 error counts since the last check:\n" + " The link has failed %d times.\n" + " The receiver has lost lock %d times.\n" + " There have been %d false carrier/SQE error.\n", + mii_val[21], mii_val[22], mii_val[23]); +} + +/* Information from + http://www.via.com.tw/en/Networking/DS6105LOM100.pdf +*/ + +static void via_vt6105(long ioaddr, int phy_id) +{ + printf(" VIA vt6105 PHY status:\n" + " Duplex %s speed %s\n", + mii_val[20] & 0x0001 ? "full" : "half", + mii_val[20] & 0x0002 ? "100" : "10"); +} + +/* Information from + http://www.via.com.tw/en/Networking/DS6105LOM100.pdf +*/ +static void intel(long ioaddr, int phy_id) +{ + printf(" Intel 8255* PHY #%d extended management registers:\n" + " Error counts, cleared when read:\n" + " False carriers %d\n" + " Link disconnects %d\n" + " Receive errors %d\n" + " Rx symbol errors %d.\n" + " Rx 10Mbps Early End-Of-Frame errors %d.\n" + " Rx 100Mbps Early End-Of-Frame errors %d.\n" + " Tx jabber errors %d.\n", + mii_val[18], + mii_val[19], mii_val[20], mii_val[21], mii_val[22], mii_val[23], + mii_val[24], mii_val[25]); +} + + +/* + * Local variables: + * compile-command: "cc -O -Wall -c libmii.c" + * c-indent-level: 4 + * c-basic-offset: 4 + * tab-width: 4 + * End: + */ diff --git a/recipes-extended/mii-diag/mii-diag-2.11/mii-diag.c b/recipes-extended/mii-diag/mii-diag-2.11/mii-diag.c new file mode 100644 index 0000000..3c47e4a --- /dev/null +++ b/recipes-extended/mii-diag/mii-diag-2.11/mii-diag.c @@ -0,0 +1,648 @@ +/* Mode: C; + * mii-diag.c: Examine and set the MII registers of a network interfaces. + + Usage: mii-diag [-vw] interface. + + This program reads and writes the Media Independent Interface (MII) + management registers on network transceivers. The registers control + and report network link settings and errors. Examples are link speed, + duplex, capabilities advertised to the link partner, status LED + indications and link error counters. + + Notes: + The compile-command is at the end of this source file. + This program works with drivers that implement MII ioctl() calls. + + Written/copyright 1997-2003 by Donald Becker <becker@scyld.com> + + This program is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public + License as published by the Free Software Foundation. + + The author may be reached as becker@scyld.com, or C/O + Scyld Computing Corporation + 914 Bay Ridge Road, Suite 220 + Annapolis MD 21403 + + References + http://scyld.com/expert/mii-status.html + http://scyld.com/expert/NWay.html + http://www.national.com/pf/DP/DP83840.html +*/ + +static char version[] = +"mii-diag.c:v2.11 3/21/2005 Donald Becker (becker@scyld.com)\n" +" http://www.scyld.com/diag/index.html\n"; + +static const char usage_msg[] = +"Usage: %s [--help] [-aDfrRvVw] [-AF <speed+duplex>] [--watch] <interface>.\n"; +static const char long_usage_msg[] = +"Usage: %s [-aDfrRvVw] [-AF <speed+duplex>] [--watch] <interface>.\n" +"\n" +" This program configures and monitors the transceiver management registers\n" +" for network interfaces. It uses the Media Independent Interface (MII)\n" +" standard with additional Linux-specific controls to communicate with the\n" +" underlying device driver. The MII registers control and report network\n" +" link settings and errors. Examples are link speed, duplex, capabilities\n" +" advertised to the link partner, status LED indications and link error\n" +" counters.\n" +"\n" +" The common usage is\n" +" mii-diag eth0\n" +"\n" +" The default interface is \"eth0\".\n" +" Frequently used options are\n" +" -A --advertise <speed|setting>\n" +" -F --fixed-speed <speed>\n" +" Speed is one of: 100baseT4, 100baseTx, 100baseTx-FD, 100baseTx-HD,\n" +" 10baseT, 10baseT-FD, 10baseT-HD\n" +" -s --status Return exit status 2 if there is no link beat.\n" +"\n" +" Less frequently used options are\n" +" -a --all-interfaces Show the status all interfaces\n" +" (Not recommended with options that change settings.)\n" +" -D --debug\n" +" -g --read-parameters Get driver-specific parameters.\n" +" -G --set-parameters PARMS Set driver-specific parameters.\n" +" Parameters are comma separated, missing elements retain existing value.\n" +" -M --msg-level LEVEL Set the driver message bit map.\n" +" -p --phy ADDR Set the PHY (MII address) to report.\n" +" -r --restart Restart the link autonegotiation.\n" +" -R --reset Reset the transceiver.\n" +" -v --verbose Report each action taken.\n" +" -V --version Emit version information.\n" +" -w --watch Continuously monitor the transceiver and report changes.\n" +"\n" +" This command returns success (zero) if the interface information can be\n" +" read. If the --status option is passed, a zero return means that the\n" +" interface has link beat.\n"; + +#include <unistd.h> +#include <stdlib.h> +#include <stdio.h> +#include <ctype.h> +#include <string.h> +#include <errno.h> +#include <fcntl.h> +#include <getopt.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <sys/ioctl.h> +#include <net/if.h> +#ifdef use_linux_libc5 +#include <linux/if_arp.h> +#include <linux/if_ether.h> +#endif + +typedef u_int32_t u32; +typedef u_int16_t u16; +typedef u_int8_t u8; + +#if defined(SIOCGPARAMS) && SIOCGPARAMS != SIOCDEVPRIVATE+3 +#error Changed definition for SIOCGPARAMS +#else +#define SIOCGPARAMS (SIOCDEVPRIVATE+3) /* Read operational parameters. */ +#define SIOCSPARAMS (SIOCDEVPRIVATE+4) /* Set operational parameters. */ +#endif + +const char shortopts[] = "aA:C:DfF:gG:hmM:p:rRsvVw?"; +struct option longopts[] = { + /* { name has_arg *flag val } */ + {"all-interfaces", 0, 0, 'a'}, /* Show all interfaces. */ + {"advertise", 1, 0, 'A'}, /* Change the capabilities advertised. */ + {"BMCR", 1, 0, 'C'}, /* Set the control register. */ + {"debug", 0, 0, 'D'}, /* Increase the debug level. */ + {"force", 0, 0, 'f'}, /* Force the operation. */ + {"fixed-speed", 1, 0, 'F'}, /* Fixed speed name. */ + {"read-parameters", 0, 0, 'g'}, /* Show general settings values. */ + {"set-parameters", 1, 0, 'G'}, /* Write general settings values. */ + {"help", 0, 0, 'h'}, /* Print a long usage message. */ + {"monitor", 0, 0, 'm'}, /* Monitor status register. */ + {"msg-level", 1, 0, 'M'}, /* Set the driver message level. */ + {"phy", 1, 0, 'p'}, /* Set the PHY (MII address) to report. */ + {"restart", 0, 0, 'r'}, /* Restart the link negotiation */ + {"reset", 0, 0, 'R'}, /* Reset the transceiver. */ + {"status", 0, 0, 's'}, /* Non-zero exit status w/ no link beat. */ + {"verbose", 0, 0, 'v'}, /* Report each action taken. */ + {"version", 0, 0, 'V'}, /* Emit version information. */ + {"watch", 0, 0, 'w'}, /* Constantly monitor the port. */ + {"error", 0, 0, '?'}, /* Return the error message. */ + { 0, 0, 0, 0 } +}; + +/* Usually in libmii.c, but trivial substitions are below. */ +extern int show_mii_details(long ioaddr, int phy_id); +extern void monitor_mii(long ioaddr, int phy_id); +int show_mii_details(long ioaddr, int phy_id) __attribute__((weak)); +void monitor_mii(long ioaddr, int phy_id) __attribute__((weak)); + + +/* Command-line flags. */ +unsigned int opt_a = 0, /* Show-all-interfaces flag. */ + opt_f = 0, /* Force the operation. */ + opt_g = 0, + opt_G = 0, + verbose = 0, /* Verbose flag. */ + debug = 0, + opt_version = 0, + opt_restart = 0, + opt_reset = 0, + opt_status = 0, + opt_watch = 0; +static int msg_level = -1; +static int set_BMCR = -1; +static int nway_advertise = 0; +static int fixed_speed = -1; +static int override_phy = -1; +char *opt_G_string = NULL; + +/* Internal values. */ +int new_ioctl_nums; +int skfd = -1; /* AF_INET socket for ioctl() calls. */ +struct ifreq ifr; + +int do_one_xcvr(int skfd); +int show_basic_mii(long ioaddr, int phy_id); +int mdio_read(int skfd, int phy_id, int location); +void mdio_write(int skfd, int phy_id, int location, int value); +static int parse_advertise(const char *capabilities); +static void monitor_status(long ioaddr, int phy_id); + + +int +main(int argc, char **argv) +{ + int c, errflag = 0; + char **spp, *ifname; + char *progname = rindex(argv[0], '/') ? rindex(argv[0], '/')+1 : argv[0]; + + while ((c = getopt_long(argc, argv, shortopts, longopts, 0)) != EOF) + switch (c) { + case 'a': opt_a++; break; + case 'A': nway_advertise |= parse_advertise(optarg); + if (nway_advertise == -1) errflag++; + break; + case 'C': set_BMCR = strtoul(optarg, NULL, 16); break; + case 'D': debug++; break; + case 'f': opt_f++; break; + case 'F': fixed_speed = parse_advertise(optarg); + if (fixed_speed == -1) errflag++; + break; + case 'g': opt_g++; break; + case 'G': opt_G++; opt_G_string = strdup(optarg); break; + case 'm': opt_watch++; opt_status++; break; + case 'M': msg_level = strtoul(optarg, NULL, 0); break; + case 'h': fprintf(stderr, long_usage_msg, progname); return 0; + case 'p': override_phy = atoi(optarg); break; + case 'r': opt_restart++; break; + case 'R': opt_reset++; break; + case 's': opt_status++; break; + case 'v': verbose++; break; + case 'V': opt_version++; break; + case 'w': opt_watch++; break; + case '?': errflag++; break; + } + if (errflag) { + fprintf(stderr, usage_msg, progname); + return 2; + } + + if (verbose || opt_version) + printf(version); + + /* Open a basic socket. */ + if ((skfd = socket(AF_INET, SOCK_DGRAM,0)) < 0) { + perror("socket"); + return 1; + } + + if (debug) + fprintf(stderr, "DEBUG: argc=%d, optind=%d and argv[optind] is %s.\n", + argc, optind, argv[optind]); + + /* No remaining args means show all interfaces. */ + if (optind == argc) { + ifname = "eth0"; + fprintf(stderr, "Using the default interface 'eth0'.\n"); + } else { + /* Copy the interface name. */ + spp = argv + optind; + ifname = *spp++; + } + + if (ifname == NULL) { + ifname = "eth0"; + fprintf(stderr, "Using the default interface 'eth0'.\n"); + } + + /* Verify that the interface supports the ioctl(), and if + it is using the new or old SIOCGMIIPHY value (grrr...). + */ + { + u16 *data = (u16 *)(&ifr.ifr_data); + + strncpy(ifr.ifr_name, ifname, IFNAMSIZ); + data[0] = 0; + + if (ioctl(skfd, 0x8947, &ifr) >= 0) { + new_ioctl_nums = 1; + } else if (ioctl(skfd, SIOCDEVPRIVATE, &ifr) >= 0) { + new_ioctl_nums = 0; + } else { + fprintf(stderr, "SIOCGMIIPHY on %s failed: %s\n", ifname, + strerror(errno)); + (void) close(skfd); + return 1; + } + if (verbose) + printf(" Using the %s SIOCGMIIPHY value on PHY %d " + "(BMCR 0x%4.4x).\n", + new_ioctl_nums ? "new" : "old", data[0], data[3]); + } + + do_one_xcvr(skfd); + + (void) close(skfd); + return 0; +} + +int do_one_xcvr(int skfd) +{ + u16 *data = (u16 *)(&ifr.ifr_data); + u32 *data32 = (u32 *)(&ifr.ifr_data); + unsigned phy_id = data[0]; + + if (override_phy >= 0) { + printf("Using the specified MII PHY index %d.\n", override_phy); + phy_id = override_phy; + } + + if (opt_g || opt_G || msg_level >= 0) { + if (ioctl(skfd, SIOCGPARAMS, &ifr) < 0) { + fprintf(stderr, "SIOCGPARAMS on %s failed: %s\n", ifr.ifr_name, + strerror(errno)); + return -1; + } + } + if (opt_g) { + int i; + printf("Driver general parameter settings:"); + for (i = 0; i*sizeof(u32) < sizeof(ifr.ifr_ifru); i++) { + printf(" %d", data32[i]); + } + printf(".\n"); + } + if (opt_G) { + /* Set up to four arbitrary driver parameters from the -G parameter. + The format is comma separated integers, with a missing element + retaining the previous value. + */ + char *str = opt_G_string; + int i; + for (i = 0; str && i < 4; i++) { + char *endstr; + u32 newval = strtol(str, &endstr, 0); + if (debug) + printf(" parse string '%s' value %d end '%s'.\n", + str, newval, endstr); + if (str == endstr) { + if (endstr[0] == ',') /* No parameter */ + str = endstr+1; + else { + fprintf(stderr, "Invalid driver parameter '%s'.\n", str); + str = index(str, ','); + } + } else if (endstr[0] == ',') { + data32[i] = newval; + str = endstr + 1; + } else if (endstr[0] == 0) { + data32[i] = newval; + break; + } + } + printf("Setting new driver general parameters:"); + for (i = 0; i*sizeof(u32) < sizeof(ifr.ifr_ifru); i++) { + printf(" %d", data32[i]); + } + printf(".\n"); + if (ioctl(skfd, SIOCSPARAMS, &ifr) < 0) { + fprintf(stderr, "SIOCSPARAMS on %s failed: %s\n", ifr.ifr_name, + strerror(errno)); + return -1; + } + } + if (msg_level >= 0) { + data32[0] = msg_level; + if (ioctl(skfd, SIOCSPARAMS, &ifr) < 0) { + fprintf(stderr, "SIOCSPARAMS on %s failed: %s\n", ifr.ifr_name, + strerror(errno)); + return -1; + } + } + + if (opt_reset) { + printf("Resetting the transceiver...\n"); + mdio_write(skfd, phy_id, 0, 0x8000); + } + /* Note: PHY addresses > 32 are pseudo-MII devices, usually built-in. */ + if (phy_id < 64 && nway_advertise > 0) { + printf(" Setting the media capability advertisement register of " + "PHY #%d to 0x%4.4x.\n", phy_id, nway_advertise | 1); + mdio_write(skfd, phy_id, 4, nway_advertise | 1); + mdio_write(skfd, phy_id, 0, 0x1000); + } + + if (opt_restart) { + printf("Restarting negotiation...\n"); + mdio_write(skfd, phy_id, 0, 0x0000); + mdio_write(skfd, phy_id, 0, 0x1200); + } + /* To force 100baseTx-HD do mdio_write(skfd, phy_id, 0, 0x2000); */ + if (fixed_speed >= 0) { + int reg0_val = 0; + if (fixed_speed & 0x0180) /* 100mpbs */ + reg0_val |= 0x2000; + if ((fixed_speed & 0x0140) && /* A full duplex type and */ + ! (fixed_speed & 0x0820)) /* no half duplex types. */ + reg0_val |= 0x0100; + printf("Setting the speed to \"fixed\", Control register %4.4x.\n", + reg0_val); + mdio_write(skfd, phy_id, 0, reg0_val); + } + if (set_BMCR >= 0) { + printf("Setting the Basic Mode Control Register to 0x%4.4x.\n", + set_BMCR); + mdio_write(skfd, phy_id, 0, set_BMCR); + } + + if (opt_watch && opt_status) + monitor_status(skfd, phy_id); + + show_basic_mii(skfd, phy_id); +#ifdef LIBMII + if (verbose) + show_mii_details(skfd, phy_id); +#else + if (verbose || debug) { + int mii_reg, mii_val; + printf(" MII PHY #%d transceiver registers:", phy_id); + for (mii_reg = 0; mii_reg < 32; mii_reg++) { + mii_val = mdio_read(skfd, phy_id, mii_reg); + printf("%s %4.4x", (mii_reg % 8) == 0 ? "\n " : "", + mii_val); + } + printf("\n"); + } +#endif + + if (opt_watch) + monitor_mii(skfd, phy_id); + if (opt_status && + (mdio_read(skfd, phy_id, 1) & 0x0004) == 0) + exit(2); + return 0; +} + +int mdio_read(int skfd, int phy_id, int location) +{ + u16 *data = (u16 *)(&ifr.ifr_data); + + data[0] = phy_id; + data[1] = location; + + if (ioctl(skfd, new_ioctl_nums ? 0x8948 : SIOCDEVPRIVATE+1, &ifr) < 0) { + fprintf(stderr, "SIOCGMIIREG on %s failed: %s\n", ifr.ifr_name, + strerror(errno)); + return -1; + } + return data[3]; +} + +void mdio_write(int skfd, int phy_id, int location, int value) +{ + u16 *data = (u16 *)(&ifr.ifr_data); + + data[0] = phy_id; + data[1] = location; + data[2] = value; + + if (ioctl(skfd, new_ioctl_nums ? 0x8949 : SIOCDEVPRIVATE+2, &ifr) < 0) { + fprintf(stderr, "SIOCSMIIREG on %s failed: %s\n", ifr.ifr_name, + strerror(errno)); + } +} + +/* Parse the command line argument for advertised capabilities. */ +static int parse_advertise(const char *capabilities) +{ + const char *mtypes[] = { + "100baseT4", "100baseTx", "100baseTx-FD", "100baseTx-HD", + "10baseT", "10baseT-FD", "10baseT-HD", 0, + }; + char *endptr; + int cap_map[] = { 0x0200, 0x0180, 0x0100, 0x0080, 0x0060, 0x0040, 0x0020,}; + int i; + if ( ! capabilities) { + fprintf(stderr, "You passed -A 'NULL'. You must provide a media" + " list to advertise!\n"); + return -1; + } + if (debug) + fprintf(stderr, "Advertise string is '%s'.\n", capabilities); + for (i = 0; mtypes[i]; i++) + if (strcasecmp(mtypes[i], capabilities) == 0) + return cap_map[i]; + if ((i = strtol(capabilities, &endptr, 16)) <= 0xffff && endptr[0] == 0) + return i; + fprintf(stderr, "Invalid media advertisement value '%s'.\n" + " Either pass a numeric value or one of the following names:\n", + capabilities); + for (i = 0; mtypes[i]; i++) + fprintf(stderr, " %-14s %3.3x\n", mtypes[i], cap_map[i]); + return -1; +} + +/* Trivial versions if we don't link against libmii.c */ +static const char *media_names[] = { + "10baseT", "10baseT-FD", "100baseTx", "100baseTx-FD", "100baseT4", + "Flow-control", 0, +}; +/* Various non-good bits in the command register. */ +static const char *bmcr_bits[] = { + " Internal Collision-Test enabled!\n", "", /* 0x0080,0x0100 */ + " Restarted auto-negotiation in progress!\n", + " Transceiver isolated from the MII!\n", + " Transceiver powered down!\n", "", "", + " Transceiver in loopback mode!\n", + " Transceiver currently being reset!\n", +}; + +int show_basic_mii(long ioaddr, int phy_id) +{ + int mii_reg, i; + u16 mii_val[32]; + u16 bmcr, bmsr, new_bmsr, nway_advert, lkpar; + + for (mii_reg = 0; mii_reg < 8; mii_reg++) + mii_val[mii_reg] = mdio_read(ioaddr, phy_id, mii_reg); + if ( ! verbose) { + printf("Basic registers of MII PHY #%d: ", phy_id); + for (mii_reg = 0; mii_reg < 8; mii_reg++) + printf(" %4.4x", mii_val[mii_reg]); + printf(".\n"); + } + + if (mii_val[0] == 0xffff || mii_val[1] == 0x0000) { + printf(" No MII transceiver present!.\n"); + if (! opt_f) { + printf(" Use '--force' to view the information anyway.\n"); + return -1; + } + } + /* Descriptive rename. */ + bmcr = mii_val[0]; + bmsr = mii_val[1]; + nway_advert = mii_val[4]; + lkpar = mii_val[5]; + + if (lkpar & 0x4000) { + int negotiated = nway_advert & lkpar & 0x3e0; + int max_capability = 0; + /* Scan for the highest negotiated capability, highest priority + (100baseTx-FDX) to lowest (10baseT-HDX). */ + int media_priority[] = {8, 9, 7, 6, 5}; /* media_names[i-5] */ + printf(" The autonegotiated capability is %4.4x.\n", negotiated); + for (i = 0; media_priority[i]; i++) + if (negotiated & (1 << media_priority[i])) { + max_capability = media_priority[i]; + break; + } + if (max_capability) + printf("The autonegotiated media type is %s.\n", + media_names[max_capability - 5]); + else + printf("No common media type was autonegotiated!\n" + "This is extremely unusual and typically indicates a " + "configuration error.\n" "Perhaps the advertised " + "capability set was intentionally limited.\n"); + } + printf(" Basic mode control register 0x%4.4x:", bmcr); + if (bmcr & 0x1000) + printf(" Auto-negotiation enabled.\n"); + else + printf(" Auto-negotiation disabled, with\n" + " Speed fixed at 10%s mbps, %s-duplex.\n", + bmcr & 0x2000 ? "0" : "", + bmcr & 0x0100 ? "full":"half"); + for (i = 0; i < 9; i++) + if (bmcr & (0x0080<<i)) + printf(bmcr_bits[i]); + + new_bmsr = mdio_read(ioaddr, phy_id, 1); + if ((bmsr & 0x0016) == 0x0004) + printf( " You have link beat, and everything is working OK.\n"); + else + printf(" Basic mode status register 0x%4.4x ... %4.4x.\n" + " Link status: %sestablished.\n", + bmsr, new_bmsr, + bmsr & 0x0004 ? "" : + (new_bmsr & 0x0004) ? "previously broken, but now re" : "not "); + if (verbose) { + printf(" This transceiver is capable of "); + if (bmsr & 0xF800) { + for (i = 15; i >= 11; i--) + if (bmsr & (1<<i)) + printf(" %s", media_names[i-11]); + } else + printf("<Warning! No media capabilities>"); + printf(".\n"); + printf(" %s to perform Auto-negotiation, negotiation %scomplete.\n", + bmsr & 0x0008 ? "Able" : "Unable", + bmsr & 0x0020 ? "" : "not "); + } + + if (bmsr & 0x0010) + printf(" Remote fault detected!\n"); + if (bmsr & 0x0002) + printf(" *** Link Jabber! ***\n"); + + if (lkpar & 0x4000) { + printf(" Your link partner advertised %4.4x:", + lkpar); + for (i = 5; i >= 0; i--) + if (lkpar & (0x20<<i)) + printf(" %s", media_names[i]); + printf("%s.\n", lkpar & 0x0400 ? ", w/ 802.3X flow control" : ""); + } else if (lkpar & 0x00A0) + printf(" Your link partner is generating %s link beat (no" + " autonegotiation).\n", + lkpar & 0x0080 ? "100baseTx" : "10baseT"); + else if ( ! (bmcr & 0x1000)) + printf(" Link partner information is not exchanged when in" + " fixed speed mode.\n"); + else if ( ! (new_bmsr & 0x004)) + ; /* If no partner, do not report status. */ + else if (lkpar == 0x0001 || lkpar == 0x0000) { + printf(" Your link partner does not do autonegotiation, and this " + "transceiver type\n does not report the sensed link " + "speed.\n"); + } else + printf(" Your link partner is strange, status %4.4x.\n", lkpar); + + printf(" End of basic transceiver information.\n\n"); + return 0; +} + +static void monitor_status(long ioaddr, int phy_id) +{ + unsigned int baseline_1 = 0x55555555; /* Always show initial status. */ + + while (1) { + unsigned int new_1 = mdio_read(ioaddr, phy_id, 1); + if (new_1 != baseline_1) { + printf("%-12s 0x%4.4x 0x%4.4x\n", + new_1 & 0x04 ? (new_1==0xffff ? "unknown" : "up") : + new_1 & 0x20 ? "negotiating" : "down", + new_1, mdio_read(ioaddr, phy_id, 5)); + fflush(stdout); + baseline_1 = new_1; + } + sleep(1); + } +} + +int show_mii_details(long ioaddr, int phy_id) +{ + int mii_reg, mii_val; + printf(" MII PHY #%d transceiver registers:", phy_id); + for (mii_reg = 0; mii_reg < 32; mii_reg++) { + mii_val = mdio_read(skfd, phy_id, mii_reg); + printf("%s %4.4x", (mii_reg % 8) == 0 ? "\n " : "", + mii_val); + } + printf("\nThis version of 'mii-diag' has not been linked with " + "the libmii.c library.\n" + " That library provides extended transceiver status reports.\n"); + return 0; +} + +void monitor_mii(long ioaddr, int phy_id) +{ + fprintf(stderr, "\nThis version of 'mii-diag' has not been linked with " + "the libmii.c library \n" + " required for the media monitor option.\n"); +} + + + +/* + * Local variables: + * version-control: t + * kept-new-versions: 5 + * c-indent-level: 4 + * c-basic-offset: 4 + * tab-width: 4 + * compile-command: "gcc -Wall -Wstrict-prototypes -O mii-diag.c -DLIBMII libmii.c -o mii-diag" + * simple-compile-command: "gcc mii-diag.c -o mii-diag" + * End: + */ diff --git a/recipes-extended/mii-diag/mii-diag_2.11.bb b/recipes-extended/mii-diag/mii-diag_2.11.bb new file mode 100644 index 0000000..708789f --- /dev/null +++ b/recipes-extended/mii-diag/mii-diag_2.11.bb @@ -0,0 +1,25 @@ +DESCRIPTION = "Examines and sets the MII registers of network cards." +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" +SECTION = "console/network" +PRIORITY = "optional" +PR = "r0" + +S = "${WORKDIR}/" + +#PACKAGE_STRIP = "no" + +SRC_URI = "file://mii-diag.c \ + file://libmii.c" + +FILES_${PN} = "${base_sbindir}/mii-diag" + +do_compile() { +${CC} -O -c libmii.c +${CC} -O -DLIBMII mii-diag.c libmii.o -o mii-diag ${LDFLAGS} +} + +do_install() { + install -d ${D}/${base_sbindir} + install -m 0755 ${S}/mii-diag ${D}/${base_sbindir}/ +} diff --git a/recipes-extended/multitech/sms-utils.inc b/recipes-extended/multitech/sms-utils.inc new file mode 100644 index 0000000..9deea31 --- /dev/null +++ b/recipes-extended/multitech/sms-utils.inc @@ -0,0 +1,22 @@ +DESCRIPTION = "SMS Utilities" +HOMEPAGE = "http://www.multitech.net/" +SECTION = "console/utils" +PRIORITY = "optional" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" +DEPENDS = "libesmtp libyaml" + +SRCREV = "${PV}" +SRC_URI = "git://git.multitech.net/sms-utils.git;protocol=git" +S = "${WORKDIR}/git" + +inherit autotools + +PARALLEL_MAKE = "" + +do_install_append() { + install -d ${D}${datadir}/${PN} + install -m 0644 src/sms.config.example ${D}${datadir}/${PN}/ +} + +FILES_${PN} += "${datadir}/${PN}/sms.config.example" diff --git a/recipes-extended/multitech/sms-utils_0.0.5.bb b/recipes-extended/multitech/sms-utils_0.0.5.bb new file mode 100644 index 0000000..a6177d7 --- /dev/null +++ b/recipes-extended/multitech/sms-utils_0.0.5.bb @@ -0,0 +1,3 @@ +require sms-utils.inc + +PR = "r1" diff --git a/recipes-extended/multitech/venus-gps_0.1.0.bb b/recipes-extended/multitech/venus-gps_0.1.0.bb new file mode 100644 index 0000000..a518297 --- /dev/null +++ b/recipes-extended/multitech/venus-gps_0.1.0.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "SkyTraq Venus GPS Example" +HOMEPAGE = "http://www.multitech.net/" +SECTION = "console/network" +PRIORITY = "optional" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" +PR = "r0" + +SRC_URI = "git://git.multitech.net/venus-gps.git;protocol=git;tag=${PV}" +S = "${WORKDIR}/git" + +inherit autotools + +PARALLEL_MAKE = "" diff --git a/recipes-extended/stressapptest/stressapptest_svn.bb b/recipes-extended/stressapptest/stressapptest_svn.bb new file mode 100644 index 0000000..bba0077 --- /dev/null +++ b/recipes-extended/stressapptest/stressapptest_svn.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "Stressful Application Test" +HOMEPAGE = "https://code.google.com/p/stressapptest/" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=55ea9d559f985fb4834317d8ed6b9e58" +#DEPENDS = "" + +SRCREV = "r48" +PV = "1.0.7+svn${SRCPV}" + +SRC_URI = "svn://stressapptest.googlecode.com/svn;module=trunk;protocol=http" +S = "${WORKDIR}/trunk" + +inherit autotools diff --git a/recipes-extended/uvccapture/files/makefile.patch b/recipes-extended/uvccapture/files/makefile.patch new file mode 100644 index 0000000..4733154 --- /dev/null +++ b/recipes-extended/uvccapture/files/makefile.patch @@ -0,0 +1,29 @@ +Index: uvccapture-0.5/Makefile +=================================================================== +--- uvccapture-0.5.orig/Makefile 2011-08-18 14:02:17.757628553 -0500 ++++ uvccapture-0.5/Makefile 2011-08-18 14:10:09.627899608 -0500 +@@ -1,8 +1,8 @@ +-CC=gcc +-CPP=g++ ++#CC=gcc ++#CPP=g++ + APP_BINARY=uvccapture +-VERSION = 0.4 +-PREFIX=/usr/local/bin ++VERSION = 0.5 ++PREFIX=/usr/bin + + WARNINGS = -Wall + +@@ -20,8 +20,9 @@ + rm -f *.a *.o $(APP_BINARY) core *~ log errlog + + install: +- install $(APP_BINARY) $(PREFIX) ++ install -d $(DESTDIR)$(PREFIX) ++ install -m755 $(APP_BINARY) $(DESTDIR)$(PREFIX) + + # Applications: + uvccapture: $(OBJECTS) +- $(CC) $(OBJECTS) $(XPM_LIB) $(MATH_LIB) -ljpeg -o $(APP_BINARY) ++ $(CC) $(OBJECTS) $(XPM_LIB) $(MATH_LIB) -ljpeg $(LDFLAGS) -o $(APP_BINARY) diff --git a/recipes-extended/uvccapture/files/uvccapture_use_videodev2.patch b/recipes-extended/uvccapture/files/uvccapture_use_videodev2.patch new file mode 100644 index 0000000..b6e4617 --- /dev/null +++ b/recipes-extended/uvccapture/files/uvccapture_use_videodev2.patch @@ -0,0 +1,24 @@ +--- a/uvccapture.c 2008-08-03 22:02:38 +0000 ++++ b/uvccapture.c 2011-06-09 16:31:30 +0000 +@@ -31,7 +31,7 @@ + #include <unistd.h> + #include <jpeglib.h> + #include <time.h> +-#include <linux/videodev.h> ++#include <linux/videodev2.h> + + #include "v4l2uvc.h" + + +--- a/v4l2uvc.c 2008-03-28 19:13:23 +0000 ++++ b/v4l2uvc.c 2011-06-09 16:31:30 +0000 +@@ -28,7 +28,7 @@ + #include <errno.h> + #include <unistd.h> + #include <fcntl.h> +-#include <linux/videodev.h> ++#include <linux/videodev2.h> + #include <sys/mman.h> + #include <sys/ioctl.h> + #include "v4l2uvc.h" + diff --git a/recipes-extended/uvccapture/uvccapture_0.5.bb b/recipes-extended/uvccapture/uvccapture_0.5.bb new file mode 100644 index 0000000..57fe424 --- /dev/null +++ b/recipes-extended/uvccapture/uvccapture_0.5.bb @@ -0,0 +1,15 @@ +DESCRIPTION = "Command-line tool to capture webcam images" +DEPENDS = "jpeg virtual/kernel" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM="file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" +PR = "r1" + +inherit autotools + +SRC_URI = "http://staticwave.ca/source/uvccapture/${PN}-${PV}.tar.bz2 \ + file://uvccapture_use_videodev2.patch \ + file://makefile.patch \ + " + +SRC_URI[md5sum] = "2ac901069a35b8954c11b11f6e036989" +SRC_URI[sha256sum] = "b7c262d2428f23a4c64feddd2c37c43fb39ce4c92a5a6ae0dddf28e3adc5b60e" diff --git a/recipes-java/openjdk/openjdk-7/jvm.cfg b/recipes-java/openjdk/openjdk-7/jvm.cfg new file mode 100644 index 0000000..5a21e4e --- /dev/null +++ b/recipes-java/openjdk/openjdk-7/jvm.cfg @@ -0,0 +1,43 @@ +# Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# +# +# List of JVMs that can be used as an option to java, javac, etc. +# Order is important -- first in this list is the default JVM. +# NOTE that this both this file and its format are UNSUPPORTED and +# WILL GO AWAY in a future release. +# +# You may also select a JVM in an arbitrary location with the +# "-XXaltjvm=<jvm_dir>" option, but that too is unsupported +# and may not be available in a future release. +# +-jamvm ERROR +-server ERROR +-client IGNORE +-hotspot ERROR +-classic WARN +-native ERROR +-green ERROR +-zero ALIASED_TO -server +-shark ERROR +-cacao ERROR diff --git a/recipes-java/openjdk/openjdk-7_25b30-2.3.12.bbappend b/recipes-java/openjdk/openjdk-7_25b30-2.3.12.bbappend new file mode 100644 index 0000000..c7a6e78 --- /dev/null +++ b/recipes-java/openjdk/openjdk-7_25b30-2.3.12.bbappend @@ -0,0 +1,6 @@ +# provides custom jvm.cfg to set the default JVM + +# openjdk-7 recipe is prepending to FILESPATH, so use +# FILESPATH instead of FILESEXTRAPATH or our file doesn't +# get picked up +FILESPATH_prepend := "${THISDIR}/openjdk-7:" diff --git a/recipes-java/v4l4j/v4l4j-0.9.1/makefile.patch b/recipes-java/v4l4j/v4l4j-0.9.1/makefile.patch new file mode 100644 index 0000000..52639fa --- /dev/null +++ b/recipes-java/v4l4j/v4l4j-0.9.1/makefile.patch @@ -0,0 +1,13 @@ +Index: v4l4j-0.9.1/src/Makefile +=================================================================== +--- v4l4j-0.9.1.orig/src/Makefile 2014-09-16 16:52:05.753059188 -0500 ++++ v4l4j-0.9.1/src/Makefile 2014-09-16 16:52:15.260916249 -0500 +@@ -51,7 +51,7 @@ + all: $(LIB) + + $(LIB): $(OBJ) +- $(LD) $(OBJ) $(LDFLAGS) -o $(LIB) ++ $(CC) $(OBJ) $(LDFLAGS) -o $(LIB) + + test-debug: $(LIBVIDEO_PATH)/lib$(LIBVIDEO_NAME).so + $(CC) $(INCLUDES) -DDEBUG -Wall -ggdb -DMAKETEST -c jpeg.c diff --git a/recipes-java/v4l4j/v4l4j_0.9.1.bb b/recipes-java/v4l4j/v4l4j_0.9.1.bb new file mode 100644 index 0000000..605c746 --- /dev/null +++ b/recipes-java/v4l4j/v4l4j_0.9.1.bb @@ -0,0 +1,38 @@ +DESCRIPTION = "A java package to access the Capture interface of the Video4Linux API" +DEPENDS = "jpeg icedtea6-native libv4l" +PR = "r0" +LICENSE = "GPL-3.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=87212b5f1ae096371049a12f80034f32" + +SRC_URI = "http://v4l4j.googlecode.com/files/v4l4j-${PV}.tar.gz \ + file://makefile.patch \ + " + +SRC_URI[md5sum] = "88756ca604a4701b7c453be24f948a09" +SRC_URI[sha256sum] = "cb20aad827442960090660d85f9fa24eed9417e732fdefb66e57083df3c88cf7" + +export JDK_HOME = "${STAGING_LIBDIR_NATIVE}/jvm/icedtea6-native" +STAGING_DATADIR_JAVA_NATIVE = "${STAGING_DATADIR_NATIVE}/java" + +# run ant with icedtea6-native so things get compiled with java 1.6 +ANT = "${JDK_HOME}/bin/java \ + -cp ${STAGING_DATADIR_JAVA_NATIVE}/ant.jar:${JDK_HOME}/lib/tools.jar \ + org.apache.tools.ant.launch.Launcher" + +do_compile () { + ${ANT} clean all +} + +do_install () { + install -d ${D}${libdir} + install libvideo/libvideo.so.0 ${D}${libdir} + + install -d ${D}/usr/share/java + install v4l4j.jar ${D}/usr/share/java + + install -d ${D}/usr/lib/jni + install libv4l4j.so ${D}/usr/lib/jni +} + +FILES_${PN} += "/usr/share/java /usr/lib/jni" +FILES_${PN}-dbg += "/usr/lib/jni/.debug" diff --git a/recipes-ruby/ruby-serialport/ruby-serialport_1.1.0.bb b/recipes-ruby/ruby-serialport/ruby-serialport_1.1.0.bb new file mode 100644 index 0000000..a020f90 --- /dev/null +++ b/recipes-ruby/ruby-serialport/ruby-serialport_1.1.0.bb @@ -0,0 +1,31 @@ +DESCRIPTION = "A Ruby library that provides a class for using RS-232 serial ports" +HOMEPAGE = "https://github.com/hparra/ruby-serialport" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe" +SECTION = "console/utils" +PRIORITY = "optional" + +DEPENDS = "ruby" + +PR = "r2" + +# tag v1.1.0 +SRCREV = "709e385f6d20aaadc7f3252af59250336d27e607" + +SRC_URI = "git://github.com/hparra/ruby-serialport.git;protocol=git" + +S = "${WORKDIR}/git" + +do_compile() { + ${CC} ${CFLAGS} ${LDFLAGS} -Iext/native -I${STAGING_INCDIR}/ruby-1.9.1 -I${STAGING_INCDIR}/ruby-1.9.1/arm-linux-eabi -c ext/native/*.c + ${CC} ${CFLAGS} ${LDFLAGS} --shared -o ext/native/serialport.so serialport.o posix_serialport_impl.o +} + +do_install() { + install -d ${D}${libdir}/ruby/serialport + install lib/serialport.rb ${D}${libdir}/ruby/serialport.rb + install ext/native/serialport.so -t ${D}${libdir}/ruby +} + +FILES_${PN} = "${libdir}/ruby/serialport*" +FILES_${PN}-dbg += "${libdir}/ruby/.debug" diff --git a/recipes-ruby/ruby-sqlite3/ruby-sqlite3_1.3.7.bb b/recipes-ruby/ruby-sqlite3/ruby-sqlite3_1.3.7.bb new file mode 100644 index 0000000..b3210e6 --- /dev/null +++ b/recipes-ruby/ruby-sqlite3/ruby-sqlite3_1.3.7.bb @@ -0,0 +1,28 @@ +DESCRIPTION = "Ruby bindings for the SQLite3 embedded database" +HOMEPAGE = "https://github.com/luislavena/sqlite3-ruby" +LICENSE = "custom-freely-distributable" +LIC_FILES_CHKSUM = "file://LICENSE;md5=f24ce0d57c8f8576a36e2803d35bcfec" +SECTION = "console/utils" +PRIORITY = "optional" + +DEPENDS = "ruby sqlite3" + +PR = "r0" + +SRC_URI = "git://github.com/luislavena/sqlite3-ruby.git;tag=v${PV};protocol=git" + +S = "${WORKDIR}/git" + +do_compile() { + ${CC} ${CFLAGS} ${LDFLAGS} -Iext/sqlite3 -Iext/native -I${STAGING_INCDIR}/ruby-1.9.1 -I${STAGING_INCDIR}/ruby-1.9.1/arm-linux-eabi -c ext/sqlite3/*.c + ${CC} ${CFLAGS} ${LDFLAGS} --shared -o ext/sqlite3/sqlite3_native.so *.o -lsqlite3 +} + +do_install() { + install -d ${D}${libdir}/ruby ${D}${libdir}/ruby/sqlite3 + install lib/sqlite3.rb ${D}${libdir}/ruby/sqlite3.rb + install lib/sqlite3/* ext/sqlite3/sqlite3_native.so -t ${D}${libdir}/ruby/sqlite3 +} + +FILES_${PN} = "${libdir}/ruby/sqlite3*" +FILES_${PN}-dbg += "${libdir}/ruby/sqlite3/.debug*" diff --git a/recipes-ruby/ruby/ruby_1.9.3-p429.bbappend b/recipes-ruby/ruby/ruby_1.9.3-p429.bbappend new file mode 100644 index 0000000..b31d44c --- /dev/null +++ b/recipes-ruby/ruby/ruby_1.9.3-p429.bbappend @@ -0,0 +1,4 @@ +# remove /usr/share/ri from main ruby package +# using FILES_${PN}_remove doesn't work... +FILES_ruby_remove = "${datadir}/ri" +FILES_${PN}-doc += "${datadir}/ri" diff --git a/recipes-support/jsoncpp/jsoncpp-0.5.0/Makefile b/recipes-support/jsoncpp/jsoncpp-0.5.0/Makefile new file mode 100644 index 0000000..bee6876 --- /dev/null +++ b/recipes-support/jsoncpp/jsoncpp-0.5.0/Makefile @@ -0,0 +1,46 @@ +includedir ?= /usr/include +libdir ?= /usr/lib + +CPP_SRCS += \ +src/lib_json/json_reader.cpp \ +src/lib_json/json_value.cpp \ +src/lib_json/json_writer.cpp + +OBJS += \ +json_reader.o \ +json_value.o \ +json_writer.o + +CPP_DEPS += \ +json_reader.d \ +json_value.d \ +json_writer.d + +all: libjsoncpp.a + +libjsoncpp.a: $(OBJS) + @echo 'Building target: $@' + $(AR) -r libjsoncpp.a $(OBJS) + @echo 'Finished building target: $@' + @echo ' ' + +%.o: src/lib_json/%.cpp + @echo 'Building file: $<' + $(CXX) $(CFLAGS) -Iinclude -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +install: + mkdir -p $(DESTDIR)$(libdir) + mkdir -p $(DESTDIR)$(includedir)/json + cp libjsoncpp.a $(DESTDIR)$(libdir)/ + cp include/json/* $(DESTDIR)$(includedir)/json/ + +# Other Targets +clean: + -$(RM) $(OBJS)$(CPP_DEPS) libjsoncpp.a + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + diff --git a/recipes-support/jsoncpp/jsoncpp-0.5.0/jsoncpp-0.5.0-p1.patch b/recipes-support/jsoncpp/jsoncpp-0.5.0/jsoncpp-0.5.0-p1.patch new file mode 100644 index 0000000..ce0f890 --- /dev/null +++ b/recipes-support/jsoncpp/jsoncpp-0.5.0/jsoncpp-0.5.0-p1.patch @@ -0,0 +1,13 @@ +Index: jsoncpp-src-0.5.0/include/json/value.h +=================================================================== +--- jsoncpp-src-0.5.0.orig/include/json/value.h 2012-07-11 10:26:55.766138435 -0500 ++++ jsoncpp-src-0.5.0/include/json/value.h 2012-07-11 10:30:09.816144678 -0500 +@@ -204,7 +204,7 @@ + # endif + Value( bool value ); + Value( const Value &other ); +- ~Value(); ++ virtual ~Value(); + + Value &operator=( const Value &other ); + /// Swap values. diff --git a/recipes-support/jsoncpp/jsoncpp_0.5.0.bb b/recipes-support/jsoncpp/jsoncpp_0.5.0.bb new file mode 100644 index 0000000..18f1c86 --- /dev/null +++ b/recipes-support/jsoncpp/jsoncpp_0.5.0.bb @@ -0,0 +1,32 @@ +DESCRIPTION = "Json C++ Library" +HOMEPAGE = "http://jsoncpp.sourceforge.net/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" +DEPENDS = "" +BBCLASSEXTEND = "native" +NATIVE_INSTALL_WORKS = "1" + +SRC_URI = " \ + http://sw.multitech.prv/openembedded/sources/jsoncpp-src-0.5.0.tar.gz \ + file://jsoncpp-0.5.0-p1.patch \ + file://Makefile \ +" + +PR = "r2" + +# For tarball packages (as opposed to git / svn which include the commit in the URI) +SRC_URI[md5sum] = "24482b67c1cb17aac1ed1814288a3a8f" +SRC_URI[sha256sum] = "22b14ecd0de8cdad2b6b6839f6d0804d3b84e91f42861ebd843832a26a927433" + +S = "${WORKDIR}/jsoncpp-src-${PV}" + +do_compile() { + cp ../Makefile . + oe_runmake +} + +do_install() { + oe_runmake install DESTDIR=${D} +} + + diff --git a/recipes-support/libesmtp/libesmtp_1.0.6.bb b/recipes-support/libesmtp/libesmtp_1.0.6.bb new file mode 100644 index 0000000..e421e63 --- /dev/null +++ b/recipes-support/libesmtp/libesmtp_1.0.6.bb @@ -0,0 +1,25 @@ +DESCRIPTION = "LibESMTP is a library to manage posting \ +(or submission of) electronic mail using SMTP to a \ +preconfigured Mail Transport Agent (MTA) such as Exim or PostFix." +LICENSE = "LGPLv2.1 GPLv2" +LIC_FILES_CHKSUM= "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ + file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06 \ +" +SECTION = "libs/network" +DEPENDS = "openssl" +PR = "r0" + +SRC_URI = "http://www.stafford.uklinux.net/libesmtp/libesmtp-${PV}.tar.bz2" + +inherit autotools binconfig + +EXTRA_OECONF = "--disable-isoc --with-openssl=${STAGING_LIBDIR}/.." + +FILES_${PN} = "${libdir}/lib*${SOLIBS} \ + ${libdir}/esmtp-plugins/*${SOLIBSDEV}" +FILES_${PN}-dev += "${libdir}/esmtp-plugins/*.la" +FILES_${PN}-staticdev += "${libdir}/esmtp-plugins/*.a" +FILES_${PN}-dbg += "${libdir}/esmtp-plugins/.debug/" + +SRC_URI[md5sum] = "bf3915e627fd8f35524a8fdfeed979c8" +SRC_URI[sha256sum] = "d0a61a5c52d99fa7ce7d00ed0a07e341dbda67101dbed1ab0cdae3f37db4eb0b" |