Interesting point.

Should .diz files be removed when packaging JDK/JRE for Linux ?

2012/9/5 David Holmes <david.hol...@oracle.com>:
> Dan,
>
> Sorry, not meaning to ruffle your feathers.
>
> The reason I say the diz-in-image story is unclear is because there are no
> explicit rules that indicates that diz files should end up in a JDK or JRE
> image. I can accept that everything should go in a full JDK image. But a JRE
> is a JDK with a bunch of things left out and some of those things are
> libraries. But because diz files are not mentioned explicitly in the rules
> for making images we actually get the diz files for the libraries that were
> removed! They are simply copied from the build artifacts location to the jre
> image location specifically libattach.diz and libsaproc.diz. Maybe that was
> a simple oversight.
>
> Additionally it is unclear to me why we have diz files for some libraries
> and not others?
>
> Anyway as I said this will need to be modified for the profile work, in
> consultation with all the interested parties.
>
> Thanks,
> David
>
> On 4/09/2012 11:51 PM, Daniel D. Daugherty wrote:
>>
>> On 9/2/12 9:37 PM, David Holmes wrote:
>>>
>>> Hi Dan,
>>>
>>> On 3/09/2012 12:47 PM, Daniel D. Daugherty wrote:
>>>>
>>>> On 9/2/12 7:26 PM, David Holmes wrote:
>>>>>
>>>>> The build will create debuginfo/diz files as requested - that's fine.
>>>>>
>>>>> What I'm unclear about is where those files should actually appear in
>>>>> our build artifacts, specifically the jdk/jre images that are created.
>>>>>
>>>>> Internally when we create binary images RE strips all the
>>>>> debuginfo/diz files out.
>>>>
>>>>
>>>> Not quite. The RE makefiles will put debug info files into a
>>>> separate debuginfo.zip file. This includes .debuginfo, .diz,
>>>> .map and .pdb files. For the regular bundles, the RE makefiles
>>>> will not include debug info files. Not quite the same as
>>>> stripping them out.
>>>
>>>
>>> Not trying to split hairs but if the image contains them and the RE
>>> bundle of the image does not, then the RE process is stripping them out.
>>
>>
>> The above is implying that there is a single RE bundle and that hasn't
>> been true for the tar-style universe for quite a long time; the demo
>> bundle was added by around JDK8-B20 or so. For the package-style
>> universe, I don't think that has ever been true.
>>
>> RE's makefiles take the image generated by the build and package up the
>> various files into two or more bundles. I believe each platform has two
>> styles of bundles. For Solaris, SVR4 style packages and tar/zip bundles.
>> For Windows, an EXE installer and tar/zip bundles. For Linux RPM packages
>> and tar/ZIP bundles.
>>
>> So I'll stick with my assertion that the RE process is placing debug info
>> files into a separate bundle and is not stripping them out.
>>
>>
>>
>>>
>>>>> But the build itself seems to treat them in an ad-hoc manner:
>>>>>
>>>>> - The new build deliberately excludes debuginfo/diz files associated
>>>>> with binaries, but will include any related to libraries (via generic
>>>>> copying routine). (It's obvious from the comments related to this that
>>>>> there is some puzzlement as to this reasoning.)
>>>>
>>>>
>>>> Sorry I haven't looked at the new build system.
>>>
>>>
>>> It tries to emulate the old build.
>>>
>>>>> - The old build also tries to exclude the files associated with
>>>>> binaries, but only handles .debuginfo not .diz :(
>>>>
>>>>
>>>> During one round in the FDS project, I included .debuginfo/.diz files
>>>> right next to some of the binaries. Apparently that's not allowed
>>>> without
>>>> explicit permission. The contents of the "bin" directory are controlled
>>>> and there are tests to verify those contents.
>>>>
>>>> I changed the Makefiles for the few binaries that support FDS to not
>>>> install the debug info files with the binaries, but they are left in
>>>> the normal build artifacts location if someone has the need to use
>>>> them. Of course, I've had queries for debug info files for the binaries
>>>> to be included in the debuginfo.zip bundles. I'm not planning to fight
>>>> that battle.
>>>
>>>
>>> Okay that explains the special handling for binaries. So how do these
>>> then get into the debuginfo.zip? Or don't they?
>>
>>
>> They don't. They are only available via the build artifacts that
>> are archived.
>>
>>
>>
>>>
>>>>> Those associated with libraries just seem to get copied if they happen
>>>>> to be there
>>>>
>>>>
>>>> All of the logic that copies debug info files to the image should do
>>>> so if they happen to be there. Not all component support FDS now or
>>>> in the future so the logic needs to adapt to what is built.
>>>>
>>>>
>>>>> As I said this all seems very ad-hoc to me. I would expect to see no
>>>>> debuginfo/diz files in a created image by default, and have a separate
>>>>> target that would produce a tar file of all the debuginfo/diz files
>>>>> ready to overlay on an existing image.
>>>>
>>>>
>>>> Close. The image has to have the debug info or .diz files in order for
>>>> the RE makefiles to generate the debuginfo.zip files. It is the RE
>>>> makefiles that handle the packaging. Just like the demos are always
>>>> built and it is the RE makefiles that put them in a separate bundle.
>>>
>>>
>>> So therein lies the problem. RE lies outside of the OpenJDK build
>>> system. If the RE Makefiles can copy an image they can copy the
>>> debuginfo files too. I'd much rather see no debuginfo files in the
>>> built images (unless requested) and a distinct debuginfo related
>>> target (that RE could use if they choose). That would seem to be
>>> simpler all round.
>>
>>
>> My understanding is that "the image" is supposed to be the complete
>> image if every bundle is extracted. I believe that is how the packages
>> are sanity checked to be complete. RE's Makefiles are meant to process
>> "the image" into bundles. They aren't meant to add files of their own.
>>
>> If you are planning to change the meaning of "the image" or if you
>> are planning to put files into bundles that are not in "the image",
>> then you'll need to coordinate with RE and whoever does the package
>> inventory testing.
>>
>> Also, if you change the way this works, keep in mind that some of the
>> Makefiles generate their objects into a temporary directory and then
>> copy things from that temporary directory to the image. Other Makefiles
>> generate their objects directly into the image. For the latter, you'll
>> have to move the debug info file(s) out of the image into some other
>> place where it can be picked up by whatever bundling process you create
>> to make the debuginfo.zip file.
>>
>>
>>
>>>
>>>>> Thoughts/comments?
>>>>>
>>>>> I have to deal with this for the SE Profile work, where we will not
>>>>> want these files present in any of the images.
>>>>
>>>>
>>>> It should be fine if the Embedded profile does not generate debug info
>>>> files or if the Embedded profile generates debug info, but does not
>>>> copy the debug info files into the image area. The RE makefiles will
>>>> handle the presence or absence of debug info files.
>>>
>>>
>>> These are not embedded profiles, these are just profiles - it is all
>>> to be part of SE in Java 8. The build is supposed to create an image
>>> corresponding to each profile. I can certainly specialise the handling
>>> of the debuginfo files for the profiles, but it seemed to me that the
>>> overall debuginfo-in-image story was rather unclear.
>>
>>
>> I'm sorry you think that the debuginfo-in-image story is unclear.
>> I thought I did a pretty good job integrating FDS into the whole
>> OpenJDK build process somewhat seamlessly. I guess not.
>>
>> The key things to remember in all this is that debug info files
>> (like the demos) have to end up in a separate bundle or bundles.
>> So if you change the way this is all implemented, you still have
>> to follow the separate bundle rule.
>>
>>
>>
>>>
>>>> However, the non-Embedded profile needs to continue to generate and
>>>> copy debug info files for those components that already support FDS.
>>>> If you change the non-Embedded logic to not copy the debug info files
>>>> into the image area, the RE debuginfo.zip bundle will not be created
>>>> and that will break FDS.
>>>
>>>
>>> RE processes will have to change to handle profiles in any case. I
>>> think they'd rather get a debuginfo.zip out of the build than having
>>> to create it themselves.
>>
>>
>> Interesting and not something that I have ever heard. I got the
>> impression that RE needed to have control over what was bundled
>> and how it was bundled. It's kind of hard to certify/vouch for a
>> process when you don't do it yourself, but that's not really my
>> call.
>>
>> Good luck with the tweaking of the build and packaging processes.
>> Just remember: There be dragons here!
>>
>> Dan
>>
>>
>>
>>>
>>> Thanks,
>>> David
>>>
>>>>
>>>> Dan
>>>>
>>>>
>>>>>
>>>>> David

Reply via email to