6 ms·
I agree, and inflicting Bazel's horrible Java dependency on Firefox would be a tragedy.
by qhwudbebd 7y ago
I agree, and inflicting Bazel's horrible Java dependency on Firefox would be a tragedy.
- mda 7y agoHow is it different than depending on e.g. Python?
- rjsw 7y agoPython doesn't currently require a working Python binary to build itself. Both Bazel and Java do.
- new_realist 7y agoA C compiler, which Python needs, is arguably as complex as either a Python or Java runtime.
- jcranmer 7y agoA C compiler is a functional requirement of any operating system these days.
- pjmlp 7y agoYou won't go very far with it on Android, ChromeOS, iOS, iPadOS, mbed, Arduino, console OSes,...
- creatornator 7y agoThe Arduino IDE calls out to avr-gcc, and mbed-os is written in c++ so requires an embedded c++ compiler like arm-gcc or something similar. ChromeOS also runs the Linux kernel so you do need it to compile the OS, and it can hypothetically run binaries compiled for the linux platform. Dig deep enough through all the layers of bootstrapping and you'll find c basically everywhere.
- pjmlp 7y agoGCC is written in C++. ChromeOS users don't compile their kernel. Crostini is built with Rust and Go.
- hannob 7y agoThis is an irrelevant statement. You need the C compiler anyway. Your Java or Python is built with C. You add the complexity of your other environment on top of it.
- hannob 7y agoAsk any person that has ever tried to package a python and a java package for any linux distribution. The Python ecosystem is much, much simpler than Java.
- lima 7y agoIs it, really? The Java ecosystem had painless build artifacts figured out way before Python did (ship this directory of .jar files vs... a requirements.txt?).
- LukeShu 7y agoJava'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...
- lima 7y agoWhat's wrong with the Java dependency? There's even a single-binary Bazel executable[1] that brings its own embedded OpenJDK. My company is using Bazel and the Java dependency has never been an issue. Even if you write custom rules, you use the Python-like Skylark language and never interact with Java code. [1]: https://github.com/bazelbuild/bazel/releases https://github.com/bazelbuild/bazel/releases (the single-binary distribution is bazel-1.1.0-linux-x86_64, it's only 40MB).
- snagglegaggle 7y agoWhen using a source based distro or aiming for reproducible builds you'd need to pull in Java to produce Bazel.
- pjmlp 7y agoAnd the C compiler springs out of thin air into existence?
- snagglegaggle 7y agoNo, that's generated also, but is highly reusable whereas some people get along completely fine without Java (unless you make them pull it in for Bazel for Firefox).
- pjmlp 7y agoSo a matter of opinion and language religion.
- snagglegaggle 7y agoWell, no. Reproducible builds are a security concern and a source base distro is highly optimizable and configurable. Just because you do not see the purpose does not mean one is absent.
- 7y ago
- deleted 7y ago[deleted]