summaryrefslogtreecommitdiff
path: root/scripts/bitmaps/process_all_targets.sh
blob: a290053c9b2f659cb831044ba0fdd524b38666e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/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}" "x86"
  echo
done