{"id":2220629,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2220629/?format=json","web_url":"http://patchwork.ozlabs.org/project/buildroot/patch/20260407-generate-cyclonedx-br-v1-4-03c45ccba2ed@cherry.de/","project":{"id":27,"url":"http://patchwork.ozlabs.org/api/1.1/projects/27/?format=json","name":"Buildroot development","link_name":"buildroot","list_id":"buildroot.buildroot.org","list_email":"buildroot@buildroot.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260407-generate-cyclonedx-br-v1-4-03c45ccba2ed@cherry.de>","date":"2026-04-07T17:37:10","name":"[4/4] utils/generate-cyclonedx: hint at missing Buildroot host package on a specific error","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"c01d1c43c0cf559596b2c638979485e0e15bc7ae","submitter":{"id":83602,"url":"http://patchwork.ozlabs.org/api/1.1/people/83602/?format=json","name":"Quentin Schulz","email":"foss+buildroot@0leil.net"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/buildroot/patch/20260407-generate-cyclonedx-br-v1-4-03c45ccba2ed@cherry.de/mbox/","series":[{"id":499014,"url":"http://patchwork.ozlabs.org/api/1.1/series/499014/?format=json","web_url":"http://patchwork.ozlabs.org/project/buildroot/list/?series=499014","date":"2026-04-07T17:37:07","name":"make utils/generate-cyclonedx runnable with Buildroot host packages","version":1,"mbox":"http://patchwork.ozlabs.org/series/499014/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2220629/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2220629/checks/","tags":{},"headers":{"Return-Path":"<buildroot-bounces@buildroot.org>","X-Original-To":["incoming-buildroot@patchwork.ozlabs.org","buildroot@buildroot.org"],"Delivered-To":["patchwork-incoming-buildroot@legolas.ozlabs.org","buildroot@buildroot.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=buildroot.org header.i=@buildroot.org\n header.a=rsa-sha256 header.s=default header.b=SvqRTCi0;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=buildroot.org\n (client-ip=140.211.166.137; helo=smtp4.osuosl.org;\n envelope-from=buildroot-bounces@buildroot.org; receiver=patchwork.ozlabs.org)"],"Received":["from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fqtgY16hjz1xtJ\n\tfor <incoming-buildroot@patchwork.ozlabs.org>;\n Wed, 08 Apr 2026 03:37:29 +1000 (AEST)","from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 3E51A40C86;\n\tTue,  7 Apr 2026 17:37:27 +0000 (UTC)","from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id OaG6GEk1ADup; Tue,  7 Apr 2026 17:37:25 +0000 (UTC)","from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 1974240C72;\n\tTue,  7 Apr 2026 17:37:25 +0000 (UTC)","from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n by lists1.osuosl.org (Postfix) with ESMTP id 92E232C7\n for <buildroot@buildroot.org>; Tue,  7 Apr 2026 17:37:20 +0000 (UTC)","from localhost (localhost [127.0.0.1])\n by smtp1.osuosl.org (Postfix) with ESMTP id 796DA811C4\n for <buildroot@buildroot.org>; Tue,  7 Apr 2026 17:37:20 +0000 (UTC)","from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id AOtS_S_yfwds for <buildroot@buildroot.org>;\n Tue,  7 Apr 2026 17:37:19 +0000 (UTC)","from smtp-42ae.mail.infomaniak.ch (smtp-42ae.mail.infomaniak.ch\n [84.16.66.174])\n by smtp1.osuosl.org (Postfix) with ESMTPS id 21B8D81189\n for <buildroot@buildroot.org>; Tue,  7 Apr 2026 17:37:18 +0000 (UTC)","from smtp-3-0001.mail.infomaniak.ch (unknown\n [IPv6:2001:1600:4:17::246c])\n by smtp-3-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4fqtgJ6T9zz8jg;\n Tue,  7 Apr 2026 19:37:16 +0200 (CEST)","from unknown by smtp-3-0001.mail.infomaniak.ch (Postfix) with ESMTPA\n id 4fqtgJ2LMpzRX; Tue,  7 Apr 2026 19:37:16 +0200 (CEST)"],"X-Virus-Scanned":["amavis at osuosl.org","amavis at osuosl.org"],"X-Comment":"SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=buildroot-bounces@buildroot.org;\n receiver=<UNKNOWN> ","DKIM-Filter":["OpenDKIM Filter v2.11.0 smtp4.osuosl.org 1974240C72","OpenDKIM Filter v2.11.0 smtp1.osuosl.org 21B8D81189"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=buildroot.org;\n\ts=default; t=1775583445;\n\tbh=qxLJ5VYU7gALh5eCFLt661Mjw6sW/rQLl8YagVTcX68=;\n\th=Date:References:In-Reply-To:To:Cc:Subject:List-Id:\n\t List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:\n\t From:Reply-To:From;\n\tb=SvqRTCi0vv1ac8c8RMr6CVB2Iy409RC/b43l9mPk34mXo0XVgBEj+GTW0HLWgmGjP\n\t KilrpBGXWfTm7qnG0HAyokpTRAV38ct5gsOs19AYeespk1Owlw3YauLyy1lUgWQiT2\n\t t5Tycm08W/qxo2Mj4xkzBfyBWYS4pR0km8+IVFfUUsFW9egx/g2InnX6oVq6LsSa3K\n\t GHAFyRg1t+hPUk957R78ihXOysZPg6QpwHX3AVCwBtwS8jAPwXq58KON7qCRj50dtJ\n\t obKCpxE0n4XHH5uD3/Qqo4LjfEkOybrG6eTfvyoIJHyuTjlBTW6hTXBaA2Wr9Rcs1c\n\t PAHlI4jkqlogQ==","Received-SPF":"Pass (mailfrom) identity=mailfrom; client-ip=84.16.66.174;\n helo=smtp-42ae.mail.infomaniak.ch; envelope-from=foss+buildroot@0leil.net;\n receiver=<UNKNOWN>","DMARC-Filter":"OpenDMARC Filter v1.4.2 smtp1.osuosl.org 21B8D81189","Date":"Tue, 07 Apr 2026 19:37:10 +0200","MIME-Version":"1.0","Message-Id":"<20260407-generate-cyclonedx-br-v1-4-03c45ccba2ed@cherry.de>","References":"<20260407-generate-cyclonedx-br-v1-0-03c45ccba2ed@cherry.de>","In-Reply-To":"<20260407-generate-cyclonedx-br-v1-0-03c45ccba2ed@cherry.de>","To":"buildroot@buildroot.org","Cc":"Thomas Perale <thomas.perale@mind.be>, Martin Bark <martin@barkynet.com>,\n Thomas Petazzoni <thomas.petazzoni@bootlin.com>,\n Quentin Schulz <quentin.schulz@cherry.de>","X-Mailer":"b4 0.15-dev-47773","X-Infomaniak-Routing":"alpha","X-Mailman-Original-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=0leil.net; s=20231125; t=1775583436;\n bh=skQ9YMiEmQUYxLhXWTNqQ3sCRS5c5cLe2pIVhCrgFGk=;\n h=From:Date:Subject:References:In-Reply-To:To:Cc:From;\n b=Da7icd7GhLkFzvjwTzzVd9NrMGB7J2axlDh/WkIQA6P8ZiENIb6xu97Ms0aslJWI+\n 5DUIoOtRMY+RwiAcdOtvrQNXoXa9mCwJIRfTr9KxaXMVQIgxcu5NZIs28MqfniT1nd\n UYrkkiaPIIw18F/TTgm9ZWlQWmTIJF7MHv5yJLf+YNdAL7VNLEYQ5OBRwHP/pktdEz\n C7FeCELMSsdsi2zdtE9pDZ3CidEPc1EXFdhAJXaT87ZLqUkqbgAiVJgGx2OiWCzLU+\n X7fTXuXf7wJ7MpzagqieDBCRM40SQTA+UOvqrWmnrwGltc/Rh+1vu8c+Su1OuCFxQU\n qZHYSsvmCF4qg==","X-Mailman-Original-Authentication-Results":["smtp1.osuosl.org;\n dmarc=pass (p=reject dis=none)\n header.from=0leil.net","smtp1.osuosl.org;\n dkim=pass (2048-bit key) header.d=0leil.net header.i=@0leil.net\n header.a=rsa-sha256 header.s=20231125 header.b=Da7icd7G"],"Subject":"[Buildroot] [PATCH 4/4] utils/generate-cyclonedx: hint at missing\n Buildroot host package on a specific error","X-BeenThere":"buildroot@buildroot.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Discussion and development of buildroot <buildroot.buildroot.org>","List-Unsubscribe":"<https://lists.buildroot.org/mailman/options/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=unsubscribe>","List-Archive":"<http://lists.buildroot.org/pipermail/buildroot/>","List-Post":"<mailto:buildroot@buildroot.org>","List-Help":"<mailto:buildroot-request@buildroot.org?subject=help>","List-Subscribe":"<https://lists.buildroot.org/mailman/listinfo/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=subscribe>","From":"Quentin Schulz via buildroot <buildroot@buildroot.org>","Reply-To":"Quentin Schulz <foss+buildroot@0leil.net>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"buildroot-bounces@buildroot.org","Sender":"\"buildroot\" <buildroot-bounces@buildroot.org>"},"content":"From: Quentin Schulz <quentin.schulz@cherry.de>\n\nSince last commit, utils/generate-cyclonedx can now be used with\nBuildroot host tools, provided the user either externally install the\nSPDX schema in the DL_DIR themselves or have\nBR2_PACKAGE_HOST_PYTHON3_SSL and BR2_PACKAGE_HOST_CA_CERTIFICATES both\nenabled. If the latter is missing, Python will complain with:\n\nTraceback (most recent call last):\n  File \"/buildroot/build/host/lib/python3.14/urllib/request.py\", line 1321, in do_open\n    h.request(req.get_method(), req.selector, req.data, headers,\n    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n              encode_chunked=req.has_header('Transfer-encoding'))\n              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/buildroot/build/host/lib/python3.14/http/client.py\", line 1358, in request\n    self._send_request(method, url, body, headers, encode_chunked)\n    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/buildroot/build/host/lib/python3.14/http/client.py\", line 1404, in _send_request\n    self.endheaders(body, encode_chunked=encode_chunked)\n    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/buildroot/build/host/lib/python3.14/http/client.py\", line 1353, in endheaders\n    self._send_output(message_body, encode_chunked=encode_chunked)\n    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/buildroot/build/host/lib/python3.14/http/client.py\", line 1113, in _send_output\n    self.send(msg)\n    ~~~~~~~~~^^^^^\n  File \"/buildroot/build/host/lib/python3.14/http/client.py\", line 1057, in send\n    self.connect()\n    ~~~~~~~~~~~~^^\n  File \"/buildroot/build/host/lib/python3.14/http/client.py\", line 1499, in connect\n    self.sock = self._context.wrap_socket(self.sock,\n                ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n                                          server_hostname=server_hostname)\n                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/buildroot/build/host/lib/python3.14/ssl.py\", line 455, in wrap_socket\n    return self.sslsocket_class._create(\n           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^\n        sock=sock,\n        ^^^^^^^^^^\n    ...<5 lines>...\n        session=session\n        ^^^^^^^^^^^^^^^\n    )\n    ^\n  File \"/buildroot/build/host/lib/python3.14/ssl.py\", line 1076, in _create\n    self.do_handshake()\n    ~~~~~~~~~~~~~~~~~^^\n  File \"/buildroot/build/host/lib/python3.14/ssl.py\", line 1372, in do_handshake\n    self._sslobj.do_handshake()\n    ~~~~~~~~~~~~~~~~~~~~~~~~~^^\nssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1081)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/buildroot/utils/generate-cyclonedx\", line 53, in <module>\n    urllib.request.urlretrieve(SPDX_SCHEMA_URL, SPDX_SCHEMA_PATH)\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/buildroot/build/host/lib/python3.14/urllib/request.py\", line 212, in urlretrieve\n    with contextlib.closing(urlopen(url, data)) as fp:\n                            ~~~~~~~^^^^^^^^^^^\n  File \"/buildroot/build/host/lib/python3.14/urllib/request.py\", line 187, in urlopen\n    return opener.open(url, data, timeout)\n           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^\n  File \"/buildroot/build/host/lib/python3.14/urllib/request.py\", line 487, in open\n    response = self._open(req, data)\n  File \"/buildroot/build/host/lib/python3.14/urllib/request.py\", line 504, in _open\n    result = self._call_chain(self.handle_open, protocol, protocol +\n                              '_open', req)\n  File \"/buildroot/build/host/lib/python3.14/urllib/request.py\", line 464, in _call_chain\n    result = func(*args)\n  File \"/buildroot/build/host/lib/python3.14/urllib/request.py\", line 1369, in https_open\n    return self.do_open(http.client.HTTPSConnection, req,\n           ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n                        context=self._context)\n                        ^^^^^^^^^^^^^^^^^^^^^^\n  File \"/buildroot/build/host/lib/python3.14/urllib/request.py\", line 1324, in do_open\n    raise URLError(err)\nurllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1081)>\n\nProvide some hint as to what could be missing from Buildroot host.\n\nSigned-off-by: Quentin Schulz <quentin.schulz@cherry.de>\n---\n utils/generate-cyclonedx | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)","diff":"diff --git a/utils/generate-cyclonedx b/utils/generate-cyclonedx\nindex 045bf14caa..fad0671166 100755\n--- a/utils/generate-cyclonedx\n+++ b/utils/generate-cyclonedx\n@@ -50,7 +50,12 @@ if not SPDX_SCHEMA_PATH.exists():\n \n     # Download the CycloneDX SPDX schema JSON, and cache it locally\n     cyclonedxpath.mkdir(parents=True, exist_ok=True)\n-    urllib.request.urlretrieve(SPDX_SCHEMA_URL, SPDX_SCHEMA_PATH)\n+    try:\n+        urllib.request.urlretrieve(SPDX_SCHEMA_URL, SPDX_SCHEMA_PATH)\n+    except urllib.error.URLError as e:\n+        if \"CERTIFICATE_VERIFY_FAILED\" in str(e.reason):\n+            raise Exception(\"Couldn't verify certificate. Try enabling BR2_PACKAGE_HOST_CA_CERTIFICATES.\")\n+        raise e\n \n try:\n     with SPDX_SCHEMA_PATH.open() as f:\n","prefixes":["4/4"]}