From 86b29e2bfd90041b1b853fb4295234c703e97cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Fri, 28 Aug 2026 16:48:38 -0300 Subject: [PATCH] Add the Plone 1.0 legacy image, completing the matrix Eleventh and last series. Refs #197. Every release from 1.0 to 4.2 now ships. Plone 1.0.6 with CMF 1.3.3 on Zope 2.7.8 / Python 2.3.7 -- the same stack 2.0 uses. No new shared scripts. 1.0 is the only image in the matrix assembled from more than one artifact, and the only one that patches upstream source. No single 1.0.6 artifact carries a working Plone. CMFPlone/INSTALL.txt asks for CMFPlone, DCWorkflow and Formulator plus CMF 1.3 or later, and the 1.0.6 tarball holds only the first. Neither DCWorkflow nor Formulator is separately downloadable any more -- old.zope.dev 404s for both -- so the 1.0.5 release bundle supplies them, and CMF comes from old.zope.dev. Three sources for one image, where every other series has one. The two patches are consequences of running a Zope 2.6-era Plone on 2.7, and they live in 1.0/patches/ as unified diffs applied with `patch -p1 --forward --batch`, never as in-line sed. --forward makes an already-applied patch a hard failure rather than a silent re-application, and the build stops if either is rejected. 0001 widens an exception handler in isExpired.py. Zope 2.6's DateTime raised IndexError on an unparseable string, which is what the handler was written against; 2.7's raises DateTime.SyntaxError, and CMF hands it the literal string 'None' whenever no expiry is set -- so the exception escaped and every page render 500'd. 0002 splits HTML close-tags inside a diff --git a/legacy/2.0/README.md b/legacy/2.0/README.md index 48ed669..4abe104 100644 --- a/legacy/2.0/README.md +++ b/legacy/2.0/README.md @@ -1,7 +1,8 @@ # Plone 2.0 legacy image Plone 2.0.5 on Zope 2.7.8 / Python 2.3.7. Tarball-era template (no buildout). -The oldest image in the matrix. +The oldest image that runs upstream source unmodified: 1.0 is older, but needs +two patches to run on this same Zope 2.7.8 stack. **Not for production.** Zope 2.7 has known, unpatched vulnerabilities. This image exists for content extraction, migration rehearsal, and historical inspection. diff --git a/legacy/Makefile b/legacy/Makefile index 6b68d0e..84ea2de 100644 --- a/legacy/Makefile +++ b/legacy/Makefile @@ -14,7 +14,7 @@ PLATFORM ?= linux/amd64 # the matrix in README.md, and the ALL list in # ../.github/workflows/legacy-build.yml. One series lands per pull request; # append here as each one is ported. -SERIES := 2.0 2.1 2.5 3.0 3.1 3.2 3.3 4.0 4.1 4.2 +SERIES := 1.0 2.0 2.1 2.5 3.0 3.1 3.2 3.3 4.0 4.1 4.2 # Builder used for the -demo images, which MUST be a `docker`-driver one: # demo/Dockerfile's FROM reads the base image out of the local image store, and @@ -42,6 +42,11 @@ DEMO_TEST_PASSWORD ?= smoke-not-admin # these images are built from. # [V 2026-08-20] 4.1.6 is both the final 4.1.x release and the last # UnifiedInstaller published for the series, so this row needs no compromise. +# [V 2026-08-20] 1.0.6 is the last 1.0.x with a working download, and the only +# one: Plone-1.0.tar.gz, -1.0.1 and -1.0.2 are listed at dist.plone.org/archive +# but every one of them 404s. Note it ships CMFPlone ALONE -- DCWorkflow and +# Formulator come from CMFPlone1.0.5.tar.gz, and CMF from old.zope.dev. +FULL_VERSION_1.0 := 1.0.6 FULL_VERSION_2.0 := 2.0.5 FULL_VERSION_2.1 := 2.1.4 # [V 2026-08-20] There is no Plone 2.5.5 on dist.plone.org (nor /download/ diff --git a/legacy/README.md b/legacy/README.md index 2450501..531962b 100644 --- a/legacy/README.md +++ b/legacy/README.md @@ -22,9 +22,11 @@ They exist for content extraction, migration rehearsal, and archaeology. | 2.5 | 2.5.4-2 | 2.9.12 | 2.4.6 | tarball | `simplejson` 2.0.9 (installed) | **done** | | 2.1 | 2.1.4 | 2.8.12 | 2.4.6 | tarball | `simplejson` 2.0.9 (installed) | **done** | | 2.0 | 2.0.5 | 2.7.8 | 2.3.7 | tarball | `simplejson` 1.9.3 (installed) | **done** | +| 1.0 | 1.0.6 | 2.7.8 | 2.3.7 | tarball | `simplejson` 1.9.3 (installed) | **done**, [patched](1.0/README.md#the-two-patches) | -The matrix extends down to Plone 1.0. One series lands per pull request; the -remaining one follows these. +The matrix is **complete**: every series from 1.0 to 4.2 is ported. 1.0 is the +only image that patches upstream source, because it targets Zope 2.6 and has +to run on 2.7. Adding a series touches eight places. Miss one and the build still passes — the image is simply never built, or the docs quietly disagree with what ships — so