blob: c15f490552f0404413a977a3467771beef2852b5 [file] [log] [blame]
#!/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")"