diff options
author | Jesse Gilles <jgilles@multitech.com> | 2013-04-18 11:29:07 -0500 |
---|---|---|
committer | Jesse Gilles <jgilles@multitech.com> | 2013-04-18 11:29:07 -0500 |
commit | 55fa64278b0c3dda9144b0fac0d133e70dacdc5f (patch) | |
tree | f2cc776beb3337acb642f956466f3c8285447da9 /multitech/recipes | |
parent | 5dac55e131fb9cbe1b24b5a560559b9bda56201e (diff) | |
parent | c68bafcef449dffb836bb2c9489db597a514afb9 (diff) |
Merge branch 'ruby-1.9.3' of sw.multitech.prv:/usr/local/git/jjg/corecdp-dev
Diffstat (limited to 'multitech/recipes')
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" |