mirror of
https://github.com/pentoo/pentoo-overlay
synced 2026-05-09 04:51:27 +02:00
sys-kernel/compat-drivers: new configuration in compat-drivers-3.7.eclass wrt issue #40
This commit is contained in:
parent
b641f7d2ee
commit
ab9c1b84b9
5 changed files with 721 additions and 3 deletions
518
eclass/compat-drivers-3.7.eclass
Normal file
518
eclass/compat-drivers-3.7.eclass
Normal file
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
177
sys-kernel/compat-drivers/compat-drivers-3.7_rc1_p6-r1.ebuild
Normal file
177
sys-kernel/compat-drivers/compat-drivers-3.7_rc1_p6-r1.ebuild
Normal file
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -3,5 +3,27 @@
|
|||
<pkgmetadata>
|
||||
<use>
|
||||
<flag name="injection">Add patches for better wifi injection support</flag>
|
||||
<flag name="compat_drivers_ethernet_atl1">COMPAT_DRIVERS_ETHERNET setting to build driver for atl1 ethernet cards</flag>
|
||||
<flag name="compat_drivers_ethernet_atl1c">COMPAT_DRIVERS_ETHERNET setting to build driver for atl1c ethernet cards</flag>
|
||||
<flag name="compat_drivers_ethernet_atl1e">COMPAT_DRIVERS_ETHERNET setting to build driver for atl1e ethernet cards</flag>
|
||||
<flag name="compat_drivers_ethernet_atl2">COMPAT_DRIVERS_ETHERNET setting to build driver for atl2 ethernet cards</flag>
|
||||
<flag name="compat_drivers_ethernet_atlxx">COMPAT_DRIVERS_ETHERNET setting to build driver for atlxx ethernet cards</flag>
|
||||
<flag name="compat_drivers_various_bt">COMPAT_DRIVERS_VARIOUS setting to build driver for bluetooth devices</flag>
|
||||
<flag name="compat_drivers_various_drm">COMPAT_DRIVERS_VARIOUS setting to build driver for drm devices</flag>
|
||||
<flag name="compat_drivers_various_i915">COMPAT_DRIVERS_VARIOUS setting to build driver for i915 devices</flag>
|
||||
<flag name="compat_drivers_wifi_ath5k">COMPAT_DRIVERS_WIFI setting to build driver for ath5k wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_ath6kl">COMPAT_DRIVERS_WIFI setting to build driver for ath6kl wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_ath9k">COMPAT_DRIVERS_WIFI setting to build driver for ath9k wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_ath9k_ap">COMPAT_DRIVERS_WIFI setting to build driver for ath9k_ap wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_ath9k_htc">COMPAT_DRIVERS_WIFI setting to build driver for ath9k_htc wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_b43">COMPAT_DRIVERS_WIFI setting to build driver for b43 wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_brcmfmac">COMPAT_DRIVERS_WIFI setting to build driver for brcmfmac wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_brcmsmac">COMPAT_DRIVERS_WIFI setting to build driver for brcmsmac wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_carl9170">COMPAT_DRIVERS_WIFI setting to build driver for carl9170 wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_rt2x00">COMPAT_DRIVERS_WIFI setting to build driver for rt2x00 wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_wl1251">COMPAT_DRIVERS_WIFI setting to build driver for wl1251 wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_wl12xx">COMPAT_DRIVERS_WIFI setting to build driver for wl12xx wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_wl18xx">COMPAT_DRIVERS_WIFI setting to build driver for wl18xx wireless cards</flag>
|
||||
<flag name="compat_drivers_wifi_zd1211rw">COMPAT_DRIVERS_WIFI setting to build driver for zd1211rw wireless cards</flag>
|
||||
</use>
|
||||
</pkgmetadata>
|
||||
|
|
|
|||
Loading…
Reference in a new issue