From ab9c1b84b96270d445031b9e12aee5ddbbc9b21e Mon Sep 17 00:00:00 2001 From: Wuodan0 Date: Fri, 4 Jan 2013 14:08:08 +0000 Subject: [PATCH] sys-kernel/compat-drivers: new configuration in compat-drivers-3.7.eclass wrt issue #40 --- eclass/compat-drivers-3.7.eclass | 518 ++++++++++++++++++ sys-kernel/compat-drivers/Manifest | 5 +- .../compat-drivers-3.7_rc1_p6-r1.ebuild | 177 ++++++ .../compat-drivers-3.7_rc1_p6.ebuild | 2 +- sys-kernel/compat-drivers/metadata.xml | 22 + 5 files changed, 721 insertions(+), 3 deletions(-) create mode 100644 eclass/compat-drivers-3.7.eclass create mode 100644 sys-kernel/compat-drivers/compat-drivers-3.7_rc1_p6-r1.ebuild diff --git a/eclass/compat-drivers-3.7.eclass b/eclass/compat-drivers-3.7.eclass new file mode 100644 index 000000000..4a0361a8f --- /dev/null +++ b/eclass/compat-drivers-3.7.eclass @@ -0,0 +1,518 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + + +# @ECLASS: compat-drivers-3.7.eclass +# @MAINTAINER: +# wuodan@pentoo.ch +# @BLURB: Implements functionality of driver-select script for several modules +# @DESCRIPTION: +# Implements functionality of driver-select script for several modules + +# compose IUSE and REQUIRED_USE from the categories +REQUIRED_USE+=" || (" +for useexp in ${CPD_USE_EXPAND}; do + USE_TEMP="\$CPD_USE_EXPAND_$useexp" + for iuse in `eval echo "\$USE_TEMP"`; do + if [ "${iuse:0:1}" = '+' ]; then + IUSE+=" ${iuse:0:1}compat_drivers_${useexp}_${iuse:1}" || die + REQUIRED_USE+=" compat_drivers_${useexp}_${iuse:1}" || die + else + IUSE+=" compat_drivers_${useexp}_${iuse}" || die + REQUIRED_USE+=" compat_drivers_${useexp}_${iuse}" || die + fi + done +done +REQUIRED_USE+=" )" + +# ============================================================================== +# INTERNAL VARIABLES +# ============================================================================== + +# @VARIABLE: CPD_USE_EXPAND +# @DESCRIPTION: +# This variable needs to be set in the ebuild and contains the categories for +# USE_EXPAND + +# @VARIABLE: CPD_USE_EXPAND_category +# @DESCRIPTION: +# These variables need to be set in the ebuild, one per category in +# CPD_USE_EXPAND. They contain the modules of the categories. + +# @ECLASS-VARIABLE: CPD_MODULE +# @DESCRIPTION: +# This internal variable contains a temporary value, the currently processed +# module. + +# @ECLASS-VARIABLE: CPD_DISABLE_${CPD_MODULE} +# @DESCRIPTION: +# These internal variables contains values, the 'disable-actions' of the +# currently processed module. One variable exists for each active module. + +# @ECLASS-VARIABLE: CPD_MAKEFILES +# @DESCRIPTION: +# This internal variable contains a list of all 'Makefile's +CPD_MAKEFILES=" + MAKEFILE + COMPAT_CONFIG_CW + DRIVERS_MAKEFILE + ATH_MAKEFILE + ATH9K_MAKEFILE + BRCM80211_MAKEFILE + RT2X00_MAKEFILE + TI_MAKEFILE + NET_WIRELESS_MAKEFILE + EEPROM_MAKEFILE + DRIVERS_NET_ATHEROS + DRIVERS_NET_BROADCOM + DRIVERS_NET_USB_MAKEFILE + SSB_MAKEFILE + BCMA_MAKEFILE" + +# @ECLASS-VARIABLE: CPD_MAKEFILES_ARRAY +# @DESCRIPTION: +# This internal variable contains an array with paths to all files +CPD_MAKEFILES_ARRAY=( + MAKEFILE=Makefile + COMPAT_CONFIG_CW=config.mk + DRIVERS_MAKEFILE=drivers/net/wireless/Makefile + ATH_MAKEFILE=drivers/net/wireless/ath/Makefile + ATH9K_MAKEFILE=drivers/net/wireless/ath/ath9k/Makefile + BRCM80211_MAKEFILE=drivers/net/wireless/brcm80211/Makefile + RT2X00_MAKEFILE=drivers/net/wireless/rt2x00/Makefile + TI_MAKEFILE=drivers/net/wireless/ti/Makefile + NET_WIRELESS_MAKEFILE=net/wireless/Makefile + EEPROM_MAKEFILE=drivers/misc/eeprom/Makefile + DRIVERS_NET_ATHEROS=drivers/net/ethernet/atheros/Makefile + DRIVERS_NET_BROADCOM=drivers/net/ethernet/broadcom/Makefile + DRIVERS_NET_USB_MAKEFILE=drivers/net/usb/Makefile + SSB_MAKEFILE=drivers/ssb/Makefile + BCMA_MAKEFILE=drivers/bcma/Makefile +) + +# ============================================================================== +# INTERNAL FUNCTIONS +# ============================================================================== + +# @FUNCTION: get_makefile +# @DESCRIPTION: +# This internal function returns the path to a file from CPD_MAKEFILES_ARRAY +function get_makefile { + for file in "${CPD_MAKEFILES_ARRAY[@]}"; do + if [ "${file%%=*}" = "${1}" ]; then + echo "${file#*=}" + return 0 + fi + done + die "Not found" +} + +# @FUNCTION: select_drivers_from_makefile +# @DESCRIPTION: +# This internal function filters a Makefile +# It deletes all non matching lines! +function select_drivers_from_makefile +{ + local makefile=$(get_makefile "$1") + shift + local configs="" + for i in $@; do + [ "${configs}" != '' ] && configs+='|' + configs+="${i}" + done + einfo "Filtering file ${makefile} for: ${configs}" + sed -r "/${configs}/!d" ${makefile} > ${makefile}.tmp || die + mv ${makefile}.tmp ${makefile} || die +} + +# @FUNCTION: disable +# @DESCRIPTION: +# This internal function registers a 'disable' action for a module. +# It writes to a variable CPD_DISABLE_${CPD_MODULE} +function disable { + eval "CPD_DISABLE_${CPD_MODULE}+=\" ${*}\"" || die +} + +# @FUNCTION: disable_makefile +# @DESCRIPTION: +# This internal function clears a Makefile completely. Use with care! +function disable_makefile { + einfo "Clearing entire file: ${1}" + echo > $1 || die +} + +# @FUNCTION: disable_staging +# @DESCRIPTION: +# This internal function disables "staging" +function disable_staging +{ + # perl -i -ne 'print if ! /CONFIG_COMPAT_STAGING/ ' "${MAKEFILE}" + sed -i '/CONFIG_COMPAT_STAGING/d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_update-initramfs +# @DESCRIPTION: +# This internal function disables "update-initramfs" +function disable_update-initramfs +{ + # perl -i -ne 'print if ! /update-initramfs/' "${MAKEFILE}" + sed -i '/update-initramfs/d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_lib80211 +# @DESCRIPTION: +# This internal function disables "update-initramfs" +function disable_lib80211 +{ + # perl -i -ne 'print if ! /LIB80211/ ' $NET_WIRELESS_MAKEFILE + sed -i '/LIB80211/d' "$(get_makefile NET_WIRELESS_MAKEFILE)" || die +} + +# @FUNCTION: disable_b44 +# @DESCRIPTION: +# This internal function disables "b44" +function disable_b44 { + # perl -i -ne 'print if ! /CONFIG_B44/ ' $DRIVERS_NET_BROADCOM + sed -i '/CONFIG_B44/d' "$(get_makefile DRIVERS_NET_BROADCOM)" || die +} + +# @FUNCTION: disable_ssb +# @DESCRIPTION: +# This internal function disables "ssb" +function disable_ssb +{ + disable_makefile "$(get_makefile ${SSB_MAKEFILE})" + # perl -i -ne 'print if ! /drivers\/ssb\//' "${MAKEFILE}" + sed -i '/drivers\/ssb\//d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_bcma +# @DESCRIPTION: +# This internal function disables "bcma" +function disable_bcma +{ + disable_makefile "$(get_makefile ${BCMA_MAKEFILE})" + # perl -i -ne 'print if ! /drivers\/bcma\//' "${MAKEFILE}" + sed -i '/drivers\/bcma\//d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_rfkill +# @DESCRIPTION: +# This internal function disables "rfkill" +function disable_rfkill +{ + # perl -i -ne 'print if ! /CONFIG_COMPAT_RFKILL/' "${MAKEFILE}" + sed -i '/CONFIG_COMPAT_RFKILL/d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_eprom +# @DESCRIPTION: +# This internal function disables "eprom" +function disable_eeprom +{ + disable_makefile "$(get_makefile ${EEPROM_MAKEFILE})" || die + # perl -i -ne 'print if ! /drivers\/misc\/eeprom\//' "${MAKEFILE}" + sed -i '/drivers\/misc\/eeprom\//d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_usbnet +# @DESCRIPTION: +# This internal function disables "usbnet" +function disable_usbnet +{ + disable_makefile ${DRIVERS_NET_USB_MAKEFILE} || die + # perl -i -ne 'print if ! /drivers\/net\/usb\//' "${MAKEFILE}" + sed -i '/drivers\/net\/usb\//d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_usbnet +# @DESCRIPTION: +# This internal function disables "usbnet" +# this function is twice in driver-select script!?! +function disable_usbnet { + # perl -i -ne 'print if ! /CONFIG_COMPAT_NET_USB_MODULES/' "${MAKEFILE}" + sed -i '/CONFIG_COMPAT_NET_USB_MODULES/d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_ethernet +# @DESCRIPTION: +# This internal function disables "ethernet" +function disable_ethernet { + # perl -i -ne 'print if ! /CONFIG_COMPAT_NETWORK_MODULES/' "${MAKEFILE}" + sed -i '/CONFIG_COMPAT_NETWORK_MODULES/d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_var_03 +# @DESCRIPTION: +# This internal function disables "var_03" +function disable_var_03 { + # perl -i -ne 'print if ! /CONFIG_COMPAT_VAR_MODULES/' "${MAKEFILE}" + sed -i '/CONFIG_COMPAT_VAR_MODULES/d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_bt +# @DESCRIPTION: +# This internal function disables "bt" +function disable_bt { + # perl -i -ne 'print if ! /CONFIG_COMPAT_BLUETOOTH/' "${MAKEFILE}" + sed -i '/CONFIG_COMPAT_BLUETOOTH/d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_80211 +# @DESCRIPTION: +# This internal function disables "80211" +function disable_80211 { + # perl -i -ne 'print if ! /CONFIG_COMPAT_WIRELESS/' "${MAKEFILE}" + sed -i '/CONFIG_COMPAT_WIRELESS/d' "$(get_makefile MAKEFILE)" || die +} + +# @FUNCTION: disable_ath9k_rate_control +# @DESCRIPTION: +# This internal function disables "ath9k_rate_control" +# new function, not in driver-select +function disable_ath9k_rate_control { + # perl -i -ne 'print if ! /CONFIG_COMPAT_ATH9K_RATE_CONTROL/ ' $COMPAT_CONFIG_CW + sed -i '/CONFIG_COMPAT_ATH9K_RATE_CONTROL/d' "$(get_makefile COMPAT_CONFIG_CW)" || die +} + +# @FUNCTION: select_drivers +# @DESCRIPTION: +# This internal function registers filters for the drivers Makefile +function select_drivers { + eval "CPD_DRIVERS_MAKEFILE+=\" ${*}\"" || die +} + +# @FUNCTION: select_ath_driver +# @DESCRIPTION: +# This internal function registers filters for the ath Makefile +function select_ath_driver { + eval "CPD_ATH_MAKEFILE+=\" ${*}\"" || die +} + +# @FUNCTION: select_brcm80211_driver +# @DESCRIPTION: +# This internal function registers filters for the brcm80211 Makefile +function select_brcm80211_driver { + eval "CPD_BRCM80211_MAKEFILE+=\" ${*}\"" || die +} + +# @FUNCTION: select_ti_driver +# @DESCRIPTION: +# This internal function registers filters for the ti Makefile +function select_ti_drivers { + select_drivers CONFIG_WL_TI + eval "CPD_TI_MAKEFILE+=\" ${*}\"" || die +} + +# @FUNCTION: set_flag +# @DESCRIPTION: +# This internal function contains the configuration for each flag/module +function set_flag { + # clear/set global vars + CPD_MODULE=$1 + case $1 in + ath5k) + disable staging usbnet ethernet bt update-initramfs var_03 || die + select_drivers CONFIG_ATH_COMMON || die + select_ath_driver CONFIG_ATH5K || die + # disable lib80211 ssb bcma usbnet eeprom update-initramfs + ;; + ath9k) + disable staging usbnet ethernet bt update-initramfs var_03 || die + select_drivers CONFIG_ATH_COMMON || die + select_ath_driver CONFIG_ATH9K_HW || die + ;; + ath9k_ap) + disable staging usbnet ethernet bt update-initramfs var_03 || die + select_drivers CONFIG_ATH_COMMON || die + select_ath_driver CONFIG_ATH9K_HW || die + disable ath9k_rate_control || die + ;; + carl9170) + disable staging usbnet ethernet bt update-initramfs var_03 || die + select_drivers CONFIG_ATH_COMMON || die + select_ath_driver CONFIG_CARL9170 || die + ;; + ath9k_htc) + disable staging usbnet ethernet bt update-initramfs var_03 || die + select_drivers CONFIG_ATH_COMMON || die + select_ath_driver CONFIG_ATH9K_HW || die + ;; + ath6kl) + disable staging usbnet ethernet bt update-initramfs var_03 || die + select_drivers CONFIG_ATH_COMMON || die + select_ath_driver CONFIG_ATH6KL || die + ;; + brcmsmac) + disable staging usbnet ethernet bt update-initramfs var_03 || die + select_drivers CONFIG_BRCMSMAC || die + select_brcm80211_driver CONFIG_BRCMSMAC CONFIG_BRCMUTIL || die + ;; + brcmfmac) + disable staging usbnet ethernet bt update-initramfs var_03 || die + select_drivers CONFIG_BRCMFMAC || die + select_brcm80211_driver CONFIG_BRCMSMAC CONFIG_BRCMUTIL || die + ;; + zd1211rw) + select_drivers CONFIG_COMPAT_ZD1211RW || die + disable staging lib80211 ssb bcma usbnet eeprom update-initramfs || die + ;; + b43) + disable staging usbnet ethernet bt update-initramfs || die + disable eeprom lib80211 || die + select_drivers CONFIG_B43 || die + ;; + rt2x00) + select_drivers CONFIG_RT2X00 || die + disable staging usbnet ethernet bt update-initramfs || die + disable lib80211 ssb bcma usbnet update-initramfs || die + ;; + wl1251) + select_ti_drivers CONFIG_WL1251 || die + disable staging lib80211 ssb bcma usbnet eeprom update-initramfs || die + ;; + wl12xx) + select_ti_drivers CONFIG_WL12XX || die + disable staging lib80211 ssb bcma usbnet eeprom update-initramfs || die + ;; + wl18xx) + select_ti_drivers CONFIG_WL18XX || die + disable staging lib80211 ssb bcma usbnet eeprom update-initramfs || die + ;; + # Ethernet and Bluetooth drivers + atl1) + disable staging usbnet var_03 bt rfkill 80211 b44 || die + echo -e "obj-\$(CONFIG_ATL1) += atlx/" > "$(get_makefile DRIVERS_NET_ATHEROS)" || die + ;; + atl2) + disable staging usbnet var_03 bt rfkill 80211 b44 || die + echo -e "obj-\$(CONFIG_ATL2) += atlx/" > "$(get_makefile DRIVERS_NET_ATHEROS)" || die + ;; + atl1e) + disable staging usbnet var_03 bt rfkill 80211 b44 || die + echo -e "obj-\$(CONFIG_ATL1E) += atl1e/" > "$(get_makefile DRIVERS_NET_ATHEROS)" || die + ;; + atl1c) + disable staging usbnet var_03 bt rfkill 80211 b44 || die + echo -e "obj-\$(CONFIG_ATL1C) += atl1c/" > "$(get_makefile DRIVERS_NET_ATHEROS)" || die + ;; + atlxx) + select_drivers CONFIG_ATL1 CONFIG_ATL2 CONFIG_ATL1E CONFIG_ALX || die + disable staging usbnet var_03 bt rfkill 80211 b44 update-initramfs || die + ;; + bt) + select_drivers CONFIG_BT || die + disable ssb bcma usbnet eeprom update-initramfs ethernet staging 80211 || die + ;; + i915) + # rfkill may be needed if you enable b44 as you may have b43 + disable ethernet staging usbnet var_03 bt rfkill 80211 || die + ;; + drm) + # rfkill may be needed if you enable b44 as you may have b43 + disable ethernet staging usbnet var_03 bt rfkill 80211 || die + ;; + # Manually added options by pentoo + usbnet) + # disable everything else + disable staging update-initramfs lib80211 b44 ssb bcma rfkill eeprom ethernet var_03 bt 80211 ath9k_rate_control || die + ;; + staging) + # disable everything else + disable usbnet update-initramfs lib80211 b44 ssb bcma rfkill eeprom ethernet var_03 bt 80211 ath9k_rate_control || die + ;; + b44) + disable staging usbnet ethernet bt update-initramfs || die + disable eeprom lib80211 || die + select_drivers CONFIG_B44 || die + ;; + *) + die "Unsupported driver" + exit + ;; + esac +} + +# @FUNCTION: echo_flag_settings +# @DESCRIPTION: +# This internal function outputs the "disable" actions for a flag +function echo_flag_settings { + # example: + # CPD_DISABLE_${iflag}="action1 action2" + # CPD_DRIVERS_MAKEFILE="flag1 flag1" + # CPD_ATH_MAKEFILE="flag3" + # ... + local iflag=$1 + eval "local disable_list=\"\${CPD_DISABLE_${iflag}}\"" || die + einfo "Disable list for ${iflag}: ${disable_list}" +} + +# ============================================================================== +# EXPORTED FUNCTIONS +# ============================================================================== + +# @FUNCTION: compat-drivers-3.7_src_configure +# @DESCRIPTION: +# This function reads the configuration (disable-actions and filters) for each +# single active flag, then constructs and applies the common configuration set. +compat-drivers-3.7_src_configure() { + # loop over all modules + local use_temp='' + local use_enabled_list='' + for useexp in ${CPD_USE_EXPAND}; do + use_temp="\$CPD_USE_EXPAND_$useexp" || die + for iuse in `eval echo "\$use_temp"`; do + if [ "${iuse:0:1}" = '+' ]; then + local iuse2=${iuse:1} || die + else + local iuse2=${iuse} || die + fi + local iflag="compat_drivers_${useexp}_${iuse2}" || die + # check if it's enabled + if use "${iflag}"; then + use_enabled_list+=" ${iuse2}" || die + # fill the disable/enable lists + # example: + # CPD_DISABLE_${iflag}="action1 action2" + # CPD_DRIVERS_MAKEFILE="flag1 flag1" + # CPD_ATH_MAKEFILE="flag3" + # ... + set_flag "${iuse2}" || die + echo_flag_settings "${iuse2}" || die + fi + done + done + einfo "List of enabled modules: ${use_enabled_list}" + # compose common disable list for all flags + # 1st module/flag + local iuse1="$(echo $use_enabled_list | cut -d ' ' -f 1)" || die + eval "local disable_list=\$CPD_DISABLE_${iuse1}" || die + for iuse in ${use_enabled_list}; do + if [ "${iuse}" != "${iuse1}" ]; then + local disable_list_new='' || die + eval "local disable_list_other=\$CPD_DISABLE_${iuse}" || die + for dis in ${disable_list}; do + has "${dis}" ${disable_list_other} && \ + disable_list_new+=" ${dis}" + done + disable_list="${disable_list_new}" || die + fi + done + # execute all filters for the Makefiles + for file in ${CPD_MAKEFILES}; do + eval "local filter_list=\$CPD_${file}" || die + if [ -n "${filter_list}" ]; then + # einfo "Filtering $(get_makefile ${file}) for: ${filter_list}" + select_drivers_from_makefile "${file}" "${filter_list}" || die + fi + done + # execute common disable list + einfo "Common disable list: ${disable_list}" + for dis in ${disable_list}; do + einfo "Running disable function: disable_${dis}" + eval "disable_${dis}" || die + done +} + +# EXPORT_FUNCTIONS src_configure || die diff --git a/sys-kernel/compat-drivers/Manifest b/sys-kernel/compat-drivers/Manifest index af843f553..6906e5693 100644 --- a/sys-kernel/compat-drivers/Manifest +++ b/sys-kernel/compat-drivers/Manifest @@ -7,5 +7,6 @@ AUX ipw2200-inject.3.4.6.patch 4173 SHA256 0b649bd7b6d2bf22667edc96949b5ab92cc7f AUX leds-disable-strict-3.6.6.patch 799 SHA256 e1b5947608d9c53263efd76aed404eb7e4107d81669faeb484f5d680e4cfb570 SHA512 6373efc6697b4589c15c3cd2cfd8f3faa06fe90eeeb4fa9acaf187ecc682fac394444949dd26c2dde71c0f45aedb1198374764b580b824ddc6bc1e937273b5f1 WHIRLPOOL 40bdef714aa0ff4069bb50abf434dff88610d97f570b80f36622d29a43301bf013a90e90cb7f3f8044c2bf53a09154b1033a6f53b1edf186513452fdb681d55f AUX leds-disable-strict-3.7_rc1_p6.patch 799 SHA256 e1b5947608d9c53263efd76aed404eb7e4107d81669faeb484f5d680e4cfb570 SHA512 6373efc6697b4589c15c3cd2cfd8f3faa06fe90eeeb4fa9acaf187ecc682fac394444949dd26c2dde71c0f45aedb1198374764b580b824ddc6bc1e937273b5f1 WHIRLPOOL 40bdef714aa0ff4069bb50abf434dff88610d97f570b80f36622d29a43301bf013a90e90cb7f3f8044c2bf53a09154b1033a6f53b1edf186513452fdb681d55f DIST compat-drivers-3.7-rc1-6.tar.gz 7877572 SHA256 688406f3d9a84246dc0d57b93b5335c9b0f276cc216e3dc7032ad6152bfff873 SHA512 1a6a747a325b19f03cfb28036232ee9186010a0cb78e753d2358d8932d81322516878df97c13e56cec6472515d30c5b99816f44c6331fc58a261cae4ab33ad43 WHIRLPOOL c33025583834726f1f2988d8eaab8c716b117d74b427b035000ae5d5b35310be486ac76fcdb0589effae6036b5a3058ae0859384e4e6c9466b659f9848036ac1 -EBUILD compat-drivers-3.7_rc1_p6.ebuild 7445 SHA256 a2f3395e385dd913bbd95c28998c978896e15da72cc1a9d6642f3d483aef3246 SHA512 53944a5912d3389f8052ad118696f947f88fbaa0baccbb6a2d0aa332ac24eff548dafbfc7d3a9c5aa9e34b26749f4c10246d5c7456390131a09755514f8e2248 WHIRLPOOL 5c192cf011a867dcae274e349b46b332f197dd04ff9f371339e76fa65bec5fca612ac59495c9de9334d837c8a28591b48c6e3b09c5f1c817081cafff5f6d0dad -MISC metadata.xml 228 SHA256 8715828d1bff71d5d96b991ba600bae9376c1c80c96f0f102260fc335ca22487 SHA512 006b031017fe79d0da68ed1c2684d2b87f75976111d8abdb18d126ffe142df8ded67805f14fe4adfe17e93287080126b7f4af64dac0ebaa1d9fe4c97e5f9573a WHIRLPOOL e711ede3bf7bcf0dc9d3ecd2706e4120270d4942718ee901f8d42c1c86055c8b153bdb24d6682a56d14f5b14d4ff220c115f14714b3f039bdc3deeece3d1fd02 +EBUILD compat-drivers-3.7_rc1_p6-r1.ebuild 6976 SHA256 82a760ef9a1448e865dd2936ab3a9824da2c2f6195bce0dec091a9c569a36f18 SHA512 dc907bea77600697458d478418fc719b046ec4e3d09443891ab7235ba40e256b5ac57f7a9355ac67ab25eca4c01e4502a4cda0667a961165549cc4c6758b4249 WHIRLPOOL 7d2361bbd4f6417f934fe7763a5d33a49da18d3a17be53d85fe422c6ce0888b889a136407edae05d10e855ac61d711800bf763a7ebe15e92f2871299b1bc51ed +EBUILD compat-drivers-3.7_rc1_p6.ebuild 7446 SHA256 1b80374769f13fb010ab0d288b5b03ff8a1eb3edde602f09cb8e242debda222d SHA512 0020e15c77d0b3692d3ffb38cd4268b245acb8f9995612f978c41df30b98eecb7d2dc989b7ea82fb5f589eb9abfb7c4b694217fafdad1db818c9b6b521edd9d1 WHIRLPOOL 967238ad9352b14ae10c6c47d71e4fd6aa44a2ec205f161b9c74f8a1112306b2ecad6c0bff2b11c5eec54c526629639e64073204c742555731ab2e94eb047130 +MISC metadata.xml 2830 SHA256 0e88cb0f4e5115715ce48358df04406bcec8407eca10cf96a6c89360e17990e8 SHA512 ff3965ab2427eee1c89c6a8ca7d5c10362641826b927f8b0550ba2d5952287a41a666202edb1b1d9558c571efc731e3d462a85be41399ae7f3d2f151ae39844c WHIRLPOOL 613d37bd613bec7f73e8ed46fc90ad8a22e0a87e2cd393c4bd912346fbf9ed2063a2b1cd1a2d94d8aac4a9fa013dcf89859dd4d9998e171149ee630184079dec diff --git a/sys-kernel/compat-drivers/compat-drivers-3.7_rc1_p6-r1.ebuild b/sys-kernel/compat-drivers/compat-drivers-3.7_rc1_p6-r1.ebuild new file mode 100644 index 000000000..1495c198a --- /dev/null +++ b/sys-kernel/compat-drivers/compat-drivers-3.7_rc1_p6-r1.ebuild @@ -0,0 +1,177 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI="5" + +# USE_EXPAND categories +CPD_USE_EXPAND="wifi ethernet various" +# These are officially supported +CPD_USE_EXPAND_wifi="ath5k ath9k ath9k_ap +ath9k_htc ath6kl b43 brcmsmac brcmfmac carl9170 rt2x00 wl1251 wl12xx zd1211rw" +# This might work (not officially supported) +CPD_USE_EXPAND_wifi+=" wl18xx" +# This might work (added by pentoo) +CPD_USE_EXPAND_wifi+=" b44" + +# These are officially supported +CPD_USE_EXPAND_ethernet="atl1 atl1c atl1e atl2" +# This might work (not officially supported) +CPD_USE_EXPAND_ethernet+=" atlxx" + +# These are officially supported +CPD_USE_EXPAND_various="i915" +# This might work (not officially supported) +CPD_USE_EXPAND_various+=" bt drm" +# This might work (added by pentoo) +CPD_USE_EXPAND_various+=" staging usbnet" + +inherit linux-mod linux-info versionator eutils compat-drivers-3.7 + +# upstream versioning, ex.: 3.7-rc1-6 +UPSTREAM_PVR="${PV//_/-}" && UPSTREAM_PVR="${UPSTREAM_PVR/-p/-}" +# ex.: 3.7-rc1 +UPSTREAM_PV=${UPSTREAM_PVR%-*} + +DESCRIPTION="Stable kernel pre-release wifi subsystem backport" +HOMEPAGE="http://backports.wiki.kernel.org" +# SRC_URI="http://www.kernel.org/pub/linux/kernel/projects/backports/stable/v${UPSTREAM_PV}/${PN}-${UPSTREAM_PVR}.tar.gz" +SRC_URI="mirror://kernel/linux/kernel/projects/backports/stable/v${UPSTREAM_PV}/${PN}-${UPSTREAM_PVR}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" + +IUSE="atheros_obey_crda debugfs debug-driver full-debug injection livecd loadmodules noleds pax_kernel" + +DEPEND="!net-wireless/compat-wireless-builder + !net-wireless/compat-wireless" +RDEPEND="${DEPEND} + >=sys-kernel/linux-firmware-20110219 + virtual/udev" + +S="${WORKDIR}/${PN}-${UPSTREAM_PVR}" + +RESTRICT="strip" + +CONFIG_CHECK="!DYNAMIC_FTRACE" + +pkg_setup() { + CONFIG_CHECK="~NET_SCHED" + CONFIG_CHECK="~IPW2200_PROMISCUOUS" + linux-mod_pkg_setup + kernel_is -lt 2 6 27 && die "kernel 2.6.27 or higher is required for compat wireless to be installed" + kernel_is -gt $(get_version_component_range 1) $(get_version_component_range 2) $(get_version_component_range 3) && die "The version of compat-wireless you are trying to install contains older modules than your kernel. Failing before downgrading your system." + + #these things are not optional + linux_chkconfig_module MAC80211 || die "CONFIG_MAC80211 must be built as a _module_ !" + linux_chkconfig_module CFG80211 || die "CONFIG_CFG80211 must be built as a _module_ !" + linux_chkconfig_module LIBIPW || ewarn "CONFIG_LIBIPW really should be set or there will be no WEXT compat" + + if use compat_drivers_wifi_b43; then + linux_chkconfig_module SSB || die "You need to enable CONFIG_SSB or USE=-b43" + fi + if use compat_drivers_wifi_b44; then + linux_chkconfig_module SSB || die "You need to enable CONFIG_SSB or USE=-b44" + fi +} + +src_prepare() { + use pax_kernel && epatch "${FILESDIR}"/${P}-grsec.patch + use pax_kernel && epatch "${FILESDIR}"/${P}-grsec-warnings.patch + + #mcgrof said prep for inclusion in compat-wireless.git but this causes issues + #find "${S}" -name Makefile | xargs sed -i -e 's/export CONFIG_/export CONFIG_COMPAT_/' -e 's/COMPAT_COMPAT_/COMPAT_/' -e 's/CONFIG_COMPAT_CHECK/CONFIG_CHECK/' + #sed -i -e 's/export CONFIG_/export CONFIG_COMPAT_/' -e 's/COMPAT_COMPAT_/COMPAT_/' "${S}"/config.mk + + # CONFIG_CFG80211_REG_DEBUG=y + sed -i '/CFG80211_REG_DEBUG/s/^# *//' "${S}"/config.mk + + #this patch ignores the regulatory settings of an atheros card and uses what CRDA thinks is right + if use atheros_obey_crda; then + ewarn "You have enabled atheros_obey_crda which doesn't do what you think." + ewarn "This use flag will cause the eeprom of the card to be ignored and force" + ewarn "world roaming on the device until crda provides a valid regdomain." + ewarn "Short version, this is not a way to break the law, this will automatically" + ewarn "make your card less functional unless you set a proper regdomain with iw/crda." + epatch "${FILESDIR}"/ath_regd_optional.patch + fi + + if use injection; then + epatch "${FILESDIR}"/4002_mac80211-2.6.29-fix-tx-ctl-no-ack-retry-count.patch + epatch "${FILESDIR}"/4004_zd1211rw-2.6.28.patch + # epatch "${FILESDIR}"/mac80211.compat08082009.wl_frag+ack_v1.patch + # epatch "${FILESDIR}"/4013-runtime-enable-disable-of-mac80211-packet-injection.patch + epatch "${FILESDIR}"/ipw2200-inject.3.4.6.patch + fi + if use noleds; then + sed -ir 's/^\(export CONFIG_.*_LEDS=\)y$/\1n/' config.mk + epatch "${FILESDIR}/leds-disable-strict-${PV}.patch" + fi + use debug-driver && sed -i '/DEBUG=y/s/^# *//' "${S}"/config.mk + use debugfs && sed -i '/DEBUGFS/s/^# *//' "${S}"/config.mk + if use full-debug; then + if use debug-driver ; then + sed -i '/CONFIG=/s/^# *//' "${S}"/config.mk + else + ewarn "Enabling full-debug includes debug-driver." + sed -i '/DEBUG=/s/^# *//' "${S}"/config.mk + fi + fi + + #avoid annoying ACCESS DENIED sandbox errors + sed -i "s/\${MAKE} -C \${KLIB_BUILD} kernelversion/echo ${KV_FULL}/g" compat/scripts/gen-compat-config.sh || die "sed failed" + sed -i "s/shell \$(MAKE) -C \$(KLIB_BUILD) kernelversion/echo ${KV_FULL}/g" config.mk || die "sed failed" + sed -i "s/make -C \$KLIB_BUILD kernelversion/echo ${KV_FULL}/g" scripts/gen-compat-autoconf.sh || die "sed failed" +} + +src_compile() { + addpredict "${KERNEL_DIR}" + set_arch_to_kernel + emake KLIB_BUILD="${DESTDIR}"/lib/modules/"${KV_FULL}"/build || die "emake failed" +} + +src_install() { + for file in $(find -name \*.ko); do + insinto "/lib/modules/${KV_FULL}/updates/$(dirname ${file})" + doins "${file}" + done + dosbin scripts/athenable scripts/b43load scripts/iwl-enable \ + scripts/madwifi-unload scripts/athload scripts/iwl-load \ + scripts/b43enable scripts/unload.sh + + dodir /usr/lib/compat-wireless + exeinto /usr/lib/compat-wireless + doexe scripts/modlib.sh + + dodoc README.md + dodir /$(get_libdir)/udev/rules.d/ + insinto /$(get_libdir)/udev/rules.d/ + doins udev/50-compat_firmware.rules + exeinto /$(get_libdir)/udev/ + doexe udev/compat_firmware.sh +} + +pkg_postinst() { + update_depmod + update_moduledb + + if use !livecd; then + if use loadmodules; then + einfo "Attempting to unload modules..." + /usr/sbin/unload.sh 2>&1 | grep -E FATAL && ewarn "Unable to remove running modules, system may be unhappy, reboot HIGHLY recommended!" + einfo "Triggering automatic reload of needed modules..." + /sbin/udevadm trigger + einfo "We have attempted to load your new modules for you, this may fail horribly, or may just cause a network hiccup." + einfo "If you experience any issues reboot is the simplest course of action." + fi + fi + if use !loadmodules; then + einfo "You didn't USE=loadmodules but you can still attempt to switch to the new drivers without reboot." + einfo "Run 'unload.sh' then 'udevadm trigger' to cause udev to load the needed drivers." + einfo "If unload.sh fails for some reason you should be able to simply reboot to fix everything and load the new modules." + fi +} + +pkg_postrm() { + remove_moduledb +} diff --git a/sys-kernel/compat-drivers/compat-drivers-3.7_rc1_p6.ebuild b/sys-kernel/compat-drivers/compat-drivers-3.7_rc1_p6.ebuild index 2ee2e2711..1b6937910 100644 --- a/sys-kernel/compat-drivers/compat-drivers-3.7_rc1_p6.ebuild +++ b/sys-kernel/compat-drivers/compat-drivers-3.7_rc1_p6.ebuild @@ -21,7 +21,7 @@ KEYWORDS="~amd64 ~arm ~x86" IUSE="+alx +ath9k_htc atheros_obey_crda bluetooth b43 b44 debugfs debug-driver full-debug injection livecd loadmodules noleds pax_kernel" DEPEND="!net-wireless/compat-wireless-builder - net-wireless/compat-wireless" + !net-wireless/compat-wireless" RDEPEND="${DEPEND} >=sys-kernel/linux-firmware-20110219 virtual/udev" diff --git a/sys-kernel/compat-drivers/metadata.xml b/sys-kernel/compat-drivers/metadata.xml index 6e27c0238..fdbf210d3 100644 --- a/sys-kernel/compat-drivers/metadata.xml +++ b/sys-kernel/compat-drivers/metadata.xml @@ -3,5 +3,27 @@ Add patches for better wifi injection support +COMPAT_DRIVERS_ETHERNET setting to build driver for atl1 ethernet cards +COMPAT_DRIVERS_ETHERNET setting to build driver for atl1c ethernet cards +COMPAT_DRIVERS_ETHERNET setting to build driver for atl1e ethernet cards +COMPAT_DRIVERS_ETHERNET setting to build driver for atl2 ethernet cards +COMPAT_DRIVERS_ETHERNET setting to build driver for atlxx ethernet cards +COMPAT_DRIVERS_VARIOUS setting to build driver for bluetooth devices +COMPAT_DRIVERS_VARIOUS setting to build driver for drm devices +COMPAT_DRIVERS_VARIOUS setting to build driver for i915 devices +COMPAT_DRIVERS_WIFI setting to build driver for ath5k wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for ath6kl wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for ath9k wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for ath9k_ap wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for ath9k_htc wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for b43 wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for brcmfmac wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for brcmsmac wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for carl9170 wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for rt2x00 wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for wl1251 wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for wl12xx wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for wl18xx wireless cards +COMPAT_DRIVERS_WIFI setting to build driver for zd1211rw wireless cards