On 3/26/2020 4:13 PM, Sverre Moe wrote:
tor. 26. mar. 2020 kl. 20:41 skrev Alexey Semenyuk <alexey.semen...@oracle.com <mailto:alexey.semen...@oracle.com>>:



    On 3/26/2020 11:17 AM, Sverre Moe wrote:
    > Running jpackage to build an RPM will add some Requires to the
    package.
    >
    > It comes from the Template file:
    >
    
https://github.com/openjdk/jdk/blob/jdk-14%2B36/src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/template.spec
    
<https://urldefense.com/v3/__https://github.com/openjdk/jdk/blob/jdk-14*2B36/src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/template.spec__;JQ!!GqivPVa7Brio!M9XkBzPXiKm1ZIWttGJG4VL4Wf0-KGz9x6MXZQGaSDqz64B9k-Uh1JtNLScPm0aHPUWS$>
    >
    > Autoprov: 0
    > Autoreq: 0
    > %if "xPACKAGE_DEFAULT_DEPENDENCIES" != x ||
    "xPACKAGE_CUSTOM_DEPENDENCIES"
    > != x
    > Requires: PACKAGE_DEFAULT_DEPENDENCIES PACKAGE_CUSTOM_DEPENDENCIES
    > %endif
    >
    > Building on OpenSUSE will give us these Requires:
    > +%if "xglibc, libX11-6, libXau6, libXext6, libXi6, libXrender1,
    libXtst6,
    > libasound2, libxcb1, libz1" != x || "x" != x
    > +Requires: glibc, libX11-6, libXau6, libXext6, libXi6, libXrender1,
    > libXtst6, libasound2, libxcb1, libz1
    > +%endif
    > +
    > +#avoid ARCH subfolder
    >
    > We override the RPM spec file with resource directory. I copied
    the RPM
    > spec file content from the one jpackage generated and added
    something extra
    > to it.
    >
    > Unfortunately this RPM will not install on Fedora, but installs
    fine on
    > OpenSUSE where I built it.
    >
    > Installing on Fedora will spew out this line for all these Requires.
    > nothing provides libX11-6
    >
    > Are these Requires needed by Java?
    Yes. The list of required packages is built automatically by
    jpackage by
    analyzing dependencies of dynamic libraries of JRE bundled with the
    application being packed.
    On different distributes the same package can have different names.
    Seems like the package that is named on OpenSuSE as ' libX11-6' is
    named
    as 'libX11' on Fedora.


Not all Requires for OpenSUSE had an equivalent Fedoroa Requires

Requires for OpenSUSE from jpackage
Requires: glibc, libX11-6, libXau6, libXext6, libXi6, libXrender1, libXtst6, libasound2, libxcb1, libz1

Requires for Fedora from jpackage:
Requires: glibc, libX11, libXau, libXext, libXi, libXrender, libXtst, libxcbs

The RPM spec for Fedora does not get any Requires with libasound and libz.
Probably this is because these packages are not installed on Fedora host where you run jpackage.

    > What is the consequences if these are
    > not available on the system installing the RPM?
    Installation will fail.

Yes of course, if it has Requires and the Requires is not present, that is the problem we now got on Fedora for the installer built in OpenSUSE. However, if I omit all these Requires, then RPM will install/unpackage the application just fine. What you are saying if any of these Requires is not present then the install/unpack of the RPM will fail?
Correct. Sorry for the confusion.

So these Requires are only necessary for the RPM installation process?
Yes.


We previously uses jpackager, and did not specify these Requires when building the installer. Installation worked fine though on both OpenSUSE and Fedore. Probably because these Requires where installed as default on those systems.
If installed app depends on missing packages it will fail to operate. The idea of providing the list of required packages is to verify the app will run at installation phase.

- Alexey
/Sverre

Reply via email to