> But we'll switch to Gradle if necessary in the future.
Typo: I meant Maven.
On 9/27/23 1:01 PM, Sean Gilligan wrote:
Hi Emmanuel,
FrankenGradle! That's a great name!
I know it's unlikely they are going to do anything, but I thought
there should at least be an up-to-date GitHub Issue for Gradle to look
at and for a discussion to hopefully occur.
bitcoinj has franken-build-scripts that use a growing number of
conditionals to ensure they run on the latest Gradle as well as
FrankenGradle 4.4.x and Gradle 4.10.3 (which is the closest standard
version that we can easily use on GitHub CI.) The scripts have been
difficult to maintain but they are currently working and they will
suffice through the 0.17 release. They are also supporting JDK 21, so
we are definitely OK for now.
We use Debian Docker images for our GitLab CI builds and for our
reference build which can be run locally as well. Being Debian Free
Software Guidelines compliant is important to us. We would like to
eventually see the bitcoinj library, our "wallet-tool" command-line
app, and perhaps even a GUI wallet be available as Debian packages.
Thinking longer-term, we have had brief discussions about switching to
Maven, but haven't made any serious effort yet. We've been hoping that
Gradle will see the light and/or you will make progress even without
their support. But we'll switch to Gradle if necessary in the future.
Thanks gain for all your efforts!
-- Sean
On 9/26/23 12:19 AM, Emmanuel Bourg wrote:
Hi Sean,
Thank you for your support, I'm glad someone appreciates our
FrankenGradle ;)
Gradle is difficult to upgrade in Debian for a variety of reasons.
For one thing it's a huge monolith and thus it's a bit all or
nothing, if one part is missing your are stuck. Maven in comparison
is highly modular and can be upgraded piece by piece. The major pain
point currently is the Kotlin DSL, I wish the core of Gradle would
have remained pure Java/Groovy. And then there is the non-free stuff
like the Gradle enterprise plugin that gets in the way.
Addressing these issues in Gradle isn't a trivial task, and I doubt
the bootstrappability is compelling enough to motivate the Gradle
developers to work on it.
If this is important for bitcoinj I would suggest switching to
another build tool, either Maven if you have a fairly standard
project structure, or Ant if you need the flexibility of an
imperative build system (and Ant is by far the easiest to bootstrap).
Emmanuel Bourg
Le 25/09/2023 à 22:17, Sean Gilligan a écrit :
Hi Everyone,
I appreciate the efforts of the Debian Java team and know that your
job is not easy.
I work on bitcoinj (Java) and we are (for better or worse) using
Gradle for our builds. We are stuck supporting Gradle 4.4.x, when
the latest version of Gradle 8.3 (or 8.4) is required to support JDK
21 (if you're not using the Debian-patched Gradle, of course.)
I had thought there was already an issue for this on the Gradle
GitHub project, but today I couldn't find anything. So I created a
new one:
https://github.com/gradle/gradle/issues/26516
I thought I would share that with you for reference purposes. Or
maybe someone might want to comment on the issue, especially if
anyone from Gradle responds or asks questions.
I'm hoping that priorities at Gradle may be changing now that
supply-chain security has become a more visible issue in the
industry. (Yes, I'll admit to being an optimist.)
Anyway, thanks for your efforts. We do appreciate them.
Regards,
Sean
p.s. If you're interested in how we are dealing with this at
bitcoinj, I created an issue there as well:
https://github.com/bitcoinj/bitcoinj/issues/3287