This commit is contained in:
Aquiles Viza 2023-09-29 15:32:31 -03:00
commit 4a3f30d5e9
13 changed files with 573 additions and 110 deletions

View File

@ -0,0 +1,315 @@
name: release
on:
push:
branches: [ main ]
jobs:
build-base:
runs-on: [ubuntu-latest, amd64]
container:
image: catthehacker/ubuntu:act-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker BuildX
uses: docker/setup-buildx-action@v2
- name: Authentication
uses: docker/login-action@v2
with:
registry: git.1159.cl
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build desktop base
uses: docker/build-push-action@v4
with:
push: true
tags: git.1159.cl/mario1159/osicstacks-base-desktop
platforms: linux/amd64
context: .
file: ./base/desktop.Dockerfile
- name: Build web base
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-desktop
tags: git.1159.cl/mario1159/osicstacks-base-web
platforms: linux/amd64
context: .
file: ./base/web.Dockerfile
build-analog-xk:
needs: build-base
runs-on: [ubuntu-latest, amd64]
container:
image: catthehacker/ubuntu:act-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker BuildX
uses: docker/setup-buildx-action@v2
- name: Authentication
uses: docker/login-action@v2
with:
registry: git.1159.cl
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build analog-xk desktop
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-desktop
tags: git.1159.cl/mario1159/analog-xk-desktop
platforms: linux/amd64
context: .
file: ./stacks/analog-xk.Dockerfile
- name: Build analog-xk web
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-web
tags: git.1159.cl/mario1159/analog-xk-web
platforms: linux/amd64
context: .
file: ./stacks/analog-xk.Dockerfile
build-analog-xm:
needs: build-base
runs-on: [ubuntu-latest, amd64]
container:
image: catthehacker/ubuntu:act-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker BuildX
uses: docker/setup-buildx-action@v2
- name: Authentication
uses: docker/login-action@v2
with:
registry: git.1159.cl
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build analog-xm desktop
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-desktop
tags: git.1159.cl/mario1159/analog-xm-desktop
platforms: linux/amd64
context: .
file: ./stacks/analog-xm.Dockerfile
- name: Build analog-xm web
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-web
tags: git.1159.cl/mario1159/analog-xm-web
platforms: linux/amd64
context: .
file: ./stacks/analog-xm.Dockerfile
build-analog-heavy:
needs: build-base
runs-on: [ubuntu-latest, amd64]
container:
image: catthehacker/ubuntu:act-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker BuildX
uses: docker/setup-buildx-action@v2
- name: Authentication
uses: docker/login-action@v2
with:
registry: git.1159.cl
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build analog-heavy desktop
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-desktop
tags: git.1159.cl/mario1159/analog-heavy-desktop
platforms: linux/amd64
context: .
file: ./stacks/analog-heavy.Dockerfile
- name: Build analog-heavy web
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-web
tags: git.1159.cl/mario1159/analog-heavy-web
platforms: linux/amd64
context: .
file: ./stacks/analog-heavy.Dockerfile
build-digital-ator:
needs: build-base
runs-on: [ubuntu-latest, amd64]
container:
image: catthehacker/ubuntu:act-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker BuildX
uses: docker/setup-buildx-action@v2
- name: Authentication
uses: docker/login-action@v2
with:
registry: git.1159.cl
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build digital-ator desktop
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-desktop
tags: git.1159.cl/mario1159/digital-ator-desktop
platforms: linux/amd64
context: .
file: ./stacks/digital-ator.Dockerfile
- name: Build digital-ator web
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-web
tags: git.1159.cl/mario1159/digital-ator-web
platforms: linux/amd64
context: .
file: ./stacks/digital-ator.Dockerfile
build-digital-icarus:
needs: build-base
runs-on: [ubuntu-latest, amd64]
container:
image: catthehacker/ubuntu:act-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker BuildX
uses: docker/setup-buildx-action@v2
- name: Authentication
uses: docker/login-action@v2
with:
registry: git.1159.cl
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build digital-icarus desktop
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-desktop
tags: git.1159.cl/mario1159/digital-icarus-desktop
platforms: linux/amd64
context: .
file: ./stacks/digital-icarus.Dockerfile
- name: Build digital-icarus web
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-web
tags: git.1159.cl/mario1159/digital-icarus-web
platforms: linux/amd64
context: .
file: ./stacks/digital-icarus.Dockerfile
build-digital-heavy:
needs: build-base
runs-on: [ubuntu-latest, amd64]
container:
image: catthehacker/ubuntu:act-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker BuildX
uses: docker/setup-buildx-action@v2
- name: Authentication
uses: docker/login-action@v2
with:
registry: git.1159.cl
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build digital-heavy desktop
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-desktop
tags: git.1159.cl/mario1159/digital-heavy-desktop
platforms: linux/amd64
context: .
file: ./stacks/digital-heavy.Dockerfile
- name: Build digital-heavy web
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-web
tags: git.1159.cl/mario1159/digital-heavy-web
platforms: linux/amd64
context: .
file: ./stacks/digital-heavy.Dockerfile
build-heavy:
needs: build-base
runs-on: [ubuntu-latest, amd64]
container:
image: catthehacker/ubuntu:act-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker BuildX
uses: docker/setup-buildx-action@v2
- name: Authentication
uses: docker/login-action@v2
with:
registry: git.1159.cl
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build heavy desktop
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-desktop
tags: git.1159.cl/mario1159/heavy-desktop
platforms: linux/amd64
context: .
file: ./stacks/heavy.Dockerfile
- name: Build heavy web
uses: docker/build-push-action@v4
with:
push: true
build-args: BASE_IMG=git.1159.cl/mario1159/osicstacks-base-web
tags: git.1159.cl/mario1159/heavy-web
platforms: linux/amd64
context: .
file: ./stacks/heavy.Dockerfile

View File

@ -13,10 +13,11 @@ include_toc: true
## Highlights ## Highlights
- Simple by design, intended for ease to use. - Intended for ease to use, have your tools integrate tightly with your PDK.
- IC design tools evolve quickly, a rolling release distribution allows you to have the latest version of your tool set. - IC design tools evolve quickly, a rolling release distribution allows you to have the latest version of your tool set.
- Docker images can be heavy, thus these images are distributed in stacks, choose the best fit for your task. - Docker images can be heavy, thus these images are distributed in stacks, choose the best fit for your task.
- Flexible, these containers doesn't restrict you to extend your development environment, feel free to install your own packages. - Flexible, these containers doesn't restrict you to extend your development environment, feel free to install your own packages.
- Choose between running your applications in a custom linux environment in your web browser or natively in your current desktop environment.
## Stacks ## Stacks
@ -28,47 +29,62 @@ include_toc: true
- **digital-heavy**: Workflow with all the digital tools - **digital-heavy**: Workflow with all the digital tools
- **heavy**: Workflow with all the previous tools - **heavy**: Workflow with all the previous tools
> Flavors: web / desktop
## Usage ## Usage
Follow these 3 steps to get your container ready. Follow these 3 steps to get your container ready.
### 1. Starting a container with graphics output ### 1. Starting a container
There are two ways to start your container. You can choose (a) to start your container in your actual **desktop** environment and launch the applications from your integrated terminal or (b) you can launch a whole linux desktop environment that can be accessed through a **web** browser.
> Before following the next steps make sure you have docker running.
#### 1a. Starting a container in your **desktop** with native graphics output
Scripts are provided for creating the containers in both Windows and Linux. Scripts are provided for creating the containers in both Windows and Linux.
These scripts automate the binding of graphics environment variables to the container in order to enable graphics inside the docker container. These scripts automate the binding of graphics environment variables to the container in order to enable graphics inside the docker container.
#### Windows ##### Windows
Execute the next script in powershell. Execute the next script in powershell and follow the container initialization prompt.
```pwsh ```pwsh
& ([scriptblock]::Create((irm https://git.1159.cl/Mario1159/osic-stacks/raw/branch/main/run.ps1))) -remote & ([scriptblock]::Create((irm https://git.1159.cl/Mario1159/osic-stacks/raw/branch/main/run.ps1))) -remote
``` ```
This script will run the container inside wsl and bind the enviroments variables for [wslg](https://github.com/microsoft/wslg/blob/main/samples/container/Containers.md). This script will run the container inside WSL and bind the enviroments variables for [WSLg](https://github.com/microsoft/wslg/blob/main/samples/container/Containers.md).
#### Linux ##### Linux
Execute the next script in your terminal replacing `<container_name>` and `<git.1159.cl/mario1159/image>`. Execute the next script in your terminal replacing `<container_name>` by any name and `<stack>` by an stack from the previous [stack list](#stacks).
```sh ```sh
docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name <container_name> <git.1159.cl/mario1159/image> docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name <container_name> git.1159.cl/mario1159/<stack>-desktop
``` ```
> For Wayland compositors make sure you have XWayland installed > For Wayland compositors make sure you have XWayland installed
#### macOS / OS X ##### macOS / OS X
Install `Xquartz` and run the linux previous command. Install `Xquartz` and run the linux previous command.
#### 1b. Starting a container with a **Web** VNC client
If you prefer running the container in your web browser instead of in your integrated terminal, you can select the web flavor of any stack. In this case, it is not necessary to bind extra environment variables for enabling native graphics output.
```sh
docker run -it -p 8444:8444 --name <container_name> git.1159.cl/mario1159/<stack>-web
```
### 2. Connecting to the container ### 2. Connecting to the container
#### Desktop #### 2a. Desktop
Connect to your container with the using the name specified in the previous step.
After creating and starting the container, enter to it executing a shell with docker.
```sh ```sh
docker exec -it <container_name> bash docker exec -it <container_name> bash
``` ```
#### Web #### 2b. Web
Connect from the web to the VNC client at `localhost:8444`. Access from the web to the VNC client at `https://localhost:8444`.
### 3. Configure Volare ### 3. Configure Volare
@ -93,11 +109,11 @@ After you have set up the PDK, you can finally start developing your own designs
## Installing additional packages ## Installing additional packages
For the arch based images you can install packages from the official arch repository using `pacman`. For the arch based images you can install packages from the [official arch repository](https://archlinux.org/packages/) using `pacman`.
```pacman -S <package_name>``` ```pacman -S <package_name>```
or you can also install packages from the AUR using paru. or you can also install packages from the [AUR](https://aur.archlinux.org/) using paru.
```paru <package_name>``` ```paru <package_name>```

View File

@ -1,12 +1,13 @@
# OSIC Stacks - osicstacks-base-arch # OSIC Stacks - osicstacks-base-desktop
# Base image for OSIC Stacks # Base image for OSIC Stacks
FROM greyltc/archlinux-aur:paru FROM greyltc/archlinux-aur:paru as osicstacks-base-desktop
# Update packages # Update packages
RUN pacman -Syuq --noconfirm RUN pacman -Syuq --noconfirm
# Install packages # Install packages
RUN aur-install sudo git git-lfs python python-pip python-pipx xz gnu-free-fonts vim ngspice gedit jupyterlab xterm RUN aur-install sudo git git-lfs python python-pip python-pipx xz gnu-free-fonts vim ngspice gedit jupyter-notebook xterm
ENV TERM=xterm EDITOR=gedit
# Clean cache # Clean cache
RUN pacman -Scc RUN pacman -Scc

View File

@ -1,12 +1,14 @@
# OSIC Stacks - osicstacks-base-web # OSIC Stacks - osicstacks-base-web
# Base image for OSIC Stacks # Base image for OSIC Stacks
FROM osicstacks-base-desktop ARG BASE_IMG=osicstacks-base-desktop
FROM $BASE_IMG as osicstacks-base-web
# Update packages # Update packages
RUN sudo pacman -Syuq --noconfirm RUN sudo pacman -Syuq --noconfirm
# Install KASM VNC server # Install KASM VNC server
RUN paru -S --noconfirm kasmvncserver-bin RUN paru -S --noconfirm kasmvncserver-bin
ENV DISPLAY=:1
# KASM requires the hostname binary to start # KASM requires the hostname binary to start
RUN sudo pacman -S --noconfirm inetutils RUN sudo pacman -S --noconfirm inetutils

163
run.ps1
View File

@ -1,76 +1,89 @@
param([switch] $remote = $false) param([switch] $remote = $false)
Write-Host "OSIC-Stacks Container Creation" -ForegroundColor Green Write-Host "OSIC-Stacks Container Creation" -ForegroundColor Green
Write-Host "Checking requirements and WSL updates" -ForegroundColor DarkGray Write-Host "Checking requirements and WSL updates" -ForegroundColor DarkGray
Write-Host "" Write-Host ""
wsl --install Ubuntu --no-launch wsl --install Ubuntu --no-launch
wsl --update wsl --update
Write-Host "" Write-Host ""
Write-Host "Please select an image index:" Write-Host "Please select an image index:"
$imageoptions = @( $stacks_options = @(
'analog-xk' 'analog-xk'
'analog-xm' 'analog-xm'
'analog-heavy' 'analog-heavy'
'digital-ator' 'digital-ator'
'digital-icarus' 'digital-icarus'
'digital-heavy' 'digital-heavy'
'heavy' 'heavy'
) )
for($i = 0; $i -lt $imageoptions.Length; $i++) { for($i = 0; $i -lt $stacks_options.Length; $i++) {
$imageoption = $imageoptions[$i] $stack_option = $stacks_options[$i]
Write-Host "$i - $imageoption" -ForegroundColor Cyan Write-Host "[$($i+1)] - $stack_option" -ForegroundColor Cyan
} }
$imageindex = Read-Host -Prompt "Container image to initialize [0-$($imageoptions.Length-1)]" $stack_index = Read-Host -Prompt "Container image to initialize [1-$($stacks_options.Length)]"
$imagename = $imageoptions[$imageindex] $selected_stack = $stacks_options[$stack_index-1]
$containername = Read-Host -Prompt "Container instance name [default=$imagename]" $container_name = Read-Host -Prompt "Container instance name [default=$selected_stack]"
if (!$containername) { $containername = $imagename } if (!$container_name) { $container_name = $selected_stack }
$additionaloptions = '' $execmode = ''
if($remote) { while(!$execmode) {
$image = "git.1159.cl/mario1159/$imagename" Write-Host "Please select an execution mode index"
$additionaloptions = '--pull always ' Write-Host '[1] - desktop' -ForegroundColor Cyan
} else { Write-Host '[2] - web' -ForegroundColor Cyan
$image = $imagename $response = Read-Host "Execution mode [1-2]"
} if ($response -eq '1') {
$execmode = 'desktop'
$response = Read-Host "Do you want to bind the container home directory into a windows directory? [N/y]" } elseif ($response -eq '2') {
$execmode = 'web'
} else {
if ($response -eq 'y') { Write-Host "Unexpected respose, please try again" -ForegroundColor Red
$directory = Read-Host "Write the windows directory destination relative to WSL, for example `"/mnt/c/Users/Username/Desktop/ExampleFolder`"`n" }
mkdir -Force $directory | Out-Null }
$additionaloptions = -join($additionaloptions, "-v ${directory}:/home/designer/shared ")
} $additional_options = ''
if($remote) {
$response = Read-Host -Prompt "Do you want to set additional arguments for the container instantiation? [N/y]" $image = "git.1159.cl/mario1159/$selected_stack-$execmode"
$additional_options = '--pull always '
if ($response -eq 'y') { } else {
$response = Read-Host -Prompt "Write the additional arguments, for example -v <wsl_path>:<container_path>." $image = "$selected_stack-$execmode"
$additionaloptions = -join($additionaloptions, $response) }
}
$response = Read-Host "Do you want to bind the container home directory into a windows directory? [N/y]"
Write-Host ""
if ($response -eq 'y') {
$dockercommand = ("docker run -d " + $directory = Read-Host "Write the windows directory destination relative to WSL, for example `"/mnt/c/Users/Username/Desktop/ExampleFolder`"`n"
"--name $containername " + $additionaloptions = -join($additionaloptions, "-v ${directory}:/home/designer/shared ")
"-v /tmp/.X11-unix:/tmp/.X11-unix " + }
"-v /mnt/wslg:/mnt/wsl " +
"-e WAYLAND_DISPLAY=`$WAYLAND_DISPLAY " + $response = Read-Host -Prompt "Do you want to set additional arguments for the container instantiation? [N/y]"
"-e DISPLAY=`$DISPLAY " +
"-e XDG_RUNTIME_DIR=/mnt/wslg " + if ($response -eq 'y') {
"$additionaloptions "+ $response = Read-Host -Prompt "Write the additional arguments, for example -v <wsl_path>:<container_path>."
$image) $additionaloptions = -join($additionaloptions, $response)
}
wsl -d Ubuntu bash -ic $dockercommand
Write-Host ""
if ($?) {
Write-Host "Container created successfully!" -ForegroundColor Green $dockercommand = ("docker run -d " +
Write-Host "Enter the container with `"docker exec -it $containername bash`"" -ForegroundColor DarkGray "--name $container_name " +
} else { "-v /tmp/.X11-unix:/tmp/.X11-unix " +
Write-Host "Container creation failed, see logs above" -ForegroundColor Red "-v /mnt/wslg:/mnt/wsl " +
"-e WAYLAND_DISPLAY=`$WAYLAND_DISPLAY " +
"-e DISPLAY=`$DISPLAY " +
"-e XDG_RUNTIME_DIR=/mnt/wslg " +
"$additional_options "+
$image)
wsl -d Ubuntu bash -ic $dockercommand
if ($?) {
Write-Host "Container created successfully!" -ForegroundColor Green
Write-Host "Enter the container with `"docker exec -it $container_name bash`"" -ForegroundColor DarkGray
} else {
Write-Host "Container creation failed, see logs above" -ForegroundColor Red
} }

View File

@ -2,12 +2,18 @@
cd /home/designer cd /home/designer
# Run VNC server # Run VNC server
export DISPLAY=:1
eval $(vncserver -dry-run) & eval $(vncserver -dry-run) &
echo -e "password\npassword\n" | vncpasswd -u designer -w -r echo -e "password\npassword\n" | vncpasswd -u designer -w -r
# Wait for VNC server to start # Wait for VNC server to start
sleep 1 sleep 2
while ! xset q &>/dev/null;
do
echo "XServer not responsive, retrying..."
sleep 2
done
echo "XServer has been found, running desktop environment"
# Run desktop environment (XFCE) # Run desktop environment (XFCE)
xfce4-session --display=$DISPLAY xfce4-session --display=$DISPLAY

View File

@ -1,13 +1,18 @@
# OSIC Stacks - analog-heavy-arch # OSIC Stacks - analog-heavy
# Dev enviroment for analog circuits development using xschem and klayout. # Dev environment for analog design.
ARG BASE_IMG=osicstacks-base-native ARG BASE_IMG=osicstacks-base-desktop
FROM $BASE_IMG as analog-heavy FROM $BASE_IMG as analog-heavy
# Update packages # Update packages
RUN sudo pacman -Syuq --noconfirm RUN sudo pacman -Syuq --noconfirm
# Install packages # Install packages
RUN sudo aur-install xschem glu magic-git klayout RUN sudo aur-install \
xschem \
glu \
magic-git \
klayout \
netgen-lvs-git
# Clean cache # Clean cache
RUN sudo pacman -Scc RUN sudo pacman -Scc

View File

@ -1,13 +1,16 @@
# OSIC Stacks - analog-xk # OSIC Stacks - analog-xk
# Dev enviroment for analog circuits development using xschem and klayout. # Dev environment for analog circuits development using xschem and klayout.
ARG BASE_IMG=osicstacks-base-native ARG BASE_IMG=osicstacks-base-desktop
FROM $BASE_IMG as analog-xk FROM $BASE_IMG as analog-xk
# Update packages # Update packages
RUN sudo pacman -Syuq --noconfirm RUN sudo pacman -Syuq --noconfirm
# Install packages # Install packages
RUN sudo aur-install xschem klayout RUN sudo aur-install \
xschem \
klayout \
netgen-lvs-git
RUN pip install gdsfactory --break-system-packages RUN pip install gdsfactory --break-system-packages
RUN pip install gf180 --upgrade --break-system-packages RUN pip install gf180 --upgrade --break-system-packages

View File

@ -1,13 +1,17 @@
# OSIC Stacks - analog-xm # OSIC Stacks - analog-xm
# Dev enviroment for analog circuits development using xschem and magic. # Dev environment for analog circuits development using xschem and magic.
ARG BASE_IMG=osicstacks-base-native ARG BASE_IMG=osicstacks-base-desktop
FROM $BASE_IMG as analog-xm FROM $BASE_IMG as analog-xm
# Update packages # Update packages
RUN sudo pacman -Syuq --noconfirm RUN sudo pacman -Syuq --noconfirm
# Install packages # Install packages
RUN sudo aur-install xschem glu magic-git RUN sudo aur-install \
xschem \
glu \
magic-git \
netgen-lvs-git
# Clean cache # Clean cache
RUN sudo pacman -Scc RUN sudo pacman -Scc

View File

@ -1,13 +1,17 @@
# OSIC Stacks - analog-xk-arch # OSIC Stacks - digital-ator
# Dev enviroment for analog circuits development using xschem and klayout. # Dev environment for digital circuits development using verilator and yosys.
ARG BASE_IMG=osicstacks-base-native ARG BASE_IMG=osicstacks-base-desktop
FROM $BASE_IMG as digital-ator FROM $BASE_IMG as digital-ator
# Update packages # Update packages
RUN sudo pacman -Syuq --noconfirm RUN sudo pacman -Syuq --noconfirm
# Install packages # Install packages
RUN sudo aur-install verilator gtkwave base-devel cmake RUN sudo aur-install \
verilator \
gtkwave \
base-devel \
cmake
# Clean cache # Clean cache
RUN sudo pacman -Scc RUN sudo pacman -Scc

View File

@ -0,0 +1,30 @@
# OSIC Stacks - digital-heavy
# Dev environment for digital design.
ARG BASE_IMG=osicstacks-base-desktop
FROM $BASE_IMG as digital-heavy
# Update packages
RUN sudo pacman -Syuq --noconfirm
# Install packages
RUN sudo aur-install \
verilator \
iverilog \
gtkwave \
base-devel \
cmake
# Clean cache
RUN sudo pacman -Scc
# - Desktop build
FROM digital-heavy as digital-heavy-desktop
# Initialize the environment keeping container alive
CMD ["sleep", "infinity"]
# - Web build
FROM digital-heavy as digital-heavy-web
# Run VNC server & desktop environment
CMD ["startserver"]

View File

@ -0,0 +1,29 @@
# OSIC Stacks - digital-icarus
# Dev environment for digital circuits development using icarus verilog and yosys.
ARG BASE_IMG=osicstacks-base-desktop
FROM $BASE_IMG as digital-icarus
# Update packages
RUN sudo pacman -Syuq --noconfirm
# Install packages
RUN sudo aur-install \
iverilog \
gtkwave \
base-devel \
cmake
# Clean cache
RUN sudo pacman -Scc
# - Desktop build
FROM digital-icarus as digital-icarus-desktop
# Initialize the environment keeping container alive
CMD ["sleep", "infinity"]
# - Web build
FROM digital-icarus as digital-icarus-web
# Run VNC server & desktop environment
CMD ["startserver"]

35
stacks/heavy.Dockerfile Normal file
View File

@ -0,0 +1,35 @@
# OSIC Stacks - heavy
# Dev environment for ic design.
ARG BASE_IMG=osicstacks-base-desktop
FROM $BASE_IMG as heavy
# Update packages
RUN sudo pacman -Syuq --noconfirm
# Install packages
RUN sudo aur-install \
xschem \
glu \
magic-git \
klayout \
netgen-lvs-git \
verilator \
iverilog \
gtkwave \
base-devel \
cmake
# Clean cache
RUN sudo pacman -Scc
# - Desktop build
FROM heavy as heavy-desktop
# Initialize the environment keeping container alive
CMD ["sleep", "infinity"]
# - Web build
FROM heavy as heavy-web
# Run VNC server & desktop environment
CMD ["startserver"]