Blender 第三方许可证全景解读:从依赖合规清单到 `make license` 自动化生成机制

  • 图形学
  • 3D渲染
  • 桌面应用
  • 音视频

【免费下载链接】blender

Official mirror of Blender

项目地址: https://gitcode.com/gh_mirrors/bl/blender
点击查看 免费下载

本文以 release/license/license.md 为核心,系统解读 Blender 的第三方依赖合规体系:涵盖 Blender 自身的 GPL-3.0-or-later 许可、随附字体栈、22 类许可证下数十个第三方库的版本与版权清单,并深入剖析该清单由 tools/utils_maintenance/make_license.py 驱动的自动化生成流程。读完本文,你将掌握 Blender 许可证清单的完整数据结构、每类许可证的合规要点,以及如何在更新依赖后通过一条 make license 命令重新生成并校验这份合规文档。

一、这份文档是什么:Blender 的第三方合规总账

release/license/license.md 是 Blender 官方发布的 Third-Party Licenses 汇总文件,其作用是回答一个发行版必须回答的问题:Blender 本体是什么许可?它携带的字体、渲染库、编解码器、物理引擎、GPU 驱动组件各自又是什么许可?

文档开篇即明确了基本事实:

While Blender itself is released under GPU-GPL 3.0 or later,© 2011-2026 Blender Foundation,it contains dependencies which have different licenses.

即:Blender 本体以 GPL-3.0-or-later 发布,但其内含的依赖组件适用各不相同甚至相互冲突的许可证,因此必须以结构化清单逐一声明。整份文档由三大部分构成:

  1. Blender 自身许可全文(GPL v3 完整条文,以 <details> 折叠块收纳);
  2. 随附字体栈清单(Inter、Noto、Last Resort、DejaVu Sans Mono,以及 Arev / Bitstream Vera / SIL OFL 三份字体许可证全文);
  3. 22 类许可证分类下的依赖库总表(每类含"库名 / 版本 / 版权声明"三列表格,随后附带该许可证全文的 <details> 折叠块)。

此外,文档头部注释明确声明:本文件由 make license 自动生成,手工编辑会被后续生成覆盖,任何更新都应通过修改数据源完成。这正是 Blender 合规治理的核心思想——"清单是生成的,数据源才是事实"。

二、Blender 自身许可:GPL-3.0-or-later

文档的第一块内容即是完整的 GNU General Public License v3.0(2007 年 6 月 29 日版本)条文。其核心要点包括:

  • 自由软件定义:GPL 保障的是"自由"而非"价格"——你可以免费或收费分发副本,但必须向接收者传递同等的自由:提供源代码、允许修改、展示许可条款。
  • Copyleft 机制:任何基于程序的修改作品,必须整体以本许可证向所有第三方授权(Section 5),不得附加进一步限制(Section 10)。
  • 专利授权:每个贡献者对其"essential patent claims"授予全球、非独占、免版税的专利许可(Section 11)。
  • 无担保与责任限制:程序按"AS IS"提供,不承担任何明示或暗示担保,仅在适用法律要求时承担责任(Section 15/16)。
  • 与 AGPL 的组合:允许将本许可作品与 AGPL v3 作品链接或组合为单一作品(Section 13)。

许可证全文同时存放于仓库的 release/license/spdx/GPL-3.0-or-later.txt,license.md 中的折叠块即由此文件内容渲染而来。

三、随附字体栈:四款字体、三种许可证、一个回退体系

Blender 随安装包分发多款字体以支持不同语言与场景,它们以"字体栈"(font stack)的形式协同工作——当某一字体缺少字形时回退到下一款:

FontLicenseCopyright
InterSIL Open Font License 1.1Copyright 2020 The Inter Project Authors
Noto FontsSIL Open Font License 1.1Copyright 2018 The Noto Project Authors
Last ResortSIL Open Font License 1.1Copyright © 1998-2024 Unicode, Inc. Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the United States and other countries.
DejaVu Sans MonoArev Fonts License + Bitstream Vera Font License2003 Bitstream, Inc. (Bitstream font glyphs). 2006 Tavmjong Bah (Arev font glyphs). DejaVu changes are in public domain

关键合规要点:

  • SIL Open Font License 1.1:允许字体被使用、研究、修改和自由再分发,只要字体本身不被单独出售;衍生作品必须保留保留字体名(Reserved Font Name)的使用限制,且修改版不得使用版权持有者或作者的名义进行推广。OFL 全文见 release/license/spdx/OFL-1.1.txt。
  • Arev Fonts License:以 Bitstream Vera 字体为基底修改而来,要求修改后的字体改名(不得包含 "Tavmjong Bah" 或 "Arev" 字样),字体字形不得单独出售。全文见 release/license/others/Arev-Fonts.txt。
  • Bitstream Vera Font License:同样要求修改版改名(不得含 "Bitstream" 或 "Vera"),全文见 release/license/spdx/Bitstream-Vera.txt。
  • 注意 DejaVu Sans Mono 是双许可叠加:Bitstream 字形(2003)+ Arev 字形(2006),DejaVu 自身的改动落入公共领域。

四、许可证分类总表:22 类许可证下的依赖库

文档按许可证类型将全部第三方库分门别类。以下按文档顺序完整列出各类清单(Version 与 Copyright 均以当前仓库文档为准)。

1. Apache License 2.0

Apache 2.0 授予永久、全球、非独占、免版税的版权与专利许可,核心义务包括随分发提供许可证副本、标记修改文件、保留来源声明(Section 4)。下表库中带 ¹ 上标者适用 LLVM Exception,即编译期嵌入目标文件时可豁免 Section 4(a)/(b)/(d) 的部分义务。

LibraryVersionCopyright
Abseil20250814.1Copyright 2023 The Abseil Authors.
Audaspace1.6.0 (cb49Copyright © 2009-2025 Jörg Müller. All rights reserved.
Cuda Wranglercbf465bCopyright 2011-2014 Blender Foundation
Cython3.0.11Copyright Contributors to the Cython Project
DPC++v6.3.0Copyright (C) 2021-2026 Intel Corporation
Draco1.5.7Copyright 2022 The Draco Authors.
Embree4.4.1Copyright 2009-2024 Intel Corporation
HIP Extension Wrangler Library (HIPEW)N/ACopyright 2011-2023 Blender Foundation
Icdloaderddf6c70230aCopyright (c) 2020 The Khronos Group Inc.
Igc Llvm ¹llvmorg-16.Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign. All rights reserved.
Igc Opencl Clang ¹v16.0.10Copyright (c) Intel Corporation (2009-2017).
LLVM ¹20.1.8Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign. All rights reserved.
Manifoldv3.5.2Copyright 2021-2026 The Manifold Authors.
Mantaflow0.13Copyright 2011 Tobias Pfaff, Nils Thuerey
MaterialX1.39.4Copyright Contributors to the MaterialX Project
oneTBBv2022.3.0Copyright (c) 2005-2020 Intel Corporation
Open PGLv0.7.1Copyright 2020 Intel Corporation.
OpenCL-Headers6eabe90aa7bCopyright (c) 2023 The Khronos Group Inc.
OpenImageDenoise2.5.0Copyright 2018-2026 Intel Corporation
OpenImageIOv3.1.13.1Copyright Contributors to the OpenImageIO project.
OpenSSL3.5.6Copyright (c) 1998-2026 The OpenSSL Project Authors. Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson; All rights reserved.
OpenXR1.1.53Copyright (c) 2017-2025 The Khronos Group Inc. Copyright (c) 2017-2019 Valve Corporation. Copyright (c) 2017-2019 LunarG, Inc. Copyright (c) 2019 Collabora, Ltd.
Parallel Hashmap8a889d3699bCopyright (c) 2019, Gregory Popovitch - greg7mdp@gmail.com
Pthreads3.0.0Copyright 1998 John E. Bossom; Copyright 1999-2018, Pthreads4w contributors
RangeTree40ebed8aa20Copyright (c) 2016, Campbell Barton
ShaderCv2025.4Copyright 2015 The Shaderc Authors. All rights reserved.
Shaderc Glslangd213562e355Copyright 2020 The Khronos Group Inc. Copyright (C) 2015-2018 Google, Inc.
SPIR-V Headers1.4.341Copyright (c) 2015-2014 The Khronos Group Inc.
SPIR-V Tools28a883ba4c6Copyright (c) 2015-2016 The Khronos Group Inc.
SPIR-V Toolsv2026.1Copyright (c) 2015-2016 The Khronos Group Inc.
SPIRV-Reflect1.4.341Copyright 2017-2018 Google Inc.
Unified Memory Framework ¹v1.0.0-rc2Copyright (C) 2023-2024 Intel Corporation
Vulkan Utility Libraries1.4.341Copyright 2015-2025 The Khronos Group Inc.
Vulkan-Headers1.4.341Copyright 2015-2023 The Khronos Group Inc.
Vulkan-Loader1.4.341Copyright (c) 2019 The Khronos Group Inc. Copyright (c) 2019 Valve Corporation. Copyright (c) 2019 LunarG, Inc. Copyright (c) 2019 Google Inc.

Apache 2.0 全文见 release/license/spdx/Apache-2.0.txt。

2. BSD 2-Clause "Simplified" License

LibraryVersionCopyright
Aom3.13.1Copyright (c) 2016, Alliance for Open Media. All rights reserved.
OpenJPEG2.5.3Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium. Copyright (c) 2002-2014, Professor Benoit Macq. Copyright (c) 2003-2014, Antonin Descampe. Copyright (c) 2003-2009, Francois-Olivier Devaux. Copyright (c) 2005, Herve Drolon, FreeImage Team. Copyright (c) 2002-2003, Yannick Verschueren. Copyright (c) 2001-2003, David Janssens. Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France. Copyright (c) 2012, CS Systemes d'Information, France.
OpenJPH0.25.2Copyright (c) 2019, Aous Naman; Copyright (c) 2019, Kakadu Software Pty Ltd, Australia; Copyright (c) 2019, The University of New South Wales, Australia
Pybind113.0.1Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>, All rights reserved.
xxHash Libraryv0.8.2 (202Copyright (c) 2012-2021 Yann Collet

3. BSD 3-Clause "New" or "Revised" License

LibraryVersionCopyright
Alembic1.8.3TM & © 2009-2015 Lucasfilm Entertainment Company Ltd. or Lucasfilm Ltd. All rights reserved. ... © 2009-2015 Sony Pictures Imageworks Inc. All rights reserved.
Blosc1.21.1Copyright (C) 2009-2018 Francesc Alted. Copyright (C) 2019-present Blosc Development team. Copyright (C) 2006 by Rob Landley.
Ceres0c70ed3a1a2Copyright 2023 Google Inc. All rights reserved.
Curve-Fit-nD5d75a7adbc2Copyright (c) 2016, DWANGO Co., Ltd.; Copyright (c) 2016, Campbell Barton; All rights reserved.
FreeSpacenav1.1Copyright (C) 2007-2022 John Tsiombikas nuclear@member.fsf.org
Google Flags2.2.1 (46f7Copyright (c) 1999, Google Inc. All rights reserved.
Google Logging0.4.0, 96a2Copyright (c) 2006, Google Inc. All rights reserved.
GoogleTest (GoogleMock)1.15.2 (b51Copyright 2007, Google Inc. All rights reserved.
GoogleTest (GoogleTest)1.15.2 (b51Copyright 2007, Google Inc. All rights reserved.
Imath3.2.2Copyright Contributors to the OpenEXR Project. All rights reserved.
libjpeg-turbo2.1.3Copyright (C)2009-2020 D. R. Commander. All Rights Reserved. Copyright (C)2015 Viktor Szathmáry. All Rights Reserved.
NanoBindv2.1.02023, Wenzel Jakob
Numpy2.3.4Copyright (c) 2005-2022, NumPy Developers. All rights reserved.
Ogg1.3.5COPYRIGHT (C) 1994-2019 by the Xiph.Org Foundation
Open Shading Language1.15.3.0Copyright (c) 2009-present Contributors to the Open Shading Language project.
OpenColorIO2.5.0Copyright Contributors to the OpenColorIO Project.
Openexr3.4.10Copyright Contributors to the OpenEXR Project. All rights reserved.
OpenGL Extension Wrangler Library2.0.0Copyright (C) 2008-2015, Nigel Stewart; Copyright (C) 2002-2008, Milan Ikits; Copyright (C) 2002-2008, Marcelo E. Magallon; Copyright (C) 2002, Lev Povalahev; All rights reserved.
Opus1.3.1Copyright 2001-2023 Xiph.Org, Skype Limited, Octasic, Jean-Marc Valin, Timothy B. Terriberry, CSIRO, Gregory Maxwell, Mark Borgerding, Erik de Castro Lopo, Mozilla, Amazon
Pystringv1.1.3Copyright (c) 2008-2010, Sony Pictures Imageworks Inc; All rights reserved.
Theora1.1.1Copyright (C) 2002-2009 Xiph.org Foundation
Tracya64b9a20294Copyright (c) 2017-2026, Bartosz Taudul <wolf@nereid.pl>
Tracy Frame Profilercb84ba76ffdCopyright (c) 2017-2025, Bartosz Taudul <wolf@nereid.pl>
Vorbis1.3.7Copyright (c) 2002-2020 Xiph.org Foundation
Vpx1.15.2Copyright (c) 2010, The WebM Project authors. All rights reserved.
Webp1.6.0Copyright (c) 2010, Google Inc. All rights reserved.
Zstandard0.25.0Copyright (c) 2016, Gregory Szorc. All rights reserved.
Zstd1.5.7Copyright (c) 2016-present, Facebook, Inc. All rights reserved.

4. BSD Zero Clause License(0BSD)

LibraryVersionCopyright
XZ (LZMA)5.2.5Copyright (C) The XZ Utils authors and contributors

5. bzip2 and libbzip2 License v1.0.6

LibraryVersionCopyright
Bzip21.0.8Copyright (C) 1996-2019 Julian R Seward. All rights reserved.

6. Freetype Project License(FTL)

LibraryVersionCopyright
FreeType2.13.3Copyright 1996-2002, 2006 by David Turner, Robert Wilhelm, and Werner Lemberg

FTL 的关键特征:以 "as is" 方式分发、可免版税用于任何目的(含商业产品)、但必须在使用 FreeType 代码的产品文档中致谢,且不得谎称自己编写了该软件。

7. GNU General Public License v2.0 or later

LibraryVersionCopyright
FFTW3.3.10Copyright (c) 2003, 2007-14 Matteo Frigo. Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
Flac1.4.2Copyright (C) 2001-2009 Josh Coalson. Copyright (C) 2011-2016 Xiph.Org Foundation.
GMP6.3.0Copyright 1996-2020 Free Software Foundation, Inc.
Potrace1.16Copyright © 2001-2019 Peter Selinger.
Rubber Band Library4.0.0Copyright (c) 2025 Particular Programs Ltd
X Drag and Drop2000-08-08Copyright (C) 1996-2000 Paul Sheer
X26435fe20d1ba4Copyright (C) 2003-2021 x264 project
X2654.1Copyright (C) 2013-2020 MulticoreWare, Inc

8. GNU Lesser General Public License v2.1 or later

LibraryVersionCopyright
FFmpeg8.1Copyright (c) 2000-2017 the FFMPEG developers
Fribidiv1.0.12Copyright (c) 2004-2012 Behdad Esfahbod, Dov Grobgeld, Roozbeh Pournader
LAME3.100Copyrights (c) 1999-2011 by The LAME Project. Copyrights (c) 1999,2000,2001 by Mark Taylor. Copyrights (c) 1998 by Michael Cheng. Copyrights (c) 1995,1996,1997 by Michael Hipp: mpglib.
libsndfile1.2.2Copyright (C) 2011-2016 Erik de Castro Lopo
OpenAL1.23.1Copyright (c) 2015, Archontis Politis. Copyright (c) 2019, Christopher Robinson.

9. GNU Lesser General Public License v3.0 or later

LibraryVersionCopyright
Libheif1.20.2Copyright (c) 2017-2020 Struktur AG; Copyright (c) 2017-2025 Dirk Farin

10. libpng 2.0 License

LibraryVersionCopyright
libpng1.6.58Copyright (c) 1995-2026 The PNG Reference Library Authors. Copyright (c) 2018-2026 Cosmin Truta. Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. Copyright (c) 1996-1997 Andreas Dilger. Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.

11. libtiff License

LibraryVersionCopyright
LibTIFF4.7.1Copyright © 1988-1997 Sam Leffler. Copyright © 1991-1997 Silicon Graphics, Inc.

12. MIT

LibraryVersionCopyright
Brotli1.0.9Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
Deflate1.18Copyright 2016 Eric Biggers
Emhash3ba9abdfdc2Copyright (c) 2019 hyb
Epoxy1.5.10Copyright © 2013-2014 Intel Corporation. Copyright © 2013 The Khronos Group Inc.
Expat2_7_5Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. Copyright (c) 2001-2025 Expat maintainers.
fast_float5.0.0 (f5a3Copyright 2023 The Wuffs Authors; Copyright (c) 2021 The fast_float authors
Fmt12.1.0Copyright (c) 2012 - present, Victor Zverovich and {fmt} contributors
Hiprt606b4886efaCopyright (C) 2024 Advanced Micro Devices, Inc. All Rights Reserved.
IGC2.30.1Copyright (C) 2019-2026 Intel Corporation
Intel(R) Graphics Memory Management Libraryintel-gmmliCopyright (c) 2017 Intel Corporation. Copyright (c) 2016 Gabi Melman. Copyright 2008, Google Inc. All rights reserved.
JSON3.11.3Copyright (c) 2013-2021 Niels Lohmann
libffi3.5.2Copyright (c) 1996-2025 Anthony Green, Red Hat, Inc and others.
libxml22.14.6Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.
Meshoptimizer1.1Copyright (c) 2016-2026 Arseny Kapoulkine
Ocloc25.31.34666Copyright (C) 2018-2023 Intel Corporation
oneAPI Level Zero35c037cdf4aCopyright (C) 2019-2024 Intel Corporation
Pugixml1.10Copyright (c) 2006-2020 Arseny Kapoulkine
QuadriFlow27a6867Copyright (c) 2018 Jingwei Huang, Yichao Zhou, Matthias Niessner, Jonathan Shewchuk and Leonidas Guibas. All rights reserved.
RenderDocd47e79ae079Copyright (c) 2015-2024 Baldur Karlsson; Copyright (c) 2014 Crytek
Robinmapv1.3.0Copyright (c) 2017 Thibaut Goetghebuer-Planchon
sse2neon227cc413fb2Copyright sse2neon contributors
Thorvgv1.0.3Copyright (c) 2020 - 2026 ThorVG Project
TinyGLTF2.8.21, 4bfCopyright (c) 2017 Syoyo Fujita, Aurélien Chatelain and many contributors
ufbx - Single source file FBX loaderv0.20.0 (a6Copyright (c) 2020 Samuli Raivio
VC Intrinsics0.25.0Copyright (C) 2020-2021 Intel Corporation
Vcintrinsics60cea7590bdCopyright (c) 2019-2024 Intel Corporation
volk3ca312a4f38Copyright (c) 2018-2026 Arseny Kapoulkine
Vulkan Memory Allocator1d8f600Copyright (c) 2017-2025 Advanced Micro Devices, Inc. All rights reserved.
Vulkan-Memory-Allocator3.2.1Copyright (c) 2017-2025 Advanced Micro Devices, Inc. All rights reserved.
Wayland1.24.0Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. Copyright © 2011 Kristian Høgsberg. Copyright © 2011 Benjamin Franzke. Copyright © 2010-2012 Intel Corporation. Copyright © 2012 Collabora, Ltd. Copyright © 2015 Giulio Camuffo. Copyright © 2016 Klarälvdalens Datakonsult AB, a KDAB Group company. Copyright © 2012 Jason Ekstrand. Copyright (c) 2014 Red Hat, Inc. Copyright © 2013 Marek Chalupa. Copyright © 2014 Jonas Ådahl. Copyright © 2016 Yong Bakos. Copyright © 2017 Samsung Electronics Co., Ltd. Copyright © 2002 Keith Packard. Copyright 1999 SuSE, Inc. Copyright © 2012 Philipp Brüschweiler. Copyright (c) 2020 Simon Ser. Copyright (c) 2006, 2008 Junio C Hamano.
Wayland Weston14.0.2Copyright © 2008-2012 Kristian Høgsberg. Copyright © 2010-2012 Intel Corporation. Copyright © 2010-2011 Benjamin Franzke. Copyright © 2011-2012 Collabora, Ltd. Copyright © 2010 Red Hat.
Wayland-Protocols1.44Copyright © 2008-2013 Kristian Høgsberg. Copyright © 2010-2013 Intel Corporation. Copyright © 2013 Rafael Antognolli. Copyright © 2013 Jasper St. Pierre. Copyright © 2014 Jonas Ådahl. Copyright © 2014 Jason Ekstrand. Copyright © 2014-2015 Collabora, Ltd. Copyright © 2015 Red Hat Inc.
Yamlcpp0.8.0Copyright (c) 2008-2015 Jesse Beder

13. MIT Khronos - old variant

LibraryVersionCopyright
Dpcpp Spirv Headersc9aad99f927Copyright (c) 2015-2024 The Khronos Group Inc.
SPIR-V Headers9268f305735Copyright (c) 2015-2024 The Khronos Group Inc.

14. Mozilla Public License 2.0

LibraryVersionCopyright
Eigen8a1083e9bf4Copyright (C) 2008-2010 Gael Guennebaud. Copyright (C) 2006-2008 Benoit Jacob
OpenVDB13.0.0Copyright Contributors to the OpenVDB Project

MPL 2.0 是文件级(file-level)copyleft 许可:以源代码形式分发必须保持 MPL,但允许与次级许可(如 GPL/LGPL/AGPL)组合为 Larger Work(Section 3.3)。全文见 release/license/spdx/MPL-2.0.txt。

15. Public Domain(公共领域)

Public domain projects have no specific license or requirements in regards to copyright enforcement.

LibraryVersion
AutoPackageUnknown
Sqlite3.51.3
WintabUnknown

这是清单中唯一不要求版权声明的类别——对应生成脚本中的 copyright_exemption 机制(见下文源码分析)。

16. Python License 2.0

LibraryVersionCopyright
Python3.13.13Copyright © 2001 Python Software Foundation. All rights reserved. Copyright © 2000 BeOpen.com. All rights reserved. Copyright © 1995-2000 Corporation for National Research Initiatives. All rights reserved. Copyright © 1991-1995 Stichting Mathematisch Centrum. All rights reserved.

17. Tomorrow Open Source Technology License 1.0(TOST-1.0)

LibraryVersionCopyright
OpenSubdivv3_7_0OpenSubdiv Copyright 2013 Pixar All rights reserved. This product includes software developed at: Pixar, Dreamworks Animation, Autodesk, Inc., Google, Inc., DigitalFish.
USD26.03Universal Scene Description Copyright 2016 Pixar All rights reserved. This product includes software developed at: Pixar.

TOST-1.0 与 Apache 2.0 的差异仅在 Section 6(商标条款)上:TOST 明确不授予使用许可方及其关联方商标的权利,仅允许在符合 Section 4(c)(保留商标声明)的范围内使用。全文见 release/license/others/TOST-1.0.txt。

18. University of Illinois/NCSA Open Source License

LibraryVersionCopyright
LLVM/SPIR-V Bi-Directional Translatorv16.0.10Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: LLVM Team University of Illinois at Urbana-Champaign

19. WC Width License

LibraryVersionCopyright
WC Width2007-05-26Markus Kuhn -- 2007-05-26 (Unicode 5.0)

20. Zlib License

LibraryVersionCopyright
Bullet Continuous Collision Detection and Physics Library3.07Copyright (c) 2003-2006 Erwin Coumans
Haru2.4.5Copyright (C) 1999-2006 Takeshi Kanno. Copyright (C) 2007-2009 Antony Dovgal.
minizip-ng4.0.10Copyright (C) Nathan Moinvaziri. Copyright (C) 1998-2010 Gilles Vollant.
NanoSVG-Copyright (c) 2013-14 Mikko Mononen memon@inside.org
SDL3.4.2Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
Zlib1.3.1Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler

五、例外条款与豁免机制:上标与版权豁免

清单中存在两类"元机制",它们揭示了这份文档如何表达复杂的许可叠加关系:

  1. 许可例外(exception)上标:如 Apache 2.0 表中 LLVM、Igc Llvm、Igc Opencl Clang、Unified Memory Framework 名称后的 ¹,指向 release/license/others/LLVM-exception.txt。LLVM Exception 允许:当你编译自己的源代码并将其嵌入目标文件时,可豁免 Apache 2.0 Section 4(a)/(b)/(d) 的条件;若与 GPLv2 软件组合且法院认定 Apache 的专利(Section 3)、赔偿(Section 9)等条款与 GPLv2 冲突,可整体放弃这些条款。生成脚本用 Unicode 上标(¹、²…)自动编号并在文档末尾追加对应例外全文。

  2. 版权豁免(copyright exemption):Public Domain 类不要求版权声明,因此其表格只有 | Library | Version | 两列——脚本对声明了 copyright_exemption 的许可证跳过版权列输出。

六、make license:许可证清单的自动化生成机制

license.md 头部注释给出了完整的维护入口:修改数据源后运行 make license 并提交生成的 license.md。在仓库根目录 GNUmakefile 中,该目标被定义为调用 Python 脚本:

license: .FORCE
	@$(PYTHON) tools/utils_maintenance/make_license.py

从 tools/utils_maintenance/make_license.py 的源码结构看,生成流程由 main() → fetch_libraries_licenses() → generate_license_file() 三级构成,数据流如下:

6.1 三类数据源

数据源路径内容解析函数
许可证注册表release/license/licenses.json每个许可证的标识符、显示名、SPDX 链接 URL、copyright_exemption 标记initialize_licenses()
外部依赖版本表build_files/build_environment/cmake/versions.cmake每个依赖的 HOMEPAGE / LICENSE / COPYRIGHT / VERSION / HASHprocess_versions_cmake()
内部库 READMEextern/ 下各子目录的 README.blender内部维护库的 Project / URL / License / Upstream version / Copyrightprocess_readme_blender()

6.2 versions.cmake 解析:变量名约定即数据结构

process_versions_cmake() 通过正则解析 CMake 文件中的 set(...) 语句。以 build_files/build_environment/cmake/versions.cmake 中真实内容为例:

set(ZLIB_HOMEPAGE https://zlib.net)
set(ZLIB_LICENSE SPDX:Zlib)
set(ZLIB_COPYRIGHT "Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler")

脚本用 key.rpartition("_") 将 ZLIB_LICENSE 拆成库名前缀 ZLIB 与字段后缀 LICENSE,再按后缀映射到结构化字段(NAME/HOMEPAGE/VERSION/LICENSE/COPYRIGHT/HASH/DEPSBUILDTIMEONLY)。这解释了清单中所有条目版本号精确到 commit 哈希的原因——它们来自 versions.cmake 中的 *_HASH 变量。

两个重要的过滤规则(源码注释明确说明):

  • 无 HASH 的条目被丢弃:set() 中未提供 _HASH 的被视为"非真实库",不进入清单;
  • 仅构建期依赖被排除:标记了 DEPSBUILDTIMEONLY 的库不会出现在最终 Blender 二进制中,因此也不进入合规清单。

此外,许可证字符串支持 WITH 例外语法:get_license_exception() 用正则 ^(.*)\swith\s(.+)$ 将 SPDX:Apache-2.0 WITH LLVM-exception 拆分为主许可与例外。

6.3 README.blender 解析:内部库的合规声明

对 extern 下未纳入 versions.cmake 的内部维护库,合规信息记录在各自的 README.blender 中,脚本按 key: value 行解析。以 extern/rangetree/README.blender 为例:

Project: RangeTree
URL: https://github.com/ideasman42/rangetree-c
License: SPDX:Apache-2.0
Upstream version: 40ebed8aa209
Local modifications: None
Copyright: Copyright (c) 2016, Campbell Barton

这也解释了清单中 RangeTree 条目(Apache-2.0 / 40ebed8aa20 / Campbell Barton 版权)的来源。扫描 extern 目录时,缺少 README.blender 的子目录会产生警告。

6.4 输出生成:排序、折叠与校验

generate_license_file() 负责最终排版:

  • 许可证按名称排序,仅输出有库归属的类别,每类先写 ## 许可证名 标题,再写 | Library | Version | Copyright | 表格;
  • 库按名称排序,版本号截取前 11 个字符(version[:11]),这正是清单中版本号常带截断痕迹的原因;
  • 许可证全文从 release/license/spdx/ 与 release/license/others/ 目录读取,去除行尾空格后包进 <details><summary>...</summary>...</details> 折叠块,避免许可证原文的尾部空格干扰 Markdown 渲染;
  • 异常即失败:某许可证被库引用但找不到全文文件时,脚本打印 Error: Could not find license file for ... 并以 sys.exit(1) 终止——保证生成的清单永远自洽;
  • 缺失版权即警告:对要求版权声明的许可证,若某库未提供版权信息,打印 Warning: ... missing copyright notice;
  • 注册表外的许可证会被拦截:数据源中出现 licenses.json 未注册的许可标识时打印错误并跳过,防止静默遗漏。

七、合规维护实践:如何新增或更新一个依赖

结合文档与生成脚本,Blender 的合规维护流程可以总结为以下步骤(无需手工编辑 license.md):

  1. 新增外部依赖:在 build_files/build_environment/cmake/versions.cmake 中为库名添加 _HOMEPAGE、_LICENSE、_COPYRIGHT、_VERSION、_HASH 等 set() 变量;许可标识符必须是 release/license/licenses.json 中已注册的键(SPDX:* 或自定义键如 TOST-1.0),若为全新许可则先在 licenses.json 注册并在 release/license/spdx/ 或 release/license/others/ 放置全文文件;
  2. 更新内部库:编辑对应 extern/ 子目录的 README.blender,保证 Project / URL / License / Upstream version / Copyright 字段完整;
  3. 更新字体:字体表及字体许可证内嵌在 tools/utils_maintenance/make_license.py 的 INTRODUCTION 常量中,改动需修改脚本本身;
  4. 重新生成:在仓库根目录执行 make license,脚本会输出 License file successfully generated: "release/license/license.md" 并提示提交该文件;
  5. 提交产物:将重新生成的 release/license/license.md 连同数据源改动一并提交。

这套机制保证了"数据源单一、产物可复现":任何许可证信息的变更都会在下一次生成时统一反映到文档中,且生成过程内置了缺失文件、缺失版权、未注册许可三类校验,从工程层面避免合规遗漏。

八、从源码视角的补充:SPDX 标识与许可证检查

license.md 的自动生成机制与仓库内另一条合规流水线相互配合——GNUmakefile 中的 check_licenses 目标调用 tools/check_source/check_licenses.py,按 doc/license/SPDX-license-identifiers.txt 中收录的许可标识校验源码文件的 SPDX 头(如 SPDX-License-Identifier: GPL-2.0-or-later)。make_license.py 自身也以标准 SPDX 头声明 GPL-2.0-or-later,而 licenses.json 中的键大量采用 SPDX: 前缀直接映射 SPDX 标识符——两条流水线共享同一套 SPDX 词汇表,从"源码头声明"与"发行版依赖清单"两个维度共同构成 Blender 的许可合规体系。

需要说明的是,本文描述的清单版本、依赖版本号与版权声明均以当前仓库 release/license/license.md 为准;由于文档标注 © 2011-2026 Blender Foundation 且依赖版本持续演进(如 LLVM 20.1.8、Python 3.13.13、OpenSSL 3.5.6 等),实际发布版本的具体条目会随 make license 的重新生成而更新。

  • 图形学
  • 3D渲染
  • 桌面应用
  • 音视频

【免费下载链接】blender

Official mirror of Blender

项目地址: https://gitcode.com/gh_mirrors/bl/blender
点击查看 免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值