Files
static-php-cli/assets/zh_develop_package-model.md.DDw9ZCCd.js

171 lines
46 KiB
JavaScript
Raw Normal View History

import{G as e,K as t,at as n,j as r}from"./chunks/framework.DrNIf5Lg.js";var i=JSON.parse(`{"title":"Package 模型","description":"","frontmatter":{},"headers":[],"relativePath":"zh/develop/package-model.md","filePath":"zh/develop/package-model.md"}`),a={name:`zh/develop/package-model.md`};function o(r,i,a,o,s,c){return n(),e(`div`,null,[...i[0]||=[t(`<h1 id="package-模型" tabindex="-1">Package 模型 <a class="header-anchor" href="#package-模型" aria-label="Permalink to “Package 模型”"></a></h1><h2 id="package-定义" tabindex="-1">Package 定义 <a class="header-anchor" href="#package-定义" aria-label="Permalink to “Package 定义”"></a></h2><p>Package 是 StaticPHP 构建系统中的核心概念,代表一个可构建/可安装的单元,如 PHP 扩展、库、构建目标等。</p><p>每个 Package 包含构建信息、依赖关系、构建逻辑等,构成了 StaticPHP 的构建模型。Package 的定义主要通过 YAML/JSON 配置文件来实现。<code>core</code> Registry 的 Package 配置位于 <code>config/pkg/</code> 目录下,可选 recipe class 位于 <code>src/Package/</code> 对应的子目录中。</p><p>Package 分为五种类型:</p><ul><li><strong>php-extension</strong>PHP 扩展包,包含 PHP 扩展的构建信息和构建逻辑。</li><li><strong>library</strong>:依赖库 Package通常安装到 <code>buildroot/</code>,供其他 Package 编译和链接。</li><li><strong>target</strong>:构建目标包,代表最终的构建产物,如 PHP 二进制、curl 二进制等,继承自 <code>library</code> 包类型。</li><li><strong>virtual-target</strong>:虚构建目标包,代表一个抽象的构建目标,不直接对应构建产物,主要用于依赖管理和构建调度。</li><li><strong>tool</strong>:宿主机侧构建工具 Package单独安装在 <code>pkgroot/</code> 下,不作为链接期库依赖处理。</li></ul><div class="language-yaml"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">pkg-name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">pkg-type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> ...</span></span></code></pre></div><h2 id="artifact-" tabindex="-1">Artifact <a class="header-anchor" href="#artifact-" aria-label="Permalink to Artifact "></a></h2><p>Artifact Package Artifact URL Package <code>artifact</code> Artifact</p><p> Package Artifact Package Artifact Package Artifact <code>config/artifact/</code> / <code>src/Package/Artifact/</code> PHP Package Artifact </p><p> <code>example-library-package</code> <code>https://example.com/example-library.tar.gz</code> Package Artifact </p><div class="language-yaml"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;">example-library-package</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">library</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> artifact</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> source</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">url</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> url</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;https://example.com/example-library.tar.gz&#39;</span></span></code></pre></div><p> Artifact <a href="./artifact-model.html">Artifact </a> </p><h2 id="php-extension-" tabindex="-1">php-extension <a class="header-anchor" href="#php-extension-" aria-label="Permalink to php-extension "></a></h2><p>php-extension Package PHP <code>config/pkg/ext/</code> recipe class <code>src/Package/Extension/</code> <code>#[Extension]</code> callback context <code>PhpExtensionPackage</code> core recipe <code>PhpExtensionPackage</code></p><div class="language-yaml"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;">ext-lz4</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">php-extension</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> artifact</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> source</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">git</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> url</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;https://github.com/kjdev/php-ext-lz4.git&#39;</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> rev</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">master</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> extract</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">php-src/ext/lz4</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> metadata</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> license-files</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LICENSE</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> license</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">MIT</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> depends</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">liblz4</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> php-extension</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> arg-type@unix</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;--enable-lz4@shared_suffix@ --with-lz4-includedir=@build_root_path@&#39;</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> arg-type@windows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;--enable-lz4&#39;</span></span></code></pre></div><p><code>php-extension</code> </p><div class="language-yaml"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;">ext-{ext-name}</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># ext- </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">php-extension</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 通用字段 </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> description</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;...&#39;</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> lang</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">c</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # c / c++ </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> frameworks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [] </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># macOS</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> artifact</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;{artifact-name}&#39;</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # Artifact </span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 对象时为内联 Artifact内置扩展无需此字段</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # depends / suggests / tools 支持 @windows / @unix / @linux / @macos 后缀</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> depends</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [] </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># PHP ext- </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> depends@unix</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [] </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># Unix </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> depends@windows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [] </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># Windows </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> suggests</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [] </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># depends</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> suggests@unix</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: []</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> tools</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [] </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># 宿</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> tools@windows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [] </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># </span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # php-extension 专属字段嵌套在 php-extension: 对象中</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> php-extension</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # arg-type 决定传递给 ./configure 的参数形式支持平台后缀</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 支持的平台后缀@unixLinux + macOS@linux@macos@windows</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 优先级 Linux 为例arg-type@linux &gt; arg-type@unix &gt; arg-type无后缀</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 内置关键字</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # enable --enable-{extname}默认值未配置时使用</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # enable-path --enable-{extname}={buildroot}</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # with --with-{extname}</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # with-path --with-{extname}={buildroot}</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # custom/none 不传递任何参数 PHP 类的 #[CustomPhpConfigureArg] 方法处理</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 也可直接写完整参数字符串支持以下占位符</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # @build_root_path@ BUILD_ROOT_PATHbuildroot 绝对路径</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # @shared_suffix@ 共享构建时展开为 =shared静态构建时为空</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # @shared_path_suffix@ 共享构建时展开为 =shared,{buildroot}静态构建时为 ={buildroot}</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> arg-type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">enable</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> arg-type@unix</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;--enable-my-extension@shared_suffix@&#39;</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> arg-type@windows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">with-path</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> zend-extension</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # true Zend opcachexdebug</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> build-shared</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # .so true</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> build-static</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # PHP true</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> build-with-php</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # true PHP 使</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # display-name 影响 smoke test php --ri 的参数及许可证导出显示名称</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 不填时默认使用扩展名ext- 后缀部分填空字符串则跳过 --ri 检查</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> display-name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;My Extension&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # os 限制该扩展仅在指定平台上可用不在列表内的平台会拒绝构建</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 可选值LinuxDarwinWindows</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> os</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Linux</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Darwin</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span></code></pre></div><h2 id="library-" tabindex="-1">library <a class="header-anchor" href="#library-" aria-label="Permalink to library "></a></h2><p>library Package opensslzlib <code>config/pkg/lib/</code> recipe class <code>src/Package/Library/</code> <code>#[Library]</code> callback context <code>LibraryPackage</code></p><p> openssl </p><div class="language-yaml"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;">openssl</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">library</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> artifact</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> source</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ghrel</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> repo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">openssl/openssl</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> match</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">openssl.+\\.tar\\.gz</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> prefer-stable</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> binary</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">hosted</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> metadata</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> license-files</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LICENSE.txt</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> license</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">OpenSSL</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> depends</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">zlib</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> depends@windows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">zlib</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">jom</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> headers</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">openssl</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> static-libs@unix</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">libssl.a</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">libcrypto.a</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> static-libs@windows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">libssl.lib</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">libcrypto.lib</span></span></code></pre></div><p><code>library</code> </p><div class="language-yaml"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">lib-name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">library</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # library targettarget library </span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 通用字段 </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> description</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;...&#39;</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> license</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">file</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # type file text</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> path</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LICENSE</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> lang</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">c</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # c / c++ </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> frameworks</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [] </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># </span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> artifact</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;{artifact-name}&#39;</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # Artifact Artifact</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # depends / suggests / tools 支持 @windows / @unix / @linux / @macos 后缀</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> depends</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [] </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># ext- PHP </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> depends@unix</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: []</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> depends@windows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: []</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> suggests</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [] </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># depends</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> tools</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [] </span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"># ToolPackage </span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> tools@windows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: []</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # library / target 专属字段 </span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 以下字段用于构建完成后验证产物是否已正确安装headersstatic-libsstatic-bins</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 支持 @unix / @windows / @linux / @macos 后缀</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 验证 buildroot/include/ 下是否存在指定头文件或目录</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 相对路径基于 buildroot/include/绝对路径直接使用</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> headers</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">openssl</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # buildroot/include/openssl/</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">zlib.h</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # buildroot/include/zlib.h</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> headers@unix</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ffi.h</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 验证 buildroot/lib/ 下是否存在指定静态库文件</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 相对路径基于 buildroot/lib/绝对路径直接使用</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> static-libs@unix</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">libssl.a</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> static-libs@windows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">libssl.lib</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 验证 buildroot/lib/pkgconfig/ 下是否存在指定 .pc 文件</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 仅在非 Windows 平台检查pkg-config Windows 上不适用</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> pkg-configs</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">openssl</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # buildroot/lib/pkgconfig/openssl.pc</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">libssl</span><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # .pc </span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 验证 buildroot/bin/ 下是否存在指定可执行文件</span></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 相对路径基于 buildroot/bin/绝对路径直接使用</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> static-bins</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">my-tool</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 包安装完成后注入到全局 PATH 的目录列表支持路径占位符见下方说明</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> path</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;{pkg_root_path}/rust/bin&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 包安装完成后设置的环境变量覆盖已有值支持路径占位符</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> env</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> MY_VAR</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;{build_root_path}/lib&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#62687b;--shiki-dark:#818e99;"> # 包安装完成后追加到已有环境变量末尾的值支持路径占位符</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> append-env</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> CFLAGS</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39; -I{build_root_path}/include&#39;</span></span></code></pre></div><p><code>path</code><code>env</code><code>append-env</code> </p><table tabindex="0"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><code>{build_root_path}</code></td><td>buildroot <code>buildroot/</code></td></tr><tr><td><code>{pkg_root_path}</code></td><td>pkgroot <code>pkgroot/</code></td></tr><tr><td><code>{working_dir}</code></td><td></td></tr><tr><td><code>{download_path}</code></td><td><code>downloads/</code></td></tr><tr><td><code>{source_path}</code></td><td><code>source/</code></td></tr><tr><td><code>{spc_msys2_path}</code></td><td>MSYS2 <code>msys64/</code> Windows</td></tr></tbody></table><h2 id="tool-" tabindex="-1">tool <a class="header-anchor" href="#tool-" aria-label="Permalink to tool "></a></h2><p><code>tool</code> Package Package target Tool Package 使 <code>pkgroot/</code> <code>bin/</code> Package <code>tools</code> <code>depends</code><code>suggests</code> </p><div class="language-yaml"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;">nasm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">tool</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> artifact</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> binary</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> windows-x86_64</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">url</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> url</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;https://example.com/nasm-win64.zip&#39;</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> extract</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> nasm.exe</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;{pkg_root_path}/bin/nasm.exe&#39;</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> ndisasm.exe</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;{pkg_root_path}/bin/ndisasm.exe&#39;</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> tool</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> provides</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">nasm.exe</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ndisasm.exe</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> binary-subdir</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">bin</span></span>
<span class="line"><span style="--shiki-light:#11782a;--shiki-dark:#85E89D;"> min-version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;2.16&#39;</span></span></code></pre></div><p> <code>tool</code> </p><table tabindex="0"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><code>provides</code></td><td></td><td></td></tr><tr><td><code>binary-subdir</code></td><td></td><td><code>install-root</code> </td></tr><tr><td><code>install-root</code></td><td></td><td> <code>PKG_ROOT_PATH</code></td></tr><tr><td><code>min-version</code></td><td></td><td> <code>ToolPackage</code> installer </td></tr></tbody></table><p><code>tool</code> 使 <code>@windows</code><code>@unix</code><code>@linux</code> <code>@macos</code> <code>provides@windows</code> <code>.exe</code> <code>provides@unix</code> Unix </p><h2 id="target-" tabindex="-1">target <a class="header-anchor" href="#target-" aria-label="Permalink to target "></a></h2><p><code>target</code> Package <code>library</code> <code>library</code> <code>config/pkg/target/</code> recipe class <code>src/Package/Target/</code> <code>#[Target]</code> <code>TargetPackage</code> <code>TargetPackage</code> </p><p> <code>library</code> <code>target</code> <code>spc build:{target-name}</code></p><h2 id="virtual-target-" tabindex="-1">virtual-target <a class="header-anchor" href="#virtual-target-" aria-label="Permalink to virtual-target "></a></h2><p> <code>target</code> <code>virtual-target</code> <code>artifact</code> <code>target</code> 使 recipe class <code>#[Target]</code> <code>artifact</code> <code>virtual-target</code> </p><ul><li></li><li> <code>target</code> </li></ul><p> <code>php-cli</code> <code>php-fpm</code> Artifact <code>php-src</code> <code>php</code> target CLI FPM </p>`,39)]])}var s=r(a,[[`render`,o]]);export{i as __pageData,s as default};