blob: 459273ef18ae4c24632aded0546621cac394ce7b [file] [log] [blame]
shijie.xiongbc5d3672022-04-01 17:52:16 +08001#!/bin/bash
2#
3# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
4#
5# SPDX-License-Identifier: MIT
6#
7
8###############################################################
9# Function: generate package combination.
10###############################################################
11
12# $1: arch
13# $2: soc
14# $3: board
15# $4: product
16check_package_combination() {
17 i=0
18 for arch in ${ARCHS[*]}; do
19 [[ "$1" == "$arch" ]] && break
20 i=$((i + 1))
21 done
22 [ $i -ge ${#ARCHS[*]} ] && return 1
23
24 i=0
25 for soc in ${SOCS[*]}; do
26 [[ "$2" == "$soc" ]] && break
27 i=$((i + 1))
28 done
29 [ "$i" -ge ${#SOCS[*]} ] && return 2
30
31 i=0
32 for board in ${BOARDS[*]}; do
33 [[ "$3" == "$board" ]] && break
34 i=$((i + 1))
35 done
36 [ "$i" -ge ${#BOARDS[*]} ] && return 3
37
38 i=0
39 for product in ${PRODUCTS[*]}; do
40 [[ "$4" == "$product" ]] && break
41 i=$((i + 1))
42 done
43 [ "$i" -ge ${#PRODUCTS[*]} ] && return 4
44
45 return 0
46}
47
48unset ARCHS SOCS BOARDS PRODUCTS
49
50ARCHS=($(find $PWD/arch -mindepth 1 -maxdepth 1 -type d ! -name ".*" | xargs basename -a | sort -n))
51SOCS=($(find $PWD/soc -mindepth 2 -maxdepth 2 -type d ! -name ".*" | xargs basename -a | sort -n))
52BOARDS=($(find $PWD/boards -mindepth 2 -maxdepth 2 -type d ! -name ".*" | xargs basename -a | sort -n))
53PRODUCTS=($(find $PWD/products -mindepth 1 -maxdepth 1 -type d ! -name ".*" | xargs basename -a | sort -n))
54
55PACKAGE_COMBINATION_INPUT="$PWD/image_packer/package_combination.in"
56export PACKAGE_COMBINATION="$PWD/output/package_combination.txt"
57
58if [ ! -d "$PWD/output" ]; then
59 mkdir -p $PWD/output
60fi
61if [ ! -s "$PACKAGE_COMBINATION" ] || [ $PACKAGE_COMBINATION -ot $PACKAGE_COMBINATION_INPUT ]; then
62 : >$PACKAGE_COMBINATION
63 while IFS= read -r LINE; do
64 ARRY=($(echo $LINE | tr ' ' ' '))
65 for ((loop = 0; loop < ${#ARRY[@]}; loop += 4)); do
66 arch=${ARRY[loop]}
67 soc=${ARRY[loop + 1]}
68 board=${ARRY[loop + 2]}
69 product=${ARRY[loop + 3]}
70 check_package_combination $arch $soc $board $product
71 [ "$?" -ne 0 ] && echo "package_combination is error!!!" && exit 1
72 done
73 echo $LINE >>$PACKAGE_COMBINATION
74 done <$PACKAGE_COMBINATION_INPUT
75fi