Skip to content

Commit 8889e02

Browse files
committed
Update releasing notes based on 2.7.4b1
1 parent 4eac7ad commit 8889e02

File tree

1 file changed

+103
-60
lines changed

1 file changed

+103
-60
lines changed

release_jy.rst

Lines changed: 103 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ At the same time, let's check that we have the tools we need on the path:
7474
gpg (GnuPG) 2.3.3
7575
libgcrypt 1.9.4
7676
PS git> git --version
77-
git version 2.26.2.windows.1
77+
git version 2.39.0.windows.2
7878
7979
8080
Clone the Repository
@@ -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-
* f17fc25c3 (HEAD -> master, origin/master, origin/HEAD) Support vararg constructors (#201)
100-
* 98953f713 Prepare for work on v2.7.3b2.
101-
* da3bfb368 (tag: v2.7.3b1) Prepare for 2.7.3b1 release.
102-
* 257d6cb6d Use language-neutral locale to infer Python class name
99+
* c6a7d5754 (HEAD -> master, origin/master, origin/HEAD) Exclude Guava META-INF
100+
* 2c3834e21 Check Contributor Agreement (#308)
101+
* f0afabba2 Fix shading (#317)
102+
* bc9d8592a Updates to NEWS and README
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.3rc1 is spelled ``2``, ``7``, ``3``, ``${PY_RELEASE_LEVEL_GAMMA}``, ``1``.
121+
version 2.7.4b1 is spelled ``2``, ``7``, ``4``, ``${PY_RELEASE_LEVEL_BETA}``, ``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.3rc1 is simply set like this: ``version = '2.7.3rc1'``.
125+
Version 2.7.4b1 is simply set like this: ``version = '2.7.4b1'``.
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.
@@ -144,7 +144,7 @@ The following files may need to be updated to match the version you are about to
144144
- [ NNNN ] ...
145145
146146
Replace the first line with the release you are building
147-
e.g. "Jython 2.7.3rc1".
147+
e.g. "Jython 2.7.4b1".
148148
Add anything necessary to the section "New Features".
149149
After publication (not now),
150150
we will add a new, empty, section for the version then under development.
@@ -180,9 +180,9 @@ If you changed anything, commit this set of changes locally:
180180
modified: build.gradle
181181
modified: build.xml
182182
183-
$ git commit -m"Prepare for 2.7.3rc1 release."
184-
[master 63359da88] Prepare for 2.7.3rc1 release.
185-
3 files changed, 6 insertions(+), 6 deletions(-)
183+
$ git commit -m"Prepare for 2.7.4b1 release."
184+
[master 228fe9ef9] Prepare for 2.7.4b1 release.
185+
3 files changed, 4 insertions(+), 4 deletions(-)
186186
187187
188188
Get the JARs
@@ -222,14 +222,13 @@ Run the ``full-check`` target, which does some simple checks on the repository:
222222
223223
force-snapshot-if-polluted:
224224
[echo]
225-
[echo] Change set 63359da88 is not tagged 'v2.7.3rc1' - build is a snapshot.
225+
[echo] Change set 228fe9ef9 is not tagged 'v2.7.4b1' - build is a snapshot.
226226
227227
dump:
228228
[echo] --- build Jython version ---
229-
[echo] jython.version.short = '2.7.3'
230-
[echo] jython.release = '2.7.3rc1'
231-
[echo] jython.version = '2.7.3rc1-SNAPSHOT'
232-
229+
[echo] jython.version.short = '2.7.4'
230+
[echo] jython.release = '2.7.4b1'
231+
[echo] jython.version = '2.7.4b1-SNAPSHOT'
233232
[echo] --- optional libraries ---
234233
[echo] informix = '../support/jdbc-4.50.8.jar'
235234
[echo] oracle = '../support/ojdbc8-19.14.0.0.jar'
@@ -263,7 +262,7 @@ being careful to observe the conventional pattern
263262

264263
.. code-block:: ps1con
265264
266-
PS work> git tag -a -s v2.7.3rc1 -m"Jython 2.7.3rc1"
265+
PS work> git tag -a -s v2.7.4b1 -m"Jython 2.7.4b1"
267266
268267
This may open a pop-up from GPG
269268
that requires a password to unlock your signing key
@@ -274,7 +273,7 @@ It will need to be pushed eventually,
274273
but the current state of your repository is still at the change set tagged.
275274
If something goes wrong after this point but before the eventual push to the repository,
276275
that requires changes and a fresh commit,
277-
it is possible to delete the tag with ``git tag -d v2.7.3rc1``,
276+
it is possible to delete the tag with ``git tag -d v2.7.4b1``,
278277
and make it again at the new tip when you're ready.
279278
The Git book explains why you should not `delete a tag after the push`_.
280279

@@ -310,9 +309,9 @@ Run the ``full-check`` target again:
310309
PS work> ant full-check
311310
Buildfile: D:\git\work\build.xml
312311
313-
[echo] Build is for release of 2.7.3rc1.
312+
[echo] Build is for release of 2.7.4b1.
314313
315-
[echo] jython.version = '2.7.3rc1'
314+
[echo] jython.version = '2.7.4b1'
316315
317316
This time the script confirms it is a release
318317
and the version appears without the "SNAPSHOT" qualifier.
@@ -352,7 +351,7 @@ working in folder ``./build2``.
352351
353352
PS work> .\gradlew --console=plain publish
354353
> Task :generateVersionInfo
355-
This build is for v2.7.3rc1.
354+
This build is for v2.7.4b1.
356355
357356
> Task :generateGrammarSource
358357
...
@@ -374,13 +373,13 @@ working in folder ``./build2``.
374373
> Task :publishMainPublicationToStagingRepoRepository
375374
> Task :publish
376375
377-
BUILD SUCCESSFUL in 6m 2s
376+
BUILD SUCCESSFUL in 7m 1s
378377
16 actionable tasks: 16 executed
379378
380379
Don't worry, this doesn't actually *publish* Jython.
381380
When the build finishes, a JAR that is potentially fit to publish,
382381
and its subsidiary artifacts (source, javadoc, checksums),
383-
will have been created in ``./build2/stagingRepo/org/python/jython-slim/2.7.3rc1``.
382+
will have been created in ``./build2/stagingRepo/org/python/jython-slim/2.7.4b1``.
384383

385384
It can also be "published" to your local Maven cache (usually ``~/.m2/repository``
386385
with the task ``publishMainPublicationToMavenLocal``.
@@ -400,9 +399,9 @@ Let's use Java 11, different from the version we built with.
400399

401400
.. code-block:: ps1con
402401
403-
PS 273rc1-trial> mkdir kit
404-
PS 273rc1-trial> copy "D:\git\work\dist\jython*.jar" .\kit
405-
PS 273rc1-trial> java -jar kit\jython-installer.jar
402+
PS 274b1-trial> mkdir kit
403+
PS 274b1-trial> copy "D:\git\work\dist\jython*.jar" .\kit
404+
PS 274b1-trial> java -jar kit\jython-installer.jar
406405
WARNING: An illegal reflective access operation has occurred
407406
...
408407
DEPRECATION: A future version of pip will drop support for Python 2.7.
@@ -413,19 +412,19 @@ It is worth checking the manifests:
413412

414413
.. code-block:: ps1con
415414
416-
PS 273rc1-trial> jar -xf .\kit\jython-standalone.jar META-INF
417-
PS 273rc1-trial> cat .\META-INF\MANIFEST.MF
415+
PS 274b1-trial> jar -xf .\kit\jython-standalone.jar META-INF
416+
PS 274b1-trial> cat .\META-INF\MANIFEST.MF
418417
Manifest-Version: 1.0
419418
Ant-Version: Apache Ant 1.10.12
420419
Created-By: 1.8.0_321-b07 (Oracle Corporation)
421420
Main-Class: org.python.util.jython
422421
Built-By: Jeff
423422
Implementation-Vendor: Python Software Foundation
424423
Implementation-Title: Jython fat jar with stdlib
425-
Implementation-Version: 2.7.3rc1
424+
Implementation-Version: 2.7.4b1
426425
427426
Name: Build-Info
428-
version: 2.7.3rc1
427+
version: 2.7.4b1
429428
git-build: true
430429
oracle: true
431430
informix: true
@@ -443,10 +442,10 @@ The real test consists in running the regression tests:
443442

444443
.. code-block:: ps1con
445444
446-
PS 273rc1-trial> inst\bin\jython -m test.regrtest -e
447-
== 2.7.3rc1 (tags/v2.7.3rc1:63359da88, Aug 28 2022, 07:26:35)
445+
PS 274b1-trial> inst\bin\jython -m test.regrtest -e
446+
== 2.7.4b1 (tags/v2.7.4b1:228fe9ef9, Apr 1 2024, 20:04:13)
448447
== [Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)]
449-
== platform: java11.0.13
448+
== platform: java11.0.22
450449
== encodings: stdin=ms936, stdout=ms936, FS=utf-8
451450
== locale: default=('en_GB', 'windows-1254'), actual=(None, None)
452451
test_grammar
@@ -480,34 +479,48 @@ When the author last tried, they were these:
480479

481480
.. code-block:: ps1con
482481
483-
PS 273rc1-trial> copy -r inst\Lib\test TestLib\test
484-
PS 273rc1-trial> $env:JYTHONPATH = ".\TestLib"
485-
PS 273rc1-trial> java -jar .\kit\jython-standalone.jar -m test.regrtest -e
486-
== 2.7.3rc1 (tags/v2.7.3rc1:63359da88, Aug 28 2022, 07:26:35)
482+
PS 274b1-trial> copy -r inst\Lib\test TestLib\test
483+
PS 274b1-trial> $env:JYTHONPATH = ".\TestLib"
484+
PS 274b1-trial> java -jar kit\jython-standalone.jar -m test.regrtest -e
485+
== 2.7.4b1 (tags/v2.7.4b1:228fe9ef9, Apr 1 2024, 20:04:13)
487486
== [Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)]
488-
== platform: java11.0.13
487+
== platform: java11.0.22
489488
== encodings: stdin=ms936, stdout=ms936, FS=utf-8
490489
== locale: default=('en_GB', 'windows-1254'), actual=(None, None)
491490
test_grammar
492491
test_opcodes
493492
...
493+
test_zlib
494+
test_zlib_jy
494495
338 tests OK.
495496
17 tests skipped:
496497
test_codecmaps_hk test_coerce_jy test_curses test_dict2java
497498
test_exceptions_jy test_java_integration test_java_subclasses
498499
test_java_visibility test_jbasic test_joverload test_jy_internals
499500
test_set_jy test_smtpnet test_socketserver test_subprocess
500501
test_urllib2net test_urllibnet
501-
...
502-
32 fails unexpected:
502+
10 skips unexpected:
503+
test_coerce_jy test_dict2java test_exceptions_jy
504+
test_java_integration test_java_subclasses test_java_visibility
505+
test_jbasic test_joverload test_jy_internals test_set_jy
506+
33 tests failed:
503507
test_argparse test_classpathimporter test_cmd_line
504508
test_cmd_line_script test_codecs_jy test_compile_jy test_email_jy
505509
test_email_renamed test_gc_jy test_httpservers test_import
506510
test_import_jy test_json test_jython_initializer
507511
test_jython_launcher test_lib2to3 test_linecache test_marshal
508512
test_os_jy test_pdb test_platform test_popen test_quopri test_repr
509-
test_site test_site_jy test_ssl_jy test_sys test_threading
510-
test_urllib2 test_warnings test_zipimport_support
513+
test_site test_site_jy test_ssl_jy test_sys test_sys_jy
514+
test_threading test_urllib2 test_warnings test_zipimport_support
515+
33 fails unexpected:
516+
test_argparse test_classpathimporter test_cmd_line
517+
test_cmd_line_script test_codecs_jy test_compile_jy test_email_jy
518+
test_email_renamed test_gc_jy test_httpservers test_import
519+
test_import_jy test_json test_jython_initializer
520+
test_jython_launcher test_lib2to3 test_linecache test_marshal
521+
test_os_jy test_pdb test_platform test_popen test_quopri test_repr
522+
test_site test_site_jy test_ssl_jy test_sys test_sys_jy
523+
test_threading test_urllib2 test_warnings test_zipimport_support
511524
512525
Most of these failures are in tests that assume
513526
the library is a real file system.
@@ -541,7 +554,7 @@ such as your personal Maven cache:
541554
PS work> .\gradlew --console=plain publishMainPublicationToMavenLocal
542555
543556
This will deliver build artifacts to
544-
``~/.m2/repository/org/python/jython-slim/2.7.3rc1``.
557+
``~/.m2/repository/org/python/jython-slim/2.7.4b1``.
545558
One can construct an application to run with that as a dependency like this:
546559

547560
.. code-block:: groovy
@@ -557,7 +570,7 @@ One can construct an application to run with that as a dependency like this:
557570
}
558571
559572
dependencies {
560-
implementation 'org.python:jython-slim:2.7.3rc1'
573+
implementation 'org.python:jython-slim:2.7.4b1'
561574
}
562575
563576
application {
@@ -587,6 +600,28 @@ Tests have about the same success rate as for the stand-alone Jython JAR.
587600
Notably ``test_ssl_jy`` passes here because a genuine (not wrapped)
588601
Bouncy Castle JAR is on the path.
589602

603+
Tests end with a failure status under Gradle, even when all tests pass,
604+
because ``regrtest`` calls ``sys.exit``,
605+
which raises ``SystemExit``.
606+
They look like:
607+
608+
.. code-block:: text
609+
610+
611+
All 2 tests OK.
612+
Exception in thread "MainThread" Traceback (most recent call last):
613+
File "<string>", line 1, in <module>
614+
File ".\TestLib\test\regrtest.py", line 521, in main
615+
sys.exit(surprises > 0)
616+
SystemExit: False
617+
618+
> Task :run FAILED
619+
620+
FAILURE: Build failed with an exception.
621+
622+
One could improve the driver program, but it is complicated to do properly.
623+
624+
590625
.. _jython-push-with-tag:
591626

592627
Only now is it safe to ``git push``
@@ -629,10 +664,10 @@ During the build, ``gpg`` may prompt you (in a dialogue box)
629664
for the pass-phrase that protects your private signing key.
630665
This leaves the following new artifacts in ``./publications``:
631666

632-
* ``jython-2.7.3rc1-bundle.jar``
633-
* ``jython-standalone-2.7.3rc1-bundle.jar``
634-
* ``jython-installer-2.7.3rc1-bundle.jar``
635-
* ``jython-slim-2.7.3rc1-bundle.jar``
667+
* ``jython-2.7.4b1-bundle.jar``
668+
* ``jython-standalone-2.7.4b1-bundle.jar``
669+
* ``jython-installer-2.7.4b1-bundle.jar``
670+
* ``jython-slim-2.7.4b1-bundle.jar``
636671

637672

638673
Publication
@@ -670,10 +705,10 @@ which now appears to have been updated with the changes.
670705
PS work> gpg --list-secret-keys
671706
C:\Users\Jeff\AppData\Roaming\gnupg\pubring.kbx
672707
-----------------------------------------------
673-
sec rsa2048 2019-10-20 [SC] [expires: 2024-11-20]
708+
sec rsa2048 2019-10-20 [SC] [expires: 2028-02-26]
674709
C8C4B9DC1E031F788B12882B875C3EF9DC4638E3
675710
uid [ultimate] Jeff Allen <[email protected]>
676-
ssb rsa2048 2019-10-20 [E] [expires: 2023-11-21]
711+
ssb rsa2048 2019-10-20 [E] [expires: 2028-02-26]
677712
678713
The `OpenPGP key server`_ provides an interface to query
679714
a PGP public key.
@@ -682,7 +717,8 @@ It may take a few hours for your key to wash up at the machine
682717
Sonatype consults.
683718

684719
Generation and publication of a key are one-time actions,
685-
except that the key has a finite lifetime (2 years here).
720+
except that the key has a finite lifetime with possible extensions.
721+
(The key here has been extended twice.)
686722
See `Working with PGP Signatures`_ for how to extend the life of a key.
687723

688724
.. note:: You may decide to create a new key for signing future releases.
@@ -708,10 +744,10 @@ You are now ready to upload bundles acceptable to Sonatype.
708744
select "Artifact Bundle".
709745
* Navigate to the ``./publications`` folder and upload in turn:
710746

711-
* ``jython-slim-2.7.3rc1-bundle.jar``
712-
* ``jython-2.7.3rc1-bundle.jar``
713-
* ``jython-standalone-2.7.3rc1-bundle.jar``
714-
* ``jython-installer-2.7.3rc1-bundle.jar``
747+
* ``jython-slim-2.7.4b1-bundle.jar``
748+
* ``jython-2.7.4b1-bundle.jar``
749+
* ``jython-standalone-2.7.4b1-bundle.jar``
750+
* ``jython-installer-2.7.4b1-bundle.jar``
715751

716752
For some reason (privacy?) the display shows a fake file path
717753
but the name is correct.
@@ -789,17 +825,24 @@ We do not know for sure the version next to be publicly released,
789825
so we use the smallest increment that results in a valid version number.
790826

791827
After an alpha, beta or release candidate,
792-
assume the successor version to be a one-up serial of the same release level,
828+
assume the successor version to be a one-up serial of the *same* release level,
793829
incrementing ``jython.release_serial``.
794830
After a final release,
795831
assume the successor to be an alpha of the next micro-release.
796832
For example, ``2.7.2b2`` is followed by ``2.7.2b3``,
797833
and ``2.7.2`` by ``2.7.3a1``.
798834

799-
If the version under development is ``2.7.3b2``,
800-
the build system will label the code as ``2.7.3b2-DEV`` in the developer build.
801-
If you build an installer, or dry-run a release, it will be ``2.7.3b2-SNAPSHOT``.
802-
You can read this as a version that "may eventually become" ``2.7.3b2`` etc..
835+
If the version under development is ``2.7.4b2``,
836+
the build system will label the code as ``2.7.4b2-DEV`` in the developer build.
837+
If you build an installer, or dry-run a release, it will be ``2.7.4b2-SNAPSHOT``.
838+
You can read this as a version that "may eventually become" ``2.7.4b2`` etc..
839+
840+
However, the version under development in this scheme will often be one that
841+
never sees a release.
842+
E.g. when we are apparently working on ``2.7.4b2``,
843+
the next release is quite likely to be ``2.7.4rc1`` instead,
844+
but we can't guarantee that things will go that well.
845+
It's a harmless paradox.
803846

804847
Make this change in both ``build.xml`` and ``build.gradle``.
805848
See the section :ref:`changes-preparing-for-a-release` for details.

0 commit comments

Comments
 (0)