{"id":18596999,"url":"https://github.com/ghdl/docker","last_synced_at":"2025-07-27T20:05:06.421Z","repository":{"id":37580190,"uuid":"134948911","full_name":"ghdl/docker","owner":"ghdl","description":"Scripts to build and use docker images including GHDL","archived":false,"fork":false,"pushed_at":"2024-11-20T06:47:38.000Z","size":256,"stargazers_count":42,"open_issues_count":11,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-08T17:52:38.372Z","etag":null,"topics":["actions","ci","dockerfiles","ghdl","gtkwave","hardware","icestorm","nextpnr","openocd","pnr","prjtrellis","simulation","synthesis","testbench","verilog","vhdl","vunit","yosys"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ghdl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-26T09:46:51.000Z","updated_at":"2025-01-11T22:08:57.000Z","dependencies_parsed_at":"2023-11-15T07:30:45.535Z","dependency_job_id":"33d0f9f1-665d-40f9-bed1-319440370535","html_url":"https://github.com/ghdl/docker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ghdl/docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghdl%2Fdocker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghdl%2Fdocker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghdl%2Fdocker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghdl%2Fdocker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ghdl","download_url":"https://codeload.github.com/ghdl/docker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghdl%2Fdocker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267417664,"owners_count":24083839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actions","ci","dockerfiles","ghdl","gtkwave","hardware","icestorm","nextpnr","openocd","pnr","prjtrellis","simulation","synthesis","testbench","verilog","vhdl","vunit","yosys"],"created_at":"2024-11-07T01:26:34.921Z","updated_at":"2025-07-27T20:05:06.404Z","avatar_url":"https://github.com/ghdl.png","language":"Shell","readme":"\u003cp align=\"center\"\u003e\n  \u003ca title=\"Join the chat at https://gitter.im/ghdl1/Lobby\" href=\"https://gitter.im/ghdl1/Lobby?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge\"\u003e\u003cimg src=\"https://img.shields.io/badge/chat-on%20gitter-4db797.svg?longCache=true\u0026style=flat-square\u0026logo=gitter\u0026logoColor=e8ecef\"\u003e\u003c/a\u003e\u003c!--\n  --\u003e\n  \u003ca title=\"'base' workflow Status\" href=\"https://github.com/ghdl/docker/actions/workflows/base.yml\"\u003e\u003cimg alt=\"'base' workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/ghdl/docker/base.yml?branch=master\u0026longCache=true\u0026style=flat-square\u0026label=base\u0026logo=GitHub%20Actions\u0026logoColor=fff\"\u003e\u003c/a\u003e\u003c!--\n  --\u003e\n  \u003ca title=\"'test' workflow Status\" href=\"https://github.com/ghdl/docker/actions/workflows/test.yml\"\u003e\u003cimg alt=\"'test' workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/ghdl/docker/test.yml?branch=master\u0026longCache=true\u0026style=flat-square\u0026label=test\u0026logo=GitHub%20Actions\u0026logoColor=fff\"\u003e\u003c/a\u003e\u003c!--\n  --\u003e\n  \u003ca title=\"'bookworm' workflow Status\" href=\"https://github.com/ghdl/docker/actions/workflows/bookworm.yml\"\u003e\u003cimg alt=\"'bookworm' workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/ghdl/docker/bookworm.yml?branch=master\u0026longCache=true\u0026style=flat-square\u0026label=bookworm\u0026logo=GitHub%20Actions\u0026logoColor=fff\"\u003e\u003c/a\u003e\u003c!--\n  --\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./logo.png\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca title=\"'vunit' workflow Status\" href=\"https://github.com/ghdl/docker/actions/workflows/vunit.yml\"\u003e\u003cimg alt=\"'vunit' workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/ghdl/docker/vunit.yml?branch=master\u0026longCache=true\u0026style=flat-square\u0026label=vunit\u0026logo=GitHub%20Actions\u0026logoColor=fff\"\u003e\u003c/a\u003e\u003c!--\n  --\u003e\n  \u003ca title=\"'ext' workflow Status\" href=\"https://github.com/ghdl/docker/actions/workflows/ext.yml\"\u003e\u003cimg alt=\"'ext' workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/ghdl/docker/ext.yml?branch=master\u0026longCache=true\u0026style=flat-square\u0026label=ext\u0026logo=GitHub%20Actions\u0026logoColor=fff\"\u003e\u003c/a\u003e\u003c!--\n  --\u003e\n  \u003ca title=\"'cosim' workflow Status\" href=\"https://github.com/ghdl/docker/actions/workflows/cosim.yml\"\u003e\u003cimg alt=\"'cosim' workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/ghdl/docker/cosim.yml?branch=master\u0026longCache=true\u0026style=flat-square\u0026label=cosim\u0026logo=GitHub%20Actions\u0026logoColor=fff\"\u003e\u003c/a\u003e\u003c!--\n  --\u003e\n  \u003ca title=\"'mirror' workflow Status\" href=\"https://github.com/ghdl/docker/actions/workflows/mirror.yml\"\u003e\u003cimg alt=\"'mirror' workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/ghdl/docker/mirror.yml?branch=master\u0026longCache=true\u0026style=flat-square\u0026label=mirror\u0026logo=GitHub%20Actions\u0026logoColor=fff\"\u003e\u003c/a\u003e\u003c!--\n  --\u003e\n\u003c/p\u003e\n\nThis repository contains scripts and YAML workflows for GitHub Actions (GHA) to build and to deploy the container images that are used and/or published by the [GHDL GitHub organization](https://github.com/ghdl). All of them are pushed to [hub.docker.com/u/ghdl](https://cloud.docker.com/u/ghdl/repository/list).\n\n----\n\n**ATTENTION: Some images related to synthesis and PnR were moved to [hdl/containers](https://github.com/hdl/containers) and [hub.docker.com/u/hdlc](https://hub.docker.com/u/hdlc)**. See [DEPRECATED](DEPRECATED.md).\n\n----\n\nImages for development (i.e., building and/or testing ghdl):\n\n- [![ghdl/build Docker pulls](https://img.shields.io/docker/pulls/ghdl/build?label=ghdl%2Fbuild\u0026style=flat-square)](https://hub.docker.com/r/ghdl/build) images include development/build depedendencies for [ghdl](https://github.com/ghdl/ghdl).\n- [![ghdl/run Docker pulls](https://img.shields.io/docker/pulls/ghdl/run?label=ghdl%2Frun\u0026style=flat-square)](https://hub.docker.com/r/ghdl/run) images include runtime dependencies for [ghdl](https://github.com/ghdl/ghdl).\n- [![ghdl/pkg Docker pulls](https://img.shields.io/docker/pulls/ghdl/pkg?label=ghdl%2Fpkg\u0026style=flat-square)](https://hub.docker.com/r/ghdl/pkg) images include the content of [ghdl](https://github.com/ghdl/ghdl) tarballs built in [ghdl/build](https://hub.docker.com/r/ghdl/build/tags) images.\n- [![ghdl/debug Docker pulls](https://img.shields.io/docker/pulls/ghdl/debug?label=ghdl%2Fdebug\u0026style=flat-square)](https://hub.docker.com/r/ghdl/debug) image is based on `ghdl/build:buster-mcode` and `ghdl/pkg:buster-mcode`; includes Python pip, GNAT GPS, Graphviz and GDB.\n\nReady-to-use images:\n\n- [![ghdl/ghdl Docker pulls](https://img.shields.io/docker/pulls/ghdl/ghdl?label=ghdl%2Fghdl\u0026style=flat-square)](https://hub.docker.com/r/ghdl/ghdl) images, which are based on correponding [ghdl/run](https://hub.docker.com/r/ghdl/run/tags) images, include [ghdl](https://github.com/ghdl/ghdl) along with minimum runtime dependencies.\n- [![ghdl/vunit Docker pulls](https://img.shields.io/docker/pulls/ghdl/vunit?label=ghdl%2Fvunit\u0026style=flat-square)](https://hub.docker.com/r/ghdl/vunit) images, which are based on [`ghdl/ghdl:bookworm-*`](https://hub.docker.com/r/ghdl/ghdl/tags) images, include [ghdl](https://github.com/ghdl/ghdl) along with [VUnit](https://vunit.github.io/).\n  - `*-master` variants include latest VUnit (master branch), while others include the latest stable release (installed through pip).\n- [![ghdl/ext Docker pulls](https://img.shields.io/docker/pulls/ghdl/ext?label=ghdl%2Fext\u0026style=flat-square)](https://hub.docker.com/r/ghdl/ext/tags) GHDL and complements ([ghdl-language-server](https://github.com/ghdl/ghdl-language-server), [GtkWave](http://gtkwave.sourceforge.net/), [VUnit](https://vunit.github.io/), etc.).\n- [![ghdl/cosim Docker pulls](https://img.shields.io/docker/pulls/ghdl/cosim?label=ghdl%2Fcosim\u0026style=flat-square)](https://hub.docker.com/r/ghdl/cosim/tags) GHDL and other tools for co-simulation such as [SciPy](https://www.scipy.org/), [Xyce](https://xyce.sandia.gov/) or [GNU Octave](https://www.gnu.org/software/octave/).\n\nSee [USE_CASES.md](./USE_CASES.md) if you are looking for usage examples from a user perspective.\n\n## GHA workflows\n\n### · [base](.github/workflows/base.yml)\n\nBuild and push all the `ghdl/build:*` and `ghdl/run:*` docker images. :\n\n- A pair of images is created in one job for `[ ls ]`.\n- One job is created for each of `[ fedora (37 | 38), debian (buster | bullseye | bookworm), ubuntu (20 | 22)]`, and six images are created in each job; two (`ghdl/build:*`, `ghdl/run:*`) for each supported backend `[ mcode, llvm*, gcc ]`.\n  - `ghdl/debug:base` is created in the `debian buster` job.\n  - `ghdl/build:doc` is created in the `debian bookworm` job.\n\n### · [test](.github/workflows/test.yml)\n\nBuild and push almost all the `ghdl/ghdl:*` and `ghdl/pkg:*` images. A pair of images is created in one job for each combination of:\n\n- `[ fedora: [37, 38], debian: [bullseye], ubuntu: [20, 22] ]` and `[mcode, llvm*]`.\n- `[ fedora: [37, 38], debian: [bullseye] ]` and `[gcc*]`.\n- For Debian only, `[bullseye, bookworm]` and `[mcode]` and `[--gpl]`.\n- For Debian Buster, only `[mcode]`.\n  - `ghdl/debug` is created in this job.\n\nThe procedure in each job is as follows:\n\n- Repo [ghdl/ghdl](https://github.com/ghdl/ghdl) is cloned.\n- ghdl is built in the corresponding `ghdl/build:*` image.\n- A `ghdl/ghdl:*` image is created based on the corresponding `ghdl/run:*` image.\n- The testsuite is executed inside the `ghdl/ghdl:*` image created in the previous step.\n- If successful, a `ghdl/pkg:*` image is created from `scratch`, with the content of the tarball built in the first step.\n- `ghdl/ghdl:*` and `ghdl/pkg:*` images are pushed to [hub.docker.com/u/ghdl](https://cloud.docker.com/u/ghdl/repository/list).\n\n\u003e NOTE: images with GCC backend include `lcov` for code coverage analysis.\n\n### · [bookworm](.github/workflows/bookworm.yml) [scheduled daily]\n\nComplement of `ghdl.yml`, to be run after each successful run of the main workflow in ghdl/ghdl. One job is scheduled for each combination of `[ bookworm ]` and `[ mcode, llvm-14 , gcc-12.3.0 ]`.\n\n### · [vunit](.github/workflows/vunit.yml) [triggered after workflow 'bookworm']\n\nBuild and push all the `ghdl/vunit:*` images, which are based on the ones created in the 'bookworm' workflow.\n- Two versions are published for each backend: one with latest stable VUnit (from PyPI) and one with the latest `master` (from Git).\n- Images with GCC backend include `lcov` and `gcovr` for code coverage analysis.\n\n### · [ext](.github/workflows/ext.yml) [triggered after workflow 'vunit']\n\nBuild and push all the `ghdl/ext:*` images:\n\n- `ls`: **ghdl/ext:ls-debian** and **ghdl/ext:ls-ubuntu** (a job for each of them). These include [ghdl/ghdl](https://github.com/ghdl/ghdl), the [ghdl/ghdl-language-server](https://github.com/ghdl/ghdl-language-server) backend and the vscode-client (precompiled but not preinstalled).\n- `gui`:\n  - **ghdl/ext:gtkwave**: includes [GtkWave](http://gtkwave.sourceforge.net/) (gtk3) on top of *ghdl/vunit:llvm-master*.\n  - **ghdl/ext:broadway**: adds a script to *ghdl/ext:gtkwave* in order to launch a [Broadway](https://developer.gnome.org/gtk3/stable/gtk-broadway.html) server that allows to use GtkWave from a web browser.\n  - **ghdl/ext:ls-vunit**: includes VUnit (`master`) on top of *ghdl/ext:ls-debian*.\n  - **ghdl/ext:latest**: includes [GtkWave](http://gtkwave.sourceforge.net/) on top of `ghdl/ext:ls-vunit`.\n\n### · [cosim](.github/workflows/cosim.yml)\n\nSee [ghdl/ghdl-cosim: docker](https://github.com/ghdl/ghdl-cosim/tree/master/docker) and [ghdl.github.io/ghdl-cosim/vhpidirect/examples/vffi_user](https://ghdl.github.io/ghdl-cosim/vhpidirect/examples/vffi_user.html).\n\n- **ghdl/cosim:mcode**: based on *ghdl/ghdl:bookworm-mcode*, includes GCC.\n- **ghdl/cosim:py**: based on *ghdl/ghdl:bookworm-llvm-7*, includes Python.\n  - **ghdl/cosim:vunit-cocotb**: based on *ghdl/cosim:py*, includes [VUnit](https://vunit.github.io/), [cocotb](https://docs.cocotb.org/) and `g++` (required by cocotb).\n    - **ghdl/cosim:matplotlib**: based on *ghdl/cosim:vunit-cocotb*, includes `pytest`, `matplotlib`, `numpy` and Imagemagick.\n    - **ghdl/cosim:octave**: based on *ghdl/cosim:vunit-cocotb*, includes [GNU Octave](https://www.gnu.org/software/octave/).\n    - **ghdl/cosim:xyce**: based on *ghdl/cosim:vunit-cocotb*, includes [Xyce](https://xyce.sandia.gov/).\n\nNOTE: `*-slim` variants of `matplotlib`, `octave` and `xyce` images are provided too. Those are based on *ghdl/cosim:py*, instead of *ghdl/cosim:vunit-cocotb*.\n\n## Packaging\n\nMultiple artifacts of GHDL are generated in these workflows. For example, each job in `test.yml` generates a tarball that is then installed in a `ghdl/ghdl:*` image, and the content is published in a `ghdl/pkg:*` image. These resources might be useful for users/developers who:\n\n- Want to use a base image which is compatible but different from the ones we use. E.g., use `python:3-slim-bookworm` instead of `debian:bookworm-slim`.\n- Do not want to build and test GHDL every time.\n\nHowever, it is discouraged to use these pre-built artifacts to install GHDL on host systems.\n\n\u003c!--\nInstead, [ghdl/packaging](https://github.com/ghdl/packaging) contains sources for package manager systems, and it provides *nightly builds* of GHDL.\n--\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghdl%2Fdocker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fghdl%2Fdocker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghdl%2Fdocker/lists"}