summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Gilles <jgilles@multitech.com>2013-04-18 11:29:07 -0500
committerJesse Gilles <jgilles@multitech.com>2013-04-18 11:29:07 -0500
commit55fa64278b0c3dda9144b0fac0d133e70dacdc5f (patch)
treef2cc776beb3337acb642f956466f3c8285447da9
parent5dac55e131fb9cbe1b24b5a560559b9bda56201e (diff)
parentc68bafcef449dffb836bb2c9489db597a514afb9 (diff)
Merge branch 'ruby-1.9.3' of sw.multitech.prv:/usr/local/git/jjg/corecdp-dev
-rw-r--r--multitech/recipes/busybox/busybox-1.18.3/corecdp/udhcpd.conf.example6
-rw-r--r--multitech/recipes/busybox/busybox_1.18.3.bbappend6
-rw-r--r--multitech/recipes/hostap/hostap-daemon-1.0.inc1
-rw-r--r--multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf2
-rw-r--r--multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf.example1131
-rw-r--r--multitech/recipes/hostap/hostap-daemon_1.0.bb5
-rw-r--r--multitech/recipes/images/corecdp-full-image.bb2
-rw-r--r--multitech/recipes/images/corecdp-ruby-image.bb2
-rw-r--r--multitech/recipes/images/corecdp-wifi-ap-image.bb1
-rw-r--r--multitech/recipes/libyaml/libyaml_0.1.4.bb13
-rw-r--r--multitech/recipes/ocg-scripts/ocg-scripts-1.0.inc11
-rw-r--r--multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-ap.sh58
-rw-r--r--multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-client.sh43
-rw-r--r--multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-dhcpd.sh38
-rw-r--r--multitech/recipes/ocg-scripts/ocg-scripts_1.0.bb11
-rw-r--r--multitech/recipes/ruby-serialport/ruby-serialport_1.1.0.bb28
-rw-r--r--multitech/recipes/ruby-sqlite3/ruby-sqlite3_v1.3.7.bb29
-rw-r--r--multitech/recipes/ruby/ruby.inc42
-rw-r--r--multitech/recipes/ruby/ruby/extmk.patch13
-rw-r--r--multitech/recipes/ruby/ruby/extmk_run.patch15
-rw-r--r--multitech/recipes/ruby/ruby/ruby-1.9.3-Makefile-in.patch11
-rw-r--r--multitech/recipes/ruby/ruby/ruby-1.9.3-always-use-i386.patch11
-rw-r--r--multitech/recipes/ruby/ruby/ruby-1.9.3-bignum-test-fix.patch31
-rw-r--r--multitech/recipes/ruby/ruby/ruby-1.9.3-custom-rubygems-location.patch86
-rw-r--r--multitech/recipes/ruby/ruby/ruby-1.9.3-disable-versioned-paths.patch149
-rw-r--r--multitech/recipes/ruby/ruby/ruby-1.9.3-fix-s390x-build.patch12
-rw-r--r--multitech/recipes/ruby/ruby/ruby-1.9.3-install-cross.patch16
-rw-r--r--multitech/recipes/ruby/ruby/ruby-1.9.3-mkmf-verbose.patch11
-rw-r--r--multitech/recipes/ruby/ruby/ruby-1.9.3-rubygems-1.8.11-uninstaller.patch76
-rw-r--r--multitech/recipes/ruby/ruby/ruby-1.9.3-socket-extconf-hardcode-wide-getaddr-info-test-outcome.patch26
-rw-r--r--multitech/recipes/ruby/ruby/rubygems-1.8.11-binary-extensions.patch296
-rw-r--r--multitech/recipes/ruby/ruby_1.9.3-p392.bb49
-rw-r--r--multitech/recipes/wpa-supplicant/wpa-supplicant-1.0.inc2
-rw-r--r--multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf.example11
-rw-r--r--multitech/recipes/wpa-supplicant/wpa-supplicant_1.0.bb2
35 files changed, 2241 insertions, 5 deletions
diff --git a/multitech/recipes/busybox/busybox-1.18.3/corecdp/udhcpd.conf.example b/multitech/recipes/busybox/busybox-1.18.3/corecdp/udhcpd.conf.example
new file mode 100644
index 0000000..bf34ab6
--- /dev/null
+++ b/multitech/recipes/busybox/busybox-1.18.3/corecdp/udhcpd.conf.example
@@ -0,0 +1,6 @@
+start 192.168.2.100
+end 192.168.2.254
+interface wlan0
+option subnet 255.0.0.0
+option router 192.168.2.1
+option dns 8.8.8.8 # google's DNS server
diff --git a/multitech/recipes/busybox/busybox_1.18.3.bbappend b/multitech/recipes/busybox/busybox_1.18.3.bbappend
index 93284e0..c5122bb 100644
--- a/multitech/recipes/busybox/busybox_1.18.3.bbappend
+++ b/multitech/recipes/busybox/busybox_1.18.3.bbappend
@@ -2,3 +2,9 @@ FILESEXTRA := "${THISDIR}"
FILESPATHBASE =. "${FILESEXTRA}:"
PR .= ".corecdp2"
+
+SRC_URI += "file://busybox-1.18.3/corecdp/udhcpd.conf.example"
+
+do_install_append () {
+ install -m 600 ${WORKDIR}/busybox-1.18.3/corecdp/udhcpd.conf.example ${D}${sysconfdir}/
+}
diff --git a/multitech/recipes/hostap/hostap-daemon-1.0.inc b/multitech/recipes/hostap/hostap-daemon-1.0.inc
index b0b6a44..ad7cb24 100644
--- a/multitech/recipes/hostap/hostap-daemon-1.0.inc
+++ b/multitech/recipes/hostap/hostap-daemon-1.0.inc
@@ -18,6 +18,7 @@ do_compile() {
do_install() {
install -d ${D}${sbindir} ${D}${sysconfdir}/init.d
install -m 0644 ${WORKDIR}/hostapd.conf ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/hostapd.conf.example ${D}${sysconfdir}
install -m 0755 ${S}/hostapd ${D}${sbindir}
install -m 0755 ${S}/hostapd_cli ${D}${sbindir}
install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/hostapd
diff --git a/multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf b/multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf
index 27d9e46..dc09269 100644
--- a/multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf
+++ b/multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf
@@ -83,7 +83,7 @@ ctrl_interface_group=0
##### IEEE 802.11 related configuration #######################################
# SSID to be used in IEEE 802.11 management frames
-ssid=test
+ssid=ocg-wifi
# Country code (ISO/IEC 3166-1). Used to set regulatory domain.
# Set as needed to indicate country in which device is operating.
diff --git a/multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf.example b/multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf.example
new file mode 100644
index 0000000..095851e
--- /dev/null
+++ b/multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf.example
@@ -0,0 +1,1131 @@
+##### hostapd configuration file ##############################################
+# Empty lines and lines starting with # are ignored
+
+# AP netdevice name (without 'ap' postfix, i.e., wlan0 uses wlan0ap for
+# management frames); ath0 for madwifi
+interface=wlan0
+
+# In case of madwifi, atheros, and nl80211 driver interfaces, an additional
+# configuration parameter, bridge, may be used to notify hostapd if the
+# interface is included in a bridge. This parameter is not used with Host AP
+# driver. If the bridge parameter is not set, the drivers will automatically
+# figure out the bridge interface (assuming sysfs is enabled and mounted to
+# /sys) and this parameter may not be needed.
+#
+# For nl80211, this parameter can be used to request the AP interface to be
+# added to the bridge automatically (brctl may refuse to do this before hostapd
+# has been started to change the interface mode). If needed, the bridge
+# interface is also created.
+#bridge=br0
+
+# Driver interface type (hostap/wired/madwifi/test/none/nl80211/bsd);
+# default: hostap). nl80211 is used with all Linux mac80211 drivers.
+# Use driver=none if building hostapd as a standalone RADIUS server that does
+# not control any wireless/wired driver.
+driver=nl80211
+
+# hostapd event logger configuration
+#
+# Two output method: syslog and stdout (only usable if not forking to
+# background).
+#
+# Module bitfield (ORed bitfield of modules that will be logged; -1 = all
+# modules):
+# bit 0 (1) = IEEE 802.11
+# bit 1 (2) = IEEE 802.1X
+# bit 2 (4) = RADIUS
+# bit 3 (8) = WPA
+# bit 4 (16) = driver interface
+# bit 5 (32) = IAPP
+# bit 6 (64) = MLME
+#
+# Levels (minimum value for logged events):
+# 0 = verbose debugging
+# 1 = debugging
+# 2 = informational messages
+# 3 = notification
+# 4 = warning
+#
+logger_syslog=-1
+logger_syslog_level=2
+logger_stdout=-1
+logger_stdout_level=2
+
+# Dump file for state information (on SIGUSR1)
+dump_file=/tmp/hostapd.dump
+
+# Interface for separate control program. If this is specified, hostapd
+# will create this directory and a UNIX domain socket for listening to requests
+# from external programs (CLI/GUI, etc.) for status information and
+# configuration. The socket file will be named based on the interface name, so
+# multiple hostapd processes/interfaces can be run at the same time if more
+# than one interface is used.
+# /var/run/hostapd is the recommended directory for sockets and by default,
+# hostapd_cli will use it when trying to connect with hostapd.
+ctrl_interface=/var/run/hostapd
+
+# Access control for the control interface can be configured by setting the
+# directory to allow only members of a group to use sockets. This way, it is
+# possible to run hostapd as root (since it needs to change network
+# configuration and open raw sockets) and still allow GUI/CLI components to be
+# run as non-root users. However, since the control interface can be used to
+# change the network configuration, this access needs to be protected in many
+# cases. By default, hostapd is configured to use gid 0 (root). If you
+# want to allow non-root users to use the contron interface, add a new group
+# and change this value to match with that group. Add users that should have
+# control interface access to this group.
+#
+# This variable can be a group name or gid.
+#ctrl_interface_group=wheel
+ctrl_interface_group=0
+
+
+##### IEEE 802.11 related configuration #######################################
+
+# SSID to be used in IEEE 802.11 management frames
+ssid=ocg-wifi
+
+# Country code (ISO/IEC 3166-1). Used to set regulatory domain.
+# Set as needed to indicate country in which device is operating.
+# This can limit available channels and transmit power.
+#country_code=US
+
+# Enable IEEE 802.11d. This advertises the country_code and the set of allowed
+# channels and transmit power levels based on the regulatory limits. The
+# country_code setting must be configured with the correct country for
+# IEEE 802.11d functions.
+# (default: 0 = disabled)
+#ieee80211d=1
+
+# Operation mode (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g,
+# Default: IEEE 802.11b
+hw_mode=g
+
+# Channel number (IEEE 802.11)
+# (default: 0, i.e., not set)
+# Please note that some drivers do not use this value from hostapd and the
+# channel will need to be configured separately with iwconfig.
+channel=1
+
+# Beacon interval in kus (1.024 ms) (default: 100; range 15..65535)
+beacon_int=100
+
+# DTIM (delivery traffic information message) period (range 1..255):
+# number of beacons between DTIMs (1 = every beacon includes DTIM element)
+# (default: 2)
+dtim_period=2
+
+# Maximum number of stations allowed in station table. New stations will be
+# rejected after the station table is full. IEEE 802.11 has a limit of 2007
+# different association IDs, so this number should not be larger than that.
+# (default: 2007)
+max_num_sta=255
+
+# RTS/CTS threshold; 2347 = disabled (default); range 0..2347
+# If this field is not included in hostapd.conf, hostapd will not control
+# RTS threshold and 'iwconfig wlan# rts <val>' can be used to set it.
+rts_threshold=2347
+
+# Fragmentation threshold; 2346 = disabled (default); range 256..2346
+# If this field is not included in hostapd.conf, hostapd will not control
+# fragmentation threshold and 'iwconfig wlan# frag <val>' can be used to set
+# it.
+fragm_threshold=2346
+
+# Rate configuration
+# Default is to enable all rates supported by the hardware. This configuration
+# item allows this list be filtered so that only the listed rates will be left
+# in the list. If the list is empty, all rates are used. This list can have
+# entries that are not in the list of rates the hardware supports (such entries
+# are ignored). The entries in this list are in 100 kbps, i.e., 11 Mbps = 110.
+# If this item is present, at least one rate have to be matching with the rates
+# hardware supports.
+# default: use the most common supported rate setting for the selected
+# hw_mode (i.e., this line can be removed from configuration file in most
+# cases)
+#supported_rates=10 20 55 110 60 90 120 180 240 360 480 540
+
+# Basic rate set configuration
+# List of rates (in 100 kbps) that are included in the basic rate set.
+# If this item is not included, usually reasonable default set is used.
+#basic_rates=10 20
+#basic_rates=10 20 55 110
+#basic_rates=60 120 240
+
+# Short Preamble
+# This parameter can be used to enable optional use of short preamble for
+# frames sent at 2 Mbps, 5.5 Mbps, and 11 Mbps to improve network performance.
+# This applies only to IEEE 802.11b-compatible networks and this should only be
+# enabled if the local hardware supports use of short preamble. If any of the
+# associated STAs do not support short preamble, use of short preamble will be
+# disabled (and enabled when such STAs disassociate) dynamically.
+# 0 = do not allow use of short preamble (default)
+# 1 = allow use of short preamble
+#preamble=1
+
+# Station MAC address -based authentication
+# Please note that this kind of access control requires a driver that uses
+# hostapd to take care of management frame processing and as such, this can be
+# used with driver=hostap or driver=nl80211, but not with driver=madwifi.
+# 0 = accept unless in deny list
+# 1 = deny unless in accept list
+# 2 = use external RADIUS server (accept/deny lists are searched first)
+macaddr_acl=0
+
+# Accept/deny lists are read from separate files (containing list of
+# MAC addresses, one per line). Use absolute path name to make sure that the
+# files can be read on SIGHUP configuration reloads.
+#accept_mac_file=/etc/hostapd.accept
+#deny_mac_file=/etc/hostapd.deny
+
+# IEEE 802.11 specifies two authentication algorithms. hostapd can be
+# configured to allow both of these or only one. Open system authentication
+# should be used with IEEE 802.1X.
+# Bit fields of allowed authentication algorithms:
+# bit 0 = Open System Authentication
+# bit 1 = Shared Key Authentication (requires WEP)
+auth_algs=3
+
+# Send empty SSID in beacons and ignore probe request frames that do not
+# specify full SSID, i.e., require stations to know SSID.
+# default: disabled (0)
+# 1 = send empty (length=0) SSID in beacon and ignore probe request for
+# broadcast SSID
+# 2 = clear SSID (ASCII 0), but keep the original length (this may be required
+# with some clients that do not support empty SSID) and ignore probe
+# requests for broadcast SSID
+ignore_broadcast_ssid=0
+
+# TX queue parameters (EDCF / bursting)
+# tx_queue_<queue name>_<param>
+# queues: data0, data1, data2, data3, after_beacon, beacon
+# (data0 is the highest priority queue)
+# parameters:
+# aifs: AIFS (default 2)
+# cwmin: cwMin (1, 3, 7, 15, 31, 63, 127, 255, 511, 1023)
+# cwmax: cwMax (1, 3, 7, 15, 31, 63, 127, 255, 511, 1023); cwMax >= cwMin
+# burst: maximum length (in milliseconds with precision of up to 0.1 ms) for
+# bursting
+#
+# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e):
+# These parameters are used by the access point when transmitting frames
+# to the clients.
+#
+# Low priority / AC_BK = background
+#tx_queue_data3_aifs=7
+#tx_queue_data3_cwmin=15
+#tx_queue_data3_cwmax=1023
+#tx_queue_data3_burst=0
+# Note: for IEEE 802.11b mode: cWmin=31 cWmax=1023 burst=0
+#
+# Normal priority / AC_BE = best effort
+#tx_queue_data2_aifs=3
+#tx_queue_data2_cwmin=15
+#tx_queue_data2_cwmax=63
+#tx_queue_data2_burst=0
+# Note: for IEEE 802.11b mode: cWmin=31 cWmax=127 burst=0
+#
+# High priority / AC_VI = video
+#tx_queue_data1_aifs=1
+#tx_queue_data1_cwmin=7
+#tx_queue_data1_cwmax=15
+#tx_queue_data1_burst=3.0
+# Note: for IEEE 802.11b mode: cWmin=15 cWmax=31 burst=6.0
+#
+# Highest priority / AC_VO = voice
+#tx_queue_data0_aifs=1
+#tx_queue_data0_cwmin=3
+#tx_queue_data0_cwmax=7
+#tx_queue_data0_burst=1.5
+# Note: for IEEE 802.11b mode: cWmin=7 cWmax=15 burst=3.3
+
+# 802.1D Tag (= UP) to AC mappings
+# WMM specifies following mapping of data frames to different ACs. This mapping
+# can be configured using Linux QoS/tc and sch_pktpri.o module.
+# 802.1D Tag 802.1D Designation Access Category WMM Designation
+# 1 BK AC_BK Background
+# 2 - AC_BK Background
+# 0 BE AC_BE Best Effort
+# 3 EE AC_BE Best Effort
+# 4 CL AC_VI Video
+# 5 VI AC_VI Video
+# 6 VO AC_VO Voice
+# 7 NC AC_VO Voice
+# Data frames with no priority information: AC_BE
+# Management frames: AC_VO
+# PS-Poll frames: AC_BE
+
+# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e):
+# for 802.11a or 802.11g networks
+# These parameters are sent to WMM clients when they associate.
+# The parameters will be used by WMM clients for frames transmitted to the
+# access point.
+#
+# note - txop_limit is in units of 32microseconds
+# note - acm is admission control mandatory flag. 0 = admission control not
+# required, 1 = mandatory
+# note - here cwMin and cmMax are in exponent form. the actual cw value used
+# will be (2^n)-1 where n is the value given here
+#
+wmm_enabled=1
+#
+# WMM-PS Unscheduled Automatic Power Save Delivery [U-APSD]
+# Enable this flag if U-APSD supported outside hostapd (eg., Firmware/driver)
+#uapsd_advertisement_enabled=1
+#
+# Low priority / AC_BK = background
+wmm_ac_bk_cwmin=4
+wmm_ac_bk_cwmax=10
+wmm_ac_bk_aifs=7
+wmm_ac_bk_txop_limit=0
+wmm_ac_bk_acm=0
+# Note: for IEEE 802.11b mode: cWmin=5 cWmax=10
+#
+# Normal priority / AC_BE = best effort
+wmm_ac_be_aifs=3
+wmm_ac_be_cwmin=4
+wmm_ac_be_cwmax=10
+wmm_ac_be_txop_limit=0
+wmm_ac_be_acm=0
+# Note: for IEEE 802.11b mode: cWmin=5 cWmax=7
+#
+# High priority / AC_VI = video
+wmm_ac_vi_aifs=2
+wmm_ac_vi_cwmin=3
+wmm_ac_vi_cwmax=4
+wmm_ac_vi_txop_limit=94
+wmm_ac_vi_acm=0
+# Note: for IEEE 802.11b mode: cWmin=4 cWmax=5 txop_limit=188
+#
+# Highest priority / AC_VO = voice
+wmm_ac_vo_aifs=2
+wmm_ac_vo_cwmin=2
+wmm_ac_vo_cwmax=3
+wmm_ac_vo_txop_limit=47
+wmm_ac_vo_acm=0
+# Note: for IEEE 802.11b mode: cWmin=3 cWmax=4 burst=102
+
+# Static WEP key configuration
+#
+# The key number to use when transmitting.
+# It must be between 0 and 3, and the corresponding key must be set.
+# default: not set
+#wep_default_key=0
+# The WEP keys to use.
+# A key may be a quoted string or unquoted hexadecimal digits.
+# The key length should be 5, 13, or 16 characters, or 10, 26, or 32
+# digits, depending on whether 40-bit (64-bit), 104-bit (128-bit), or
+# 128-bit (152-bit) WEP is used.
+# Only the default key must be supplied; the others are optional.
+# default: not set
+#wep_key0=123456789a
+#wep_key1="vwxyz"
+#wep_key2=0102030405060708090a0b0c0d
+#wep_key3=".2.4.6.8.0.23"
+
+# Station inactivity limit
+#
+# If a station does not send anything in ap_max_inactivity seconds, an
+# empty data frame is sent to it in order to verify whether it is
+# still in range. If this frame is not ACKed, the station will be
+# disassociated and then deauthenticated. This feature is used to
+# clear station table of old entries when the STAs move out of the
+# range.
+#
+# The station can associate again with the AP if it is still in range;
+# this inactivity poll is just used as a nicer way of verifying
+# inactivity; i.e., client will not report broken connection because
+# disassociation frame is not sent immediately without first polling
+# the STA with a data frame.
+# default: 300 (i.e., 5 minutes)
+#ap_max_inactivity=300
+
+# Disassociate stations based on excessive transmission failures or other
+# indications of connection loss. This depends on the driver capabilities and
+# may not be available with all drivers.
+#disassoc_low_ack=1
+
+# Maximum allowed Listen Interval (how many Beacon periods STAs are allowed to
+# remain asleep). Default: 65535 (no limit apart from field size)
+#max_listen_interval=100
+
+# WDS (4-address frame) mode with per-station virtual interfaces
+# (only supported with driver=nl80211)
+# This mode allows associated stations to use 4-address frames to allow layer 2
+# bridging to be used.
+#wds_sta=1
+
+# If bridge parameter is set, the WDS STA interface will be added to the same
+# bridge by default. This can be overridden with the wds_bridge parameter to
+# use a separate bridge.
+#wds_bridge=wds-br0
+
+# Client isolation can be used to prevent low-level bridging of frames between
+# associated stations in the BSS. By default, this bridging is allowed.
+#ap_isolate=1
+
+##### IEEE 802.11n related configuration ######################################
+
+# ieee80211n: Whether IEEE 802.11n (HT) is enabled
+# 0 = disabled (default)
+# 1 = enabled
+# Note: You will also need to enable WMM for full HT functionality.
+ieee80211n=1
+
+# ht_capab: HT capabilities (list of flags)
+# LDPC coding capability: [LDPC] = supported
+# Supported channel width set: [HT40-] = both 20 MHz and 40 MHz with secondary
+# channel below the primary channel; [HT40+] = both 20 MHz and 40 MHz
+# with secondary channel below the primary channel
+# (20 MHz only if neither is set)
+# Note: There are limits on which channels can be used with HT40- and
+# HT40+. Following table shows the channels that may be available for
+# HT40- and HT40+ use per IEEE 802.11n Annex J:
+# freq HT40- HT40+
+# 2.4 GHz 5-13 1-7 (1-9 in Europe/Japan)
+# 5 GHz 40,48,56,64 36,44,52,60
+# (depending on the location, not all of these channels may be available
+# for use)
+# Please note that 40 MHz channels may switch their primary and secondary
+# channels if needed or creation of 40 MHz channel maybe rejected based
+# on overlapping BSSes. These changes are done automatically when hostapd
+# is setting up the 40 MHz channel.
+# Spatial Multiplexing (SM) Power Save: [SMPS-STATIC] or [SMPS-DYNAMIC]
+# (SMPS disabled if neither is set)
+# HT-greenfield: [GF] (disabled if not set)
+# Short GI for 20 MHz: [SHORT-GI-20] (disabled if not set)
+# Short GI for 40 MHz: [SHORT-GI-40] (disabled if not set)
+# Tx STBC: [TX-STBC] (disabled if not set)
+# Rx STBC: [RX-STBC1] (one spatial stream), [RX-STBC12] (one or two spatial
+# streams), or [RX-STBC123] (one, two, or three spatial streams); Rx STBC
+# disabled if none of these set
+# HT-delayed Block Ack: [DELAYED-BA] (disabled if not set)
+# Maximum A-MSDU length: [MAX-AMSDU-7935] for 7935 octets (3839 octets if not
+# set)
+# DSSS/CCK Mode in 40 MHz: [DSSS_CCK-40] = allowed (not allowed if not set)
+# PSMP support: [PSMP] (disabled if not set)
+# L-SIG TXOP protection support: [LSIG-TXOP-PROT] (disabled if not set)
+#ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40]
+ht_capab=[GF][SHORT-GI-20][RX-STBC1]
+
+# Require stations to support HT PHY (reject association if they do not)
+#require_ht=1
+
+##### IEEE 802.1X-2004 related configuration ##################################
+
+# Require IEEE 802.1X authorization
+#ieee8021x=1
+
+# IEEE 802.1X/EAPOL version
+# hostapd is implemented based on IEEE Std 802.1X-2004 which defines EAPOL
+# version 2. However, there are many client implementations that do not handle
+# the new version number correctly (they seem to drop the frames completely).
+# In order to make hostapd interoperate with these clients, the version number
+# can be set to the older version (1) with this configuration value.
+#eapol_version=2
+
+# Optional displayable message sent with EAP Request-Identity. The first \0
+# in this string will be converted to ASCII-0 (nul). This can be used to
+# separate network info (comma separated list of attribute=value pairs); see,
+# e.g., RFC 4284.
+#eap_message=hello
+#eap_message=hello\0networkid=netw,nasid=foo,portid=0,NAIRealms=example.com
+
+# WEP rekeying (disabled if key lengths are not set or are set to 0)
+# Key lengths for default/broadcast and individual/unicast keys:
+# 5 = 40-bit WEP (also known as 64-bit WEP with 40 secret bits)
+# 13 = 104-bit WEP (also known as 128-bit WEP with 104 secret bits)
+#wep_key_len_broadcast=5
+#wep_key_len_unicast=5
+# Rekeying period in seconds. 0 = do not rekey (i.e., set keys only once)
+#wep_rekey_period=300
+
+# EAPOL-Key index workaround (set bit7) for WinXP Supplicant (needed only if
+# only broadcast keys are used)
+eapol_key_index_workaround=0
+
+# EAP reauthentication period in seconds (default: 3600 seconds; 0 = disable
+# reauthentication).
+#eap_reauth_period=3600
+
+# Use PAE group address (01:80:c2:00:00:03) instead of individual target
+# address when sending EAPOL frames with driver=wired. This is the most common
+# mechanism used in wired authentication, but it also requires that the port
+# is only used by one station.
+#use_pae_group_addr=1
+
+##### Integrated EAP server ###################################################
+
+# Optionally, hostapd can be configured to use an integrated EAP server
+# to process EAP authentication locally without need for an external RADIUS
+# server. This functionality can be used both as a local authentication server
+# for IEEE 802.1X/EAPOL and as a RADIUS server for other devices.
+
+# Use integrated EAP server instead of external RADIUS authentication
+# server. This is also needed if hostapd is configured to act as a RADIUS
+# authentication server.
+eap_server=0
+
+# Path for EAP server user database
+#eap_user_file=/etc/hostapd.eap_user
+
+# CA certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS
+#ca_cert=/etc/hostapd.ca.pem
+
+# Server certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS
+#server_cert=/etc/hostapd.server.pem
+
+# Private key matching with the server certificate for EAP-TLS/PEAP/TTLS
+# This may point to the same file as server_cert if both certificate and key
+# are included in a single file. PKCS#12 (PFX) file (.p12/.pfx) can also be
+# used by commenting out server_cert and specifying the PFX file as the
+# private_key.
+#private_key=/etc/hostapd.server.prv
+
+# Passphrase for private key
+#private_key_passwd=secret passphrase
+
+# Enable CRL verification.
+# Note: hostapd does not yet support CRL downloading based on CDP. Thus, a
+# valid CRL signed by the CA is required to be included in the ca_cert file.
+# This can be done by using PEM format for CA certificate and CRL and
+# concatenating these into one file. Whenever CRL changes, hostapd needs to be
+# restarted to take the new CRL into use.
+# 0 = do not verify CRLs (default)
+# 1 = check the CRL of the user certificate
+# 2 = check all CRLs in the certificate path
+#check_crl=1
+
+# dh_file: File path to DH/DSA parameters file (in PEM format)
+# This is an optional configuration file for setting parameters for an
+# ephemeral DH key exchange. In most cases, the default RSA authentication does
+# not use this configuration. However, it is possible setup RSA to use
+# ephemeral DH key exchange. In addition, ciphers with DSA keys always use
+# ephemeral DH keys. This can be used to achieve forward secrecy. If the file
+# is in DSA parameters format, it will be automatically converted into DH
+# params. This parameter is required if anonymous EAP-FAST is used.
+# You can generate DH parameters file with OpenSSL, e.g.,
+# "openssl dhparam -out /etc/hostapd.dh.pem 1024"
+#dh_file=/etc/hostapd.dh.pem
+
+# Fragment size for EAP methods
+#fragment_size=1400
+
+# Configuration data for EAP-SIM database/authentication gateway interface.
+# This is a text string in implementation specific format. The example
+# implementation in eap_sim_db.c uses this as the UNIX domain socket name for
+# the HLR/AuC gateway (e.g., hlr_auc_gw). In this case, the path uses "unix:"
+# prefix.
+#eap_sim_db=unix:/tmp/hlr_auc_gw.sock
+
+# Encryption key for EAP-FAST PAC-Opaque values. This key must be a secret,
+# random value. It is configured as a 16-octet value in hex format. It can be
+# generated, e.g., with the following command:
+# od -tx1 -v -N16 /dev/random | colrm 1 8 | tr -d ' '
+#pac_opaque_encr_key=000102030405060708090a0b0c0d0e0f
+
+# EAP-FAST authority identity (A-ID)
+# A-ID indicates the identity of the authority that issues PACs. The A-ID
+# should be unique across all issuing servers. In theory, this is a variable
+# length field, but due to some existing implementations requiring A-ID to be
+# 16 octets in length, it is strongly recommended to use that length for the
+# field to provid interoperability with deployed peer implementations. This
+# field is configured in hex format.
+#eap_fast_a_id=101112131415161718191a1b1c1d1e1f
+
+# EAP-FAST authority identifier information (A-ID-Info)
+# This is a user-friendly name for the A-ID. For example, the enterprise name
+# and server name in a human-readable format. This field is encoded as UTF-8.
+#eap_fast_a_id_info=test server
+
+# Enable/disable different EAP-FAST provisioning modes:
+#0 = provisioning disabled
+#1 = only anonymous provisioning allowed
+#2 = only authenticated provisioning allowed
+#3 = both provisioning modes allowed (default)
+#eap_fast_prov=3
+
+# EAP-FAST PAC-Key lifetime in seconds (hard limit)
+#pac_key_lifetime=604800
+
+# EAP-FAST PAC-Key refresh time in seconds (soft limit on remaining hard
+# limit). The server will generate a new PAC-Key when this number of seconds
+# (or fewer) of the lifetime remains.
+#pac_key_refresh_time=86400
+
+# EAP-SIM and EAP-AKA protected success/failure indication using AT_RESULT_IND
+# (default: 0 = disabled).
+#eap_sim_aka_result_ind=1
+
+# Trusted Network Connect (TNC)
+# If enabled, TNC validation will be required before the peer is allowed to
+# connect. Note: This is only used with EAP-TTLS and EAP-FAST. If any other
+# EAP method is enabled, the peer will be allowed to connect without TNC.
+#tnc=1
+
+
+##### IEEE 802.11f - Inter-Access Point Protocol (IAPP) #######################
+
+# Interface to be used for IAPP broadcast packets
+#iapp_interface=eth0
+
+
+##### RADIUS client configuration #############################################
+# for IEEE 802.1X with external Authentication Server, IEEE 802.11
+# authentication with external ACL for MAC addresses, and accounting
+
+# The own IP address of the access point (used as NAS-IP-Address)
+own_ip_addr=127.0.0.1
+
+# Optional NAS-Identifier string for RADIUS messages. When used, this should be
+# a unique to the NAS within the scope of the RADIUS server. For example, a
+# fully qualified domain name can be used here.
+# When using IEEE 802.11r, nas_identifier must be set and must be between 1 and
+# 48 octets long.
+#nas_identifier=ap.example.com
+
+# RADIUS authentication server
+#auth_server_addr=127.0.0.1
+#auth_server_port=1812
+#auth_server_shared_secret=secret
+
+# RADIUS accounting server
+#acct_server_addr=127.0.0.1
+#acct_server_port=1813
+#acct_server_shared_secret=secret
+
+# Secondary RADIUS servers; to be used if primary one does not reply to
+# RADIUS packets. These are optional and there can be more than one secondary
+# server listed.
+#auth_server_addr=127.0.0.2
+#auth_server_port=1812
+#auth_server_shared_secret=secret2
+#
+#acct_server_addr=127.0.0.2
+#acct_server_port=1813
+#acct_server_shared_secret=secret2
+
+# Retry interval for trying to return to the primary RADIUS server (in
+# seconds). RADIUS client code will automatically try to use the next server
+# when the current server is not replying to requests. If this interval is set,
+# primary server will be retried after configured amount of time even if the
+# currently used secondary server is still working.
+#radius_retry_primary_interval=600
+
+
+# Interim accounting update interval
+# If this is set (larger than 0) and acct_server is configured, hostapd will
+# send interim accounting updates every N seconds. Note: if set, this overrides
+# possible Acct-Interim-Interval attribute in Access-Accept message. Thus, this
+# value should not be configured in hostapd.conf, if RADIUS server is used to
+# control the interim interval.
+# This value should not be less 600 (10 minutes) and must not be less than
+# 60 (1 minute).
+#radius_acct_interim_interval=600
+
+# Dynamic VLAN mode; allow RADIUS authentication server to decide which VLAN
+# is used for the stations. This information is parsed from following RADIUS
+# attributes based on RFC 3580 and RFC 2868: Tunnel-Type (value 13 = VLAN),
+# Tunnel-Medium-Type (value 6 = IEEE 802), Tunnel-Private-Group-ID (value
+# VLANID as a string). vlan_file option below must be configured if dynamic
+# VLANs are used. Optionally, the local MAC ACL list (accept_mac_file) can be
+# used to set static client MAC address to VLAN ID mapping.
+# 0 = disabled (default)
+# 1 = option; use default interface if RADIUS server does not include VLAN ID
+# 2 = required; reject authentication if RADIUS server does not include VLAN ID
+#dynamic_vlan=0
+
+# VLAN interface list for dynamic VLAN mode is read from a separate text file.
+# This list is used to map VLAN ID from the RADIUS server to a network
+# interface. Each station is bound to one interface in the same way as with
+# multiple BSSIDs or SSIDs. Each line in this text file is defining a new
+# interface and the line must include VLAN ID and interface name separated by
+# white space (space or tab).
+#vlan_file=/etc/hostapd.vlan
+
+# Interface where 802.1q tagged packets should appear when a RADIUS server is
+# used to determine which VLAN a station is on. hostapd creates a bridge for
+# each VLAN. Then hostapd adds a VLAN interface (associated with the interface
+# indicated by 'vlan_tagged_interface') and the appropriate wireless interface
+# to the bridge.
+#vlan_tagged_interface=eth0
+
+
+##### RADIUS authentication server configuration ##############################
+
+# hostapd can be used as a RADIUS authentication server for other hosts. This
+# requires that the integrated EAP server is also enabled and both
+# authentication services are sharing the same configuration.
+
+# File name of the RADIUS clients configuration for the RADIUS server. If this
+# commented out, RADIUS server is disabled.
+#radius_server_clients=/etc/hostapd.radius_clients
+
+# The UDP port number for the RADIUS authentication server
+#radius_server_auth_port=1812
+
+# Use IPv6 with RADIUS server (IPv4 will also be supported using IPv6 API)
+#radius_server_ipv6=1
+
+
+##### WPA/IEEE 802.11i configuration ##########################################
+
+# Enable WPA. Setting this variable configures the AP to require WPA (either
+# WPA-PSK or WPA-RADIUS/EAP based on other configuration). For WPA-PSK, either
+# wpa_psk or wpa_passphrase must be set and wpa_key_mgmt must include WPA-PSK.
+# For WPA-RADIUS/EAP, ieee8021x must be set (but without dynamic WEP keys),
+# RADIUS authentication server must be configured, and WPA-EAP must be included
+# in wpa_key_mgmt.
+# This field is a bit field that can be used to enable WPA (IEEE 802.11i/D3.0)
+# and/or WPA2 (full IEEE 802.11i/RSN):
+# bit0 = WPA
+# bit1 = IEEE 802.11i/RSN (WPA2) (dot11RSNAEnabled)
+# WPA2 only
+wpa=2
+
+# WPA pre-shared keys for WPA-PSK. This can be either entered as a 256-bit
+# secret in hex format (64 hex digits), wpa_psk, or as an ASCII passphrase
+# (8..63 characters) that will be converted to PSK. This conversion uses SSID
+# so the PSK changes when ASCII passphrase is used and the SSID is changed.
+# wpa_psk (dot11RSNAConfigPSKValue)
+# wpa_passphrase (dot11RSNAConfigPSKPassPhrase)
+#wpa_psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
+wpa_passphrase=example_password
+
+# Optionally, WPA PSKs can be read from a separate text file (containing list
+# of (PSK,MAC address) pairs. This allows more than one PSK to be configured.
+# Use absolute path name to make sure that the files can be read on SIGHUP
+# configuration reloads.
+#wpa_psk_file=/etc/hostapd.wpa_psk
+
+# Set of accepted key management algorithms (WPA-PSK, WPA-EAP, or both). The
+# entries are separated with a space. WPA-PSK-SHA256 and WPA-EAP-SHA256 can be
+# added to enable SHA256-based stronger algorithms.
+# (dot11RSNAConfigAuthenticationSuitesTable)
+#wpa_key_mgmt=WPA-PSK WPA-EAP
+
+# Set of accepted cipher suites (encryption algorithms) for pairwise keys
+# (unicast packets). This is a space separated list of algorithms:
+# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
+# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
+# Group cipher suite (encryption algorithm for broadcast and multicast frames)
+# is automatically selected based on this configuration. If only CCMP is
+# allowed as the pairwise cipher, group cipher will also be CCMP. Otherwise,
+# TKIP will be used as the group cipher.
+# (dot11RSNAConfigPairwiseCiphersTable)
+# Pairwise cipher for WPA (v1) (default: TKIP)
+#wpa_pairwise=TKIP CCMP
+# Pairwise cipher for RSN/WPA2 (default: use wpa_pairwise value)
+#
+# AES only
+rsn_pairwise=CCMP
+
+# Time interval for rekeying GTK (broadcast/multicast encryption keys) in
+# seconds. (dot11RSNAConfigGroupRekeyTime)
+#wpa_group_rekey=600
+
+# Rekey GTK when any STA that possesses the current GTK is leaving the BSS.
+# (dot11RSNAConfigGroupRekeyStrict)
+#wpa_strict_rekey=1
+
+# Time interval for rekeying GMK (master key used internally to generate GTKs
+# (in seconds).
+#wpa_gmk_rekey=86400
+
+# Maximum lifetime for PTK in seconds. This can be used to enforce rekeying of
+# PTK to mitigate some attacks against TKIP deficiencies.
+#wpa_ptk_rekey=600
+
+# Enable IEEE 802.11i/RSN/WPA2 pre-authentication. This is used to speed up
+# roaming be pre-authenticating IEEE 802.1X/EAP part of the full RSN
+# authentication and key handshake before actually associating with a new AP.
+# (dot11RSNAPreauthenticationEnabled)
+#rsn_preauth=1
+#
+# Space separated list of interfaces from which pre-authentication frames are
+# accepted (e.g., 'eth0' or 'eth0 wlan0wds0'. This list should include all
+# interface that are used for connections to other APs. This could include
+# wired interfaces and WDS links. The normal wireless data interface towards
+# associated stations (e.g., wlan0) should not be added, since
+# pre-authentication is only used with APs other than the currently associated
+# one.
+#rsn_preauth_interfaces=eth0
+
+# peerkey: Whether PeerKey negotiation for direct links (IEEE 802.11e) is
+# allowed. This is only used with RSN/WPA2.
+# 0 = disabled (default)
+# 1 = enabled
+#peerkey=1
+
+# ieee80211w: Whether management frame protection (MFP) is enabled
+# 0 = disabled (default)
+# 1 = optional
+# 2 = required
+#ieee80211w=0
+
+# Association SA Query maximum timeout (in TU = 1.024 ms; for MFP)
+# (maximum time to wait for a SA Query response)
+# dot11AssociationSAQueryMaximumTimeout, 1...4294967295
+#assoc_sa_query_max_timeout=1000
+
+# Association SA Query retry timeout (in TU = 1.024 ms; for MFP)
+# (time between two subsequent SA Query requests)
+# dot11AssociationSAQueryRetryTimeout, 1...4294967295
+#assoc_sa_query_retry_timeout=201
+
+# disable_pmksa_caching: Disable PMKSA caching
+# This parameter can be used to disable caching of PMKSA created through EAP
+# authentication. RSN preauthentication may still end up using PMKSA caching if
+# it is enabled (rsn_preauth=1).
+# 0 = PMKSA caching enabled (default)
+# 1 = PMKSA caching disabled
+#disable_pmksa_caching=0
+
+# okc: Opportunistic Key Caching (aka Proactive Key Caching)
+# Allow PMK cache to be shared opportunistically among configured interfaces
+# and BSSes (i.e., all configurations within a single hostapd process).
+# 0 = disabled (default)
+# 1 = enabled
+#okc=1
+
+
+##### IEEE 802.11r configuration ##############################################
+
+# Mobility Domain identifier (dot11FTMobilityDomainID, MDID)
+# MDID is used to indicate a group of APs (within an ESS, i.e., sharing the
+# same SSID) between which a STA can use Fast BSS Transition.
+# 2-octet identifier as a hex string.
+#mobility_domain=a1b2
+
+# PMK-R0 Key Holder identifier (dot11FTR0KeyHolderID)
+# 1 to 48 octet identifier.
+# This is configured with nas_identifier (see RADIUS client section above).
+
+# Default lifetime of the PMK-RO in minutes; range 1..65535
+# (dot11FTR0KeyLifetime)
+#r0_key_lifetime=10000
+
+# PMK-R1 Key Holder identifier (dot11FTR1KeyHolderID)
+# 6-octet identifier as a hex string.
+#r1_key_holder=000102030405
+
+# Reassociation deadline in time units (TUs / 1.024 ms; range 1000..65535)
+# (dot11FTReassociationDeadline)
+#reassociation_deadline=1000
+
+# List of R0KHs in the same Mobility Domain
+# format: <MAC address> <NAS Identifier> <128-bit key as hex string>
+# This list is used to map R0KH-ID (NAS Identifier) to a destination MAC
+# address when requesting PMK-R1 key from the R0KH that the STA used during the
+# Initial Mobility Domain Association.
+#r0kh=02:01:02:03:04:05 r0kh-1.example.com 000102030405060708090a0b0c0d0e0f
+#r0kh=02:01:02:03:04:06 r0kh-2.example.com 00112233445566778899aabbccddeeff
+# And so on.. One line per R0KH.
+
+# List of R1KHs in the same Mobility Domain
+# format: <MAC address> <R1KH-ID> <128-bit key as hex string>
+# This list is used to map R1KH-ID to a destination MAC address when sending
+# PMK-R1 key from the R0KH. This is also the list of authorized R1KHs in the MD
+# that can request PMK-R1 keys.
+#r1kh=02:01:02:03:04:05 02:11:22:33:44:55 000102030405060708090a0b0c0d0e0f
+#r1kh=02:01:02:03:04:06 02:11:22:33:44:66 00112233445566778899aabbccddeeff
+# And so on.. One line per R1KH.
+
+# Whether PMK-R1 push is enabled at R0KH
+# 0 = do not push PMK-R1 to all configured R1KHs (default)
+# 1 = push PMK-R1 to all configured R1KHs whenever a new PMK-R0 is derived
+#pmk_r1_push=1
+
+##### Neighbor table ##########################################################
+# Maximum number of entries kept in AP table (either for neigbor table or for
+# detecting Overlapping Legacy BSS Condition). The oldest entry will be
+# removed when adding a new entry that would make the list grow over this
+# limit. Note! WFA certification for IEEE 802.11g requires that OLBC is
+# enabled, so this field should not be set to 0 when using IEEE 802.11g.
+# default: 255
+#ap_table_max_size=255
+
+# Number of seconds of no frames received after which entries may be deleted
+# from the AP table. Since passive scanning is not usually performed frequently
+# this should not be set to very small value. In addition, there is no
+# guarantee that every scan cycle will receive beacon frames from the
+# neighboring APs.
+# default: 60
+#ap_table_expiration_time=3600
+
+
+##### Wi-Fi Protected Setup (WPS) #############################################
+
+# WPS state
+# 0 = WPS disabled (default)
+# 1 = WPS enabled, not configured
+# 2 = WPS enabled, configured
+#wps_state=2
+
+# AP can be configured into a locked state where new WPS Registrar are not
+# accepted, but previously authorized Registrars (including the internal one)
+# can continue to add new Enrollees.
+#ap_setup_locked=1
+
+# Universally Unique IDentifier (UUID; see RFC 4122) of the device
+# This value is used as the UUID for the internal WPS Registrar. If the AP
+# is also using UPnP, this value should be set to the device's UPnP UUID.
+# If not configured, UUID will be generated based on the local MAC address.
+#uuid=12345678-9abc-def0-1234-56789abcdef0
+
+# Note: If wpa_psk_file is set, WPS is used to generate random, per-device PSKs
+# that will be appended to the wpa_psk_file. If wpa_psk_file is not set, the
+# default PSK (wpa_psk/wpa_passphrase) will be delivered to Enrollees. Use of
+# per-device PSKs is recommended as the more secure option (i.e., make sure to
+# set wpa_psk_file when using WPS with WPA-PSK).
+
+# When an Enrollee requests access to the network with PIN method, the Enrollee
+# PIN will need to be entered for the Registrar. PIN request notifications are
+# sent to hostapd ctrl_iface monitor. In addition, they can be written to a
+# text file that could be used, e.g., to populate the AP administration UI with
+# pending PIN requests. If the following variable is set, the PIN requests will
+# be written to the configured file.
+#wps_pin_requests=/var/run/hostapd_wps_pin_requests
+
+# Device Name
+# User-friendly description of device; up to 32 octets encoded in UTF-8
+#device_name=Wireless AP
+
+# Manufacturer
+# The manufacturer of the device (up to 64 ASCII characters)
+#manufacturer=Company
+
+# Model Name
+# Model of the device (up to 32 ASCII characters)
+#model_name=WAP
+
+# Model Number
+# Additional device description (up to 32 ASCII characters)
+#model_number=123
+
+# Serial Number
+# Serial number of the device (up to 32 characters)
+#serial_number=12345
+
+# Primary Device Type
+# Used format: <categ>-<OUI>-<subcateg>
+# categ = Category as an integer value
+# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
+# default WPS OUI
+# subcateg = OUI-specific Sub Category as an integer value
+# Examples:
+# 1-0050F204-1 (Computer / PC)
+# 1-0050F204-2 (Computer / Server)
+# 5-0050F204-1 (Storage / NAS)
+# 6-0050F204-1 (Network Infrastructure / AP)
+#device_type=6-0050F204-1
+
+# OS Version
+# 4-octet operating system version number (hex string)
+#os_version=01020300
+
+# Config Methods
+# List of the supported configuration methods
+# Available methods: usba ethernet label display ext_nfc_token int_nfc_token
+# nfc_interface push_button keypad virtual_display physical_display
+# virtual_push_button physical_push_button
+#config_methods=label virtual_display virtual_push_button keypad
+
+# WPS capability discovery workaround for PBC with Windows 7
+# Windows 7 uses incorrect way of figuring out AP's WPS capabilities by acting
+# as a Registrar and using M1 from the AP. The config methods attribute in that
+# message is supposed to indicate only the configuration method supported by
+# the AP in Enrollee role, i.e., to add an external Registrar. For that case,
+# PBC shall not be used and as such, the PushButton config method is removed
+# from M1 by default. If pbc_in_m1=1 is included in the configuration file,
+# the PushButton config method is left in M1 (if included in config_methods
+# parameter) to allow Windows 7 to use PBC instead of PIN (e.g., from a label
+# in the AP).
+#pbc_in_m1=1
+
+# Static access point PIN for initial configuration and adding Registrars
+# If not set, hostapd will not allow external WPS Registrars to control the
+# access point. The AP PIN can also be set at runtime with hostapd_cli
+# wps_ap_pin command. Use of temporary (enabled by user action) and random
+# AP PIN is much more secure than configuring a static AP PIN here. As such,
+# use of the ap_pin parameter is not recommended if the AP device has means for
+# displaying a random PIN.
+#ap_pin=12345670
+
+# Skip building of automatic WPS credential
+# This can be used to allow the automatically generated Credential attribute to
+# be replaced with pre-configured Credential(s).
+#skip_cred_build=1
+
+# Additional Credential attribute(s)
+# This option can be used to add pre-configured Credential attributes into M8
+# message when acting as a Registrar. If skip_cred_build=1, this data will also
+# be able to override the Credential attribute that would have otherwise been
+# automatically generated based on network configuration. This configuration
+# option points to an external file that much contain the WPS Credential
+# attribute(s) as binary data.
+#extra_cred=hostapd.cred
+
+# Credential processing
+# 0 = process received credentials internally (default)
+# 1 = do not process received credentials; just pass them over ctrl_iface to
+# external program(s)
+# 2 = process received credentials internally and pass them over ctrl_iface
+# to external program(s)
+# Note: With wps_cred_processing=1, skip_cred_build should be set to 1 and
+# extra_cred be used to provide the Credential data for Enrollees.
+#
+# wps_cred_processing=1 will disabled automatic updates of hostapd.conf file
+# both for Credential processing and for marking AP Setup Locked based on
+# validation failures of AP PIN. An external program is responsible on updating
+# the configuration appropriately in this case.
+#wps_cred_processing=0
+
+# AP Settings Attributes for M7
+# By default, hostapd generates the AP Settings Attributes for M7 based on the
+# current configuration. It is possible to override this by providing a file
+# with pre-configured attributes. This is similar to extra_cred file format,
+# but the AP Settings attributes are not encapsulated in a Credential
+# attribute.
+#ap_settings=hostapd.ap_settings
+
+# WPS UPnP interface
+# If set, support for external Registrars is enabled.
+#upnp_iface=br0
+
+# Friendly Name (required for UPnP)
+# Short description for end use. Should be less than 64 characters.
+#friendly_name=WPS Access Point
+
+# Manufacturer URL (optional for UPnP)
+#manufacturer_url=http://www.example.com/
+
+# Model Description (recommended for UPnP)
+# Long description for end user. Should be less than 128 characters.
+#model_description=Wireless Access Point
+
+# Model URL (optional for UPnP)
+#model_url=http://www.example.com/model/
+
+# Universal Product Code (optional for UPnP)
+# 12-digit, all-numeric code that identifies the consumer package.
+#upc=123456789012
+
+##### Wi-Fi Direct (P2P) ######################################################
+
+# Enable P2P Device management
+#manage_p2p=1
+
+# Allow cross connection
+#allow_cross_connection=1
+
+#### TDLS (IEEE 802.11z-2010) #################################################
+
+# Prohibit use of TDLS in this BSS
+#tdls_prohibit=1
+
+# Prohibit use of TDLS Channel Switching in this BSS
+#tdls_prohibit_chan_switch=1
+
+##### IEEE 802.11v-2011 #######################################################
+
+# Time advertisement
+# 0 = disabled (default)
+# 2 = UTC time at which the TSF timer is 0
+#time_advertisement=2
+
+# Local time zone as specified in 8.3 of IEEE Std 1003.1-2004:
+# stdoffset[dst[offset][,start[/time],end[/time]]]
+#time_zone=EST5
+
+##### IEEE 802.11u-2011 #######################################################
+
+# Enable Interworking service
+#interworking=1
+
+# Access Network Type
+# 0 = Private network
+# 1 = Private network with guest access
+# 2 = Chargeable public network
+# 3 = Free public network
+# 4 = Personal device network
+# 5 = Emergency services only network
+# 14 = Test or experimental
+# 15 = Wildcard
+#access_network_type=0
+
+# Whether the network provides connectivity to the Internet
+# 0 = Unspecified
+# 1 = Network provides connectivity to the Internet
+#internet=1
+
+# Additional Step Required for Access
+# Note: This is only used with open network, i.e., ASRA shall ne set to 0 if
+# RSN is used.
+#asra=0
+
+# Emergency services reachable
+#esr=0
+
+# Unauthenticated emergency service accessible
+#uesa=0
+
+# Venue Info (optional)
+# The available values are defined in IEEE Std 802.11u-2011, 7.3.1.34.
+# Example values (group,type):
+# 0,0 = Unspecified
+# 1,7 = Convention Center
+# 1,13 = Coffee Shop
+# 2,0 = Unspecified Business
+# 7,1 Private Residence
+#venue_group=7
+#venue_type=1
+
+# Homogeneous ESS identifier (optional; dot11HESSID)
+# If set, this shall be identifical to one of the BSSIDs in the homogeneous
+# ESS and this shall be set to the same value across all BSSs in homogeneous
+# ESS.
+#hessid=02:03:04:05:06:07
+
+# Roaming Consortium List
+# Arbitrary number of Roaming Consortium OIs can be configured with each line
+# adding a new OI to the list. The first three entries are available through
+# Beacon and Probe Response frames. Any additional entry will be available only
+# through ANQP queries. Each OI is between 3 and 15 octets and is configured a
+# a hexstring.
+#roaming_consortium=021122
+#roaming_consortium=2233445566
+
+##### Multiple BSSID support ##################################################
+#
+# Above configuration is using the default interface (wlan#, or multi-SSID VLAN
+# interfaces). Other BSSIDs can be added by using separator 'bss' with
+# default interface name to be allocated for the data packets of the new BSS.
+#
+# hostapd will generate BSSID mask based on the BSSIDs that are
+# configured. hostapd will verify that dev_addr & MASK == dev_addr. If this is
+# not the case, the MAC address of the radio must be changed before starting
+# hostapd (ifconfig wlan0 hw ether <MAC addr>). If a BSSID is configured for
+# every secondary BSS, this limitation is not applied at hostapd and other
+# masks may be used if the driver supports them (e.g., swap the locally
+# administered bit)
+#
+# BSSIDs are assigned in order to each BSS, unless an explicit BSSID is
+# specified using the 'bssid' parameter.
+# If an explicit BSSID is specified, it must be chosen such that it:
+# - results in a valid MASK that covers it and the dev_addr
+# - is not the same as the MAC address of the radio
+# - is not the same as any other explicitly specified BSSID
+#
+# Please note that hostapd uses some of the values configured for the first BSS
+# as the defaults for the following BSSes. However, it is recommended that all
+# BSSes include explicit configuration of all relevant configuration items.
+#
+#bss=wlan0_0
+#ssid=test2
+# most of the above items can be used here (apart from radio interface specific
+# items, like channel)
+
+#bss=wlan0_1
+#bssid=00:13:10:95:fe:0b
+# ...
diff --git a/multitech/recipes/hostap/hostap-daemon_1.0.bb b/multitech/recipes/hostap/hostap-daemon_1.0.bb
index a726237..121f225 100644
--- a/multitech/recipes/hostap/hostap-daemon_1.0.bb
+++ b/multitech/recipes/hostap/hostap-daemon_1.0.bb
@@ -2,14 +2,15 @@ DESCRIPTION = "User space daemon for extended IEEE 802.11 management"
require hostap-daemon-1.0.inc
-PR = "r1"
+PR = "r2"
#DEFAULT_PREFERENCE = "-1"
SRC_URI = "http://hostap.epitest.fi/releases/hostapd-${PV}.tar.gz \
file://defconfig \
file://init \
- file://hostapd.conf"
+ file://hostapd.conf \
+ file://hostapd.conf.example"
SRC_URI[md5sum] = "236247a7bbd4f60d5fa3e99849d1ffc9"
SRC_URI[sha256sum] = "002e9dcb7e46cf82b5900a2fcf92b30fc8cdfd32a72d7fd4488588f1c013dfcc"
diff --git a/multitech/recipes/images/corecdp-full-image.bb b/multitech/recipes/images/corecdp-full-image.bb
index 1607028..9841137 100644
--- a/multitech/recipes/images/corecdp-full-image.bb
+++ b/multitech/recipes/images/corecdp-full-image.bb
@@ -29,6 +29,8 @@ IMAGE_INSTALL += "python-html"
IMAGE_INSTALL += "python-sqlite3"
IMAGE_INSTALL += "ruby"
+IMAGE_INSTALL += "ruby-sqlite3"
+IMAGE_INSTALL += "ruby-serialport"
# OpenJDK Java runtime
IMAGE_INSTALL += "openjdk-6-jre"
diff --git a/multitech/recipes/images/corecdp-ruby-image.bb b/multitech/recipes/images/corecdp-ruby-image.bb
index d9e9758..ffe1cad 100644
--- a/multitech/recipes/images/corecdp-ruby-image.bb
+++ b/multitech/recipes/images/corecdp-ruby-image.bb
@@ -1,6 +1,6 @@
require corecdp-base-image.bb
-IMAGE_INSTALL += "ruby"
+IMAGE_INSTALL += "ruby ruby-sqlite3 ruby-serialport"
export IMAGE_BASENAME = "corecdp-ruby-image"
diff --git a/multitech/recipes/images/corecdp-wifi-ap-image.bb b/multitech/recipes/images/corecdp-wifi-ap-image.bb
index c72b882..4d9318b 100644
--- a/multitech/recipes/images/corecdp-wifi-ap-image.bb
+++ b/multitech/recipes/images/corecdp-wifi-ap-image.bb
@@ -2,6 +2,7 @@ require corecdp-base-image.bb
IMAGE_INSTALL += " \
hostap-daemon hostap-utils \
+ocg-scripts \
"
export IMAGE_BASENAME = "corecdp-wifi-ap-image"
diff --git a/multitech/recipes/libyaml/libyaml_0.1.4.bb b/multitech/recipes/libyaml/libyaml_0.1.4.bb
new file mode 100644
index 0000000..243c1c4
--- /dev/null
+++ b/multitech/recipes/libyaml/libyaml_0.1.4.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "LibYAML is a YAML parser and emitter written in C."
+HOMEPAGE = "http://pyyaml.org/wiki/LibYAML"
+SECTION = "libs/devel"
+LICENSE = "MIT"
+PR="r0"
+
+SRC_URI = "http://pyyaml.org/download/libyaml/yaml-${PV}.tar.gz;name=libyaml"
+SRC_URI[libyaml.md5sum] = "36c852831d02cf90508c29852361d01b"
+SRC_URI[libyaml.sha256sum] = "7bf81554ae5ab2d9b6977da398ea789722e0db75b86bffdaeb4e66d961de6a37"
+
+S = "${WORKDIR}/yaml-${PV}"
+
+inherit autotools
diff --git a/multitech/recipes/ocg-scripts/ocg-scripts-1.0.inc b/multitech/recipes/ocg-scripts/ocg-scripts-1.0.inc
new file mode 100644
index 0000000..46d1cfa
--- /dev/null
+++ b/multitech/recipes/ocg-scripts/ocg-scripts-1.0.inc
@@ -0,0 +1,11 @@
+HOMEPAGE = "www.multitech.net"
+SECTION = "kernel/userland"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+do_install() {
+ install -d ${D}${sbindir} ${D}${sbindir}
+ install -m 755 ${WORKDIR}/ocg-wifi-client.sh ${D}${sbindir}
+ install -m 755 ${WORKDIR}/ocg-wifi-ap.sh ${D}${sbindir}
+ install -m 755 ${WORKDIR}/ocg-wifi-dhcpd.sh ${D}${sbindir}
+}
diff --git a/multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-ap.sh b/multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-ap.sh
new file mode 100644
index 0000000..5c684cb
--- /dev/null
+++ b/multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-ap.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+do_start() {
+ echo "starting hostap daemon"
+ /etc/init.d/hostapd start
+ echo "setting IP address of access point"
+ ifconfig wlan0 $1
+ ocg-wifi-dhcpd.sh start
+}
+
+do_stop() {
+ echo "stopping hostap daemon"
+ /etc/init.d/hostapd stop
+ ocg-wifi-dhcpd.sh stop
+}
+
+# main
+if [[ $# -lt 1 ]]
+then
+ echo "usage: $0 start|stop|restart [access point IP address]"
+ exit 1
+elif [[ $# -eq 2 ]]
+then
+ ret=1
+ if [[ $2 =~ ^([0-9]{1,3}\.){3,3}[0-9]{1,3}$ ]]
+ then
+ OIFS=$IFS
+ IFS='.'
+ ip=($2)
+ 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=$2
+else
+ ip="192.168.2.1"
+fi
+
+case $1 in
+ start)
+ do_start $ip
+ ;;
+ stop)
+ do_stop
+ ;;
+ restart)
+ do_stop
+ sleep 1
+ do_start $ip
+ ;;
+esac
+
+exit 0
diff --git a/multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-client.sh b/multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-client.sh
new file mode 100644
index 0000000..6987506
--- /dev/null
+++ b/multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-client.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+do_start() {
+ echo "joining wireless network"
+ wpa_supplicant -B -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf
+ sleep 5
+ echo "starting dhcp client"
+ udhcpc -i wlan0
+}
+
+do_stop() {
+ echo "stopping wpa_supplicant"
+ killall wpa_supplicant
+ echo "stopping dhcp client"
+ killall udhcpc
+}
+
+# main
+if [[ $# -ne 1 ]]
+then
+ echo "usage: $0 start|stop|restart"
+ exit 1
+fi
+
+case $1 in
+ start)
+ if [[ ! -f "/etc/wpa_supplicant.conf" ]]
+ then
+ echo "/etc/wpa_supplicant.conf does not exist"
+ exit 1
+ fi
+ do_start
+ ;;
+ stop)
+ do_stop
+ ;;
+ restart)
+ do_stop
+ do_start
+ ;;
+esac
+
+exit 0
diff --git a/multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-dhcpd.sh b/multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-dhcpd.sh
new file mode 100644
index 0000000..575b803
--- /dev/null
+++ b/multitech/recipes/ocg-scripts/ocg-scripts-1.0/ocg-wifi-dhcpd.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+do_start() {
+ echo "starting dhcp daemon"
+ udhcpd -S /etc/udhcpd.conf
+}
+
+do_stop() {
+ echo "stopping dhcp daemon"
+ killall udhcpd
+}
+
+# main
+if [[ $# -ne 1 ]]
+then
+ echo "usage: $0 start|stop|restart"
+ exit 1
+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
+ do_start
+ ;;
+esac
+
+exit 0
diff --git a/multitech/recipes/ocg-scripts/ocg-scripts_1.0.bb b/multitech/recipes/ocg-scripts/ocg-scripts_1.0.bb
new file mode 100644
index 0000000..bbe9f10
--- /dev/null
+++ b/multitech/recipes/ocg-scripts/ocg-scripts_1.0.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Scripts to easily get started with common OCG use cases"
+
+require ocg-scripts-1.0.inc
+
+PR = "r1"
+
+SRC_URI = "file://ocg-wifi-client.sh \
+ file://ocg-wifi-ap.sh \
+ file://ocg-wifi-dhcpd.sh"
+
+S = "${WORKDIR}/ocg-scripts-${PV}"
diff --git a/multitech/recipes/ruby-serialport/ruby-serialport_1.1.0.bb b/multitech/recipes/ruby-serialport/ruby-serialport_1.1.0.bb
new file mode 100644
index 0000000..8dcdc9c
--- /dev/null
+++ b/multitech/recipes/ruby-serialport/ruby-serialport_1.1.0.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "A Ruby library that provides a class for using RS-232 serial ports"
+HOMEPAGE = "https://github.com/hparra/ruby-serialport"
+LICENSE = "GPL"
+SECTION = "console/utils"
+PRIORITY = "optional"
+
+DEPENDS = "ruby"
+
+PR = "r1"
+PACKAGES = "${PN}-dbg ${PN}"
+
+SRC_URI = "git://github.com/hparra/ruby-serialport.git;tag=v1.1.0;protocol=git"
+
+S = "${WORKDIR}/git"
+
+do_compile() {
+ ${CC} ${CFLAGS} ${LDFLAGS} -I${WORKDIR}/git/ext/native -I${STAGING_INCDIR}/ruby-1.9.1 -I${STAGING_INCDIR}/ruby-1.9.1/arm-linux-eabi -c ${WORKDIR}/git/ext/native/*.c
+ ${CC} ${CFLAGS} ${LDFLAGS} --shared -o ${WORKDIR}/git/ext/native/serialport.so ${WORKDIR}/git/serialport.o ${WORKDIR}/git/posix_serialport_impl.o
+}
+
+do_install() {
+ install -d ${D}${libdir}/ruby/1.8 ${D}${libdir}/ruby/serialport
+ install ${S}/${base_libdir}/serialport.rb ${D}${libdir}/ruby/serialport.rb
+ install ${S}/ext/native/serialport.so -t ${D}${libdir}/ruby
+}
+
+FILES_${PN} = "${libdir}/ruby/serialport*"
+FILES_${PN}-dbg = "${libdir}/ruby/serialport/.debug*"
diff --git a/multitech/recipes/ruby-sqlite3/ruby-sqlite3_v1.3.7.bb b/multitech/recipes/ruby-sqlite3/ruby-sqlite3_v1.3.7.bb
new file mode 100644
index 0000000..2c1b0ad
--- /dev/null
+++ b/multitech/recipes/ruby-sqlite3/ruby-sqlite3_v1.3.7.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "Ruby bindings for the SQLite3 embedded database"
+HOMEPAGE = "https://github.com/luislavena/sqlite3-ruby"
+LICENSE = "GPL"
+SECTION = "console/utils"
+PRIORITY = "optional"
+
+DEPENDS = "ruby sqlite3"
+# RDEPENDS = "ruby sqlite3"
+
+PR = "r19"
+PACKAGES = "${PN}-dbg ${PN}"
+
+SRC_URI = "git://github.com/luislavena/sqlite3-ruby.git;tag=v1.3.7;protocol=git"
+
+S = "${WORKDIR}/git"
+
+do_compile() {
+ ${CC} ${CFLAGS} ${LDFLAGS} -I${WORKDIR}/git/ext/sqlite3 -I${WORKDIR}/git/ext/native -I${STAGING_INCDIR}/ruby-1.9.1 -I${STAGING_INCDIR}/ruby-1.9.1/arm-linux-eabi -c ${WORKDIR}/git/ext/sqlite3/*.c
+ ${CC} ${CFLAGS} ${LDFLAGS} --shared -o ${WORKDIR}/git/ext/sqlite3/sqlite3_native.so ${WORKDIR}/git/*.o -lsqlite3
+}
+
+do_install() {
+ install -d ${D}${libdir}/ruby ${D}${libdir}/ruby/sqlite3
+ install ${S}/${base_libdir}/sqlite3.rb ${D}${libdir}/ruby/sqlite3.rb
+ install ${S}/${base_libdir}/sqlite3/* ${S}/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/multitech/recipes/ruby/ruby.inc b/multitech/recipes/ruby/ruby.inc
new file mode 100644
index 0000000..f41adcf
--- /dev/null
+++ b/multitech/recipes/ruby/ruby.inc
@@ -0,0 +1,42 @@
+SUMMARY = "An interpreter of object-oriented scripting language"
+DESCRIPTION = "Ruby is an interpreted scripting language for quick \
+and easy object-oriented programming. It has many features to process \
+text files and to do system management tasks (as in Perl). \
+It is simple, straight-forward, and extensible. \
+"
+HOMEPAGE = "http://www.ruby-lang.org/"
+SECTION = "devel/ruby"
+LICENSE = "Ruby | BSD | GPLv2"
+LIC_FILES_CHKSUM = "\
+ file://COPYING;md5=837b32593517ae48b9c3b5c87a5d288c \
+ file://BSDL;md5=3949e007205deef714bd225e1ee4a8ea \
+ file://GPL;md5=393a5ca445f6965873eca0259a17f833 \
+ file://LEGAL;md5=e88686821918c0b6d2b1b8328116cec5 \
+"
+
+DEPENDS = "ruby-native zlib openssl tcl"
+DEPENDS_virtclass-native = ""
+
+INC_PR = "r1"
+
+SHRT_VER = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}"
+SRC_URI = "http://ftp.ruby-lang.org/pub/ruby/${SHRT_VER}/ruby-${PV}.tar.gz \
+ file://extmk_run.patch \
+ file://extmk.patch \
+"
+
+S = "${WORKDIR}/ruby-${PV}"
+
+inherit autotools
+
+# This snippet lets compiled extensions which rely on external libraries,
+# such as zlib, compile properly. If we don't do this, then when extmk.rb
+# runs, it uses the native libraries instead of the target libraries, and so
+# none of the linking operations succeed -- which makes extconf.rb think
+# that the libraries aren't available and hence that the extension can't be
+# built.
+
+do_configure_prepend() {
+ sed -i "s#%%TARGET_CFLAGS%%#$TARGET_CFLAGS#; s#%%TARGET_LDFLAGS%%#$TARGET_LDFLAGS#" ${S}/common.mk
+ rm -rf ${S}/ruby/
+}
diff --git a/multitech/recipes/ruby/ruby/extmk.patch b/multitech/recipes/ruby/ruby/extmk.patch
new file mode 100644
index 0000000..8b68450
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/extmk.patch
@@ -0,0 +1,13 @@
+diff -ru ruby-1.8.7-p248.orig/ext/extmk.rb ruby-1.8.7-p248/ext/extmk.rb
+--- ruby-1.8.7-p248.orig/ext/extmk.rb 2009-12-24 03:01:58.000000000 -0600
++++ ruby-1.8.7-p248/ext/extmk.rb 2010-02-12 15:55:27.370061558 -0600
+@@ -354,8 +354,8 @@
+ $ruby = '$(topdir)/miniruby' + EXEEXT
+ end
+ $ruby << " -I'$(topdir)'"
++$ruby << " -I'$(top_srcdir)/lib'"
+ unless CROSS_COMPILING
+- $ruby << " -I'$(top_srcdir)/lib'"
+ $ruby << " -I'$(extout)/$(arch)' -I'$(extout)/common'" if $extout
+ $ruby << " -I./- -I'$(top_srcdir)/ext' -rpurelib.rb"
+ ENV["RUBYLIB"] = "-"
diff --git a/multitech/recipes/ruby/ruby/extmk_run.patch b/multitech/recipes/ruby/ruby/extmk_run.patch
new file mode 100644
index 0000000..57926f5
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/extmk_run.patch
@@ -0,0 +1,15 @@
+============================================================
+--- packages/ruby/ruby-1.8.5/extmk_run.patch d9738b5a71e2f9a98d009af9fd0ef1ceaff9ef48
++++ packages/ruby/ruby-1.8.5/extmk_run.patch d9738b5a71e2f9a98d009af9fd0ef1ceaff9ef48
+@@ -0,0 +1,11 @@
++--- ruby-1.8.5/common.mk.orig 2006-12-30 13:07:32.000000000 +1100
+++++ ruby-1.8.5/common.mk 2006-12-30 13:08:32.000000000 +1100
++@@ -56,7 +56,7 @@
++ --make="$(MAKE)" \
++ --mflags="$(MFLAGS)" \
++ --make-flags="$(MAKEFLAGS)"
++-EXTMK_ARGS = $(SCRIPT_ARGS) --extout="$(EXTOUT)" --extension $(EXTS) --extstatic $(EXTSTATIC) --
+++EXTMK_ARGS = $(SCRIPT_ARGS) --with-ldflags="%%TARGET_LDFLAGS%%" --with-cflags="%%TARGET_CFLAGS%%" --extout="$(EXTOUT)" --extension $(EXTS) --extstatic $(EXTSTATIC) --
++
++ all: $(MKFILES) $(PREP) $(RBCONFIG) $(LIBRUBY)
++ @$(MINIRUBY) $(srcdir)/ext/extmk.rb $(EXTMK_ARGS)
diff --git a/multitech/recipes/ruby/ruby/ruby-1.9.3-Makefile-in.patch b/multitech/recipes/ruby/ruby/ruby-1.9.3-Makefile-in.patch
new file mode 100644
index 0000000..deb0a33
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/ruby-1.9.3-Makefile-in.patch
@@ -0,0 +1,11 @@
+--- a/Makefile.in.orig 2013-03-11 14:25:21.000000000 +0100
++++ b/Makefile.in 2013-03-11 14:25:37.000000000 +0100
+@@ -63,7 +63,7 @@
+ LIBS = @LIBS@ $(EXTLIBS)
+ MISSING = @LIBOBJS@ @ALLOCA@
+ LDSHARED = @LIBRUBY_LDSHARED@
+-DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(EXTLDFLAGS) $(ARCH_FLAG)
++DLDFLAGS = @LIBRUBY_DLDFLAGS@,--hash-style=gnu $(EXTLDFLAGS) $(ARCH_FLAG)
+ SOLIBS = @SOLIBS@
+ MAINLIBS = @MAINLIBS@
+ ARCHMINIOBJS = @MINIOBJS@
diff --git a/multitech/recipes/ruby/ruby/ruby-1.9.3-always-use-i386.patch b/multitech/recipes/ruby/ruby/ruby-1.9.3-always-use-i386.patch
new file mode 100644
index 0000000..f5a8c3d
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/ruby-1.9.3-always-use-i386.patch
@@ -0,0 +1,11 @@
+--- a/configure.in.orig 2011-10-18 08:56:21.587594685 +0200
++++ b/configure.in 2011-10-18 08:56:59.751593321 +0200
+@@ -2935,6 +2935,8 @@
+ configure_args=$ac_configure_args
+ AC_SUBST(configure_args)dnl
+
++target_cpu=`echo $target_cpu | sed s/i.86/i386/`
++
+ if test "${universal_binary-no}" = yes ; then
+ arch="universal-${target_os}"
+ AC_CACHE_CHECK(whether __ARCHITECTURE__ is available, rb_cv_architecture_available,
diff --git a/multitech/recipes/ruby/ruby/ruby-1.9.3-bignum-test-fix.patch b/multitech/recipes/ruby/ruby/ruby-1.9.3-bignum-test-fix.patch
new file mode 100644
index 0000000..cb3682d
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/ruby-1.9.3-bignum-test-fix.patch
@@ -0,0 +1,31 @@
+--- ruby-1.9.3-p0/test/ruby/test_bignum.rb.orig 2011-11-10 09:52:59.101925465 +0100
++++ ruby-1.9.3-p0/test/ruby/test_bignum.rb 2011-11-10 09:54:14.580798826 +0100
+@@ -378,7 +378,7 @@
+ assert_equal(true, (2**32).even?)
+ end
+
+- def interrupt
++ def assert_interrupt
+ time = Time.now
+ start_flag = false
+ end_flag = false
+@@ -387,14 +387,16 @@
+ yield
+ end_flag = true
+ end
+- sleep 1
++ Thread.pass until start_flag
+ thread.raise
+ thread.join rescue nil
+- start_flag && !end_flag && Time.now - time < 10
++ time = Time.now - time
++ assert_equal([true, false], [start_flag, end_flag])
++ assert_operator(time, :<, 10)
+ end
+
+ def test_interrupt
+- assert(interrupt { (65536 ** 65536).to_s })
++ assert_interrupt {(65536 ** 65536).to_s}
+ end
+
+ def test_too_big_to_s
diff --git a/multitech/recipes/ruby/ruby/ruby-1.9.3-custom-rubygems-location.patch b/multitech/recipes/ruby/ruby/ruby-1.9.3-custom-rubygems-location.patch
new file mode 100644
index 0000000..e11febc
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/ruby-1.9.3-custom-rubygems-location.patch
@@ -0,0 +1,86 @@
+From 279a693ce4ef3a887ce8d4fa59e0f2616a14d91a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
+Date: Fri, 11 Nov 2011 13:14:45 +0100
+Subject: [PATCH] Allow to install RubyGems into custom location, outside of
+ Ruby tree.
+
+---
+ configure.in | 8 ++++++++
+ tool/mkconfig.rb | 1 +
+ tool/rbinstall.rb | 9 +++++++++
+ version.c | 4 ++++
+ 4 files changed, 22 insertions(+)
+
+--- a/configure.in
++++ b/configure.in
+@@ -2801,6 +2801,13 @@
+ dir="${VENDOR_DIR}"
+ done
+
++AC_ARG_WITH(rubygemsdir,
++ AS_HELP_STRING([--with-rubygemsdir=DIR], [custom rubygems directory]),
++ [rubygemsdir=$withval])
++if test "$rubygemsdir" != ""; then
++ AC_DEFINE_UNQUOTED(RUBYGEMS_DIR,"$rubygemsdir")
++fi
++
+ if test "${LOAD_RELATIVE+set}"; then
+ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
+ RUBY_EXEC_PREFIX=""
+@@ -2921,6 +2928,7 @@
+ AC_SUBST(rubyhdrdir)dnl
+ AC_SUBST(sitehdrdir)dnl
+ AC_SUBST(vendorhdrdir)dnl
++AC_SUBST(rubygemsdir)dnl
+
+ AC_ARG_WITH(opt-dir,
+ AS_HELP_STRING([--with-opt-dir=DIR], [add optional headers and libraries DIR]))
+--- a/tool/mkconfig.rb
++++ b/tool/mkconfig.rb
+@@ -78,6 +78,7 @@
+ when /^RUBY_SO_NAME$/; next if $so_name
+ when /^arch$/; if val.empty? then val = arch else arch = val end
+ when /^sitearch/; val = '$(arch)' if val.empty?
++ when /^rubygemsdir/; next if val.empty?
+ end
+ case val
+ when /^\$\(ac_\w+\)$/; next
+--- a/tool/rbinstall.rb
++++ b/tool/rbinstall.rb
+@@ -300,6 +300,7 @@
+ sitearchlibdir = CONFIG["sitearchdir"]
+ vendorlibdir = CONFIG["vendorlibdir"]
+ vendorarchlibdir = CONFIG["vendorarchdir"]
++rubygemsdir = CONFIG["rubygemsdir"]
+ mandir = CONFIG["mandir"]
+ capidir = CONFIG["docdir"]
+ configure_args = Shellwords.shellwords(CONFIG["configure_args"])
+@@ -487,7 +488,15 @@
+ install?(:local, :comm, :lib) do
+ prepare "library scripts", rubylibdir
+ noinst = %w[README* *.txt *.rdoc]
++ noinst += %w[*ubygems.rb rubygems/ datadir.rb] if rubygemsdir
+ install_recursive(File.join(srcdir, "lib"), rubylibdir, :no_install => noinst, :mode => $data_mode)
++ if rubygemsdir
++ noinst = %w[obsolete.rb]
++ install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :mode => $data_mode)
++ install_recursive(File.join(srcdir, "lib", "rbconfig"), File.join(rubygemsdir, "rbconfig"), :no_install => noinst, :mode => $data_mode)
++ install(File.join(srcdir, "lib", "ubygems.rb"), File.join(rubygemsdir, "ubygems.rb"), :mode => $data_mode)
++ install(File.join(srcdir, "lib", "rubygems.rb"), File.join(rubygemsdir, "rubygems.rb"), :mode => $data_mode)
++ end
+ end
+
+ install?(:local, :arch, :lib) do
+--- a/version.c
++++ b/version.c
+@@ -97,6 +97,10 @@
+ #endif
+ #endif
+
++#ifdef RUBYGEMS_DIR
++ RUBYGEMS_DIR "\0"
++#endif
++
+ RUBY_LIB "\0"
+ #ifdef RUBY_THIN_ARCHLIB
+ RUBY_THIN_ARCHLIB "\0"
diff --git a/multitech/recipes/ruby/ruby/ruby-1.9.3-disable-versioned-paths.patch b/multitech/recipes/ruby/ruby/ruby-1.9.3-disable-versioned-paths.patch
new file mode 100644
index 0000000..6d0c5e1
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/ruby-1.9.3-disable-versioned-paths.patch
@@ -0,0 +1,149 @@
+From fa1a50ad10814f724b8713865dc222724cb955ab Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
+Date: Thu, 25 Aug 2011 14:33:51 +0200
+Subject: [PATCH] Allow to disable versioned paths.
+
+---
+ configure.in | 11 +++++++++++
+ tool/mkconfig.rb | 9 ++++++---
+ version.c | 10 ++++++++++
+ 3 files changed, 27 insertions(+), 3 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index e742e74..86cb68f 100644
+--- a/configure.in
++++ b/configure.in
+@@ -2963,6 +2963,17 @@ else
+ fi
+ AC_SUBST(USE_RUBYGEMS)
+
++AC_ARG_ENABLE(versioned-paths,
++ AS_HELP_STRING([--disable-versioned-paths], [disable paths with version number]),
++ [enable_versioned_paths="$enableval"], [enable_versioned_paths=yes])
++if test x"$enable_versioned_paths" = xno; then
++ AC_DEFINE(DISABLE_VERSIONED_PATHS, 1)
++ USE_VERSIONED_PATHS=NO
++else
++ USE_VERSIONED_PATHS=YES
++fi
++AC_SUBST(USE_VERSIONED_PATHS)
++
+ arch_hdrdir="${EXTOUT}/include/${arch}/ruby"
+ AS_MKDIR_P("${arch_hdrdir}")
+ config_h="${arch_hdrdir}/config.h"
+diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
+index a2221f0..47d8c8f 100755
+--- a/tool/mkconfig.rb
++++ b/tool/mkconfig.rb
+@@ -42,6 +42,7 @@ v_others = []
+ vars = {}
+ continued_name = nil
+ continued_line = nil
++path_version = "/$(ruby_version)"
+ File.foreach "config.status" do |line|
+ next if /^#/ =~ line
+ name = nil
+@@ -138,6 +139,8 @@ File.foreach "config.status" do |line|
+ case name
+ when "ruby_version"
+ version = val[/\A"(.*)"\z/, 1]
++ when /^USE_VERSIONED_PATHS$/
++ path_version = nil if /NO/ =~ val
+ end
+ end
+ # break if /^CEOF/
+@@ -203,15 +206,15 @@ end
+ print(*v_fast)
+ print(*v_others)
+ print <<EOS
+- CONFIG["rubylibdir"] = "$(rubylibprefix)/$(ruby_version)"
++ CONFIG["rubylibdir"] = "$(rubylibprefix)#{path_version}"
+ CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
+ EOS
+ print <<EOS unless v_disabled["sitedir"]
+- CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
++ CONFIG["sitelibdir"] = "$(sitedir)#{path_version}"
+ CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
+ EOS
+ print <<EOS unless v_disabled["vendordir"]
+- CONFIG["vendorlibdir"] = "$(vendordir)/$(ruby_version)"
++ CONFIG["vendorlibdir"] = "$(vendordir)#{path_version}"
+ CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)"
+ EOS
+ print <<EOS
+diff --git a/version.c b/version.c
+index 59d4e5e..641dc33 100644
+--- a/version.c
++++ b/version.c
+@@ -38,9 +38,15 @@
+ #define RUBY_VENDOR_LIB RUBY_LIB_PREFIX"/vendor_ruby"
+ #endif
+
++#ifdef DISABLE_VERSIONED_PATHS
++#define RUBY_LIB RUBY_LIB_PREFIX
++#define RUBY_SITE_LIB2 RUBY_SITE_LIB
++#define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB
++#else
+ #define RUBY_LIB RUBY_LIB_PREFIX "/"RUBY_LIB_VERSION
+ #define RUBY_SITE_LIB2 RUBY_SITE_LIB "/"RUBY_LIB_VERSION
+ #define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB "/"RUBY_LIB_VERSION
++#endif
+ #define RUBY_ARCHLIB RUBY_LIB "/"RUBY_ARCH
+ #define RUBY_SITE_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_SITEARCH
+ #define RUBY_VENDOR_ARCHLIB RUBY_VENDOR_LIB2 "/"RUBY_SITEARCH
+@@ -75,8 +81,10 @@ const char ruby_initial_load_paths[] =
+ RUBY_SITE_THIN_ARCHLIB "\0"
+ #endif
+ RUBY_SITE_ARCHLIB "\0"
++#ifndef DISABLE_VERSIONED_PATHS
+ RUBY_SITE_LIB "\0"
+ #endif
++#endif
+
+ #ifndef NO_RUBY_VENDOR_LIB
+ RUBY_VENDOR_LIB2 "\0"
+@@ -84,8 +92,10 @@ const char ruby_initial_load_paths[] =
+ RUBY_VENDOR_THIN_ARCHLIB "\0"
+ #endif
+ RUBY_VENDOR_ARCHLIB "\0"
++#ifndef DISABLE_VERSIONED_PATHS
+ RUBY_VENDOR_LIB "\0"
+ #endif
++#endif
+
+ RUBY_LIB "\0"
+ #ifdef RUBY_THIN_ARCHLIB
+--
+1.7.7.3
+diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb
+index a3c65bf..0575730 100644
+--- a/lib/rdoc/ri/paths.rb
++++ b/lib/rdoc/ri/paths.rb
+@@ -11,9 +11,9 @@ module RDoc::RI::Paths
+ version = RbConfig::CONFIG['ruby_version']
+
+ base = if RbConfig::CONFIG.key? 'ridir' then
+- File.join RbConfig::CONFIG['ridir'], version
++ File.join [RbConfig::CONFIG['ridir'], RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil].compact
+ else
+- File.join RbConfig::CONFIG['datadir'], 'ri', version
++ File.join [RbConfig::CONFIG['datadir'], 'ri', RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil].compact
+ end
+
+ SYSDIR = File.join base, "system"
+diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
+index cec8c9f..fed14d2 100755
+--- a/tool/rbinstall.rb
++++ b/tool/rbinstall.rb
+@@ -379,7 +379,7 @@ end
+
+ install?(:doc, :rdoc) do
+ if $rdocdir
+- ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version'], "system")
++ ridatadir = File.join([CONFIG['ridir'], RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil, "system"].compact)
+ prepare "rdoc", ridatadir
+ install_recursive($rdocdir, ridatadir, :mode => $data_mode)
+ end
+--
+1.7.6
+
diff --git a/multitech/recipes/ruby/ruby/ruby-1.9.3-fix-s390x-build.patch b/multitech/recipes/ruby/ruby/ruby-1.9.3-fix-s390x-build.patch
new file mode 100644
index 0000000..d0ade91
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/ruby-1.9.3-fix-s390x-build.patch
@@ -0,0 +1,12 @@
+diff -up ruby-1.9.3-p0/ext/tk/extconf.rb.orig ruby-1.9.3-p0/ext/tk/extconf.rb
+--- ruby-1.9.3-p0/ext/tk/extconf.rb.orig 2011-06-29 16:11:19.000000000 +0200
++++ ruby-1.9.3-p0/ext/tk/extconf.rb 2011-10-18 16:15:59.406299659 +0200
+@@ -114,7 +114,7 @@ def is_macosx?
+ end
+
+ def maybe_64bit?
+- /64|universal/ =~ RUBY_PLATFORM
++ /64|universal|s390x/ =~ RUBY_PLATFORM
+ end
+
+ def check_tcltk_version(version)
diff --git a/multitech/recipes/ruby/ruby/ruby-1.9.3-install-cross.patch b/multitech/recipes/ruby/ruby/ruby-1.9.3-install-cross.patch
new file mode 100644
index 0000000..9515ece
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/ruby-1.9.3-install-cross.patch
@@ -0,0 +1,16 @@
+---
+ Makefile.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -210,7 +210,8 @@
+ @$(RM) fake.rb fake-rbconfig.rb
+ $(INSTALL_DATA) $(arch_hdrdir)/ruby/config.h $(XRUBY_RUBYHDRDIR)/$(arch)/ruby
+ $(INSTALL_DATA) $(top_srcdir)/include/ruby/win32.h $(XRUBY_RUBYHDRDIR)/ruby
+- $(INSTALL_DATA) $(LIBRUBY) $(LIBRUBY_A) $(XRUBY_RUBYLIBDIR)/$(arch)
++ $(INSTALL_DATA) $(LIBRUBY) $(XRUBY_RUBYLIBDIR)/$(arch)
++ $(INSTALL_DATA) $(LIBRUBY_A) $(XRUBY_RUBYLIBDIR)/$(arch)
+ $(INSTALL_PROGRAM) $(LIBRUBY_SO) $(XRUBY_RUBYLIBDIR)/$(arch)
+
+ Makefile: $(srcdir)/Makefile.in $(srcdir)/enc/Makefile.in
diff --git a/multitech/recipes/ruby/ruby/ruby-1.9.3-mkmf-verbose.patch b/multitech/recipes/ruby/ruby/ruby-1.9.3-mkmf-verbose.patch
new file mode 100644
index 0000000..7da66c8
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/ruby-1.9.3-mkmf-verbose.patch
@@ -0,0 +1,11 @@
+--- ruby-1.9.3-p0/lib/mkmf.rb.debug 2011-08-11 15:07:37.000000000 +0900
++++ ruby-1.9.3-p0/lib/mkmf.rb 2012-01-29 21:34:17.000000000 +0900
+@@ -1638,7 +1638,7 @@
+ SHELL = /bin/sh
+
+ # V=0 quiet, V=1 verbose. other values don't work.
+-V = 0
++V = 1
+ Q1 = $(V:1=)
+ Q = $(Q1:0=@)
+ n=$(NULLCMD)
diff --git a/multitech/recipes/ruby/ruby/ruby-1.9.3-rubygems-1.8.11-uninstaller.patch b/multitech/recipes/ruby/ruby/ruby-1.9.3-rubygems-1.8.11-uninstaller.patch
new file mode 100644
index 0000000..af1cff2
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/ruby-1.9.3-rubygems-1.8.11-uninstaller.patch
@@ -0,0 +1,76 @@
+--- ruby-1.9.3-p0/lib/rubygems/uninstaller.rb.orig 2011-10-31 10:22:36.321579483 +0100
++++ ruby-1.9.3-p0/lib/rubygems/uninstaller.rb 2011-10-31 10:34:25.563626119 +0100
+@@ -51,15 +51,14 @@
+ @bin_dir = options[:bin_dir]
+ @format_executable = options[:format_executable]
+
++ if options[:force]
++ @force_all = true
++ @force_ignore = true
++ end
++
+ # only add user directory if install_dir is not set
+ @user_install = false
+ @user_install = options[:user_install] unless options[:install_dir]
+-
+- if @user_install then
+- Gem.use_paths Gem.user_dir, @gem_home
+- else
+- Gem.use_paths @gem_home
+- end
+ end
+
+ ##
+@@ -69,10 +68,24 @@
+ def uninstall
+ list = Gem::Specification.find_all_by_name(@gem, @version)
+
++ list, other_repo_specs = list.partition do |spec|
++ @gem_home == spec.base_dir or
++ (@user_install and spec.base_dir == Gem.user_dir)
++ end
++
+ if list.empty? then
+- raise Gem::InstallError, "gem #{@gem.inspect} is not installed"
++ raise Gem::InstallError, "gem #{@gem.inspect} is not installed" if
++ other_repo_specs.empty?
++
++ other_repos = other_repo_specs.map { |spec| spec.base_dir }.uniq
++
++ message = ["#{@gem} is not installed in GEM_HOME, try:"]
++ message.concat other_repos.map { |repo|
++ "\tgem uninstall -i #{repo} #{@gem}"
++ }
+
+- elsif list.size > 1 and @force_all then
++ raise Gem::InstallError, message.join("\n")
++ elsif @force_all then
+ remove_all list
+
+ elsif list.size > 1 then
+@@ -250,12 +263,10 @@
+ msg << "\t#{spec.full_name}"
+
+ spec.dependent_gems.each do |dep_spec, dep, satlist|
+- msg <<
+- ("#{dep_spec.name}-#{dep_spec.version} depends on " +
+- "[#{dep.name} (#{dep.requirement})]")
++ msg << "#{dep_spec.name}-#{dep_spec.version} depends on #{dep}"
+ end
+
+- msg << 'If you remove this gems, one or more dependencies will not be met.'
++ msg << 'If you remove this gem, one or more dependencies will not be met.'
+ msg << 'Continue with Uninstall?'
+ return ask_yes_no(msg.join("\n"), true)
+ end
+
+--- ruby-1.9.3-p0/test/rubygems/test_gem_uninstaller.rb.orig 2011-11-03 08:58:31.411272176 +0100
++++ ruby-1.9.3-p0/test/rubygems/test_gem_uninstaller.rb 2011-11-03 08:58:43.010272351 +0100
+@@ -225,7 +225,7 @@
+
+ uninstaller = Gem::Uninstaller.new('a')
+
+- use_ui Gem::MockGemUi.new("2\n") do
++ use_ui Gem::MockGemUi.new("2\ny\n") do
+ uninstaller.uninstall
+ end
diff --git a/multitech/recipes/ruby/ruby/ruby-1.9.3-socket-extconf-hardcode-wide-getaddr-info-test-outcome.patch b/multitech/recipes/ruby/ruby/ruby-1.9.3-socket-extconf-hardcode-wide-getaddr-info-test-outcome.patch
new file mode 100644
index 0000000..712602a
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/ruby-1.9.3-socket-extconf-hardcode-wide-getaddr-info-test-outcome.patch
@@ -0,0 +1,26 @@
+From 9341293e71c03fe606edc9157bf1e13e3dd5b507 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Fri, 17 Dec 2010 11:35:38 +0100
+Subject: [PATCH] socket extconf: hardcode wide-getaddr info test outcome to true
+
+Without this the socket extension doesn't build correctly
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ ext/socket/extconf.rb | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/ext/socket/extconf.rb
++++ b/ext/socket/extconf.rb
+@@ -356,6 +356,11 @@
+ exit(EXIT_FAILURE);
+ }
+ EOF
++
++# Ignore the actual result of the above test and assume that
++# everything is OK.
++getaddr_info_ok = true
++
+ if ipv6 and not getaddr_info_ok
+ abort <<EOS
+
diff --git a/multitech/recipes/ruby/ruby/rubygems-1.8.11-binary-extensions.patch b/multitech/recipes/ruby/ruby/rubygems-1.8.11-binary-extensions.patch
new file mode 100644
index 0000000..5a3bfb4
--- /dev/null
+++ b/multitech/recipes/ruby/ruby/rubygems-1.8.11-binary-extensions.patch
@@ -0,0 +1,296 @@
+From 5a37a3489491a33f2e7011043fbbcd9a765e1777 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
+Date: Thu, 3 Nov 2011 16:43:05 +0100
+Subject: [PATCH 1/6] Add dedicate extensions folder into $LOAD_PATH.
+
+---
+ lib/rubygems/specification.rb | 37 ++++++++++++++++++++++++++++++-------
+ 1 files changed, 30 insertions(+), 7 deletions(-)
+
+diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
+index 97db19e..263e7d3 100644
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -843,6 +843,12 @@ class Gem::Specification
+ File.join full_gem_path, path
+ end
+
++ unless extensions.empty?
++ paths += require_paths.map do |path|
++ File.join ext_dir, path
++ end
++ end
++
+ # gem directories must come after -I and ENV['RUBYLIB']
+ insert_index = Gem.load_path_insert_index
+
+@@ -954,16 +960,16 @@ class Gem::Specification
+
+ def contains_requirable_file? file
+ root = full_gem_path
++ ext = ext_dir
++
++ require_paths.any? do |lib|
++ base = ["#{root}/#{lib}/#{file}"]
++ base << "#{ext}/#{lib}/#{file}" unless extensions.empty?
+
+- require_paths.each do |lib|
+- base = "#{root}/#{lib}/#{file}"
+- Gem.suffixes.each do |suf|
+- path = "#{base}#{suf}"
+- return true if File.file? path
++ base.any? do |path|
++ Gem.suffixes.any? { |suf| File.file? "#{path}#{suf}" }
+ end
+ end
+-
+- return false
+ end
+
+ ##
+@@ -1273,6 +1279,23 @@ class Gem::Specification
+ end
+
+ ##
++ # Returns the full path to this spec's ext directory.
++ # eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
++
++ def ext_dir
++ @gem_dir ||= File.expand_path File.join(exts_dir, full_name)
++ end
++
++ ##
++ # Returns the full path to the exts directory containing this spec's
++ # gem directory. eg: /usr/local/lib/ruby/1.8/exts
++
++ def exts_dir
++ # TODO: this logic seems terribly broken, but tests fail if just base_dir
++ @exts_dir ||= File.join(loaded_from && base_dir || Gem.dir, "exts")
++ end
++
++ ##
+ # Deprecated and ignored, defaults to true.
+ #
+ # Formerly used to indicate this gem was RDoc-capable.
+--
+1.7.7.3
+
+
+From 671e4285bf9db948bc5f054d7d3d931cdd7a17f8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
+Date: Wed, 16 Nov 2011 13:26:48 +0100
+Subject: [PATCH 2/6] Use spec's ext dir for extension installation.
+
+---
+ lib/rubygems/installer.rb | 2 +-
+ lib/rubygems/specification.rb | 7 +++----
+ 2 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
+index 74d803d..0063c7f 100644
+--- a/lib/rubygems/installer.rb
++++ b/lib/rubygems/installer.rb
+@@ -499,7 +499,7 @@ TEXT
+ def build_extensions
+ return if spec.extensions.empty?
+ say "Building native extensions. This could take a while..."
+- dest_path = File.join gem_dir, spec.require_paths.first
++ dest_path = spec.ext_dir
+ ran_rake = false # only run rake once
+
+ spec.extensions.each do |extension|
+diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
+index 263e7d3..d31b93b 100644
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -1283,16 +1283,15 @@ class Gem::Specification
+ # eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
+
+ def ext_dir
+- @gem_dir ||= File.expand_path File.join(exts_dir, full_name)
++ @ext_dir ||= File.join exts_dir, full_name, require_paths.first
+ end
+
+ ##
+ # Returns the full path to the exts directory containing this spec's
+- # gem directory. eg: /usr/local/lib/ruby/1.8/exts
++ # gem directory. eg: /usr/local/lib/ruby/1.8/gems
+
+ def exts_dir
+- # TODO: this logic seems terribly broken, but tests fail if just base_dir
+- @exts_dir ||= File.join(loaded_from && base_dir || Gem.dir, "exts")
++ @exts_dir ||= gems_dir
+ end
+
+ ##
+--
+1.7.7.3
+
+
+From 11b4a0cbadd8b1d3320f838881aa60feb6f848e7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
+Date: Wed, 16 Nov 2011 14:52:16 +0100
+Subject: [PATCH 3/6] Simplify the extending of $LOAD_PATH for binary gems.
+
+---
+ lib/rubygems/specification.rb | 11 +++++------
+ 1 files changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
+index d31b93b..e65ea2d 100644
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -843,11 +843,7 @@ class Gem::Specification
+ File.join full_gem_path, path
+ end
+
+- unless extensions.empty?
+- paths += require_paths.map do |path|
+- File.join ext_dir, path
+- end
+- end
++ paths << ext_dir unless extensions.empty? || paths.include?(ext_dir)
+
+ # gem directories must come after -I and ENV['RUBYLIB']
+ insert_index = Gem.load_path_insert_index
+@@ -1291,7 +1287,10 @@ class Gem::Specification
+ # gem directory. eg: /usr/local/lib/ruby/1.8/gems
+
+ def exts_dir
+- @exts_dir ||= gems_dir
++ @exts_dir ||= begin
++ dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
++ dirs ? File.join(dirs.last[:ext_dir], 'exts') : gems_dir
++ end
+ end
+
+ ##
+--
+1.7.7.3
+
+
+From 5d46cd2b1ac9517a9cbcfa430261e62bb3a376b8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
+Date: Fri, 9 Dec 2011 16:31:04 +0100
+Subject: [PATCH 4/6] Fix the binary extension search path construction.
+
+---
+ lib/rubygems/installer.rb | 2 +-
+ lib/rubygems/specification.rb | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
+index 0063c7f..83b8fd5 100644
+--- a/lib/rubygems/installer.rb
++++ b/lib/rubygems/installer.rb
+@@ -499,7 +499,7 @@ TEXT
+ def build_extensions
+ return if spec.extensions.empty?
+ say "Building native extensions. This could take a while..."
+- dest_path = spec.ext_dir
++ dest_path = File.join spec.ext_dir, spec.require_paths.first
+ ran_rake = false # only run rake once
+
+ spec.extensions.each do |extension|
+diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
+index e65ea2d..8be2ade 100644
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -843,7 +843,7 @@ class Gem::Specification
+ File.join full_gem_path, path
+ end
+
+- paths << ext_dir unless extensions.empty? || paths.include?(ext_dir)
++ paths << File.join(ext_dir, require_paths.first) unless extensions.empty? || (ext_dir == full_gem_path)
+
+ # gem directories must come after -I and ENV['RUBYLIB']
+ insert_index = Gem.load_path_insert_index
+@@ -1279,7 +1279,7 @@ class Gem::Specification
+ # eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
+
+ def ext_dir
+- @ext_dir ||= File.join exts_dir, full_name, require_paths.first
++ @ext_dir ||= File.join exts_dir, full_name
+ end
+
+ ##
+--
+1.7.7.3
+
+
+From 6229583633802b45e5a3e5689ab9077347cd9ef7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
+Date: Tue, 13 Dec 2011 12:14:54 +0100
+Subject: [PATCH 5/6] Remove binary extensions during uninstall.
+
+---
+ lib/rubygems/uninstaller.rb | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/lib/rubygems/uninstaller.rb b/lib/rubygems/uninstaller.rb
+index cc32ea4..94d78e0 100644
+--- a/lib/rubygems/uninstaller.rb
++++ b/lib/rubygems/uninstaller.rb
+@@ -213,6 +213,7 @@ class Gem::Uninstaller
+ File.writable?(spec.base_dir)
+
+ FileUtils.rm_rf spec.full_gem_path
++ FileUtils.rm_rf spec.ext_dir
+
+ # TODO: should this be moved to spec?... I vote eww (also exists in docmgr)
+ old_platform_name = [spec.name,
+--
+1.7.7.3
+
+
+From bc40e1b9f60a9a04456e3504ffe6ee600b6da269 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
+Date: Tue, 13 Dec 2011 14:27:14 +0100
+Subject: [PATCH 6/6] Avoid dependency on customized operating_system.rb.
+
+---
+ lib/rubygems/defaults.rb | 11 +++++++++++
+ lib/rubygems/specification.rb | 5 +----
+ 2 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
+index 20b4198..6d8711f 100644
+--- a/lib/rubygems/defaults.rb
++++ b/lib/rubygems/defaults.rb
+@@ -87,6 +87,17 @@ module Gem
+ end
+
+ ##
++ # Returns binary extensions dir for specified RubyGems base dir or nil
++ # if such directory cannot be determined.
++ #
++ # By default, the binary extensions are located side by side with their
++ # Ruby counterparts, therefore nil is returned
++
++ def self.default_ext_dir_for base_dir
++ nil
++ end
++
++ ##
+ # The default system-wide source info cache directory
+
+ def self.default_system_source_cache_dir
+diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
+index 8be2ade..f54210a 100644
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -1287,10 +1287,7 @@ class Gem::Specification
+ # gem directory. eg: /usr/local/lib/ruby/1.8/gems
+
+ def exts_dir
+- @exts_dir ||= begin
+- dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
+- dirs ? File.join(dirs.last[:ext_dir], 'exts') : gems_dir
+- end
++ @exts_dir ||= Gem.default_ext_dir_for(base_dir) || gems_dir
+ end
+
+ ##
+--
+1.7.7.3
+
diff --git a/multitech/recipes/ruby/ruby_1.9.3-p392.bb b/multitech/recipes/ruby/ruby_1.9.3-p392.bb
new file mode 100644
index 0000000..4d3f3f1
--- /dev/null
+++ b/multitech/recipes/ruby/ruby_1.9.3-p392.bb
@@ -0,0 +1,49 @@
+require ruby.inc
+PR = "${INC_PR}.0"
+
+DEPENDS += "libyaml"
+
+SRC_URI += "\
+ file://ruby-1.9.3-socket-extconf-hardcode-wide-getaddr-info-test-outcome.patch \
+ file://ruby-1.9.3-always-use-i386.patch \
+ file://ruby-1.9.3-disable-versioned-paths.patch \
+ file://ruby-1.9.3-fix-s390x-build.patch \
+ file://ruby-1.9.3-rubygems-1.8.11-uninstaller.patch \
+ file://ruby-1.9.3-bignum-test-fix.patch \
+ file://ruby-1.9.3-custom-rubygems-location.patch \
+ file://rubygems-1.8.11-binary-extensions.patch \
+ file://ruby-1.9.3-mkmf-verbose.patch \
+ file://ruby-1.9.3-install-cross.patch \
+ file://ruby-1.9.3-Makefile-in.patch"
+
+SRC_URI[md5sum] = "f689a7b61379f83cbbed3c7077d83859"
+SRC_URI[sha256sum] = "8861ddadb2cd30fb30e42122741130d12f6543c3d62d05906cd41076db70975f"
+
+EXTRA_OECONF = "\
+ --enable-wide-getaddrinfo \
+ --with-rubygemsdir=${datadir}/rubygems \
+ --disable-versioned-paths \
+ --disable-rpath \
+ --enable-shared"
+
+EXTRA_OEMAKE = " \
+ LIBRUBYARG='-lruby-static'"
+
+DLDFLAGS+='--hash-style=gnu'
+
+do_install() {
+ if [ ${PN} = "ruby" ]; then
+ oe_runmake 'DESTDIR=${D}' install install-cross
+ else
+ oe_runmake 'DESTDIR=${D}' install
+ fi
+}
+
+FILES_${PN} += "${datadir}/rubygems \
+ ${datadir}/ri"
+
+FILES_${PN}-dbg += "${libdir}/ruby/*/.debug \
+ ${libdir}/ruby/*/*/.debug \
+ ${libdir}/ruby/*/*/*/.debug"
+
+BBCLASSEXTEND = "native"
diff --git a/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0.inc b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0.inc
index 7ca4cc3..4d2c316 100644
--- a/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0.inc
+++ b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0.inc
@@ -16,6 +16,7 @@ SRC_URI = "http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz \
file://wpa-supplicant.sh \
file://wpa_supplicant.conf \
file://wpa_supplicant.conf-sane \
+ file://wpa_supplicant.conf.example \
file://99_wpa_supplicant"
S = "${WORKDIR}/wpa_supplicant-${PV}/wpa_supplicant"
@@ -49,6 +50,7 @@ do_install () {
install -d ${D}${sysconfdir}/default
install -m 600 ${WORKDIR}/defaults-sane ${D}${sysconfdir}/default/wpa
install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant.conf
+ install -m 600 ${WORKDIR}/wpa_supplicant.conf.example ${D}${sysconfdir}/wpa_supplicant.conf.example
if grep -q ^CONFIG_CTRL_IFACE_DBUS=y .config || grep -q ^CONFIG_CTRL_IFACE_DBUS_NEW=y .config; then
install -d ${D}/${sysconfdir}/dbus-1/system.d
diff --git a/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf.example b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf.example
new file mode 100644
index 0000000..dd593fc
--- /dev/null
+++ b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf.example
@@ -0,0 +1,11 @@
+ctrl_interface=/var/run/wpa_supplicant
+
+network={
+ ssid="your network name"
+ scan_ssid=1 # necessary for hidden networks
+ key_mgmt=WPA-PSK
+ psk="the password for your network"
+ priority=0 # default priority - increase
+ # to prefer this network
+ # over others
+}
diff --git a/multitech/recipes/wpa-supplicant/wpa-supplicant_1.0.bb b/multitech/recipes/wpa-supplicant/wpa-supplicant_1.0.bb
index 32fc4dd..943603d 100644
--- a/multitech/recipes/wpa-supplicant/wpa-supplicant_1.0.bb
+++ b/multitech/recipes/wpa-supplicant/wpa-supplicant_1.0.bb
@@ -1,6 +1,6 @@
require wpa-supplicant-1.0.inc
-PR = "${INC_PR}.0"
+PR = "${INC_PR}.1"
SRC_URI[md5sum] = "8650f6aa23646ef634402552d0669640"
SRC_URI[sha256sum] = "91d41d473a5aafa2e25dd6577ebda975c4d4a3188850a53e31feaf7c04482b9c"