From patchwork Tue Mar 31 16:06:50 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rob Woolley X-Patchwork-Id: 2406 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 238E9109B495 for ; Tue, 31 Mar 2026 16:07:17 +0000 (UTC) Received: from mx0b-0064b401.pphosted.com (mx0b-0064b401.pphosted.com [205.220.178.238]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.23968.1774973226538381157 for ; Tue, 31 Mar 2026 09:07:07 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@windriver.com header.s=PPS06212021 header.b=E68dyBNL; spf=permerror, err=parse error for token &{10 18 %{ir}.%{v}.%{d}.spf.has.pphosted.com}: invalid domain name (domain: windriver.com, ip: 205.220.178.238, mailfrom: prvs=85502649bd=rob.woolley@windriver.com) Received: from pps.filterd (m0250812.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62V5i489352519; Tue, 31 Mar 2026 16:07:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=cc:content-transfer-encoding:content-type:date:from :message-id:mime-version:subject:to; s=PPS06212021; bh=Bst0b3Nhk bpen0QgndiRNhYzfqs14/DOO+ch21eRddw=; b=E68dyBNL3J3RUjRi+qrTARum1 YTyCRRnO9sFLhYPiMFOnRZUFmyptcf+wc+SK8vNzodyR27QNk/aL60kO2b72ITRA DAFauJiYfE6EYGh6OL+7puyUa8QfZ+HbiZnR+zjAWUnhVXuPJ9P2XkuulgLwRpQO JGac2CSJ9cNeWSuM3sfdu9qnIya2+Jw1pMZqx1w6CLv9eSPJqy8WPhsbxL7kY+1/ U5CUpGRVdIjtR6aio6WbnQppyU4mmCmS0VeVNyF4C6c12jor8PEcaKJEsUfgDpDT DVrEDJ4wcKOFxRWg6rdAssnUg+WOMkWGJKSRGlHwsbS1BtI7RWEtCQy34lCFQ== Received: from ala-exchng01.corp.ad.wrs.com (ala-exchng01.wrs.com [128.224.246.36]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 4d65y4bxjb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Tue, 31 Mar 2026 16:07:04 +0000 (GMT) Received: from ala-exchng01.corp.ad.wrs.com (10.11.224.121) by ala-exchng01.corp.ad.wrs.com (10.11.224.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.61; Tue, 31 Mar 2026 09:07:03 -0700 Received: from ala-lpggp3.wrs.com (10.11.232.110) by ala-exchng01.corp.ad.wrs.com (10.11.224.121) with Microsoft SMTP Server id 15.1.2507.61 via Frontend Transport; Tue, 31 Mar 2026 09:07:03 -0700 From: Rob Woolley To: CC: Subject: [PATCH v2 00/13] bitbake-setup PyPI Packaging Date: Tue, 31 Mar 2026 09:06:50 -0700 Message-ID: <20260331160703.3137930-1-rob.woolley@windriver.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-Authority-Analysis: v=2.4 cv=QaZrf8bv c=1 sm=1 tr=0 ts=69cbf128 cx=c_pps a=AbJuCvi4Y3V6hpbCNWx0WA==:117 a=AbJuCvi4Y3V6hpbCNWx0WA==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=bi6dqmuHe4P4UrxVR6um:22 a=fTW__CHxibyLmBMfj2wP:22 a=NEAV23lmAAAA:8 a=Q4-j1AaZAAAA:8 a=K_1DeRggfWye27DRFMsA:9 a=9H3Qd4_ONW2Ztcrla5EB:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzMxMDE1NCBTYWx0ZWRfX+tYggFKF/oqq 1sZIlZ1WZ9YzFmQ85347dkxAftnE0zdGsTYab2LMUS0g3kSc952TQ9dMr02tPkeZNKoueDaPaKF EspgOOlVhUfXja8V85Wz/a2LBcA0+axORwO11e3dWKLzxFgOUaxpkc2ZvDP4mTA2fFvxkfX7PPy VDNRKp9zsUw80rMH0bYJGYou/MD/6jVP6+GtRFnN5XW4QesVij8JYChq6lxLd2KTGg+WRUgsp4Q th02teeWwc127jPKGLDxng78QdS0fRPy5SseauAcxaRWcmgSLvut+S7z5WTAlZBgzOAgsFx9wwQ ARPX6uoKGu5ZCXrwi3knzaiYUCaqfOfcfpytUMYRgG/XvlOpVxnhXGvVTHCSrNYIOVvEv8h6m9s CIlFCneXlfmWROuYwJoXYZWx6QP9qKzx+k9FAssFRSwbJuycYu1ktfxmHPzV1kCswcUnHWK9ytW FRQ6b/ur1gTaVr5oJNQ== X-Proofpoint-GUID: xbb8hPaKe70zF0vjk6p6h99QJ6DMxn14 X-Proofpoint-ORIG-GUID: xbb8hPaKe70zF0vjk6p6h99QJ6DMxn14 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-31_03,2026-03-31_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 adultscore=0 suspectscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603310154 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 31 Mar 2026 16:07:17 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/19300 This is a new series to add PyPI packaging for bitbake-setup. It is based on my development branch here: https://github.com/robwoolley/bitbake/tree/add-pypi-v6 UPDATE: This series is based on the HEAD of bitbake master. It repeats any of the previous linting fixes that have not yet been applied. As such this v2 stands alone independent of any previous emails sent by me recently. The main challenge has been to package bitbake-setup independently from the rest of bitbake. This necessitates creating a separate staging directory with pyproject.toml at the root. Details are in the commit messages. I have tested using these changes to package all of bitbake to make sure that these changes didn't inhibit that from working. That is beyond the scope of work for what I was trying to do. There are 2 challenges I had to overcome: 1. Ensuring that all primary workflows worked: (a) Running bitbake and bitbake-setup directly from git (b) Allowing developers to use pip install -e . to develop in-tree (c) Enabling pip install in virtual environments and at the system-level 2. Historically, he sys.path modificiations made it easy to refer to the vendorized modules without worrying about system-wide package conflicts. Adding packaging support required that the modules be properly vendorized so they didn't conflict with the upstream packages. Vendorizing the bb module resulted in too much churn as we import bb and its sub-modules across all the files in lib/bb/* Given that the bb package on PyPI is obscure and hasn't been updated in a very long time, I chose to bundle bb instead of vendorize it. Here are the detailed testing steps that I used to verify this series before submitting it to bitbake-devel: $ python3 -m venv venv $ source venv/bin/activate $ pip install build $ BB_SKIP_PYPI_TESTS=no bin/bitbake-selftest -v bb.tests.setup.PyPIPackagingTest bb.tests.setup.PyPIPackagingTest test_console_script_help (bb.tests.setup.PyPIPackagingTest) Verify bitbake-setup --help runs successfully. ... ok test_console_script_list (bb.tests.setup.PyPIPackagingTest) Verify bitbake-setup list runs successfully. ... ok test_entry_points (bb.tests.setup.PyPIPackagingTest) Verify console script entry points are correctly defined. ... ok test_imports (bb.tests.setup.PyPIPackagingTest) Verify all expected modules can be imported from installed package. ... ok test_package_metadata (bb.tests.setup.PyPIPackagingTest) Verify package metadata is correctly set. ... ok test_vendored_dependencies (bb.tests.setup.PyPIPackagingTest) Verify vendored dependencies (bs4, ply, progressbar, simplediff) are not bundled in package. ... ok test_version_from_wheel (bb.tests.setup.PyPIPackagingTest) Verify version is set correctly (not fallback 0.0.0 unless expected). ... ok test_wheel_metadata_file (bb.tests.setup.PyPIPackagingTest) Verify wheel METADATA file contains required fields. ... ok ---------------------------------------------------------------------- Ran 8 tests in 18.014s OK $ contrib/pypi/package-bitbake-setup.py $ cd packaging_workspace/ $ pip install -e . $ which bitbake-setup /ala-lpggp31/rwoolley/bitbake-testing/bitbake/venv/bin/bitbake-setup $ bitbake-setup --version bitbake-setup 2.16.0 $ bitbake-setup list NOTE: Fetching configuration registry git://git.openembedded.org/bitbake;protocol=https;branch=master;rev=master into /tmp/bitbake-setup-list-v1m6p7s3/.bitbake-setup-cache/configurations Available configurations: oe-nodistro-master OpenEmbedded - 'nodistro' basic configuration oe-nodistro-whinlatter OpenEmbedded - 'nodistro' basic configuration, release 5.3 'whinlatter' (supported until 2026-05-31) poky-master Poky - The Yocto Project testing distribution configurations and hardware test platforms poky-whinlatter Poky - The Yocto Project testing distribution configurations and hardware test platforms, release 5.3 'whinlatter' (supported until 2026-05-31) Run 'init' with one of the above configuration identifiers to set up a build. $ pip uninstall bitbake-setup $ python3 -m build $ pip install dist/bitbake_setup-2.16.0-py3-none-any.whl Processing ./dist/bitbake_setup-2.16.0-py3-none-any.whl Installing collected packages: bitbake-setup Successfully installed bitbake-setup-2.16.0 $ cd $(mktemp -d) $ bitbake-setup init ... The bitbake configuration files (local.conf, bblayers.conf and more) can be found in /tmp/tmp.s1MXZQ5XiF/bitbake-builds/poky-whinlatter/build/conf