multiple images
This commit is contained in:
parent
06ca4bb653
commit
d56383adba
|
@ -0,0 +1,6 @@
|
||||||
|
buildroot.tar.gz
|
||||||
|
buildroot/
|
||||||
|
f4pga/
|
||||||
|
litex/
|
||||||
|
opensbi/
|
||||||
|
upsilon/
|
37
Dockerfile
37
Dockerfile
|
@ -1,37 +0,0 @@
|
||||||
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. TODO: put in litex directory.
|
|
||||||
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
|
|
||||||
USER root:root
|
|
||||||
RUN apt-get -y install build-essential gcc g++ sed make binutils diffutils bash patch gzip bzip2 perl tar cpio unzip rsync bc findutils wget
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM debian:bookworm
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get -y upgrade \
|
||||||
|
&& apt-get install -y git wget xz-utils build-essential gcc g++ sed make binutils diffutils bash patch gzip bzip2 perl tar cpio unzip rsync bc findutils wget python3 libncurses5-dev libncurses-dev file which \
|
||||||
|
&& adduser --quiet --disabled-password user
|
||||||
|
|
||||||
|
USER user:user
|
||||||
|
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,26 @@
|
||||||
|
FROM debian:bookworm
|
||||||
|
|
||||||
|
ENV FPGA_FAM=xc7
|
||||||
|
ENV F4PGA_INSTALL_DIR=/home/user/f4pga
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get -y upgrade \
|
||||||
|
&& apt-get install -y git wget python3 xz-utils bash verilator m4 \
|
||||||
|
&& adduser --quiet --disabled-password user
|
||||||
|
|
||||||
|
USER user:user
|
||||||
|
WORKDIR /home/user
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
COPY --chown=user:user litex/litex_setup.py /home/user
|
||||||
|
RUN mkdir /home/user/litex \
|
||||||
|
&& chmod +x litex_setup.py \
|
||||||
|
&& cd litex/ \
|
||||||
|
&& bash -c '\
|
||||||
|
source ~/f4pga/xc7/conda/etc/profile.d/conda.sh; \
|
||||||
|
conda run -n xc7 ../litex_setup.py --init --install --user --tag=2023.04' \
|
||||||
|
&& rm ../litex_setup.py
|
14
Makefile
14
Makefile
|
@ -1,10 +1,9 @@
|
||||||
.PHONY: image f4pga buildroot litex clone help container attach
|
.PHONY: images f4pga buildroot litex clone help container attach hardware-image buildroot-image
|
||||||
ADDED_FILES=f4pga/scripts/prepare_environment.sh litex/litex_setup.py buildroot.tar.gz
|
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo 'compile commands (run in order)'
|
@echo 'compile commands (run in order)'
|
||||||
@echo 'make clone: clone repositories'
|
@echo 'make clone: clone repositories'
|
||||||
@echo 'make image: build docker image'
|
@echo 'make images: build docker images'
|
||||||
@echo 'make container: create docker container'
|
@echo 'make container: create docker container'
|
||||||
@echo
|
@echo
|
||||||
@echo 'run commands'
|
@echo 'run commands'
|
||||||
|
@ -13,8 +12,13 @@ help:
|
||||||
@echo 'clean commands'
|
@echo 'clean commands'
|
||||||
@echo 'make clean-container: delete docker container'
|
@echo 'make clean-container: delete docker container'
|
||||||
|
|
||||||
image: ${ADDED_FILES}
|
hardware-image: f4pga/scripts/prepare_environment.sh litex/litex_setup.py
|
||||||
docker build -t "upsilon-buildenv" .
|
docker build -f Dockerfile.hardware -t "upsilon-hardware-env" .
|
||||||
|
|
||||||
|
buildroot-image: buildroot.tar.gz
|
||||||
|
docker build -f Dockerfile.buildroot -t "upsilon-buildroot-env" .
|
||||||
|
|
||||||
|
images: hardware-image buildroot-image
|
||||||
|
|
||||||
container:
|
container:
|
||||||
docker run --name upsilon-container --volume .:/home/user/outside -it upsilon-buildenv /bin/bash -l
|
docker run --name upsilon-container --volume .:/home/user/outside -it upsilon-buildenv /bin/bash -l
|
||||||
|
|
|
@ -1,16 +1,13 @@
|
||||||
MagLab Upsilon development environment setup.
|
Upsilon development environment setup.
|
||||||
Written by Peter McGoron.
|
Written by Peter McGoron.
|
||||||
|
|
||||||
Preqreuisites
|
# Preqreuisites
|
||||||
=============
|
|
||||||
|
|
||||||
Rebinding Caps Lock to Escape
|
## Rebinding Caps Lock to Escape
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
gsettings set org.gnome.desktop.input-sources xkb-options "['caps:swapescape']"
|
gsettings set org.gnome.desktop.input-sources xkb-options "['caps:swapescape']"
|
||||||
|
|
||||||
Installing OpenFPGALoader
|
## Installing OpenFPGALoader
|
||||||
-------------------------
|
|
||||||
|
|
||||||
Then install [openFPGALoader][1]. This utility entered the Ubuntu repositories
|
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
|
in 23.04. Install and compile it if you do not have it. Install the udev rule
|
||||||
|
@ -18,8 +15,7 @@ so that admin access is not required to load FPGA bitstreams.
|
||||||
|
|
||||||
[1]: https://trabucayre.github.io/openFPGALoader/index.html
|
[1]: https://trabucayre.github.io/openFPGALoader/index.html
|
||||||
|
|
||||||
Setup Rootless Docker
|
## Setup Rootless Docker
|
||||||
---------------------
|
|
||||||
|
|
||||||
Docker allows you to run programs in containers, which are isolated
|
Docker allows you to run programs in containers, which are isolated
|
||||||
environments. Upsilon development (at the Maglab) uses Docker for
|
environments. Upsilon development (at the Maglab) uses Docker for
|
||||||
|
@ -33,12 +29,10 @@ If you have issues with docker, try adding to `~/.config/docker/daemon.json`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Download and Install Python3
|
## Download and Install Python3
|
||||||
----------------------------
|
|
||||||
|
|
||||||
Install `python3-venv` (or `python3-virtualenv`) and `python3-pip`.
|
Install `python3-venv` (or `python3-virtualenv`) and `python3-pip`.
|
||||||
|
|
||||||
Setup Build Environment
|
# Setup Build Environment
|
||||||
=======================
|
|
||||||
|
|
||||||
|
|
||||||
|
Run `make image container attach`.
|
||||||
|
|
Reference in New Issue