3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-06-19 04:13:39 +00:00

Merge pull request #4563 from YosysHQ/krys/better_rtds_action

Better docs builds
This commit is contained in:
Miodrag Milanović 2024-09-03 09:32:24 +02:00 committed by GitHub
commit 9fca352882
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 116 additions and 84 deletions

52
.github/workflows/prepare-docs.yml vendored Normal file
View file

@ -0,0 +1,52 @@
name: Build docs artifact with Verific
on: push
jobs:
prepare-docs:
# docs builds are needed for anything on main, any tagged versions, and any tag
# or branch starting with docs-preview
if: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/docs-preview') || startsWith(github.ref, 'refs/tags/') }}
runs-on: [self-hosted, linux, x64, fast]
steps:
- name: Checkout Yosys
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: true
- name: Runtime environment
run: |
echo "procs=$(nproc)" >> $GITHUB_ENV
- name: Build Yosys
run: |
make config-clang
echo "ENABLE_VERIFIC := 1" >> Makefile.conf
echo "ENABLE_VERIFIC_EDIF := 1" >> Makefile.conf
echo "ENABLE_VERIFIC_LIBERTY := 1" >> Makefile.conf
echo "ENABLE_VERIFIC_YOSYSHQ_EXTENSIONS := 1" >> Makefile.conf
echo "ENABLE_CCACHE := 1" >> Makefile.conf
make -j${{ env.procs }} ENABLE_LTO=1
- name: Prepare docs
shell: bash
run:
make docs/prep TARGETS= EXTRA_TARGETS=
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: cmd-ref-${{ github.sha }}
path: |
docs/source/cmd
docs/source/generated
docs/source/_images
docs/source/code_examples
- name: Trigger RTDs build
uses: dfm/rtds-action@v1.1.0
with:
webhook_url: ${{ secrets.RTDS_WEBHOOK_URL }}
webhook_token: ${{ secrets.RTDS_WEBHOOK_TOKEN }}
commit_ref: ${{ github.ref }}

View file

@ -11,13 +11,11 @@ jobs:
- id: skip_check - id: skip_check
uses: fkirc/skip-duplicate-actions@v5 uses: fkirc/skip-duplicate-actions@v5
with: with:
paths_ignore: '["**/README.md"]' paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]'
# don't cancel previous builds # cancel previous builds if a new commit is pushed
cancel_others: 'true' cancel_others: 'true'
# only run on push *or* pull_request, not both # only run on push *or* pull_request, not both
concurrent_skipping: 'same_content_newer' concurrent_skipping: 'same_content_newer'
# we have special actions when running on main, so this should be off
skip_after_successful_duplicate: 'false'
test-verific: test-verific:
needs: pre-job needs: pre-job
@ -70,51 +68,3 @@ jobs:
if: ${{ github.ref == 'refs/heads/main' }} if: ${{ github.ref == 'refs/heads/main' }}
run: | run: |
make -C sby run_ci make -C sby run_ci
prepare-docs:
name: Generate docs artifact
needs: [pre-job, test-verific]
if: needs.pre-job.outputs.should_skip != 'true'
runs-on: [self-hosted, linux, x64, fast]
steps:
- name: Checkout Yosys
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: true
- name: Runtime environment
run: |
echo "procs=$(nproc)" >> $GITHUB_ENV
- name: Build Yosys
run: |
make config-clang
echo "ENABLE_VERIFIC := 1" >> Makefile.conf
echo "ENABLE_VERIFIC_EDIF := 1" >> Makefile.conf
echo "ENABLE_VERIFIC_LIBERTY := 1" >> Makefile.conf
echo "ENABLE_VERIFIC_YOSYSHQ_EXTENSIONS := 1" >> Makefile.conf
echo "ENABLE_CCACHE := 1" >> Makefile.conf
make -j${{ env.procs }} ENABLE_LTO=1
- name: Prepare docs
shell: bash
run:
make docs/source/cmd/abc.rst docs/gen_examples docs/gen_images docs/guidelines docs/usage docs/reqs TARGETS= EXTRA_TARGETS=
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: cmd-ref-${{ github.sha }}
path: |
docs/source/cmd
docs/source/generated
docs/source/_images
docs/source/code_examples
- name: Trigger RTDs build
if: ${{ github.ref == 'refs/heads/main' }}
uses: dfm/rtds-action@v1.1.0
with:
webhook_url: ${{ secrets.RTDS_WEBHOOK_URL }}
webhook_token: ${{ secrets.RTDS_WEBHOOK_TOKEN }}
commit_ref: ${{ github.ref }}

View file

@ -13,6 +13,7 @@ formats:
sphinx: sphinx:
configuration: docs/source/conf.py configuration: docs/source/conf.py
fail_on_warning: true
python: python:
install: install:

View file

@ -1009,8 +1009,11 @@ docs/usage: $(addprefix docs/source/generated/,$(DOCS_USAGE_STDOUT) $(DOCS_USAGE
docs/reqs: docs/reqs:
$(Q) $(MAKE) -C docs reqs $(Q) $(MAKE) -C docs reqs
.PHONY: docs/prep
docs/prep: docs/source/cmd/abc.rst docs/gen_examples docs/gen_images docs/guidelines docs/usage
DOC_TARGET ?= html DOC_TARGET ?= html
docs: docs/source/cmd/abc.rst docs/gen_examples docs/gen_images docs/guidelines docs/usage docs/reqs docs: docs/prep
$(Q) $(MAKE) -C docs $(DOC_TARGET) $(Q) $(MAKE) -C docs $(DOC_TARGET)
clean: clean:

View file

@ -629,11 +629,21 @@ following are used for building the website:
$ sudo apt install pdf2svg faketime $ sudo apt install pdf2svg faketime
Or for MacOS, using homebrew:
$ brew install pdf2svg libfaketime
PDFLaTeX, included with most LaTeX distributions, is also needed during the PDFLaTeX, included with most LaTeX distributions, is also needed during the
build process for the website. Or, run the following: build process for the website. Or, run the following:
$ sudo apt install texlive-latex-base texlive-latex-extra latexmk $ sudo apt install texlive-latex-base texlive-latex-extra latexmk
Or for MacOS, using homebrew:
$ brew install basictex
$ sudo tlmgr update --self
$ sudo tlmgr install collection-latexextra latexmk tex-gyre
The Python package, Sphinx, is needed along with those listed in The Python package, Sphinx, is needed along with those listed in
`docs/source/requirements.txt`: `docs/source/requirements.txt`:

View file

@ -250,6 +250,7 @@ test-macros:
.PHONY: images .PHONY: images
images: images:
$(MAKE) -C source/_images $(MAKE) -C source/_images
$(MAKE) -C source/_images convert
.PHONY: reqs .PHONY: reqs
reqs: reqs:

View file

@ -8,24 +8,22 @@ FAKETIME := TZ='Z' faketime -f '2022-01-01 00:00:00 x0,001'
CODE_EXAMPLES := ../code_examples/*/Makefile CODE_EXAMPLES := ../code_examples/*/Makefile
examples: $(CODE_EXAMPLES) examples: $(CODE_EXAMPLES)
# target to convert specified dot file(s) # target to convert all dot files
# needs to be run *after* examples, otherwise no dot files will be found
.PHONY: convert .PHONY: convert
TARG_DOT ?= DOT_FILES := $(shell find . -name *.dot)
convert: $(TARG_DOT:.dot=.pdf) $(TARG_DOT:.dot=.svg) convert: $(DOT_FILES:.dot=.pdf) $(DOT_FILES:.dot=.svg)
# use empty FORCE target because .PHONY ignores % expansion, using find allows # use empty FORCE target because .PHONY ignores % expansion
# us to generate everything in one pass, since we don't know all of the possible
# outputs until the sub-makes run
FORCE: FORCE:
../%/Makefile: FORCE ../%/Makefile: FORCE
@make -C $(@D) dots @make -C $(@D) dots
@mkdir -p $* @mkdir -p $*
@find $(@D) -name *.dot -exec cp -u {} -t $* \; @find $(@D) -name *.dot -exec rsync -t {} $* \;
@find $* -name *.dot -printf "%p " | xargs -i make --no-print-directory convert TARG_DOT="{}"
# find and build all tex files # find and build all tex files
.PHONY: all_tex .PHONY: all_tex
TEX_FILES := $(wildcard **/*.tex) TEX_FILES := $(shell find . -name *.tex)
all_tex: $(TEX_FILES:.tex=.pdf) $(TEX_FILES:.tex=.svg) all_tex: $(TEX_FILES:.tex=.pdf) $(TEX_FILES:.tex=.svg)
%.pdf: %.dot %.pdf: %.dot

View file

@ -13,7 +13,7 @@ dots: $(DOTS)
$(YOSYS) $< $(YOSYS) $<
%.dot: %_full.dot %.dot: %_full.dot
gvpack -u $*_full.dot -o $@ gvpack -u -o $@ $*_full.dot
.PHONY: clean .PHONY: clean
clean: clean:

View file

@ -41,23 +41,44 @@ html_static_path = ['_static', "_images"]
pygments_style = 'colorful' pygments_style = 'colorful'
highlight_language = 'none' highlight_language = 'none'
extensions = ['sphinx.ext.autosectionlabel', 'sphinxcontrib.bibtex', 'rtds_action'] extensions = ['sphinx.ext.autosectionlabel', 'sphinxcontrib.bibtex']
# rtds_action if os.getenv("READTHEDOCS"):
rtds_action_github_repo = "YosysHQ/yosys" # Use rtds_action if we are building on read the docs and have a github token env var
rtds_action_path = "." if os.getenv("GITHUB_TOKEN"):
rtds_action_artifact_prefix = "cmd-ref-" extensions += ['rtds_action']
rtds_action_github_token = os.environ["GITHUB_TOKEN"] rtds_action_github_repo = "YosysHQ/yosys"
rtds_action_path = "."
rtds_action_artifact_prefix = "cmd-ref-"
rtds_action_github_token = os.environ["GITHUB_TOKEN"]
else:
# We're on read the docs but have no github token, this is probably a PR preview build
html_theme_options["announcement"] = 'Missing content? Check <a class="reference internal" href="https://tyrtd--2.org.readthedocs.build/en/2/appendix/building_docs.html#pr-previews-and-limitations">PR preview limitations</a>.'
html_theme_options["light_css_variables"]["color-announcement-background"] = "var(--color-admonition-title-background--caution)"
html_theme_options["light_css_variables"]["color-announcement-text"] = "var(--color-content-foreground)"
# Ensure that autosectionlabel will produce unique names # Ensure that autosectionlabel will produce unique names
autosectionlabel_prefix_document = True autosectionlabel_prefix_document = True
autosectionlabel_maxdepth = 1 autosectionlabel_maxdepth = 1
# include todos for previews
extensions.append('sphinx.ext.todo')
# set version # set version
if os.getenv("READTHEDOCS") and os.getenv("READTHEDOCS_VERSION") == "latest": if os.getenv("READTHEDOCS"):
rtds_version = os.getenv("READTHEDOCS_VERSION")
if rtds_version == "latest":
release = yosys_ver + "-dev" release = yosys_ver + "-dev"
todo_include_todos = False
elif rtds_version.startswith("yosys-"):
release = yosys_ver
todo_include_todos = False
else:
release = rtds_version
todo_include_todos = True
else: else:
release = yosys_ver release = yosys_ver
todo_include_todos = True
# assign figure numbers # assign figure numbers
numfig = True numfig = True
@ -72,10 +93,6 @@ latex_elements = {
''' '''
} }
# include todos during rewrite
extensions.append('sphinx.ext.todo')
todo_include_todos = False
# custom cmd-ref parsing/linking # custom cmd-ref parsing/linking
sys.path += [os.path.dirname(__file__) + "/../"] sys.path += [os.path.dirname(__file__) + "/../"]
extensions.append('util.cmdref') extensions.append('util.cmdref')

View file

@ -3,6 +3,8 @@ More scripting
.. todo:: brief overview for the more scripting index .. todo:: brief overview for the more scripting index
.. todo:: troubleshooting document(?)
.. toctree:: .. toctree::
:maxdepth: 3 :maxdepth: 3

View file

@ -1,6 +0,0 @@
Troubleshooting
~~~~~~~~~~~~~~~
.. todo:: troubleshooting document(?)
See :doc:`/cmd/bugpoint`

View file

@ -90,8 +90,10 @@ Mapping to hardware
For this example, we are using a Liberty file to describe a cell library which For this example, we are using a Liberty file to describe a cell library which
our internal cell library will be mapped to: our internal cell library will be mapped to:
.. todo:: find a Liberty pygments style?
.. literalinclude:: /code_examples/intro/mycells.lib .. literalinclude:: /code_examples/intro/mycells.lib
:language: Liberty :language: text
:linenos: :linenos:
:name: mycells-lib :name: mycells-lib
:caption: :file:`mycells.lib` :caption: :file:`mycells.lib`

View file

@ -81,8 +81,10 @@ The following features, along with their corresponding Yosys build parameters,
are required for the Yosys-Verific patch: are required for the Yosys-Verific patch:
* RTL elaboration with * RTL elaboration with
* SystemVerilog with ``ENABLE_VERIFIC_SYSTEMVERILOG``, and/or * SystemVerilog with ``ENABLE_VERIFIC_SYSTEMVERILOG``, and/or
* VHDL support with ``ENABLE_VERIFIC_VHDL``. * VHDL support with ``ENABLE_VERIFIC_VHDL``.
* Hierarchy tree support and static elaboration with * Hierarchy tree support and static elaboration with
``ENABLE_VERIFIC_HIER_TREE``. ``ENABLE_VERIFIC_HIER_TREE``.