En esta página

Lista de materiales de software

Un documento Software Bill of Materials (SBOM) es una declaración de archivos instalados, derechos de autor, licencias, versiones, repositorios de fuentes y otra información relevante sobre una instalación de Qt. Los documentos SBOM facilitan la gestión de la cadena de suministro compartiendo información sobre los componentes con los usuarios de Qt y otras partes interesadas. Los documentos SBOM de Qt son especialmente útiles para el cumplimiento de licencias y la gestión de vulnerabilidades de seguridad.

A partir de Qt 6.8, el sistema de compilación de Qt puede generar documentos SBOM adaptados a diferentes plataformas y configuraciones de compilación. El Qt Online Installer coloca los documentos SBOM en un directorio sbom ubicado en el directorio de instalación de la versión respectiva de Qt. Por ejemplo, para la instalación de Qt 6.11.0 Android arm64-v8a, los documentos SBOM se encuentran en:

<INSTALL_DIR>/6.11.0/android_arm64_v8a/sbom/

Para generar tú mismo los documentos SBOM a partir de las fuentes de Qt, establece -sbom como opción de configuración.

Por ejemplo, durante el paso configure:

./configure  -sbom

La generación de documentos SBOM se convierte entonces en parte de la instalación normal de Qt:

ninja install
cmake --install .

Este proceso de compilación crea documentos SBOM en formato JSON y tag:value como se especifica en el formato SPDX.

A partir de Qt 6.11, el proceso de compilación crea opcionalmente documentos SBOM de CycloneDX.

Ver Building Qt Sources y Qt Configure Options para más información sobre el procedimiento de compilación de Qt.

Para los desarrolladores y mantenedores de Qt, el Wiki SBOM tiene información específica para la creación de documentos SBOM.

Módulos Qt compatibles con REUSE

Losmódulos Qt son compatibles con REUSE a partir de Qt 6.9. En concreto, la documentación de licencias y las comprobaciones de licencias forman parte del proceso de desarrollo de Qt. Varias herramientas comprueban los repositorios de Qt en busca de licencias en archivos o externamente en archivos REUSE.toml.

La herramienta reuse comprueba el cumplimiento de REUSE y genera SBOMs de código fuente. Una herramienta interna comprueba que los archivos SBOM fuente generados cumplen con la especificación de licencia de Qt.

Para más información sobre la documentación de licencias en los fuentes de Qt, visite lo siguiente:

Formato SPDX

Los documentos SBOM están en formato SPDX 2.3. Un documento comienza con información sobre el módulo Qt. Los paquetes SPDX siguen como entradas separadas.

Para una instalación Qt, un paquete SPDX puede ser un:

Un paquete SPDX suele contener al menos:

  • Nombre del paquete, versión, nombre del proveedor e información de compilación
  • Atribución de la licencia Qt - un producto Qt puede estar bajo diferentes licencias comerciales o de código abierto. Por ejemplo, un paquete puede listar varias licencias concluidas:
    LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only

    La Licencia Q t tiene más información sobre las opciones de licencia.

  • Avisos de Copyright - los documentos SBOM incluyen copyrights de fuentes Qt y copyrights de terceras fuentes o autores.
  • CPE (Common Platform Enumeration) - un esquema de nomenclatura para la identificación de paquetes. Para Qt, el formato SBOM CPE es típicamente:
    cpe:<cpe_version>:<part>:<vendor>:<product>:<version>:<update>:<edition>:<language>:<sw_edition>:<target_sw>:<target_hw>:<other>

    Un ejemplo de identificador para un paquete Qt Network Authorization paquete es:

    cpe:2.3:a:qt:qtnetworkauth:6.11.0:*:*:*:*:*:*:*

    Para más información, consulte la página Especificación CPE.

  • PURL (URL del paquete): una alternativa a CPE, PURL es un esquema identificador que utiliza el siguiente formato:
    scheme:type/namespace/name@version?qualifiers#subpath

    Un ejemplo de PURL para un paquete es:

    pkg:generic/TheQtCompany/qtnetworkauth@6.11.0

    Para más información, página URL del paquete.

  • Relaciones entre paquetes, como las dependencias.

    Por ejemplo, DEPENDS_ON para listar una relación de dependencia. Consulte la cláusula 11 de SPDX 2.3 para obtener una lista de tipos de relación válidos.

Paquetes SPDX de terceros

Un paquete SPDX para un componente de terceros suele contener al menos:

  • Nombre, versión y descripción
  • Página de inicio y ubicación de descarga
  • Uso en Qt
  • Información sobre licencia y copyright
  • Si el componente es crítico para la seguridad - el código puede procesar código no fiable

Ejemplo de SPDX SBOM

A continuación se muestra un ejemplo de documento SPDX SBOM para el módulo Qt Network Authorization módulo. El nombre del archivo SBOM es qtnetworkauth-6.9.0.spdx y se encuentra en el directorio sbom de la instalación. Tenga en cuenta que el documento SBOM contiene varios paquetes más que no aparecen en el siguiente ejemplo.

SPDXVersion: SPDX-2.3
DataLicense: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
DocumentName: qtnetworkauth-6.9.0
DocumentNamespace: https://qt.io/spdxdocs/qtnetworkauth-6.9.0
Creator: Organization: TheQtCompany
Creator: Tool: Qt Build System
CreatorComment: <text>This SPDX document was created from CMake 3.27.7, using the qt
build system from https://code.qt.io/cgit/qt/qtbase.git/tree/cmake/QtPublicSbomHelpers.cmake</text>
Created: 2024-09-19T11:07:23Z
ExternalDocumentRef: DocumentRef-qtbase https://qt.io/spdxdocs/qtbase-6.9.0 SHA1: 3dbc51259a07d458524a976da2e9607a76fab7e7

PackageName: NetworkAuth
SPDXID: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth
PackageDownloadLocation: git://code.qt.io/qt/qtnetworkauth.git
PackageVersion: 6.9.0
PackageSupplier: Organization: TheQtCompany
PackageLicenseConcluded: LicenseRef-Qt-Commercial OR GPL-3.0-only
PackageLicenseDeclared: LicenseRef-Qt-Commercial OR GPL-3.0-only
ExternalRef: PACKAGE-MANAGER purl pkg:github/qt/qtnetworkauth?library_name=NetworkAuth#src/oauth
ExternalRef: PACKAGE-MANAGER purl pkg:generic/TheQtCompany/qtnetworkauth-NetworkAuth?vcs_url=https://code.qt.io/qt/qtnetworkauth.git&library_name=NetworkAuth#src/oauth
FilesAnalyzed: true
PackageCopyrightText: <text>Copyright (C) 2024 The Qt Company Ltd.</text>
PrimaryPackagePurpose: LIBRARY
ExternalRef: SECURITY cpe23Type cpe:2.3:a:qt:qtnetworkauth:6.9.0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:qt:qt:6.9.0:*:*:*:*:*:*:*
Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-Core
Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-PlatformModuleInternal
Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-Gui
Relationship: SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth DEPENDS_ON DocumentRef-qtbase:SPDXRef-Package-qtbase-qt-module-Network
Relationship: SPDXRef-Package-qtnetworkauth CONTAINS SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth

Formato CycloneDX

A partir de Qt 6.11, el proceso de compilación crea opcionalmente documentos SBOM en formato CycloneDX v1.6.

Para requerir la generación de CycloneDX, configure Qt con:

./configure -sbom -sbom-cyclonedx-v1_6 -sbom-cyclonedx-v1_6-required

La generación de documentos CycloneDX requiere las siguientes dependencias:

  • Python versión 3.9 o posterior
  • Paquetes de Python:
    • cyclonedx-python-lib[json-validation]
    • tomli

Puede utilizar la herramienta pip de Python para instalar los paquetes necesarios:

pip install 'cyclonedx-python-lib[json-validation]' tomli

Los documentos CycloneDX proporcionan información similar a los documentos SPDX, incluyendo componentes, licencias, dependencias y metadatos de seguridad.

En comparación con SPDX, la información de CycloneDX contiene menos detalles sobre algunas áreas como licencias y tipos de relación.

Los documentos SBOM de CycloneDX instalados tienen nombres de archivo con el formato: <module>-<version>.cdx.json.

Ejemplo de SBOM de CycloneDX

A continuación se muestra un ejemplo de documento SBOM de CycloneDX para el módulo Qt Network Authorization de CycloneDX. El nombre de archivo SBOM es qtnetworkauth-6.11.0.cdx.json y se encuentra en el directorio sbom de la instalación. Tenga en cuenta que el documento SBOM contiene otros componentes que no aparecen en el siguiente ejemplo.

{
  "components": [
    {
      "bom-ref": "SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth",
      "copyright": "Copyright (C) The Qt Company Ltd. and other contributors.",
      "cpe": "cpe:2.3:a:qt:qt:6.11.0:*:*:*:*:*:*:*",
      "licenses": [
        {
          "license": {
            "acknowledgement": "concluded",
            "id": "GPL-3.0-only"
          }
        }
      ],
      "name": "NetworkAuth",
      "properties": [
        {
          "name": "qt:sbom:entity_type",
          "value": "QT_MODULE"
        },
        {
          "name": "qt:sbom:is_qt_entity_type",
          "value": "true"
        },
        {
          "name": "spdx:external-reference:package-manager:purl",
          "value": "pkg:github/qt/qtnetworkauth?library_name=NetworkAuth#src/oauth"
        },
        {
          "name": "spdx:external-reference:security:cpe23",
          "value": "cpe:2.3:a:qt:qtnetworkauth:6.11.0:*:*:*:*:*:*:*"
        }
      ],
      "purl": "pkg:generic/TheQtCompany/qtnetworkauth-NetworkAuth?library_name=NetworkAuth&vcs_url=https://code.qt.io/qt/qtnetworkauth.git#src/oauth",
      "supplier": {
        "name": "TheQtCompany",
        "url": [
          "https://qt.io"
        ]
      },
      "type": "library",
      "version": "6.11.0"
    }
  ],
  "dependencies": [
    {
      "dependsOn": [
        "SPDXRef-Package-qtbase-qt-module-Core",
        "SPDXRef-Package-qtbase-qt-module-Gui",
        "SPDXRef-Package-qtbase-qt-module-Network",
        "SPDXRef-Package-qtbase-qt-module-PlatformModuleInternal"
      ],
      "ref": "SPDXRef-Package-qtnetworkauth-qt-module-NetworkAuth"
    }
  ],
  "serialNumber": "urn:uuid:ce0d41b5-0fe8-5383-bf31-ff353a05b8be",
  "version": 1,
  "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json",
  "bomFormat": "CycloneDX",
  "specVersion": "1.6"
}

Yocto construye con meta-qt6

Boot to Qt utiliza la capa meta-qt6 para compilar todos los módulos Qt y los documentos SBOM generados están disponibles como archivos SPDX al instalar Boot to Qt a través de Qt Online Installer. La ruta de instalación depende de la versión de Qt y del hardware de destino.

Por ejemplo, para el objetivo Raspberry Pi, los documentos SBOM .spdx están en:

<INSTALL_DIR>/6.11.0/Boot2Qt/raspberrypi-armv8/toolchain/sysroots/cortexa53-poky-linux/usr/lib/sbom/

Para más información, visita las siguientes páginas:

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.