@@ -19,8 +19,8 @@ To complete a public release you need the following things:
1919
2020* Two JDBC driver JARs that we do not track with version control (licensing restrictions):
2121
22- * Informix (currently ``jdbc-4.50.8 .jar `` for Java 8).
23- * Oracle (currently ``ojdbc8-19.14 .0.0 .jar `` for Java 8).
22+ * Informix (currently ``jdbc-4.50.11 .jar `` for Java 8).
23+ * Oracle (currently ``ojdbc8-23.4 .0.24.05 .jar `` for Java 8).
2424
2525.. Padding. See https://github.com/sphinx-doc/sphinx/issues/2258
2626
@@ -69,7 +69,7 @@ At the same time, let's check that we have the tools we need on the path:
6969 PS git> java -version
7070 java version "1.8.0_321"
7171 PS git> ant -version
72- Apache Ant(TM) version 1.10.12 compiled on October 13 2021
72+ Apache Ant(TM) version 1.10.14 compiled on August 16 2023
7373 PS git> gpg --version
7474 gpg (GnuPG) 2.3.3
7575 libgcrypt 1.9.4
@@ -96,10 +96,10 @@ the last commits should be the same as in the project repository:
9696.. code-block :: ps1con
9797
9898 PS work> git log --oneline --graph -4
99- * d9e1d72e7 (HEAD -> master, origin/master, origin/HEAD) Pin launcher tests to MacOS 12 for Java 8
100- * f3d868433 Add upward compatibility to Java 9 Modularity (#325)
101- * 668a95e83 Begin to identify as version 2.7.4b2
102- * 228fe9ef9 (tag: v2.7.4b1) Prepare for 2.7.4b1 release.
99+ * 245deba51 (HEAD -> master, origin/master, origin/HEAD) Now with sensible timeouts.
100+ * 66600ad7e Impose timeout on regrtest workflows
101+ * f14a91e6a Note blocked from updating Netty by issue 349
102+ * 7df6cbd34 Update Bouncy Castle JARs to 1.78.1
103103
104104 .. _changes-preparing-for-a-release :
105105
@@ -118,11 +118,11 @@ The following files may need to be updated to match the version you are about to
118118 * ``jython.release_serial ``.
119119
120120 In the language of these properties,
121- version 2.7.4b2 is spelled ``2 ``, ``7 ``, ``4 ``, ``${PY_RELEASE_LEVEL_BETA } ``, ``2 ``.
121+ version 2.7.4rc1 is spelled ``2 ``, ``7 ``, ``4 ``, ``${PY_RELEASE_LEVEL_GAMMA } ``, ``1 ``.
122122 Every other expression needing a version number is derived from these 5 values.
123123* ``build.gradle ``: The version number appears as a simple string property ``version ``,
124124 near the top of the file.
125- Version 2.7.4b2 is simply set like this: ``version = '2.7.4b2 ' ``.
125+ Version 2.7.4rc1 is simply set like this: ``version = '2.7.4rc1 ' ``.
126126* ``src/org/python/core/imp.java ``: If there has been any compiler change,
127127 increment the magic number ``APIVersion ``.
128128 This magic declares old compiled files incompatible, forcing a fresh compilation for users.
@@ -143,7 +143,7 @@ The following files may need to be updated to match the version you are about to
143143 - [ NNNN ] ...
144144
145145 Replace the first line with the release you are building
146- e.g. "Jython 2.7.4b2 ".
146+ e.g. "Jython 2.7.4rc1 ".
147147 Add anything necessary to the section "New Features".
148148 After publication (not now),
149149 we will add a new, empty, section for the version then under development.
@@ -177,11 +177,12 @@ If you changed anything, commit this set of changes locally:
177177 Changes to be committed:
178178 (use " git restore --staged <file>..." to unstage)
179179 modified: NEWS
180+ modified: build.gradle
181+ modified: build.xml
180182
181-
182- $ git commit -m" Prepare for 2.7.4b2 release."
183- [master 30d2f859a] Prepare for 2.7.4b2 release.
184- 1 file changed, 7 insertions(+), 8 deletions(-)
183+ $ git commit -m" Prepare for 2.7.4rc1 release."
184+ [master 3562755e5] Prepare for 2.7.4rc1 release.
185+ 3 files changed, 6 insertions(+), 4 deletions(-)
185186
186187
187188 Get the JARs
@@ -190,7 +191,7 @@ Get the JARs
190191Find the database driver JARs from reputable sources.
191192
192193* The Informix driver may be obtained from Maven Central.
193- Version ``jdbc-4.50.8 .jar `` is known to work on Java 8.
194+ Version ``jdbc-4.50.11 .jar `` is known to work on Java 8.
194195
195196* The Oracle JDBC driver may also be found at Maven Central.
196197 (The Oracle JARs on Maven Central are now official.)
@@ -202,8 +203,8 @@ Create an ``ant.properties`` correspondingly:
202203.. code-block :: properties
203204
204205 # Ant properties defined externally to the release build.
205- informix.jar = ../support/jdbc-4.50.8 .jar
206- oracle.jar = ../support/ojdbc8-19.14 .0.0 .jar
206+ informix.jar = ../support/jdbc-4.50.11 .jar
207+ oracle.jar = ../support/ojdbc8-23.4 .0.24.05 .jar
207208
208209 Note that this file is ephemeral and local:
209210it is ignored by Git because it is named in ``.gitignore ``.
@@ -221,16 +222,16 @@ Run the ``full-check`` target, which does some simple checks on the repository:
221222
222223 force-snapshot-if-polluted:
223224 [echo]
224- [echo] Change set 30d2f859a is not tagged 'v2.7.4b2 ' - build is a snapshot.
225+ [echo] Change set 3562755e5 is not tagged 'v2.7.4rc1 ' - build is a snapshot.
225226
226227 dump:
227228 [echo] --- build Jython version ---
228229 [echo] jython.version.short = '2.7.4'
229- [echo] jython.release = '2.7.4b2 '
230- [echo] jython.version = '2.7.4b2 -SNAPSHOT'
230+ [echo] jython.release = '2.7.4rc1 '
231+ [echo] jython.version = '2.7.4rc1 -SNAPSHOT'
231232 [echo] --- optional libraries ---
232- [echo] informix = '../support/jdbc-4.50.8 .jar'
233- [echo] oracle = '../support/ojdbc8-19.14 .0.0 .jar'
233+ [echo] informix = '../support/jdbc-4.50.11 .jar'
234+ [echo] oracle = '../support/ojdbc8-23.4 .0.24.05 .jar'
234235
235236 It makes an extensive dump,
236237in which lines like those above matter particularly.
@@ -261,7 +262,7 @@ being careful to observe the conventional pattern
261262
262263.. code-block :: ps1con
263264
264- PS work> git tag -a -s v2.7.4b2 -m"Jython 2.7.4b2 "
265+ PS work> git tag -a -s v2.7.4rc1 -m"Jython 2.7.4rc1 "
265266
266267 This may open a pop-up from GPG
267268that requires a password to unlock your signing key
@@ -308,9 +309,9 @@ Run the ``full-check`` target again:
308309 PS work> ant full-check
309310 Buildfile: D:\git\work\build.xml
310311
311- [echo] Build is for release of 2.7.4b2 .
312+ [echo] Build is for release of 2.7.4rc1 .
312313
313- [echo] jython.version = '2.7.4b2 '
314+ [echo] jython.version = '2.7.4rc1 '
314315
315316 This time the script confirms it is a release
316317and the version appears without the "SNAPSHOT" qualifier.
@@ -350,7 +351,7 @@ working in folder ``./build2``.
350351
351352 PS work> .\gradlew --console=plain publish
352353 > Task :generateVersionInfo
353- This build is for v2.7.4b2 .
354+ This build is for v2.7.4rc1 .
354355
355356 > Task :generateGrammarSource
356357 ...
@@ -372,13 +373,13 @@ working in folder ``./build2``.
372373 > Task :publishMainPublicationToStagingRepoRepository
373374 > Task :publish
374375
375- BUILD SUCCESSFUL in 7m 1s
376+ BUILD SUCCESSFUL in 10m 10s
376377 16 actionable tasks: 16 executed
377378
378379 Don't worry, this doesn't actually *publish * Jython.
379380When the build finishes, a JAR that is potentially fit to publish,
380381and its subsidiary artifacts (source, javadoc, checksums),
381- will have been created in ``./build2/stagingRepo/org/python/jython-slim/2.7.4b2 ``.
382+ will have been created in ``./build2/stagingRepo/org/python/jython-slim/2.7.4rc1 ``.
382383
383384It can also be "published" to your local Maven cache (usually ``~/.m2/repository ``
384385with the task ``publishMainPublicationToMavenLocal ``.
@@ -398,9 +399,9 @@ Let's use Java 11, different from the version we built with.
398399
399400.. code-block :: ps1con
400401
401- PS 274b1 -trial> mkdir kit
402- PS 274b1 -trial> copy "D:\git\work\dist\jython*.jar" .\kit
403- PS 274b1 -trial> java -jar kit\jython-installer.jar
402+ PS 274rc1 -trial> mkdir kit
403+ PS 274rc1 -trial> copy "D:\git\work\dist\jython*.jar" .\kit
404+ PS 274rc1 -trial> java -jar kit\jython-installer.jar
404405 WARNING: An illegal reflective access operation has occurred
405406 ...
406407 DEPRECATION: A future version of pip will drop support for Python 2.7.
@@ -411,20 +412,20 @@ It is worth checking the manifests:
411412
412413.. code-block :: ps1con
413414
414- PS 274b1 -trial> jar -xf .\kit\jython-standalone.jar META-INF
415- PS 274b2 -trial> cat .\META-INF\MANIFEST.MF
415+ PS 274rc1 -trial> jar -xf .\kit\jython-standalone.jar META-INF
416+ PS 274rc1 -trial> cat .\META-INF\MANIFEST.MF
416417 Manifest-Version: 1.0
417- Ant-Version: Apache Ant 1.10.12
418+ Ant-Version: Apache Ant 1.10.14
418419 Created-By: 1.8.0_321-b07 (Oracle Corporation)
419420 Main-Class: org.python.util.jython
420421 Built-By: Jeff
421422 Automatic-Module-Name: org.python.jython2.standalone
422423 Implementation-Vendor: Python Software Foundation
423424 Implementation-Title: Jython fat jar with stdlib
424- Implementation-Version: 2.7.4b2
425+ Implementation-Version: 2.7.4rc1
425426
426427 Name: Build-Info
427- version: 2.7.4b2
428+ version: 2.7.4rc1
428429 git-build: true
429430 oracle: true
430431 informix: true
@@ -442,12 +443,12 @@ The real test consists in running the regression tests:
442443
443444.. code-block :: ps1con
444445
445- PS 274b2 -trial> inst\bin\jython -m test.regrtest -e
446- == 274b2 (tags/v2.7.4b2:30d2f859a, May 4 2024, 13:46:27 )
446+ PS 274rc1 -trial> inst\bin\jython -m test.regrtest -e
447+ == 2.7.4rc1 (tags/v2.7.4rc1:3562755e5, Jul 29 2024, 14:01:55 )
447448 == [Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)]
448449 == platform: java11.0.22
449450 == encodings: stdin=ms936, stdout=ms936, FS=utf-8
450- == locale: default=('en_GB', 'windows-1254 '), actual=(None, None)
451+ == locale: default=('en_GB', 'windows-1252 '), actual=(None, None)
451452 test_grammar
452453 test_opcodes
453454 test_dict
@@ -479,14 +480,14 @@ When the author last tried, they were these:
479480
480481.. code-block :: ps1con
481482
482- PS 274b2 -trial> copy -r inst\Lib\test TestLib\test
483- PS 274b2 -trial> $env:JYTHONPATH = ".\TestLib"
484- PS 274b2 -trial> java -jar kit\jython-standalone.jar -m test.regrtest -e
485- == 274b2 (tags/v2.7.4b2:30d2f859a, May 4 2024, 13:46:27 )
483+ PS 274rc1 -trial> copy -r inst\Lib\test TestLib\test
484+ PS 274rc1 -trial> $env:JYTHONPATH = ".\TestLib"
485+ PS 274rc1 -trial> java -jar kit\jython-standalone.jar -m test.regrtest -e
486+ == 2.7.4rc1 (tags/v2.7.4rc1:3562755e5, Jul 29 2024, 14:01:55 )
486487 == [Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)]
487488 == platform: java11.0.22
488489 == encodings: stdin=ms936, stdout=ms936, FS=utf-8
489- == locale: default=('en_GB', 'windows-1254 '), actual=(None, None)
490+ == locale: default=('en_GB', 'windows-1252 '), actual=(None, None)
490491 test_grammar
491492 test_opcodes
492493 ...
@@ -554,7 +555,7 @@ such as your personal Maven cache:
554555 PS work> .\gradlew --console=plain publishMainPublicationToMavenLocal
555556
556557 This will deliver build artifacts to
557- ``~/.m2/repository/org/python/jython-slim/2.7.4b2 ``.
558+ ``~/.m2/repository/org/python/jython-slim/2.7.4rc1 ``.
558559One can construct an application to run with that as a dependency like this:
559560
560561.. code-block :: groovy
@@ -570,7 +571,7 @@ One can construct an application to run with that as a dependency like this:
570571 }
571572
572573 dependencies {
573- implementation 'org.python:jython-slim:2.7.4b2 '
574+ implementation 'org.python:jython-slim:2.7.4rc1 '
574575 }
575576
576577 application {
@@ -588,11 +589,13 @@ prepared for the stand-alone Jython.
588589 import org.python.util.PythonInterpreter ;
589590 public class RegressionTest {
590591 public static void main (String [] args ) {
591- PythonInterpreter interp = new PythonInterpreter ();
592- interp. exec(" import sys, os" );
593- interp. exec(" sys.path[0] = os.sep.join(['.', 'TestLib'])" );
594- interp. exec(" from test import regrtest as rt" );
595- interp. exec(" rt.main(expected=True)" );
592+ try (PythonInterpreter interp = new PythonInterpreter ()) {
593+ interp. exec(" import sys, os" );
594+ interp. exec(" sys.path[0] = os.sep.join(['.', 'TestLib'])" );
595+ interp. exec(" sys.argv[1:] = ['-e']" );
596+ interp. exec(" from test import regrtest as rt" );
597+ interp. exec(" rt.main()" );
598+ }
596599 }
597600 }
598601
@@ -603,21 +606,19 @@ Bouncy Castle JAR is on the path.
603606Tests end with a failure status under Gradle, even when all tests pass,
604607because ``regrtest `` calls ``sys.exit ``,
605608which raises ``SystemExit ``.
606- They look like:
609+ It looks like:
607610
608611.. code-block :: text
609612
610-
611- All 2 tests OK.
613+ 333 tests OK.
614+ ...
615+ 33 tests failed:
616+ ...
612617 Exception in thread "MainThread" Traceback (most recent call last):
613618 File "<string>", line 1, in <module>
614619 File ".\TestLib\test\regrtest.py", line 521, in main
615620 sys.exit(surprises > 0)
616- SystemExit: False
617-
618- > Task :run FAILED
619-
620- FAILURE: Build failed with an exception.
621+ SystemExit: True
621622
622623 One could improve the driver program, but it is complicated to do properly.
623624
@@ -664,10 +665,10 @@ During the build, ``gpg`` may prompt you (in a dialogue box)
664665for the pass-phrase that protects your private signing key.
665666This leaves the following new artifacts in ``./publications ``:
666667
667- * ``jython-2.7.4b2 -bundle.jar ``
668- * ``jython-standalone-2.7.4b2 -bundle.jar ``
669- * ``jython-installer-2.7.4b2 -bundle.jar ``
670- * ``jython-slim-2.7.4b2 -bundle.jar ``
668+ * ``jython-2.7.4rc1 -bundle.jar ``
669+ * ``jython-standalone-2.7.4rc1 -bundle.jar ``
670+ * ``jython-installer-2.7.4rc1 -bundle.jar ``
671+ * ``jython-slim-2.7.4rc1 -bundle.jar ``
671672
672673
673674Publication
@@ -744,10 +745,10 @@ You are now ready to upload bundles acceptable to Sonatype.
744745 select "Artifact Bundle".
745746* Navigate to the ``./publications `` folder and upload in turn:
746747
747- * ``jython-slim-2.7.4b2 -bundle.jar ``
748- * ``jython-2.7.4b2 -bundle.jar ``
749- * ``jython-standalone-2.7.4b2 -bundle.jar ``
750- * ``jython-installer-2.7.4b2 -bundle.jar ``
748+ * ``jython-slim-2.7.4rc1 -bundle.jar ``
749+ * ``jython-2.7.4rc1 -bundle.jar ``
750+ * ``jython-standalone-2.7.4rc1 -bundle.jar ``
751+ * ``jython-installer-2.7.4rc1 -bundle.jar ``
751752
752753 For some reason (privacy?) the display shows a fake file path
753754 but the name is correct.
@@ -772,7 +773,7 @@ from the "Staging Repositories" tab in the repository manager.
772773 download the (as yet unreleased) artifacts from Sonatype and test them,
773774 repeating the section :ref: `test-what-you-built `.
774775 A staging URL has form:
775- ``https://oss.sonatype.org/content/repositories/orgpython-1110 ``
776+ ``https://oss.sonatype.org/content/repositories/orgpython-1105 ``
776777 where the final number increments with each upload.
777778* When you are absolutely satisfied ... "Release" the bundles.
778779 This will cause them to appear in the Maven `Central Repository `_
0 commit comments