#!/bin/bash # # Copyright (C) 2023 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Helper script to run cargo_embargo generate on all external Rust crates and generate an HTML # report of the results, including any errors, warnings or changes to Android.bp files. # # Should be run from under external/rust/crates. set -e report="cargo_embargo_report.html" cat > $report < cargo_embargo crate report

cargo_embargo crate report

Using existing cargo_embargo.json

END success_count=0 different_count=0 total_count=0 for config in */cargo_embargo.json; do ((total_count+=1)) crate=$(dirname $config) echo "Trying $crate..." echo "" >> $report if (cd $crate && cargo_embargo generate cargo_embargo.json) 2> cargo_embargo.err; then (cd $crate && git diff Android.bp > Android.bp.diff) if grep "WARNING" cargo_embargo.err; then echo '' >> $report echo '' >> $report else # Compare the checked-in Android.bp to the generated one. (cd $crate && git show HEAD:Android.bp > Android.bp.orig) if diff $crate/Android.bp.orig $crate/Android.bp > /dev/null; then echo '' >> $report ((success_count+=1)) else echo '' >> $report ((different_count+=1)) fi echo '' >> $report fi else echo '' >> $report echo '' >> $report fi rm cargo_embargo.err rm -rf "$crate/cargo.metadata" "$crate/cargo.out" "$crate/target.tmp" "$crate/Cargo.lock" "$crate/Android.bp.orig" "$crate/Android.bp.embargo" "$crate/Android.bp.embargo_nobuild" (cd $crate && git checkout Android.bp) echo '' >> $report done echo '
Crate nameGenerateDetailsFiles
$crateWarning
' >> $report grep -m 1 "WARNING" cargo_embargo.err >> $report echo '' >> $report sed 's/$//g' < cargo_embargo.err >> $report echo '
SuccessDifferent' >> $report if [[ -s "cargo_embargo.err" ]]; then echo '
' >> $report sed 's/$//g' < cargo_embargo.err >> $report echo '
' >> $report fi echo '
Error
' >> $report sed 's/$//g' < cargo_embargo.err >> $report echo '
' >> $report if [[ -s "$crate/Android.bp.diff" ]]; then echo '
Android.bp.diff
' >> $report
    cat "$crate/Android.bp.diff" >> $report
    echo '
' >> $report rm "$crate/Android.bp.diff" fi echo '
' >> $report echo "

$success_count success, $different_count different, $total_count total.

" >> $report echo '' >> $report echo '' >> $report echo "Open file://$PWD/$report for details"