This commit is contained in:
Peter McGoron 2023-05-26 15:00:46 -04:00
commit 6be211bdd9
3 changed files with 114 additions and 0 deletions

35
Dockerfile Normal file
View File

@ -0,0 +1,35 @@
FROM debian:bookworm
# FIXME: Very large User IDs cause ADD to not work properly. Use RUN
# instead.
ENV FPGA_FAM=xc7
ENV F4PGA_INSTALL_DIR=/home/user/f4pga
# Install base system and system user.
RUN apt-get update \
&& apt-get install -y git sudo wget xz-utils \
&& adduser --quiet --disabled-password user
USER user:user
WORKDIR /home/user
# Install F4PGA.
# FIXME: We need to either enable passwordless sudo for user (not good)
# or disable all instances of sudo. This hack works for this commit but
# might break in the future.
COPY --chown=user:user f4pga/scripts/prepare_environment.sh /home/user
RUN sed -i 's/sudo/#sudo/g' ./prepare_environment.sh \
&& ./prepare_environment.sh \
&& rm ./prepare_environment.sh
# Install LiteX.
COPY --chown=user:user litex/litex_setup.py /home/user
WORKDIR /home/user
RUN chmod +x litex_setup.py \
&& bash -c '\
source ~/f4pga/xc7/conda/etc/profile.d/conda.sh; \
conda run -n xc7 ./litex_setup.py --init --install --user --tag=2023.04'
# Install Buildroot.
WORKDIR /home/user
COPY --chown=user:user buildroot.tar.gz /home/user
RUN tar -xvf buildroot.tar.gz && rm buildroot.tar.gz

35
Makefile Normal file
View File

@ -0,0 +1,35 @@
.PHONY: image f4pga buildroot litex clone help
ADDED_FILES=f4pga/scripts/prepare_environment.sh litex/litex_setup.py buildroot.tar.gz
help:
@echo 'make image: build docker image'
@echo 'make open: open docker image'
@echo 'make clone: clone repositories'
image: ${ADDED_FILES}
docker build -t "upsilon-buildenv" .
## Download external projects
clone: f4pga buildroot litex
f4pga:
if [ ! -d 'f4pga' ]; then \
git clone https://github.com/chipsalliance/f4pga; \
fi
cd f4pga && git checkout main && git pull && \
git checkout -B upsilon_stable 835a40534f9efd70770d74f56f25fef6cfc6ebc6
buildroot:
if [ ! -d 'buildroot' ]; then \
git clone https://git.buildroot.org/buildroot; \
fi
cd buildroot && git checkout master && git pull && \
git checkout -B upsilon_stable 2023.02.1
tar -czvf buildroot.tar.gz buildroot/
litex:
if [ ! -d 'litex' ]; then \
git clone https://github.com/enjoy-digital/litex; \
fi
cd litex && git checkout master && git pull && \
git checkout -B upsilon_stable c6ccb626e88168045edacced3743f6bd98746742

44
environment_setup.md Normal file
View File

@ -0,0 +1,44 @@
MagLab Upsilon development environment setup.
Written by Peter McGoron.
Preqreuisites
=============
Rebinding Caps Lock to Escape
-----------------------------
gsettings set org.gnome.desktop.input-sources xkb-options "['caps:swapescape']"
Installing OpenFPGALoader
-------------------------
Then install [openFPGALoader][1]. This utility entered the Ubuntu repositories
in 23.04. Install and compile it if you do not have it. Install the udev rule
so that admin access is not required to load FPGA bitstreams.
[1]: https://trabucayre.github.io/openFPGALoader/index.html
Setup Rootless Docker
---------------------
Docker allows you to run programs in containers, which are isolated
environments. Upsilon development (at the Maglab) uses Docker for
reproducibility: the environment can be set up automatically, and re-setup
whenever needed.
If you have issues with docker, try adding to `~/.config/docker/daemon.json`
{
"storage-driver": "fuse-overlayfs"
}
Download and Install Python3
----------------------------
Install `python3-venv` (or `python3-virtualenv`) and `python3-pip`.
Setup Build Environment
=======================