Repository navigation
Conversation
Seventh series of the legacy matrix, the first tarball-era image, and the last port that needs new shared scripts. Refs #187. build-elementtree.sh and docker-entrypoint.sh both arrive here, which completes the shared set: legacy/shared/ now matches the source repository's file list exactly, and the closures for 2.5, 2.1, 2.0 and 1.0 are all already satisfied. The remaining four ports are copy-and-wire. Three things make 3.0 structurally different from every series ported so far. Zope is fetched and built here rather than by buildout. The tarball comes from old.zope.dev -- a host no other series uses -- and goes through ./configure && make && make install into /opt/zope, with CFLAGS="-fcommon" because gcc >= 10 rejects the tentative definitions in Zope 2.10's C extensions. build-plone- buildout.sh drops out of the closure entirely. The bundle layout is unique to this release. 3.0 ships Products/ plus lib/python/ rather than one directory per product as the 2.x bundles do, and per its INSTALL.txt both trees install into their counterparts inside the Zope instance. The Dockerfile asserts both copies afterwards, so a layout change in a future bundle fails the build rather than producing an instance that starts with half of Plone missing. Verified on the built image: lib/python holds archetypes, five, kss, plone and wicked. ElementTree is load-bearing rather than defensive. Products/Marshall/handlers/atxml.py does, at module scope: try: from celementtree import ElementTree except ImportError: from elementtree import ElementTree The except catches only the C variant; the pure-Python fallback is unguarded, so with no elementtree installed the module raises and Marshall fails to load. The smoke gate's product-load check is what covers this. 3.0.5, not 3.0.6: the 3.0.6 roll shipped only as PloneBase-3.0.6.tar.gz, the stripped core without dependency products, so 3.0.5 is the last full Plone-*.tar.gz for the series. The source URL is dist.plone.org/ directly rather than dist.plone.org/archive/ as 1.0 - 2.5 use. legacy/README.md's shared-scripts table gains both new scripts, and the sentence promising further scripts with later series is replaced -- there are none left. Verified locally: make lint passes with 8 Dockerfiles and 11 shell scripts; the base image passes the smoke gate with SMOKE_CREATE_SITE=1 (6/6), and the -demo variant builds and passes make test-demo-3.0 (6/6). The -demo run is the first exercise of docker-entrypoint.sh in this repository: seed-demo-site.sh drives it through site creation, clean shutdown and the ADMIN_PASSWORD reset on the seeded database, and the build-time password no longer authenticates afterwards. The versions were read out of the built image rather than assumed: Products/CMFPlone/version.txt reads 3.0.5, getZopeVersion() returns (2, 10, 13, '', -1) from /opt/zope, and elementtree and simplejson 2.0.9 both resolve to site-packages. The local docker build reused cached layers from the source repository, so a cold build is exercised for the first time in CI -- and for this series that cold build includes compiling Zope 2.10.13 from source.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the Plone 3.0 image — the seventh series of the legacy matrix, the first tarball-era image, and the last port that needs new shared scripts.
These images are for content extraction, migration rehearsal and archaeology only. The stacks have known, unpatched security issues and must never be exposed.
Closes #187
This is the seam
build-elementtree.shanddocker-entrypoint.shboth arrive here. That completes the shared set —legacy/shared/now matches the source repository's file list exactly:So the remaining four ports are copy-and-wire, with no new shared code.
build-plone-buildout.shcorrespondingly drops out of 3.0's closure — there is no buildout in the tarball era.Three structural differences from everything ported so far
1. Zope is fetched and built here, not by buildout
The tarball comes from
old.zope.dev— a host no other series uses — and goes through./configure && make && make installinto/opt/zope:-fcommonis required because gcc ≥ 10 rejects the tentative definitions in Zope 2.10's C extensions.2. The bundle layout is unique to this release
3.0 ships
Products/pluslib/python/, rather than one directory per product as the 2.x bundles do. Per its ownINSTALL.txt, both trees install into their counterparts inside the Zope instance — and<instance>/lib/pythonis onsys.pathbecause Zope 2.10'sZope2/Startup/handlers.pyalways inserts it.The Dockerfile asserts both copies afterwards (
test -f .../CMFPlone/version.txt,test -d .../lib/python/plone), so a layout change in a future bundle fails the build rather than yielding an instance that starts with half of Plone missing. Verified on the built image —lib/pythonholdsarchetypes,five,kss,plone,wicked.3. ElementTree is load-bearing, not defensive
Products/Marshall/handlers/atxml.py, at module scope:The
exceptcatches only the C variant; the pure-Python fallback is unguarded. With noelementtreeinstalled the module raises and Marshall fails to load — which is what the smoke gate's product-load check covers.Version pin
3.0.5, not 3.0.6. The 3.0.6 roll shipped only as
PloneBase-3.0.6.tar.gz— the stripped core, without dependency products — so 3.0.5 is the last fullPlone-*.tar.gzfor the series.Note also the source host:
https://dist.plone.org/Plone-3.0.5.tar.gzdirectly, notdist.plone.org/archive/as 1.0 – 2.5 use.Verification
make lint— hadolint ×8, shellcheck ×11, yqSMOKE_CREATE_SITE=1)-demobuild +make test-demo-3.0make -non all four targets, GNU Make 3.81The
-demorun is the first exercise ofdocker-entrypoint.shin this repository.seed-demo-site.shinvokes/docker-entrypoint.sh start, which now resolves to thezopectl-based tarball entrypoint rather than the buildout one, and drives it through site creation, clean shutdown, and theADMIN_PASSWORDreset on the seeded database. "Build-time passwordadmin:adminno longer authenticates" is what proves the reset landed.Version claims were read out of the built image rather than assumed:
Cold-build status: the local build was cache hits off the source repository, so the cold build happens for the first time in CI — and for this series that cold build includes compiling Zope 2.10.13 from source, so expect this leg to be the slowest in the matrix so far.
Also in this PR
legacy/README.md's shared-scripts table gains both new scripts, and the sentence promising "further scripts arrive with the earlier series they serve" is replaced — there are none left to arrive.Follow-ups
legacy/README.mdstill shows only the localplone-legacy:4.2tags in its quick start, not the publishedplone/plone:4.2. Carried over from Plone 4.1 image #182.legacy/README.md's era paragraph and quick-start examples still name 4.2 alone, though the matrix now spans 3.0 – 4.2 and includes a tarball-era series whose paths differ.