Files
OpenCellular/scripts/bitmaps/process_all_targets.sh
vbendeb 10fce4aa5d Automate bitmap image regeneration.
This CL modifies the bitmap generation script as follows:

- allow to specify required geometry of the images and to
 generate a single set per FWID instead of generating all
 geometries for all FWIDs

- store the images and the zip archive in a directory with
  the name derived from FWID.

The CL also adds a wrapper, which given the path to the tree
containing already released GBB firmware volumes would find
all valid (as verified by the CRC in the file name) FWIDs
and generate new images for all detected FWIDs.

The geometry of the generated images is based on the FWID
contents, Marios get 1280x800 and ZGAs - 1366x768.

Once this script stops running, the scripts/bitmaps
directory contains a set of subdirectories, one per
generated set of images.

Another script ran by cygwin on a windows machine was used
to pick up all image sets and regenerate GBB firmware
volumes, will be published under a separate CL.

BUG=chrome-os-partner:792
TEST=see below:

Ran the following command:
 ./process_all_targets.sh  ../../../chromeos-internal/third_party/autotest/files/client/site_tests/

After command completed, the following out_* directories showed up:

(bitmaps 144) ls -1d out*
out_ACER_ASPIREONE_001_8012/
out_ACER_ASPIREONE_001_DEV_0393/
out_ACER_ASPIREONE_002_0710/
out_ACER_ASPIREONE_002_DEV_1017/
out_IEC_MARIO_FISH_2330/
out_IEC_MARIO_PONY_6101/
out_IEC_MARIO_PONY_DEV_3342/
out_IEC_MARIO_PONY_DVT_8784/
out_IEC_MARIO_PONY_EVT_3495/
out_IEC_MARIO_PONY_PREDVT_6766/

with typical directory contents as follows:

(bitmaps 145) tree out_ACER_ASPIREONE_001_8012/
out_ACER_ASPIREONE_001_8012/
|-- 1366x768.zip
|-- BlankBmp
|   `-- BlankBmp.bmp
|-- DeveloperBmp
|   `-- DeveloperBmp.bmp
|-- RecoveryBmp
|   `-- RecoveryBmp.bmp
|-- RecoveryMissingOSBmp
|   `-- RecoveryMissingOSBmp.bmp
`-- RecoveryNoOSBmp
    `-- RecoveryNoOSBmp.bmp

5 directories, 6 files

Review URL: http://codereview.chromium.org/4147008
2010-10-29 08:09:48 -07:00

69 lines
1.9 KiB
Bash
Executable File

#!/bin/bash -e
# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This script searches the directory tree passed in as the parameter for
# bmp_*.fv files, figures out the FWID strings from files' names, verifies the
# FWIDs' integrity (by recalculating the CRC included in the FWID string) and
# then rebuilds the bitmaps with the appropriate text and target specific
# geometry.
#
# Given a string "<prefix>_<el1>_<el2>_.._<eln>_<suffix>" print string
# '<el1> <el2> .. <eln>', i.e. <prefix>_ and _<suffix> dropped and underscores
# replaced with spaces.
get_elements() {
echo $1 | awk 'BEGIN {FS="_"}; {
x = 2;
do {
printf "%s ", $x;
x += 1
} while (x < (NF - 1))
printf "%s", $(NF-1);
}'
}
# Concatenate input parameters into a space separated string, calculate the
# string's CRC32 and print the last four hex digits of the crc.
signer() {
python -c "import sys,zlib;
me=' '.join(sys.argv[1:]);
print ('%04u'%(zlib.crc32(me)&0xffffffffL))[-4:]" $1
}
if [ "$#" != "1" -o ! -d "$1" ]; then
echo "One parameter is required, the path to the chromeos release tree" >&2
exit 1
fi
tree=$(readlink -f $1)
cd $(dirname "$0")
for f in $(find "${tree}" -type f -name 'bmp_*_[0-9]*.fv'); do
filename=$(basename "$f")
elements="$(get_elements $filename)"
signature=$(signer "${elements}")
# Rebuild file name to verify CRC.
comp_name=bmp_${elements// /_}_${signature}.fv
if [ "${filename}" != "${comp_name}" ]; then
echo "skipping ${filename} (crc mismatch with ${comp_name})"
continue
fi
echo "Processing ${filename}"
case "${elements}" in
(*ACER*) geometry='1366x768'
;;
(*MARIO*) geometry='1280x800'
;;
(*) echo "skipping ${filename}, unknown target geometry"
echo
continue
;;
esac
./make_bmp_images.sh "${elements} ${signature}" "${geometry}"
echo
done