Skip to content

skpkg: final work required for scikit-packaging libdiffpy #63

Open

Description

@cadenmyers13

All migration work is done on skpkg-migration

CI

  • Shrink the matrix. Python is only used to run SCons, so testing 3.12, 3.13 and 3.14 triples the jobs without testing anything new. Test one Python version on each of the 4 operating systems.
  • Decide when the matrix runs. Running on push to main is commented out in matrix-and-codecov.yml; the scikit-package default runs on merge to main.
  • Release occurs before matrix test passes. Today the matrix runs after the GitHub release is published and does not block it. This test should pass before a release occurs.
  • Use the same setup for PR tests and the matrix. tests-on-pr.yml writes its own sconscript.local and installs cxxtest from conda. matrix-and-codecov.yml uses .github/scripts/configure-matrix.py and a git checkout of CxxTest. Use one setup for both.
  • The docs workflow only works by accident. The reusable _release-docs.yml workflow in scikit-package/release-scripts runs python -m pip install -e . --no-deps. libdiffpy has no Python project, so pip installs an empty placeholder package called UNKNOWN 0.0.0. The docs build passes anyway, but only by accident. Decide how we should handle it or if we can just ignore it for now.
  • enable pre-commit bot for this repo.

Downstream packages

  • diffpy.srreal will fail to build against migrated libdiffpy. srreal compiles libdiffpy's sources from the commit pinned in cmake/LibdiffpyVersion.cmake. Its CMakeLists.txt installs ${LIBDIFFPY_SOURCE_DIR}/LICENSE.txt, which this migration renamed to LICENSE.rst. Once the pin moves to a migrated commit, the srreal build fails. Open an issue in diffpy.srreal to update that path. Check this when chore: use external libdiffpy diffpy.srreal#98 is merged.
  • Test diffpy.srreal against migrated libdiffpy before merging to main (requested in v1.4.1 release tag is wrong #40).
  • Update the conda-forge libdiffpy-feedstock. Write issues for the following and fix them in the feedstock:
    • Change the source URL from archive/v{{ version }}.tar.gz to archive/{{ version }}.tar.gz, because release tags no longer start with v.
    • Change license_file from LICENSE.txt to LICENSE.rst.
    • Simplify build.sh and bld.bat. SConstruct now installs to $PREFIX (or $CONDA_PREFIX) by default and uses the Library/ layout on Windows.
    • Add run_exports with pin_subpackage(name, max_pin='x.x') so that packages built against libdiffpy pin a compatible version (see bugs: ABI incompatibility after 1.5.0 release #47).

Optional cleanup

Release

  • Merge skpkg-migration into main.
  • Before tagging, set FALLBACK_VERSION in site_scons/fallback_version.py to the release version.
  • Make the 1.5.0 release issue from the release checklist template (make a release issue after skpkging is done. #54).

Activity

  1. cadenmyers13 commented on Oct 29, 2026

    @cadenmyers13
    ContributorAuthor

    @SYMSCAE See above for what needs to be done.

  2. SYMSCAE commented on Oct 29, 2026

    @SYMSCAE
    Contributor

    @cadenmyers13 For entry diffpy.srreal will fail to build against migrated libdiffpy there is an existing PR diffpy/diffpy.srreal#98 that reverts this change and makes srreal depend on released libdiffpy.

  3. cadenmyers13 commented on Oct 29, 2026

    @cadenmyers13
    ContributorAuthor

    @SYMSCAE okay great. I updated above

  4. SYMSCAE commented on Oct 29, 2026

    @SYMSCAE
    Contributor

    @cadenmyers13 Please add one more entry to enable pre-commit on this repo, I've setup clang-format so the hooks now work for cpp files as well.

  5. SYMSCAE commented on Oct 30, 2026

    @SYMSCAE
    Contributor

    @cadenmyers13 I think we are good to merge and release an rc? There's only one _release-docs.yml left and it seems the cleanest way to fix is to add a flag to upstream release-scripts (something like install_pkg = true).

  6. cadenmyers13 commented on Oct 30, 2026

    @cadenmyers13
    ContributorAuthor

    @SYMSCAE Have all the above items been checked then? I think its quick and easy to make that change to release-scripts because it doesn't need a release.

  7. SYMSCAE commented on Oct 30, 2026

    @SYMSCAE
    Contributor

    6. @SYMSCAE Have all the above items been checked then? I think its quick and easy to make that change to release-scripts because it doesn't need a release.

    ci checks are all set except for docs workflow and pre-commit bot. I'll add a PR to release-scripts to bypass python installation with a flag. @sbillinge Could you please enable pre-commit bot for this repo?

  8. cadenmyers13 commented on Oct 30, 2026

    @cadenmyers13
    ContributorAuthor

    @SYMSCAE great, thanks. That will also require a PR here too, right?

  9. SYMSCAE commented on Oct 30, 2026

    @SYMSCAE
    Contributor

    @cadenmyers13 Indeed, should be a one-line change.

  10. sbillinge commented on Oct 31, 2026

    @sbillinge
    Contributor

    @SYMSCAE @cadenmyers13 I believe that I activated pre-commit.ci successfully, but please check. Are we nearly there with this?

  11. SYMSCAE commented on Oct 31, 2026

    @SYMSCAE
    Contributor

    @cadenmyers13 I think we're good for rc0 for libdiffpy, srreal has been manually checked (tests all passed and linked properly). But I'm not quite sure about the approach to handle compatibility for srreal.
    I've opened up a PR conda-forge/diffpy.srreal-feedstock#5 in srreal's feedstock to trigger a new release for 1.4.0 srreal (so that new installations of srreal won't fetch 1.5.0rc libdiffpy if we release rc libdiffpy in main channel). Or should we create a prerelease channel for both so that there's no such workaround and we only need to do one repodata patch afterwards. @sbillinge Please see which is more preferrable.

  12. sbillinge commented on Nov 1, 2026

    @sbillinge
    Contributor

    Thanks @SYMSCAE this is great. As a general matter, we don't really want releases to depend on the release state of other packages because weird time-dependent pins are just deferred maintenance. It means that when we push things out we have to do them in the right order. For example, we usually start with diffpy.utils and bg-mpl-stylesheets which are used by just about everything and don't depend on anything, and then kind of roll things out from there. What that means is that my preference here is to get libdiffpy pushed out all the way to Conda-Forge (and tested in between) and then push out srreal but without any weird pins. It slows things down a bit, but keeps things a bit cleaner and minimizes code entropy. In this case, it is a bit trickier because we are using srreal to test that we didn't break libdiffpy, so thanks for that. In general, it would be good if the things that srreal is testing could be included in libdiffpy test suite (but without a srreal dependency), which would allow us to completely separate the releaseses, but let's not worry about that now.

  13. sbillinge commented on Nov 1, 2026

    @sbillinge
    Contributor

    @SYMSCAE @cadenmyers13 please can you check off all the todo items in the top comment. I will use that, and any open issues and PRs as the things that need to be close to move to release.

  14. cadenmyers13 commented on Nov 2, 2026

    @cadenmyers13
    ContributorAuthor

    @SYMSCAE @sbillinge I checked everything that is completed. I tried to bump the fallback version but it fails test because it compares to the current git tags. Next we need to merge skpkg-migration into main. Some merge conflicts will need to be fixed

  15. sbillinge commented on Nov 2, 2026

    @sbillinge
    Contributor

    15. @SYMSCAE @sbillinge I checked everything that is completed. I tried to bump the fallback version but it fails test because it compares to the current git tags. Next we need to merge skpkg-migration into main. Some merge conflicts will need to be fixed

    I created this PR.

  16. cadenmyers13 commented on Nov 2, 2026

    @cadenmyers13
    ContributorAuthor

    @SYMSCAE Can you handle the merge conflicts between main and skpkg-migration? C++ code has been modified and I'm not sure which one is the right choice. Something must've been merged into main while we were doing edits on the migration branch.

  17. sbillinge commented on Nov 2, 2026

    @sbillinge
    Contributor

    We merged the windows branch into main. We should have done the skpkg work off of the windows branch but we didn't realize it wasn't fully merged as it was the production version so should have been. Could this explain everything? It may be better to close this and redo the skpkg work?

  18. cadenmyers13 commented on Nov 2, 2026

    @cadenmyers13
    ContributorAuthor

    @sbillinge I would rather not redo the skpkg work because it isn't super trivial. I think @SYMSCAE can handle the merge conflicts since he did the merge of windows to main. Its only a handful of files and a few lines that have the conflicts.

  19. SYMSCAE commented on Nov 2, 2026

    @SYMSCAE
    Contributor

    @cadenmyers13 @sbillinge PR #60 merges windows into skpkg rather than main and preserves the original commit history. The reason there was tons of merge conflicts before and file changes because the windows branch introduces code formatter for C++, which is also preserved and wired into our pre-commit workflow.

  20. added this to the v1.5.0 release milestone on Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions