blob: c640e873bbbb51e6d8530f78aeb14097dd9bcfc1 [file] [log] [blame]
# Copyright 2015 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=7
CROS_WORKON_COMMIT="720e73efd70668f3d3e5d77d22e9678026076a2b"
CROS_WORKON_TREE="adc125e63a2cf7b47603a336a8390afa9374aede"
CROS_WORKON_PROJECT="chromiumos/platform/bmpblk"
CROS_WORKON_LOCALNAME="../platform/bmpblk"
CROS_WORKON_OUTOFTREE_BUILD="1"
CROS_WORKON_USE_VCSID="1"
# TODO(hungte) When "tweaking ebuilds by source repository" is implemented, we
# can generate this list by some script inside source repo.
CROS_BOARDS=(
ambassador
asurada
atlas
auron_paine
auron_yuna
banjo
brya
buddy
butterfly
candy
chell
cherry
cid
clapper
cranky
daisy
daisy_snow
daisy_spring
daisy_skate
dedede
deltaur
dragonegg
drallion
endeavour
enguarde
expresso
eve
falco
fizz
flapjack
glados
glimmer
gnawty
grunt
guado
hatch
jacuzzi
kalista
keeby
kevin
kip
kukui
lars
leon
link
lulu
lumpy
mccloud
meowth
monroe
mushu
nami
nautilus
ninja
nocturne
nyan
nyan_big
octopus
orco
palkia
panther
parrot
peach_pi
peach_pit
peppy
poppy
puff
quawks
rammus
reks
rikku
sarien
scarlet
soraka
squawks
stout
strongbad
stumpy
sumo
swanky
tglrvp
tidus
tricky
trogdor
veyron_brain
veyron_danger
veyron_jerry
veyron_mickey
veyron_minnie
veyron_pinky
veyron_romy
volteer
winky
wolf
zako
zoombini
zork
)
PYTHON_COMPAT=( python3_{6..8} )
inherit cros-workon cros-board python-any-r1
DESCRIPTION="Chrome OS Firmware Bitmap Block"
HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/bmpblk/"
SRC_URI=""
LICENSE="BSD-Google"
KEYWORDS="*"
IUSE="detachable diag_payload +minidiag physical_presence_power
physical_presence_recovery"
BDEPEND="${PYTHON_DEPS}"
DEPEND=""
src_prepare() {
export BOARD="$(get_current_board_with_variant "${ARCH}-generic")"
export VCSID
default
# if fontconfig's cache is empty, prepare single use cache.
# That's still faster than having each process (of which there
# are many) re-scan the fonts
if find /usr/share/cache/fontconfig -maxdepth 0 -type d -empty \
-exec false {} +; then
return
fi
TMPCACHE=$(mktemp -d)
cat > $TMPCACHE/local-conf.xml <<-EOF
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<cachedir>$TMPCACHE</cachedir>
<include>/etc/fonts/fonts.conf</include>
</fontconfig>
EOF
export FONTCONFIG_FILE=$TMPCACHE/local-conf.xml
fc-cache -v
}
src_compile() {
if use detachable ; then
export DETACHABLE=1
fi
# Both diag_payload and minidiag need additional UI images from
# chromeos-bmpblk.
if use diag_payload || use minidiag ; then
export DIAGNOSTIC_UI=1
fi
if use physical_presence_power ; then
export PHYSICAL_PRESENCE="power"
elif use physical_presence_recovery ; then
export PHYSICAL_PRESENCE="recovery"
else
export PHYSICAL_PRESENCE="keyboard"
fi
emake OUTPUT="${WORKDIR}" BOARD="${BOARD}"
emake OUTPUT="${WORKDIR}/${BOARD}" ARCHIVER="/usr/bin/archive" archive
if [[ "${BOARD}" == "${ARCH}-generic" ]]; then
printf "1" > "${WORKDIR}/${BOARD}/vbgfx_not_scaled"
fi
}
doins_if_exist() {
local f
for f in "$@"; do
if [[ -r "${f}" ]]; then
doins "${f}"
fi
done
}
src_install() {
# Most bitmaps need to reside in the RO CBFS only. Many boards do
# not have enough space in the RW CBFS regions to contain all
# image files.
insinto /firmware/cbfs-ro-compress
# These files aren't necessary for debug builds. When these files
# are missing, Depthcharge will render text-only screens. They look
# obviously not ready for release.
doins_if_exist "${WORKDIR}/${BOARD}"/vbgfx.bin
doins_if_exist "${WORKDIR}/${BOARD}"/locales
doins_if_exist "${WORKDIR}/${BOARD}"/locale/ro/locale_*.bin
doins_if_exist "${WORKDIR}/${BOARD}"/font.bin
# This flag tells the firmware_Bmpblk test to flag this build as
# not ready for release.
doins_if_exist "${WORKDIR}/${BOARD}"/vbgfx_not_scaled
# However, if specific bitmaps need to be updated via RW update,
# we should also install here.
insinto /firmware/cbfs-rw-compress-override
doins_if_exist "${WORKDIR}/${BOARD}"/locale/rw/rw_locale_*.bin
}