init
This commit is contained in:
commit
6be211bdd9
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
=======================
|
||||
|
||||
|
Reference in New Issue