| #!/bin/bash | |
| # Copyright lowRISC contributors. | |
| # Licensed under the Apache License, Version 2.0, see LICENSE for details. | |
| # SPDX-License-Identifier: Apache-2.0 | |
| set -e | |
| # make_distribution.sh takes distribution artifacts in $BIN_DIR and packs them | |
| # into a compressed TAR archive, which is deposited into $BIN_DIR. In | |
| # particular, this script should be run after make_build_bin.sh. | |
| # | |
| # The actual artifacts exported are described by the $DIST_ARTIFACTS variable | |
| # below. | |
| . util/build_consts.sh | |
| echo "\$OT_VERSION = $OT_VERSION" >&2 | |
| # $DIST_ARTIFACTS is a list of |find| globs to be copied out of | |
| # $BIN_DIR and into the OpenTitan distribution archive. | |
| # | |
| # These globs are relative to $BIN_DIR. | |
| readonly DIST_ARTIFACTS=( | |
| 'sw/device/*.elf' | |
| 'sw/device/*.bin' | |
| 'sw/device/*.vmem' | |
| 'hw/top_earlgrey/Vchip_earlgrey_verilator' | |
| 'hw/top_earlgrey/lowrisc_systems_chip_earlgrey_*.bit.*' | |
| 'hw/top_earlgrey/*.mmi' | |
| ) | |
| DIST_DIR="$OBJ_DIR/$OT_VERSION" | |
| mkdir -p "$DIST_DIR" | |
| cp ci/README.snapshot "$DIST_DIR" | |
| cp LICENSE "$DIST_DIR" | |
| for pat in "${DIST_ARTIFACTS[@]}"; do | |
| echo "Searching for $pat." >&2 | |
| found_file=false | |
| # Looping over find output is a problem if our file paths have glob | |
| # characters or spaces. However, we do not have filenames like that in CI, | |
| # and the alternative formulations of this for loop are less intuitive. | |
| # shellcheck disable=SC2044 | |
| for file in $(find "$BIN_DIR" -type f -path "$BIN_DIR/$pat"); do | |
| found_file=true | |
| relative_file="${file#"$BIN_DIR/"}" | |
| echo "Copying \$BIN_DIR/$relative_file." >&2 | |
| destination="$DIST_DIR/$(dirname "$relative_file")" | |
| mkdir -p "$destination" | |
| mv "$file" "$destination" | |
| done | |
| if [[ "$found_file" == "false" ]]; then | |
| echo "Did not find any files matching $pat." >&2 | |
| echo "If this is intentional, delete that pattern." >&2 | |
| exit 1 | |
| fi | |
| done | |
| cd "$(dirname "$DIST_DIR")" | |
| tar -cJf "$BIN_DIR/$(basename "$DIST_DIR").tar.xz" \ | |
| "$(basename "$DIST_DIR")" |