On Sat, Sep 12, 2020 at 11:05 AM Zbigniew Jędrzejewski-Szmek
<zbys...@in.waw.pl> wrote:
>
> On Sat, Sep 12, 2020 at 10:32:51AM +0200, Vitaly Zaitsev via devel wrote:
> > On 11.09.2020 18:42, Zbigniew Jędrzejewski-Szmek wrote:
> > > I'm not enthusiastic about build-time-only packages, but if the choice
> > > is between that and retiring the packages (or hiding them in modules
> > > which has the same effect), I'll take it.
> >
> > This will be Modularity 2.0. All packages must be installable if the end
> > user wants to do so.
>
> The packages *would* be trivially installable. I didn't say that explicitly,
> but you would always be able to install a package that has 
> "Provides:fedora-build-time-only"
> and then install any such packages on any system. (That is how they would
> installed in mock or koji too.)
>
> > Check header-only C++ libraries packaging. They provide only the -devel
> > and virtual -static subpackages and can be easily installed in Koji/mock
> > or directly.
> >
> > Also check Rust packaging. They build crates to a separate packages and
> > use them only for the static linkage.

Hm, that comparison doesn't fit that well.
Let me try to clarify some things that have come up in this discussion
a couple of times, probably because the confusing "build-only
dependencies" vs. "source-only dependencies / static linking":

TL;DR: Java packaging in fedora is more like python packaging than
Rust packaging.

- Java code is compiled into architecture-independent bytecode (.class
files) that's usually bundled into Zip files with some metadata (.jar
files).
- That bytecode is - and can be - used at both build-time and at
runtime by dependent packages, so it's basically like Python packages.
On the other hand, Rust packages only contain source code, which is
*freshly compiled every time it's used* in dependent packages and then
statically linked.
- The "build-only dependencies" with respect to Java packages (as
mentioned in this thread) refer to *build tools* (like maven and ant)
and their dependencies, which are only used at build-time, but are
obviously not needed at runtime (just like packages built with
autotools, CMake or meson also don't require them at runtime).

However! Of course the dependency trees of build tools and the built
software itself *do overlap* (this is the fact the Java Modularity
approach is ignoring). A lot of Java packages are used both as runtime
dependencies for build tools *and* as runtime dependencies for
applications (which is apparently outside the scope of Red Hat ???) ,
so those have to be maintained as non-modular packages anyway,
apparently as a community-only effort.

Fabio
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org

Reply via email to