OpenVX™规范构建说明和注释

OpenVX™规范构建说明和注释

https://github.com/KhronosGroup/OpenVX-api-docs

目录

介绍

构建规范

更新规范中的标记ID

构建扩建

样式表

嵌入方程式

Asciidoc定位点和外部参照

软件相关性

修订历史记录

笔记

这是基于Vulkan描述文件,尚未针对OpenVX对构建过程的特定更改进行完全更新。最有用的部分是简介、构建规范以及关于安装软件依赖项的说明。

介绍

本描述描述了正确构建OpenVX API规范和参考页面的重要内容。

构建规范

一旦安装了所有正确的工具(请参阅下面的软件依赖项),请转到……-to-git-repo/docs/specification的路径。

$ make

或者使各个目标为html和pdf。

这些目标在Makefile变量$(OUTDIR)(默认情况下为out)指定的目录中生成各种输出文档。签入的文件../../../out/1.0/index.html链接到所有这些目标,或者可以单独找到它们,如下所示:

API规范:

  • html - Single-file HTML5 in $(OUTDIR)/html/vkspec.html
  • pdf - PDF in $(OUTDIR)/pdf/vkspec.pdf

更新规范中的标记ID

要在规范中插入标记,请使用以下文本模式。不要忘记在标记前添加空格。这标记了一个没有数字ID的标记。config/spec-tags.py将有助于为标记添加唯一的数字ID。

`[*REQ*]`

要在新标记中自动插入唯一的数字ID,请使用以下脚本:

% python config/spec-tags.py update OpenVX_Specification.adoc

有关更多详细信息,请使用% python config/spec-tags.py -help。

构建扩展

树中的所有扩展(完整或其他)都转换为ASCII标记,并且可以构建。API规范的源位于OpenVX_specification.txt中,而每个扩展位于vx_extension_name.txt中。通过传递SPECBASE=vx_extension_ name来生成扩展,例如。

make SPECBASE=vx_khr_nn html

辅助脚本makeAllSpecs可以调用为

makeAllSpecs html (or pdf, or both)

备用和测试构建

如果只是在测试ASCII格式、宏、样式表等,可能需要编辑OpenVX_Specification.txt以仅包含测试代码。asciidoctor HTML构建非常快,即使对于整个规范也是如此,但PDF构建需要几分钟时间。

重建生成的图像

图像/目录中有一些图像以一种格式保存,但需要转换为另一种格式以进行相应类型的输出。大多数是SVG转换为PDF,有些是PPT转换为PDF转换为SVG。所有构建都需要SVG。

Makefile不会自动转换这些文件。相反,所需的所有输出表单都会检查到images/中。在极少数情况下,有人更改源文档并需要重新生成其他表单:

cd images ; make

样式表

使用了Asciiddoctor colony主题的修改版本,修改后更像Doxygen样式表。

嵌入方程式

在可能的情况下,应该使用eq角色使用直接的asciidoc标记来编写公式。这涵盖了许多常见的方程,并且比备选方案更快。

对于更复杂的方程,如多事例语句、矩阵和复数分数,应使用latexmath: inline和block宏编写方程。latexmath: blocks的内容应该是LaTeX数学表示法。LaTeX数学标记分隔符现在由ascidictor工具链插入。

LaTeX数学被未经修改地传递到所有HTML输出表单,随后在加载HTML时使用KaTeX引擎进行渲染。KaTeX版本的本地副本保存在doc/specs/vulkan/KaTeX中,并在规范生成期间复制到HTML输出目录中。数学通过用于PDF输出的asciidoctor数学处理为SVG。

以下注意事项适用:

特殊字符<、>和&当前只能在[latexmath]块宏中使用,而不能在latexmath:[]内联宏中使用。请使用\lt、\leq、\gt和\geq分别表示<、⇐、>和>=。&是多行方程式的对齐构造,无论如何都应该只出现在块宏中。

AMSmath环境(例如\ begin{equipment*}、{align*}等)目前无法在KaTeX中使用,已被KaTeX支持的结构(如{aligned})所取代。

不能使用任意的LaTeX构造。KaTeX和asciidoctor数学只是方程渲染器,而不是完整的LaTeX引擎。嵌入类似LaTeX的\Large或\hbox{\t\small VK\_FOO}可能在任何后端都不起作用,应该避免。

有关支持的LaTeX数学结构的更多详细信息,请参阅OpenVX文档和扩展文档。

Asciidoc定位点和外部参照

在API规范中,节可以使用以下语法应用锚(标签)。一般情况下,锚点应紧跟在章节或章节标题之前,并应使用[[章节-章节标签]]的形式。例如

例如,根据Vulkan规范,有:

[[synchronization-primitives]]

Synchronization Primitives

对这些锚的交叉引用然后可以用例如,

See the <<synchronization-primitives>> section for discussion of fences,

semaphores, and events.

也可以使用类似的命名方案在任意段落上添加锚点。

任何定义来自自动生成的API之一的文件(目录API/basetypes、API/enums、API/flags、apifuncpointers、API/handles、API/protos和API/structs中的.txt文件)都有一个相应的锚,其名称是所定义的函数、结构等的名称。因此,可以这样说:

Fences are used with the +++<<vkQueueSubmit>>+++ command...

软件相关性

本节介绍OpenVX规范工具链所使用的软件组件。

在构建OpenVX规范之前,必须安装以下工具:

GNU make(make版本:4.0.8-1;旧版本可能还可以)

Python 3(Python,版本:3.4.2)

Ruby(Ruby,版本:2.3.3)

Ruby开发包(Ruby dev)在某些环境中可能也是必需的。

Git命令行客户端(Git,版本:2.1.4)。构建可以在没有git客户端的情况下进行,但构建中将省略分支/提交信息。任何支持以下操作的版本都应该有效:

git symbolic-ref --short HEAD

git log -1 --format="%H"

Ghostscript(Ghostscript,版本:9.10)。这是针对PDF构建的,如果没有它,它仍然可以继续。Ghostscript用于优化PDF的大小,因此如果包含它,它会小得多。

还必须安装以下Ruby Gems和平台包依赖项。每个gem都列出了已知有效的版本。早期版本在某些方面可能也可能无法正常工作。

下面将针对各个平台和环境管理器更详细地描述安装gem和包依赖项。在尝试安装之前,请完整阅读本文档的其余部分(您不使用的特定于平台的部分除外)。

Asciidoctor (asciidoctor, version: 1.5.8)

Coderay(Coderay,1.1.1版)

JSON模式(JSON模式,版本2.8.1)

Asciidoctor PDF(asciidoctorPDF,版本:1.5.0.alpha16)

Asciidoctor数学(asciidoctors数学,版本0.2.2)

asciidoctor数学依赖项(有很多!)

KaTeX发行版(0.7.0版本来自https://github.com/Khan/KaTeX . 它缓存在doc/specs/vulkan/katex/下,不需要从github安装。

腹水图(https://asciidoctor.org/docs/asciidoctor-diagram/,版本:1.5.11)

如果您不打算构建规范和支持文档的PDF版本,则只需要ascidictor和coderay gem。

json模式仅用于验证有效用法提取脚本到json文件的输出。如果未安装,则在构建JSON时将跳过验证。

笔记

虽然只安装HTML构建的工具链组件更容易,但提交对规范进行重大更改的MR的人有责任验证他们的分支是否同时构建了HTML和pdf目标。

平台特定的工具链说明如下:

Microsoft Windows

Ubuntu / Windows 10

MinGW (PDF builds not tested)

Cygwin

Mac OS X

Linux (Debian, Ubuntu, etc.)

Windows(常规)

Linux软件包上的大多数依赖项都很轻,因此可以在Windows中本地构建规范,但这意味着绕过makefile并直接调用函数。这个问题将来可能会得到解决。目前,Windows用户有三种选择:Ubuntu/Windows10、MinGW或Cygwin。

Ubuntu/Windows 10

当使用Windows 10的“Ubuntu子系统”时,大多数依赖项都可以通过apt-get安装:

sudo apt-get -qq -y install build-essential python3 git cmake bison flex \

    libffi-dev libgmp-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev \

libpango1.0-dev ttf-lyx gtk-doc-tools ghostscript

Ubuntu上默认的ruby包已经过时了。Ubuntu只提供ruby和ruby2.0,后者比当前的稳定分支有多个修订版,需要进行争论才能使makefile正常工作。

幸运的是,还有更好的选择;建议使用rvm或rbenv安装更新的版本。

笔记

如果是Ruby的新手,在第一次尝试使用rvm或rbenv之前,应该完全删除(通过包管理器,例如sudo apt-get-remove-packagename)机器上所有现有的Ruby和ascidictor基础设施。dpkg-l|egrep“asciidoctor|rube|rbenv|rvm”提供一个要删除的候选包名称列表。

如果已经有了最喜欢的Ruby软件包管理器,请忽略此建议,只需安装所需的操作系统软件包和gem。

此外,rvm和rbenv是相互不兼容的。它们都依赖于在bash shell中插入垫片和$PATH修改。如果你已经安装了其中一个,并且对它很熟悉,那么最好还是使用它。其中一位编辑是Ruby的新手,发现rbenv比rvm更容易理解。另一位编辑更喜欢rvm。

当从非Bash shell(如tcsh)调用时,rvm和rbenv都不能开箱即用。这可以通过设置正确的环境变量和基于bash环境的PATH添加来破解。

Bash for Windows上的大多数工具都对Windows的行尾(CR LF)非常满意,但Bash脚本需要Unix的行尾。1.0分支中vulkan树顶部的文件.gitattributes强制在非Linux平台上使用正确的行尾签出此类脚本。如果添加名称不以.sh结尾的新脚本,它们也应该包含在.gitattributes中。

Ubuntu/Windows 10使用Rbenv

Rbenv是一个比rvm功能更少的轻量级Ruby环境管理器。它的主要任务是管理不同的Ruby版本,而rvm还有其他功能,比如管理与需求无关的“gemset”。

以下是在开箱即用的环境中开发的Ubuntu for Windows工具链的完整安装脚本。如果你尝试这样做,不要试图同时执行整个过程。如果出现我们没有遇到的错误,请分别执行每一步。

# Install packages needed by `ruby_build` and by toolchain components.

# See https://github.com/rbenv/ruby-build/wiki and

# https://github.com/asciidoctor/asciidoctor-mathematical#dependencies

sudo apt-get install autoconf bison build-essential libssl-dev \

    libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev \

    libffi-dev libgdbm3 libgdbm-dev cmake libgmp-dev libxml2 \

    libxml2-dev flex pkg-config libglib2.0-dev \

    libcairo-dev libpango1.0-dev libgdk-pixbuf2.0-dev \

    libpangocairo-1.0

# Install rbenv from https://github.com/rbenv/rbenv

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

# Set path to shim layers in .bashrc

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .bashrc

~/.rbenv/bin/rbenv init

# Set .rbenv environment variables in .bashrc

echo 'eval "$(rbenv init -)"' >> .bashrc

# Restart your shell (e.g. open a new terminal window). Note that

# you do not need to use the `-l` option, since the modifications

# were made to .bashrc rather than .bash_profile. If successful,

# `type rbenv` should print 'rbenv is a function' followed by code.

# Install `ruby_build` plugin from https://github.com/rbenv/ruby-build

git clone https://github.com/rbenv/ruby-build.git

~/.rbenv/plugins/ruby-build

# Install Ruby 2.3.3

# This takes in excess of 20 min. to build!

# https://github.com/rbenv/ruby-build/issues/1054#issuecomment-276934761

# suggests:

# "You can speed up Ruby installs by avoiding generating ri/RDoc

# documentation for them:

# RUBY_CONFIGURE_OPTS=--disable-install-doc rbenv install 2.3.3

# We have not tried this.

rbenv install 2.3.3

# Configure rbenv globally to always use Ruby 2.3.3.

echo "2.3.3" > ~/.rbenv/version

# Finally, install toolchain components.

# asciidoctor-mathematical also takes in excess of 20 min. to build!

# The same RUBY_CONFIGURE_OPTS advice above may apply here as well.

gem install asciidoctor coderay json-schema

gem install --pre asciidoctor-pdf

MATHEMATICAL_SKIP_STRDUP=1 gem install asciidoctor-mathematical

Ubuntu/Windows 10使用RVM

以下是使用rvm安装2.3.x版本的(稀疏)说明:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

\curl -sSL https://get.rvm.io | bash -s stable --ruby

source ~/.rvm/scripts/rvm

rvm install ruby-2.3

rvm use ruby-2.3

笔记

Windows10Bash需要在启动时附加“-l”选项,以便运行登录shell;否则RVM将无法在未来的发射中正常工作。

buntu 16.04使用系统Ruby

Ubuntu 16.04.1默认Ruby安装(2.3.1版)似乎足够更新,可以运行所有必需的gem,但也需要通过包管理器安装Ruby-dev包。

此外,必须将库/var/lib/gems/2.3.0/gems/mathematical-1.6.7/ext/mathmatical/lib/liblasem.so复制或链接到加载程序可以找到它的目录中。这一要求似乎是由于asciictor数学构建过程中的问题。

工具链

MinGW可以在这里获得:http://www.mingw.org/

一旦安装程序运行了初始设置,按照网站上的说明,您应该安装mingw开发人员工具、mingw-base和msys-base包。msys基本包允许您使用windows中的bash终端,以及MinGW安装的unix工具。

在本机Windows环境中,还应安装以下本机软件包:

Python 3.x(https://www.python.org/downloads/)

Ruby 2.x(https://rubyinstaller.org/)

Git命令行客户端(https://git-scm.com/download)

一旦设置好了,并且安装了必要的Ruby Gems,就启动msys bash shell,并导航到规范Makefile。从那里开始,在执行make命令之前,您需要将PYTHON=设置为版本3.x的PYTHON可执行文件的位置,但除此之外,除了pdf构建之外的所有内容都应该正常工作。

笔记

通过此路径构建PDF规范尚未经过测试,但这是可能的——liblasem是主要问题,看起来现在有一个mingw32版本可用。

Cygwin

安装Cygwin时,应通过安装程序安装以下软件包:

// "curl" is only used to download fonts, can be done in another way

autoconf

bison

cmake

curl

flex

gcc-core

gcc-g++

ghostscript

git

libbz2-devel

libcairo-devel

libcairo2

libffi-devel

libgdk_pixbuf2.0-devel

libgmp-devel

libiconv

libiconv-devel

liblasem0.4-devel

libpango1.0-devel

libpango1.0_0

libxml2

libxml2-devel

make

python3

ruby

ruby-devel

笔记

其中一些包的本机版本是可用的,但应注意与cygwin的各个部分(例如路径)不兼容。Ruby尤其无法通过本机版本正确解析Windows路径。可以使用Python和Git for Windows,但对于Python,在调用make之前,您需要通过Python环境变量设置其路径。

在安装数学ruby gem时,有两件事需要进行调整才能使其正常工作。首先,不要:

MATHEMATICAL_SKIP_STRDUP=1 gem install asciidoctor-mathematical

应该使用

MATHEMATICAL_USE_SYSTEM_LASEM=1 gem install asciidoctor-mathematical

后者导致它使用已经安装的lasem包,而不是试图构建一个新的包。

数学gem还查找“liblasem”,而不是lasem0.4-devel软件包安装的“liblasem0.4”,因此有必要使用以下方法将符号链接添加到/lib目录:

ln -s /lib/liblasem-0.4.dll.a /lib/liblasem.dll.a

uby Gems通常不会安装到路径中的位置。宝石被安装到~/bin/-在调用make之前,应该将其添加到路径中:

export PATH=~/bin:$PATH

最后,需要通过以下命令手动安装lasem的字体:

mkdir /usr/share/fonts/truetype cd /usr/share/fonts/truetype

curl -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmex10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmmi10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmr10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmsy10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/esint10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/eufm10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msam10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msbm10.ttf

Mac OS X

Mac OS X应该以与ubuntu相同的方式工作,使用Homebrew软件包管理器,只是可以简单地通过brew安装ruby软件包,而不是使用特定于ruby的版本管理器。

可能还需要通过数学为PDF构建安装其他字体,可以使用以下方法:

cd ~/Library/Fonts

curl -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmex10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmmi10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmr10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmsy10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/esint10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/eufm10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msam10.ttf \

     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msbm10.ttf

然后安装所需的Ruby Gems。

Linux(Debian、Ubuntu等)

Ubuntu/Windows 10的安装说明通常适用于使用Debian软件包的本地Linux环境,如Debian和Ubuntu,尽管要安装的软件包的确切列表可能有所不同。其他使用不同包管理器的发行版,如RPM(Fedora)和Yum(SuSE),将有不同的要求。

使用rbenv或rvm是必要的,因为系统Ruby包通常已经过时了。

一旦安装了环境管理器、Ruby和Ruby_build,就可以安装所需的RubyGems。

Ruby

一旦平台设置好,可以通过geminstall命令直接安装以下ruby gem:

gem install rake asciidoctor coderay json-schema

# Required only for pdf builds

MATHEMATICAL_SKIP_STRDUP=1 gem install asciidoctor-mathematical

gem install --pre asciidoctor-pdf

gem install --pre asciidoctor-diagram

为了确保安装了最新版本的gem,请定期执行

gem update

脚本

使用%python-config/check-mising-apis.py根据adoc文件检查头文件中是否缺少函数。使用%python-config/check-mising-apis.py-v获取更多详细信息。

 

参考文献链接

https://github.com/KhronosGroup/OpenVX-api-docs

 

posted @ 2024-06-02 04:42  吴建明wujianming  阅读(25)  评论(0编辑  收藏  举报