blob: a8d7f010b53709750e8af8fbbd579b6afa16b36e [file] [log] [blame]
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
#
# Original Author: The Chromium OS Authors <chromium-os-dev@chromium.org>
# Purpose: Library for handling building of ChromiumOS packages
#
#
# This class provides an easy way to retrieve the BOARD variable.
# It is intended to be used by ebuild packages that need to have the
# board information for various reasons -- for example, to differentiate
# various hardware attributes at build time.
#
# If an unknown board is encountered and no default is provided, or multiple
# boards are defined, this class deliberately fails the build.
# This provides an easy method of identifying a change to
# the build which might affect inheriting packages.
# Check for EAPI 4+
case "${EAPI:-0}" in
4|5|6|7) ;;
*) die "unsupported EAPI (${EAPI}) in eclass (${ECLASS})" ;;
esac
# This eclass is being deprecated and should not be used in new
# ebuilds. Below is a prune-list of ebuilds that need migrated away
# from this eclass. Do not add new ebuilds to this list.
case "${CATEGORY}/${PN}" in
chromeos-base/chromeos-assets ) ;;
chromeos-base/chromeos-initramfs ) ;;
chromeos-base/gestures-conf ) ;;
net-misc/chrony ) ;;
sys-apps/systemd ) ;;
# cros-kernel2.eclass uses cros-board.eclass. Exempt all kernel
# packages for now.
sys-kernel/* ) ;;
# Disallow all other packages.
* )
eerror
eerror "cros-board.eclass is deprecated, and will eventually be removed."
eerror "It should not be used in any new packages."
eerror "Please remove cros-board from the inherit line in your ebuild."
eerror "See https://chromium.googlesource.com/chromiumos/docs/+/HEAD/os_config.md#cros_board_eclass for more info."
eerror
die "${CATEGORY}/${PN} is not allowed to use cros-board.eclass."
;;
esac
BOARD_USE_PREFIX="board_use_"
# Obsolete boards' names are commented-out but retained in this list so
# they won't be accidentally recycled in the future.
ALL_BOARDS=(
#acorn
adlrvp
ambassador
#amd64-corei7
#amd64-drm
amd64-generic
amd64-generic-cheets
#amd64-generic-goofy
amd64-generic_embedded
#amd64-generic_freon
#amd64-generic_mobbuild
amd64-host
#anglar
aplrvp
#app-shell-panther
#aries
#arkham
arm-generic
#arm-generic_freon
arm64-generic
arm64-llvmpipe
asuka
asurada
atlas
atlas-connectivitynext
atlas-kernelnext
#atlas-kvm
aurora
aurora-borealis
auron
auron_paine
#auron_pearlvalley
auron_yuna
banjo
banon
#bayleybay
beaglebone
beaglebone_servo
#beaglebone_vv1
#beltino
betty
betty-arc-r
betty-arc-s
betty-arc64
#betty-arcmaster
#betty-arcnext
#betty-arcvm-master
#betty-arcvm-pi
betty-pi-arc
#betty-qt-arc
#bettyvirgl
#blackwall
bob
#bobcat
#bolt
borealis
brask
#bruteus
brya
brya-manatee
bubs
buddy
buddy-cfm
#buranku
#butterfly
#bwtm2
#bxt-rvp
candy
capri
capri-zfpga
caroline
caroline-arc64
#caroline-arcnext
#caroline-bertha
caroline-kernelnext
caroline-ndktranslation
caroline-userdebug
#cardhu
cave
celes
#celes-cheets
chell
#chell-cheets
cherry
#cheza
#cheza-freedreno
#cheza64
#cheza64-freedreno
#chronos
#cid
#clapper
#cmlrvp
#cnlrvp
cobblepot
coral
#coral-kernelnext
#cosmos
#cranky
cyan
cyan-cheets
cyan-kernelnext
#cyclone
#daisy
#daisy-drm
#daisy_embedded
#daisy_skate
#daisy_snow
#daisy_spring
#daisy_winter
#dalmore
#danger
#danger_embedded
dedede
deltaur
#derwent
#dragonegg
drallion
#duck
edgar
elm
elm-arc64
#elm-cheets
elm-kernelnext
#emeraldlake2
endeavour
enguarde
#envoy-jerry
eve
#eve-arcdual
#eve-arcnext
eve-arc-r
#eve-arcvm
#eve-arcvm-mesa-virgl-next
eve-arm64
#eve-bertha
#eve-campfire
eve-kernelnext
eve-kvm
eve-lacros
#eve-manatee
eve-swap
eve-userdebug
excelsior
expresso
#falco
#falco_gles
#falco_li
#fb1
fizz
#fizz-accelerator
fizz-cfm
fizz-labstation
fizz-moblab
fizz-satlab
#flapjack
#foster
#fox
#fox_baskingridge
#fox_wtm1
#fox_wtm2
galaxy
gale
gandof
#genesis
#gizmo
glados
#glados-cheets
glimmer
#glimmer-cheets
glkrvp
gnawty
gonzo
#gru
grunt
grunt-arc-r
grunt-kernelnext
guado
#guado-accelerator
guado-cfm
guado-macrophage
guado_moblab
#guado-kernelnext
guado_labstation
guybrush
hana
hana-arc64
hana-kernelnext
hatch
hatch-arc-r
hatch-arc-r-ack
#hatch-arc-r-signed
hatch-arc-r-userdebug
hatch-arc-s
hatch-connectivitynext
hatch-borealis
hatch-diskswap
hatch-kernelnext
hatch-manatee
heli
herobrine
#hsb
#iclrvp
#ironhide
jacuzzi
jacuzzi-kernelnext
#jadeite
#jaguar
jecht
#kahlee
kalista
kalista-cfm
#kayle
kblrvp
keeby
kefka
kefka-kernelnext
#kennet
kevin
kevin64
#kevin-arcnext
#kevin-bertha
kevin-kernelnext
#kevin-tpm2
kevin-userdebug
#kidd
#kiev
kip
#klang
kukui
kukui-arc-r
#kukui-arc-r-signed
kukui-kernelnext
#kumo
kunimitsu
lakitu
#lakitu-arm64
#lakitu-gpu
#lakitu_mobbuild
#lakitu-nc
#lakitu_next
#lakitu-slice
#lakitu-st
lars
lars-kernelnext
#laser
lasilla-ground
#lasilla-sky
#lassen
#lemmings
#lemmings_external
#leon
#link
littlejoe
loonix
lulu
#lulu-cheets
#lumpy
#macchiato-ground
majolica
#mancomb
#mappy
#mappy-envoy
#mappy_flashstation
#marble
#mccloud
#meowth
metis
#minnowboard
#mipseb-n32-generic
#mipseb-n64-generic
#mipseb-o32-generic
#mipsel-n32-generic
#mipsel-n64-generic
#mipsel-o32-generic
mistral
moblab-generic-vm
#monroe
#moose
mushu
nami
nami-kernelnext
#nami-kvm
nautilus
#nefario
#newbie
ninja
nocturne
nocturne-kernelnext
novato
novato-arc64
novato-arcnext
#nyan
#nyan_big
#nyan_blaze
#nyan_blaze-freon
#nyan_freon
#nyan_kitty
oak
#oak-cheets
octavius
octopus
octopus-arc-r
octopus-kernelnext
#optimus
orco
palkia
#panda
#panther
#panther_embedded
#panther_goofy
#panther_moblab
#parrot
#parrot32
#parrot64
#parrot_ivb
#parry
#pbody
#peach
#peach_kirby
#peach_pi
#peach_pit
#pedra
#peppy
#plaso
poppy
#ppcbe-32-generic
#ppcbe-64-generic
#ppcle-32-generic
#ppcle-64-generic
puff
puff-borealis
puff-macrophage
puff-moblab
#puppy
#purin
pyro
quawks
rainier
rambi
rammus
rammus-arc-r
rammus-arc-r-userdebug
#raspberrypi
reef
relm
reks
#reptile
reven
#ricochet
rikku
rikku-cfm
#rizer
romer
#rotor
#rowan
#rush
#rush_ryu
#sama5d3
samus
#samus-cheets
#samus-kernelnext
sand
sarien
sarien-kernelnext
#sarien-kvm
scarlet
#scarlet-arcnext
senor
sentry
setzer
shadowkeep
#shogun
sklrvp
#slippy
#smaug
#smaug-cheets
#smaug-kasan
snappy
snappy-kernelnext
#sonic
soraka
soraka-libcamera
#space
squawks
#stelvio
#storm
#storm_nand
#stout
#stout32
#strago
strongbad
#stumpy
#stumpy_moblab
#stumpy_pico
sumo
swanky
#tails
tatl
tael
#tegra2
#tegra2_aebl
#tegra2_arthur
#tegra2_asymptote
#tegra2_dev-board
#tegra2_dev-board-opengl
#tegra2_kaen
#tegra2_seaboard
#tegra2_wario
#tegra3-generic
terra
tglrvp
tidus
#tricky
trogdor
trogdor-arc-r
trogdor-kernelnext
trogdor64
trogdor64-manatee
ultima
#umaro
#urara
veyron
veyron_fievel
#veyron_gus
veyron_jaq
veyron_jerry
#veyron_jerry-kernelnext
veyron_mickey
veyron_mighty
veyron_minnie
#veyron_minnie-cheets
#veyron_minnie-kernelnext
#veyron_nicky
#veyron_pinky
#veyron_remy
veyron_rialto
#veyron_shark
veyron_speedy
#veyron_speedy-cheets
#veyron_thea
veyron_tiger
viking
viking-poc2
volteer
volteer-borealis
volteer-kernelnext
volteer-manatee
#waluigi
#whirlwind
#whlrvp
winky
wizpig
#wolf
#wooten
wristpin
#wsb
#x30evb
x32-generic
#x86-agz
#x86-alex
#x86-alex32
#x86-alex32_he
#x86-alex_he
#x86-alex_hubble
#x86-dogfood
#x86-drm
#x86-fruitloop
x86-generic
x86-generic_embedded
#x86-generic_freon
#x86-mario
#x86-mario64
#x86-pineview
#x86-wayland
#x86-zgb
#x86-zgb32
#x86-zgb32_he
#x86-zgb_he
#zako
#zoombini
zork
zork-arc-r
zork-borealis
zork-kernelnext
zork-minios
)
# Use the CROS_BOARDS defined by ebuild, otherwise use ALL_BOARDS.
if [[ ${#CROS_BOARDS[@]} -eq 0 ]]; then
CROS_BOARDS=( "${ALL_BOARDS[@]}" )
fi
# Add BOARD_USE_PREFIX to each board in ALL_BOARDS to create IUSE.
# Also add cros_host so that we can inherit this eclass in ebuilds
# that get emerged both in the cros-sdk and for target boards.
# See REQUIRED_USE below.
IUSE="${CROS_BOARDS[@]/#/${BOARD_USE_PREFIX}} cros_host unibuild"
# Echo the current board, with variant. The arguments are:
# 1: default, the value to return when no board is found; default: ""
get_current_board_with_variant()
{
[[ $# -gt 1 ]] && die "Usage: ${FUNCNAME} [default]"
local b
local current
local default_board="$1"
for b in "${CROS_BOARDS[@]}"; do
if use ${BOARD_USE_PREFIX}${b}; then
if [[ -n "${current}" ]]; then
die "More than one board is set: ${current} and ${b}"
fi
current="${b}"
fi
done
if [[ -n "${current}" ]]; then
echo ${current}
return
fi
echo "${default_board}"
}
# Echo the current board, without variant.
get_current_board_no_variant()
{
get_current_board_with_variant "$@" | cut -d '_' -f 1
}