• 
      

    Switch Djblets package building to use buildthings.

    Review Request #14952 — Created March 20, 2026 and updated

    Information

    Djblets
    release-5.x

    Reviewers

    Buildthings is our new Python package build backend, which supports
    injecting local development source trees into the isolated build
    environment, interfacing with npm, and running extra build steps.
    It also notably allows for local paths for development dependencies,
    something our in-tree build backend did not do.

    This change switches away from our in-tree build backend to
    buildthings, giving us a consistent setup going forward and resolving
    several issues when building Djblets.

    When building Djblets, development and package dependencies will be
    installed in the isolated build environment for all build types,
    allowing static media to be built.

    All build types support .local-packages, since we need this in order
    to build and deploy in-development versions.

    Builds can be tested using:

    $ python -m build --sdist .
    $ python -m build --wheel .
    

    Doing these separately ensures that .local-packages will be picked up
    for each build type, rather than the default behavior of the wheel being
    built from the source distribution.

    Tested editable installs and producing sdist and wheel builds.

    Compared those to builds using the original build backend. Verified that
    all files and metadata were a match.

    Summary ID
    Switch Djblets package building to use buildthings.
    Buildthings is our new Python package build backend, which supports injecting local development source trees into the isolated build environment, interfacing with npm, and running extra build steps. It also notably allows for local paths for development dependencies, something our in-tree build backend did not do. This change switches away from our in-tree build backend to buildthings, giving us a consistent setup going forward and resolving several issues when building Djblets. When building Djblets, development and package dependencies will be installed in the isolated build environment for all build types, allowing static media to be built. All build types support `.local-packages`, since we need this in order to build and deploy in-development versions. Builds can be tested using: $ python -m build --sdist . $ python -m build --wheel . Doing these separately ensures that `.local-packages` will be picked up for each build type, rather than the default behavior of the wheel being built from the source distribution.
    5089a2a310625f6714962508f9529f34c857e77d
    Description From Last Updated

    Should add , optional here now.

    daviddavid

    If we don't need developer deps, shouldn't include-dev-deps be False?

    daviddavid

    We should probably do build-i18n as well.

    daviddavid

    Should we also have prune .npm-workspaces?

    daviddavid
    david
    1. 
        
    2. djblets/dependencies.py (Diff revision 1)
       
       
      Show all issues

      Should add , optional here now.

    3. 
        
    chipx86
    david
    1. 
        
    2. pyproject.toml (Diff revisions 1 - 2)
       
       
       
       
       
      Show all issues

      If we don't need developer deps, shouldn't include-dev-deps be False?

      1. Bad copy/paste from Review Board.

    3. pyproject.toml (Diff revisions 1 - 2)
       
       
       
       
       
       
       
      Show all issues

      We should probably do build-i18n as well.

    4. MANIFEST.in (Diff revision 2)
       
       
      Show all issues

      Should we also have prune .npm-workspaces?

    5. 
        
    chipx86
    Review request changed
    Change Summary:
    • Fixed some comments in pyproject.toml.
    • Added the build-i18n steps.
    • Removed media and i18n building from the editable build.
    • Added npm management to sdist and wheel builds.
    • .npm-workspaces and node_modules are now explicitly pruned.
    Commits:
    Summary ID
    Switch Djblets package building to use buildthings.
    Buildthings is our new Python package build backend, which supports injecting local development source trees into the isolated build environment, interfacing with npm, and running extra build steps. It also notably allows for local paths for development dependencies, something our in-tree build backend did not do. This change switches away from our in-tree build backend to buildthings, giving us a consistent setup going forward and resolving several issues when building Djblets. When building Djblets, development and package dependencies will be installed in the isolated build environment for all build types, allowing static media to be built. All build types support `.local-packages`, since we need this in order to build and deploy in-development versions. Builds can be tested using: $ python -m build --sdist . $ python -m build --wheel . Doing these separately ensures that `.local-packages` will be picked up for each build type, rather than the default behavior of the wheel being built from the source distribution.
    a4ce229740a26bb2370c59218b6df5b934182988
    Switch Djblets package building to use buildthings.
    Buildthings is our new Python package build backend, which supports injecting local development source trees into the isolated build environment, interfacing with npm, and running extra build steps. It also notably allows for local paths for development dependencies, something our in-tree build backend did not do. This change switches away from our in-tree build backend to buildthings, giving us a consistent setup going forward and resolving several issues when building Djblets. When building Djblets, development and package dependencies will be installed in the isolated build environment for all build types, allowing static media to be built. All build types support `.local-packages`, since we need this in order to build and deploy in-development versions. Builds can be tested using: $ python -m build --sdist . $ python -m build --wheel . Doing these separately ensures that `.local-packages` will be picked up for each build type, rather than the default behavior of the wheel being built from the source distribution.
    5089a2a310625f6714962508f9529f34c857e77d

    Checks run (2 succeeded)

    flake8 passed.
    JSHint passed.
    david
    1. Ship It!
    2.