#!/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 "___..__" print string # ' .. ', i.e. _ and _ 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}" "x86" echo done