• 
      

    Switch Djblets package building to use buildthings.

    Review Request #14952 — Created March 21, 2026 and submitted

    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.

    david david

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

    david david

    We should probably do build-i18n as well.

    david david

    Should we also have prune .npm-workspaces?

    david david
    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
    david
    1. Ship It!
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-5.x (4e2edbe)