version numbers for distribution builds?

Magnus Ihse Bursie magnus.ihse.bursie at
Fri Oct 27 10:46:51 UTC 2017

On 2017-10-27 12:21, David Holmes wrote:
> Adding build-dev.
> David
> On 27/10/2017 9:13 AM, Matthias Klose wrote:
>> On 27.10.2017 00:56, Matthias Klose wrote:
>>> Hi,
>>> I recently learned that I should configure an openjdk build with an 
>>> empty
>>> -with-version-pre string, and with any package information stuffed 
>>> into the
>>> --with-version-opt argument.
>>>    --with-version-pre='' --with-version-opt='Debian-9.0.1+11-1'
>>> 9.0.1+11 is what I call the upstream version, directly derived from 
>>> the tag in
>>> the mercurial repository.  The part after the dash is the packaging 
>>> release and
>>> gets incremented when more than upload to the distribution is based 
>>> on the same
>>> upstream version.
>>> However using that I get
>>> configure: WARNING: --with-version-opt value has been sanitized from
>>> 'Debian-9.0.1+11-1' to 'Debian-9.0.111-1'
>>> which makes the version string somehow cryptic.  Why is there a 
>>> reason that the
>>> version string is mangled?  Is there a recommendation how to form 
>>> the version
>>> for a source release?
>> $ java -version
>> openjdk version "9.0.1"
>> OpenJDK Runtime Environment (build 9.0.1+0-Debian-9.0.111-1)
>> OpenJDK 64-Bit Server VM (build 9.0.1+0-Debian-9.0.111-1, mixed mode)
>> Omar suggested on irc to use
>>    --with-version-pre='' --with-version-build=11 
>> --with-version-opt='Debian.1
>> however that will lead to 9.0.1+11-Debian.1, which doesn't match the 
>> package
>> version either.  It looks like this whole versioning schema is only 
>> fit for
>> upstream builds, and doesn't address any versioning in the downstream 
>> builds.
>> Maybe I'm missing something, but how can I include the string 
>> Debian-9.0.1+11-1
>> into that build information?
Unfortunately, you can't. JEP 223 specifices what a valid Java version 
string looks like:

I believe your intention is correct to add the distribution versioning 
to the "opt" part, but that is limited to containing ([-a-zA-Z0-9\.]+) 
according to JEP 223, so it cannot contain a "+". (This is due to the 
fact that "+" has a special meaning as the build prefix, and without 
this restriction, version strings could become ambigious to parse.

If you want the full version number repeated in the opt string, I 
recommend replacing the "+" with a "-".

Otherwise I'd recommend Omar's suggestion. I believe that was the 
intention of the JEP 223 design. It will contain the version number of 
the JDK, the build number, and the additional (opt) part saying that 
this is a Debian build, with a Debian-specific version numbering of 1.

>> Matthias

More information about the jdk-dev mailing list