Steven Moreland | 8e369ba | 2017-03-20 04:20:28 -0700 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | #TODO(b/35570956): Do with Soong instead. |
| 4 | |
| 5 | #Note: see do_makefiles_update below. |
| 6 | |
| 7 | function package_root_to_package() { |
| 8 | echo $1 | cut -f1 -d: |
| 9 | } |
| 10 | |
| 11 | function package_root_to_root() { |
| 12 | echo $1 | cut -f2 -d: |
| 13 | } |
| 14 | |
| 15 | ## |
| 16 | # Makes sure the appropriate directories are visible. |
Steven Moreland | edc2212 | 2017-05-11 16:15:39 -0700 | [diff] [blame] | 17 | # Usage: check_dirs root_or_cwd [package:root ...] |
Steven Moreland | 8e369ba | 2017-03-20 04:20:28 -0700 | [diff] [blame] | 18 | function check_dirs() { |
Steven Moreland | edc2212 | 2017-05-11 16:15:39 -0700 | [diff] [blame] | 19 | local root_or_cwd=$1 |
| 20 | shift 1 |
| 21 | |
Steven Moreland | 8e369ba | 2017-03-20 04:20:28 -0700 | [diff] [blame] | 22 | for package_root in "$@"; do |
| 23 | dir=$(package_root_to_root $package_root) |
Steven Moreland | edc2212 | 2017-05-11 16:15:39 -0700 | [diff] [blame] | 24 | if [ ! -d $root_or_cwd$dir ] ; then |
Steven Moreland | 8e369ba | 2017-03-20 04:20:28 -0700 | [diff] [blame] | 25 | echo "Where is $dir?"; |
| 26 | return 1; |
| 27 | fi |
| 28 | done |
| 29 | } |
| 30 | |
| 31 | ## |
| 32 | # Gets all packages in a directory. |
| 33 | # Usage: get_packages package root |
| 34 | function get_packages() { |
| 35 | local current_dir=$1 |
| 36 | local current_package=$2 |
| 37 | pushd $current_dir > /dev/null; |
| 38 | find . -type f -name \*.hal -exec dirname {} \; | sort -u | \ |
| 39 | cut -c3- | \ |
| 40 | awk -F'/' \ |
| 41 | '{printf("'$current_package'"); for(i=1;i<NF;i++){printf(".%s", $i);}; printf("@%s\n", $NF);}'; |
| 42 | popd > /dev/null; |
| 43 | } |
| 44 | |
| 45 | ## |
| 46 | # Package roots to arguments. |
| 47 | # Usage: get_root_arguments [package:root ...] |
| 48 | function get_root_arguments() { |
| 49 | for package_root in "$@"; do |
| 50 | echo "-r $package_root" |
| 51 | done |
| 52 | } |
| 53 | |
| 54 | ## |
Jiyong Park | 3728325 | 2017-08-29 14:11:48 +0900 | [diff] [blame] | 55 | # Returns directory path for a package |
| 56 | # Usage: get_package_dir package_root_dir package_prefix package |
| 57 | function get_package_dir() { |
| 58 | local package_dir=`echo $3 | cut -f1 -d@ | sed "s/$2\.//" | sed "s/\./\//g"` |
| 59 | local package_version=`echo $3 | cut -f2 -d@` |
| 60 | echo $1/$package_dir/$package_version |
| 61 | } |
| 62 | |
| 63 | ## |
Steven Moreland | 8e369ba | 2017-03-20 04:20:28 -0700 | [diff] [blame] | 64 | # Helps manage the package root of a HAL directory. |
| 65 | # Should be called from the android root directory. |
| 66 | # |
Steven Moreland | 89a9ebb | 2017-12-04 10:18:00 -0800 | [diff] [blame] | 67 | # Usage: do_makefiles_update [-O owner-name] [package:root ...] |
Steven Moreland | 8e369ba | 2017-03-20 04:20:28 -0700 | [diff] [blame] | 68 | # Where the first package root is the current one. |
| 69 | # |
| 70 | function do_makefiles_update() { |
Steven Moreland | 89a9ebb | 2017-12-04 10:18:00 -0800 | [diff] [blame] | 71 | local owner= |
| 72 | if [[ "$1" = "-O" ]]; then |
| 73 | owner="$2" |
| 74 | shift 2 |
| 75 | fi |
| 76 | |
Steven Moreland | edc2212 | 2017-05-11 16:15:39 -0700 | [diff] [blame] | 77 | local root_or_cwd=${ANDROID_BUILD_TOP%%/}${ANDROID_BUILD_TOP:+/} |
| 78 | |
Steven Moreland | 8e369ba | 2017-03-20 04:20:28 -0700 | [diff] [blame] | 79 | local current_package=$(package_root_to_package $1) |
Steven Moreland | edc2212 | 2017-05-11 16:15:39 -0700 | [diff] [blame] | 80 | local current_dir=$root_or_cwd$(package_root_to_root $1) |
Steven Moreland | 8e369ba | 2017-03-20 04:20:28 -0700 | [diff] [blame] | 81 | |
| 82 | echo "Updating makefiles for $current_package in $current_dir." |
| 83 | |
Steven Moreland | edc2212 | 2017-05-11 16:15:39 -0700 | [diff] [blame] | 84 | check_dirs "$root_or_cwd" $@ || return 1 |
Steven Moreland | 8e369ba | 2017-03-20 04:20:28 -0700 | [diff] [blame] | 85 | |
| 86 | local packages=$(get_packages $current_dir $current_package) || return 1 |
| 87 | local root_arguments=$(get_root_arguments $@) || return 1 |
| 88 | |
| 89 | for p in $packages; do |
| 90 | echo "Updating $p"; |
Steven Moreland | 89a9ebb | 2017-12-04 10:18:00 -0800 | [diff] [blame] | 91 | hidl-gen -O "$owner" -Landroidbp $root_arguments $p; |
Steven Moreland | 8e369ba | 2017-03-20 04:20:28 -0700 | [diff] [blame] | 92 | rc=$?; if [[ $rc != 0 ]]; then return $rc; fi |
| 93 | done |
Steven Moreland | 8e369ba | 2017-03-20 04:20:28 -0700 | [diff] [blame] | 94 | } |