litex_setup: Add initial installs config support (minimal, standard, full).
Can be selected with --config=minimal/standard/full. This avoid installing all the CPUs when only the popular ones will be used. Installation can be updated later and switched to full installation with --config=full.
This commit is contained in:
parent
04e73b2e33
commit
a6e2a529dc
|
@ -25,7 +25,7 @@ jobs:
|
||||||
- name: Install LiteX
|
- name: Install LiteX
|
||||||
run: |
|
run: |
|
||||||
wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
|
wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
|
||||||
python3 litex_setup.py --init --install --user
|
python3 litex_setup.py --config=full --init --install --user
|
||||||
|
|
||||||
# Install GCC Toolchains
|
# Install GCC Toolchains
|
||||||
- name: Install GCC Toolchains
|
- name: Install GCC Toolchains
|
||||||
|
|
|
@ -66,6 +66,35 @@ git_repos = {
|
||||||
"pythondata-cpu-ibex": GitRepo(url="https://github.com/litex-hub/", clone="recursive", sha1=0xd3d53df),
|
"pythondata-cpu-ibex": GitRepo(url="https://github.com/litex-hub/", clone="recursive", sha1=0xd3d53df),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Installs -----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Minimal: Only Migen + LiteX.
|
||||||
|
minimal_repos = [
|
||||||
|
"migen", "litex"
|
||||||
|
]
|
||||||
|
|
||||||
|
# Standard: Migen + LiteX + Cores + Software + Popular CPUs (LM32, Mor1kx, SERV, VexRiscv).
|
||||||
|
standard_repos = list(git_repos.keys())
|
||||||
|
standard_repos.remove("amaranth")
|
||||||
|
standard_repos.remove("pythondata-cpu-picorv32")
|
||||||
|
standard_repos.remove("pythondata-cpu-rocket")
|
||||||
|
standard_repos.remove("pythondata-cpu-minerva")
|
||||||
|
standard_repos.remove("pythondata-cpu-microwatt")
|
||||||
|
standard_repos.remove("pythondata-cpu-blackparrot")
|
||||||
|
standard_repos.remove("pythondata-cpu-cv32e40p")
|
||||||
|
standard_repos.remove("pythondata-cpu-ibex")
|
||||||
|
|
||||||
|
# Full: Migen + LiteX + Cores + Software + All CPUs.
|
||||||
|
full_repos = list(git_repos.keys())
|
||||||
|
|
||||||
|
|
||||||
|
# Installs:
|
||||||
|
install_configs = {
|
||||||
|
"minimal" : minimal_repos,
|
||||||
|
"standard" : standard_repos,
|
||||||
|
"full" : full_repos,
|
||||||
|
}
|
||||||
|
|
||||||
# Script Location / Auto-Update --------------------------------------------------------------------
|
# Script Location / Auto-Update --------------------------------------------------------------------
|
||||||
|
|
||||||
def litex_setup_location_check():
|
def litex_setup_location_check():
|
||||||
|
@ -93,8 +122,9 @@ def litex_setup_auto_update():
|
||||||
|
|
||||||
# Repositories Initialization ----------------------------------------------------------------------
|
# Repositories Initialization ----------------------------------------------------------------------
|
||||||
|
|
||||||
def litex_setup_init_repos(dev_mode=False):
|
def litex_setup_init_repos(config="standard", dev_mode=False):
|
||||||
for name, repo in git_repos.items():
|
for name in install_configs[config]:
|
||||||
|
repo = git_repos[name]
|
||||||
os.chdir(os.path.join(current_path))
|
os.chdir(os.path.join(current_path))
|
||||||
print(f"[Checking {name}]...")
|
print(f"[Checking {name}]...")
|
||||||
if not os.path.exists(name):
|
if not os.path.exists(name):
|
||||||
|
@ -114,8 +144,9 @@ def litex_setup_init_repos(dev_mode=False):
|
||||||
|
|
||||||
# Repositories Update ------------------------------------------------------------------------------
|
# Repositories Update ------------------------------------------------------------------------------
|
||||||
|
|
||||||
def litex_setup_update_repos():
|
def litex_setup_update_repos(config="standard"):
|
||||||
for name, repo in git_repos.items():
|
for name in install_configs[config]:
|
||||||
|
repo = git_repos[name]
|
||||||
os.chdir(os.path.join(current_path))
|
os.chdir(os.path.join(current_path))
|
||||||
# Check if Repo is present.
|
# Check if Repo is present.
|
||||||
if not os.path.exists(name):
|
if not os.path.exists(name):
|
||||||
|
@ -135,8 +166,9 @@ def litex_setup_update_repos():
|
||||||
|
|
||||||
# Repositories Install -----------------------------------------------------------------------------
|
# Repositories Install -----------------------------------------------------------------------------
|
||||||
|
|
||||||
def litex_setup_install_repos(user_mode=False):
|
def litex_setup_install_repos(config="standard", user_mode=False):
|
||||||
for name, repo in git_repos.items():
|
for name in install_configs[config]:
|
||||||
|
repo = git_repos[name]
|
||||||
os.chdir(os.path.join(current_path))
|
os.chdir(os.path.join(current_path))
|
||||||
# Install Repo.
|
# Install Repo.
|
||||||
if repo.develop:
|
if repo.develop:
|
||||||
|
@ -228,6 +260,7 @@ def main():
|
||||||
parser.add_argument("--update", action="store_true", help="Update Git Repositories.")
|
parser.add_argument("--update", action="store_true", help="Update Git Repositories.")
|
||||||
parser.add_argument("--install", action="store_true", help="Install Git Repositories.")
|
parser.add_argument("--install", action="store_true", help="Install Git Repositories.")
|
||||||
parser.add_argument("--user", action="store_true", help="Install in User-Mode.")
|
parser.add_argument("--user", action="store_true", help="Install in User-Mode.")
|
||||||
|
parser.add_argument("--config", default="standard", help="Install config (minimal, standard, full).")
|
||||||
|
|
||||||
# GCC toolchains.
|
# GCC toolchains.
|
||||||
parser.add_argument("--gcc", default=None, help="Download/Extract GCC Toolchain (riscv, powerpc, openrisc or lm32).")
|
parser.add_argument("--gcc", default=None, help="Download/Extract GCC Toolchain (riscv, powerpc, openrisc or lm32).")
|
||||||
|
@ -254,15 +287,15 @@ def main():
|
||||||
|
|
||||||
# Init.
|
# Init.
|
||||||
if args.init:
|
if args.init:
|
||||||
litex_setup_init_repos(dev_mode=args.dev)
|
litex_setup_init_repos(config=args.config, dev_mode=args.dev)
|
||||||
|
|
||||||
# Update.
|
# Update.
|
||||||
if args.update:
|
if args.update:
|
||||||
litex_setup_update_repos()
|
litex_setup_update_repos(config=args.config)
|
||||||
|
|
||||||
# Install.
|
# Install.
|
||||||
if args.install:
|
if args.install:
|
||||||
litex_setup_install_repos(user_mode=args.user)
|
litex_setup_install_repos(config=args.config, user_mode=args.user)
|
||||||
|
|
||||||
# GCC.
|
# GCC.
|
||||||
os.chdir(os.path.join(current_path))
|
os.chdir(os.path.join(current_path))
|
||||||
|
|
Loading…
Reference in New Issue