Skip to content

ZMS6a: without src-folder#451

Merged
drfho merged 19 commits intomainfrom
zms6a
Feb 2, 2026
Merged

ZMS6a: without src-folder#451
drfho merged 19 commits intomainfrom
zms6a

Conversation

@drfho
Copy link
Copy Markdown
Contributor

@drfho drfho commented Jan 21, 2026

This is an alternative approach to #450 without the huge diff in the git,
Goal is to be compatible with Zope5 and 6.

  1. First we try a symlink so that both file-organisations are available in parallel.
  2. Then code-sources are declared in the pyproject.toml file at the traditional location:
[tool.setuptools.packages.find]
where = ["."]
include = ["Products*"]

@drfho drfho changed the title ZMS6: src-Layout by Symlink ZMS6b: src-Layout by Symlink Jan 21, 2026
@drfho drfho marked this pull request as draft January 21, 2026 16:41
@drfho drfho changed the title ZMS6b: src-Layout by Symlink ZMS6a: src-Layout by Symlink Jan 21, 2026
@cmeier76
Copy link
Copy Markdown
Member

@drfho This approach does work as well. I have successfully built and deployed

  • with the existing base image python3.13.5-zope5.13 -> can be handled as a normal ZMS-Core Update
  • with the upcoming base image python3.14.2-zope6.0b2 -> currently preview as beta version

Note

If the setup.py remains, pip install -e needs --config-settings editable_mode=compat
If pyproject.toml is used alone, this parameter can be omitted.

In this zms6a branch the adjustments for ZMS6 branding are currently missing.

@drfho
Copy link
Copy Markdown
Contributor Author

drfho commented Jan 22, 2026

Note: If the setup.py remains, pip install -e needs --config-settings editable_mode=compat If pyproject.toml is used alone, this parameter can be omitted.

My test-case shows that the ordinary -e-install in Zope5.13 still needs setup.py. If setup.py the installation is only stable with:

pip install Zope[wsgi]==$ZOPE_VERSION -c https://zopefoundation.github.io/Zope/releases/$ZOPE_VERSION/constraints.txt
pip install -r https://raw.githubusercontent.com/zms-publishing/ZMS5/main/requirements-full.txt
pip install --use-pep517 --config-settings editable_mode=compat -e git+https://github.com/zms-publishing/ZMS.git@zms6a#egg=ZMS

ZMS5_a

ZMS5_b

In this zms6a branch the ZMS6 branding currently missing.

I revised the branding/program-version by utilizing the description package/project-data for down-compatibility and a late merge with latest ZMS5: 34a71f4

@drfho drfho changed the title ZMS6a: src-Layout by Symlink ZMS6a: without src-folder Jan 23, 2026
@cmeier76
Copy link
Copy Markdown
Member

cmeier76 commented Jan 23, 2026

My test-case shows that the ordinary -e-install in Zope5.13 still needs setup.py

I cannot confirm this @drfho -> there is no setup.py in this zms6a anymore...

...and I used this to install ZMS6a on top of these base images:
ghcr.io/idasm-unibe-ch/zms-base:local-python3.13-zope5.13
ghcr.io/idasm-unibe-ch/zms-base:local-python3.14-zope6.0

After removing the symlink approach in this branch and introducing [tool.setuptools.packages.find]
the parameters --use-pep517 --config-settings editable_mode=compat
are needed again for editable ZMS6a installation with Zope-5.13 and Zope-6.0.

@drfho
Copy link
Copy Markdown
Contributor Author

drfho commented Jan 25, 2026

After removing the symlink approach in this branch and introducing [tool.setuptools.packages.find] the parameters --use-pep517 --config-settings editable_mode=compat are needed again for editable ZMS6a installation with Zope-5.13 and Zope-6.0.

@cmeier76 : thanks for the feedback. You are right, the parameter --config-settings editable_mode=compat is still needed, if ZMS is installed in editable mode. Normal installation does not need the parameter about editable_mode, of course ;-). Sincee pip 25.3 sets -use-pep517 by itself, this is not needed anymore: 524b348

@drfho
Copy link
Copy Markdown
Contributor Author

drfho commented Jan 26, 2026

@zmsdev, @cmeier76
as a resumé of the installation tests I would like to suggest to merge this status into main, because it is up-compatible with ZMS6 (working with Zope 5 and Zope 6) and a file-reorganisation (of PR #450) is not needed. We confirmed that for making the ZMS installation work in editable-mode pip only --config-settings editable_mode=compat is needed. This trap is not really new and due to last year's changes in Zope.

Besides some minor docker customisations for switching the Zope-versions, the code status of this branch introduces only two aspects:

  1. a dynamic creation of the ZMI-brand-logo depending on the package metadata (pyproject.toml:project.description)
  2. removal of the setup.py-file (pep517, replaced by pyproject.toml)

So, actually here is no specific change that makes ZMS exclusivly run on Zope6: means, an existing traditional editable-installation with Zope5 on a host after will still run after simple code-update by git-pull (both ZMS5 and 6 ).

Tasks:

  • first merge, then
  • remove zms6-branch
  • remove zms6a-branch
  • create a new zms6-branch that collect the changes for the yml-based configuration

@drfho drfho marked this pull request as ready for review February 2, 2026 15:57
@drfho drfho merged commit 33fffd3 into main Feb 2, 2026
12 checks passed
@drfho drfho deleted the zms6a branch February 2, 2026 16:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants