**Related issue**: #932 and #880 **Type of change**: other enhancement **Impact**: other (change a repo initialization script) **Release Notes** change a repo initialization script [init-submodules-no-riscv-tools-nolog.sh](https://github.com/zslwyuan/chipyard/blob/master/scripts/init-submodules-no-riscv-tools-nolog.sh) so it can generate the .sbtopt file in the Chipyard directory during repo initialization and use the absolute path for the SBT workspace variables in .sbtopts. Hope it can adapt to more compilation scenarios. For example, now users should be able to open the shipyard project directly using Intellij.
86 lines
2.8 KiB
Bash
Executable File
86 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# exit script if any command fails
|
|
set -e
|
|
set -o pipefail
|
|
|
|
# Check that git version is at least 1.7.8
|
|
MYGIT=$(git --version)
|
|
MYGIT=${MYGIT#'git version '} # Strip prefix
|
|
case ${MYGIT} in
|
|
[1-9]*) ;;
|
|
*) echo 'warning: unknown git version' ;;
|
|
esac
|
|
MINGIT="1.8.5"
|
|
if [ "$MINGIT" != "$(echo -e "$MINGIT\n$MYGIT" | sort -V | head -n1)" ]; then
|
|
echo "This script requires git version $MINGIT or greater. Exiting."
|
|
false
|
|
fi
|
|
|
|
# If BASH_SOURCE is undefined we may be running under zsh, in that case
|
|
# provide a zsh-compatible alternative
|
|
DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]:-${(%):-%x}}")")"
|
|
CHIPYARD_DIR="$(dirname "$DIR")"
|
|
|
|
cd "$CHIPYARD_DIR"
|
|
|
|
(
|
|
# Blocklist of submodules to initially skip:
|
|
# - Toolchain submodules
|
|
# - Generators with huge submodules (e.g., linux sources)
|
|
# - FireSim until explicitly requested
|
|
# - Hammer tool plugins
|
|
git_submodule_exclude() {
|
|
# Call the given subcommand (shell function) on each submodule
|
|
# path to temporarily exclude during the recursive update
|
|
for name in \
|
|
toolchains/*-tools/*/ \
|
|
toolchains/libgloss \
|
|
toolchains/qemu \
|
|
generators/sha3 \
|
|
generators/gemmini \
|
|
sims/firesim \
|
|
vlsi/hammer-cadence-plugins \
|
|
vlsi/hammer-synopsys-plugins \
|
|
vlsi/hammer-mentor-plugins \
|
|
software/firemarshal \
|
|
fpga/fpga-shells
|
|
do
|
|
"$1" "${name%/}"
|
|
done
|
|
}
|
|
|
|
_skip() { git config --local "submodule.${1}.update" none ; }
|
|
_unskip() { git config --local --unset-all "submodule.${1}.update" || : ; }
|
|
|
|
trap 'git_submodule_exclude _unskip' EXIT INT TERM
|
|
git_submodule_exclude _skip
|
|
git submodule update --init --recursive #--jobs 8
|
|
)
|
|
|
|
# Non-recursive clone to exclude riscv-linux
|
|
git submodule update --init generators/sha3
|
|
|
|
# Non-recursive clone to exclude gemmini-software
|
|
git submodule update --init generators/gemmini
|
|
git -C generators/gemmini/ submodule update --init --recursive software/gemmini-rocc-tests
|
|
|
|
# Minimal non-recursive clone to initialize sbt dependencies
|
|
git submodule update --init sims/firesim
|
|
git config --local submodule.sims/firesim.update none
|
|
|
|
# Only shallow clone needed for basic SW tests
|
|
git submodule update --init software/firemarshal
|
|
|
|
# Configure firemarshal to know where our firesim installation is
|
|
if [ ! -f ./software/firemarshal/marshal-config.yaml ]; then
|
|
echo "firesim-dir: '../../sims/firesim/'" > ./software/firemarshal/marshal-config.yaml
|
|
fi
|
|
|
|
echo "# line auto-generated by init-submodules-no-riscv-tools.sh" >> env.sh
|
|
echo '__DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]:-${(%):-%x}}")")"' >> env.sh
|
|
echo "PATH=\$__DIR/bin:\$PATH" >> env.sh
|
|
echo "PATH=\$__DIR/software/firemarshal:\$PATH" >> env.sh
|
|
echo "-Dsbt.sourcemode=true" > .sbtopts
|
|
echo "-Dsbt.workspace=$CHIPYARD_DIR/tools" >> .sbtopts
|