aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAyan Kumar Halder2021-12-21 13:04:46 +0000
committerStefano Stabellini2021-12-21 09:41:12 -0800
commit1ff56037d6dc9e94c4ba512dd0af41e6843645af (patch)
treeec1cf34cffc2afeefbdd576da24de491ce836201
parentcd949669b6f905839a49b18a89d4d1bc7304a8b4 (diff)
Avoid exiting the script from the common
If there is any error in compile_merge_partial_dts() and sanity_check_partial_dts(), it should return 1 to the caller. The caller will then check the return and call cleanup_and_return_err() (which terminates the script). This is to prevent compile_merge_partial_dts() and sanity_check_partial_dts() terminating the script. The reason being these functions can get invoked from disk_image (in the future) which may require some additional cleanup. Also, moved cleanup_and_return_err() to uboot-script-gen as the cleanup is specific to the script. Ensure that we preseve the directory containing the partial dtbs only when the dtbs were generated successfully. Else, we delete it. Signed-off-by: Ayan Kumar Halder <ayankuma@xilinx.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
-rw-r--r--scripts/common45
-rwxr-xr-xscripts/uboot-script-gen16
2 files changed, 36 insertions, 25 deletions
diff --git a/scripts/common b/scripts/common
index cb8e0f9..68938be 100644
--- a/scripts/common
+++ b/scripts/common
@@ -26,13 +26,6 @@ function remove_tmp_files()
done
}
-function cleanup_and_return_err()
-{
- rm -f $UBOOT_SOURCE $UBOOT_SCRIPT
- remove_tmp_files
- exit 1
-}
-
function sanity_check_partial_dts()
{
local domU_passthrough_path="$1"
@@ -52,7 +45,7 @@ function sanity_check_partial_dts()
if ! test -f "$file"
then
echo "Device tree \"$file\" is not present"
- cleanup_and_return_err
+ return 1
fi
tmpdtb=`mktemp`
@@ -67,7 +60,7 @@ function sanity_check_partial_dts()
if test "$address_cells_val" -ne "$val"
then
echo "Address cells mismatch for ${DOMU_PASSTHROUGH_PATHS[$i]}"
- cleanup_and_return_err
+ return 1
fi
fi
@@ -79,19 +72,21 @@ function sanity_check_partial_dts()
if test "$size_cells_val" -ne "$val"
then
echo "Size cells mismatch for ${DOMU_PASSTHROUGH_PATHS[$i]}"
- cleanup_and_return_err
+ return 1
fi
fi
done
+
+ return 0
}
function compile_merge_partial_dts()
{
- local repo=$(echo "$1" | awk '{print $1}')
- local dir=$(echo "$1" | awk '{print $2}')
+ local dtb_dir=$1
+ local repo=$(echo "$2" | awk '{print $1}')
+ local dir=$(echo "$2" | awk '{print $2}')
local tmp
local tmpdts
- local tmp_dtb_dir
local file
local i
local j
@@ -103,17 +98,15 @@ function compile_merge_partial_dts()
echo "Cloning git repo \"$git_repo\""
git clone "$repo" $tmp
- if [ $? -ne 0 ]
+ if test $? -ne 0
then
echo "Error occurred while cloning \"$git_repo\""
- cleanup_and_return_err
+ return 1
fi
repo=$tmp
fi
- tmp_dtb_dir=`mktemp -d "partial-dtbs-XXX"`
-
if test -z "$dir"
then
dir="."
@@ -125,12 +118,16 @@ function compile_merge_partial_dts()
if test -z "${DOMU_PASSTHROUGH_PATHS[$i]}"
then
echo "DOMU_PASSTHROUGH_PATHS[$i] is not defined"
- cleanup_and_return_err
+ return 1
fi
sanity_check_partial_dts "${DOMU_PASSTHROUGH_PATHS[$i]}" "$repo" "$dir"
+ if test $? -ne 0
+ then
+ return 1
+ fi
- tmp=`mktemp "$tmp_dtb_dir/partial-dts-domU$i-XXX"`
+ tmp=`mktemp "$dtb_dir/partial-dts-domU$i-XXX"`
tmp_files+=($tmp)
j=1
@@ -141,7 +138,7 @@ function compile_merge_partial_dts()
file="$repo"/"$dir"/"$file".dts
# All the subsequent dts files should not have dts version mentioned
- if [ $j -gt 1 ]
+ if test $j -gt 1
then
tmpdts=`mktemp`
cp "$file" "$tmpdts"
@@ -156,20 +153,22 @@ function compile_merge_partial_dts()
done
dtc -I dts -O dtb -o "$tmp".dtb "$tmp"
- if [ $? -ne 0 ]
+ if test $? -ne 0
then
echo "Could not compile \"$tmp\""
- cleanup_and_return_err
+ return 1
fi
if test "${DOMU_PASSTHROUGH_DTB[$i]}"
then
echo "Can't set both PASSTHROUGH_DTS_REPO and DOMU_PASSTHROUGH_DTB"
- cleanup_and_return_err
+ return 1
fi
DOMU_PASSTHROUGH_DTB[$i]="$tmp".dtb
i=$(( $i + 1 ))
done
+
+ return 0
}
diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen
index 967cf6d..71669a9 100755
--- a/scripts/uboot-script-gen
+++ b/scripts/uboot-script-gen
@@ -4,6 +4,12 @@ offset=$((2*1024*1024))
filesize=0
prog_req=(mkimage file fdtput mktemp awk)
+function cleanup_and_return_err()
+{
+ rm -f $UBOOT_SOURCE $UBOOT_SCRIPT
+ remove_tmp_files
+ exit 1
+}
function dt_mknode()
{
@@ -854,8 +860,14 @@ cd "$uboot_dir"
if test "$PASSTHROUGH_DTS_REPO"
then
- compile_merge_partial_dts "$PASSTHROUGH_DTS_REPO"
- echo "Done compiling the partial device trees"
+ output_dir=`mktemp -d "partial-dtbs-XXX"`
+ compile_merge_partial_dts $output_dir "$PASSTHROUGH_DTS_REPO"
+ if test $? -ne 0
+ then
+ # Remove the output dir holding the partial dtbs in case of any error
+ tmp_dirs+=($output_dir)
+ cleanup_and_return_err
+ fi
fi
if test "$FIT"