5 ms·
Java's build artifacts are too painless. GNU/Linux distributions tend to have a policy of "we build things from source, we don't simply re-publish the authors'
by LukeShu 7y ago
Java's build artifacts are too painless. GNU/Linux distributions tend to have a policy of "we build things from source, we don't simply re-publish the authors' build artifacts." Because Java's build artifacts are so painless, source artifacts and build processes are neglected. I'm convinced that there are many "foundational" Java libraries that have never been successfully compiled on anything but the original author's computer, right before they uploaded the .jar to Maven Central.
With a Java package, the final distro package will mostly be a single .jar file under /usr/share/java/, but getting to that .jar file from source is often a nightmare.
With a Python package, the final distro package will mostly be a sprawling directory under /usr/lib/python/site-packages/, but getting that directory from source is very rarely anything more than `./setup.py install --optimize=1`.
- lima 7y agoAgreed about Maven Central. It's scary. In my experience, large, complicated Python packages with C dependencies can be a huge nightmare just like large Java applications, and simple cases are simple in either case. With many dependencies, you need to unbundle every single one and package it separately, in either case. Here's a simple, random Java package in Fedora: https://src.fedoraproject.org/rpms/maven-antrun-plugin/blob/master/f/maven-antrun-plugin.spec https://src.fedoraproject.org/rpms/maven-antrun-plugin/blob/... It only specifies its dependencies (which are individually packaged), and the %mvn_build and %mvn_install macros take care of everything else. A slightly more complicated one, Guava: https://src.fedoraproject.org/rpms/guava/blob/master/f/guava.spec https://src.fedoraproject.org/rpms/guava/blob/master/f/guava... Elasticsearch, including unbundling patches: https://src.fedoraproject.org/rpms/elasticsearch/blob/master/f/elasticsearch.spec https://src.fedoraproject.org/rpms/elasticsearch/blob/master...