Some comments that might help in the review.

Packaging
----------
1. This is a derivative of the openjdk-21 source package [1]. Though it 
contains additional dependencies and a different upstream code repository, the 
Debian packaging code is borrowed from the openjdk-21 and modified to suit 
openjdk/crac needs.

2. The binary openjdk-21-crac-* packages may be installed alongside the
vanilla openjdk-21-* packages. They may be configured using `update-
alternatives --config java`.

3. I have proposed vendoring in three dependencies and here are the
rationales:

   googletest: openjdk-21 also vendors in a specific version of
googletest because it's upstream [2] uses it as a test-dependency.
Because the openjdk-21-crac upstream [3] is also based upon the
openjdk-21 upstream and we need the same version of googletest vendored
in.

   crac-criu: The checkpoint/restore functionality in openjdk-21-crac is
driven by criu [4]. We have a 'criu' package in universe[5]. But what
the openjdk/crac project uses is a significantly modified version of
criu, named crac-criu [6]. Given that crac-criu binaries are
"specialized criu binaries" for the openjdk/crac project, they are
unlikely to have an independent identity in the Ubuntu archive. I hence
thought it is better to vendor in this dependency. I have updated the
debian/copyrights file to include the criu licenses.

   lz4: Things get complicated here. The upstream crac-criu code pulls
in a specific version of lz4 (which happens to be their last release) as
a 'git submodule' [7]. Along with the static liblz4.a, the upstream
crac-criu Makefile also builds another liblz4io.a from a specific object
file, and in turn links these two archives into the crac-criu binaries
[8]. I think this will be difficult to emulate by using lz4 as a
builddep or through Built-Using (which I haven't explored much). I have
vendored-in the latest official lz4 release and included the relevant
licenses in the debian/copyrights file.

Maintenance
-----------
1. The openjdk-21-crac upstream [3] will have the latest JDK 21 security 
updates [2] augmented with openjdk/crac patches from [9]. For now, it includes 
security/CVE fixes that the April 2024 security updates of JDK 21. I intend to 
keep rebasing the openjdk/crac patches to the latest JDK 21 security updates on 
a quarterly basis (which is the openjdk project's cadence).

2. The crac-criu upstream [6] has specialized crac patches based upon
checkpoint-restore/criu [10]. The latter exists in universe and has been
stable over the last year. However, in the case of any CVEs being
reported/fixed in checkpoint-restore/criu, I intend to bring them over
to crac-criu as soon as they are published upstream.

Suitability
-----------
1. The licenses and copyrights of all vendored dependencies have been included 
in the debian/copyright file.

[1] https://launchpad.net/ubuntu/+source/openjdk-21
[2] https://github.com/openjdk/jdk21u
[3] https://github.com/canonical/openjdk-21-crac
[4] https://criu.org/Main_Page
[5] https://launchpad.net/ubuntu/+source/criu
[6] https://github.com/canonical/crac-criu
[7] https://github.com/canonical/crac-criu/blob/crac/Makefile#L250
[8] https://github.com/canonical/crac-criu/blob/crac/Makefile#L253
[9] https://github.com/openjdk/crac
[10] https://github.com/checkpoint-restore/criu

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2073612

Title:
  [needs-packaging] openjdk-21-crac

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+bug/2073612/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to