Hi Andi, Try this: https://github.com/apache/lucene/pull/576
if you run 'gradlew collectRuntimeJars' it'll compile module jars but also collect any runtime binary dependencies under each project's build folder. For example: > ls lucene/analysis/icu/build/runtimeJars icu4j-70.1.jar lucene-analysis-icu-10.0.0-SNAPSHOT.jar Let me know if this works for you and I'll merge with main. Dawid On Sun, Jan 2, 2022 at 11:29 PM Andi Vajda <[email protected]> wrote: > > Thank you, Dawid. > > On Sat, 1 Jan 2022, Dawid Weiss wrote: > > >> Or is there an easy way for me to request from the Lucene Gradle build > > that these external jar files be put somewhere more accessible > > > > It's a trivial problem to solve but the question isn't stated right - I > > think you should decide which specific subprojects from Lucene you need > > binary dependencies of. Then we can do any of the following: > > For Lucene 8.x, these are the external jars I've needed to build PyLucene: > ANTLR_JAR=$(LUCENE)/expressions/lib/antlr4-runtime-4.5.1-1.jar > ASM_JAR=$(LUCENE)/expressions/lib/asm-8.0.1.jar > ASM_COMMONS_JAR=$(LUCENE)/expressions/lib/asm-commons-8.0.1.jar > HPPC_JAR=$(LUCENE)/facet/lib/hppc-0.8.1.jar > > I suspect that for Lucene 9 some version numbers changed. > > > 1) prepare either a special task for you to collect everything for > pylucene > > or (perhaps better) > > Currently, ./gradlew jar gets me everything I need except for the external > jar files of topic. I don't think a special task is needed for any of the > Lucene .jar files. For the external ones, maybe ? > > > 2) a separate project that would include all of Lucene sources, build > them > > and prepare the above binaries, > > I don't think that one fits: I get the sources from git and build the > Lucene jar files using Gradle's jar task. > > > 3) a separate project that would only depend on Lucene binaries and fetch > > whatever else is needed based on POMs. > > I don't understand enough about POMs to know how to reply here. If this is > what Ivy was doing for us until Lucene 8.x then, yes, something like that > using Gradle that puts the external jars in a place I can access via a > filesystem path would be great. > > > I haven't looked at PyLucene's makefiles but if you let me know which one > > of the above works best for you, I'll prepare something on the gradle > side. > > If you do something for one of the subprojects (say, the expressions one), > I > can then extend this to others as needed. From my newbie understanding of > the Lucene Gradle build, I'd think that an extra task that "persists" the > external jars somewhere accessible via a simple filesystem path usable > from > a Makefile (by simple I mean, not fishing them out of ~/.gradle) would be > easiest to consume by the PyLucene build. > > Andi.. > > > > > Dawid > > > > > > On Sat, Jan 1, 2022 at 6:37 PM Andi Vajda <[email protected]> wrote: > > > >> > >> Thank you, Uwe. > >> > >> On Fri, 31 Dec 2021, Uwe Schindler wrote: > >> > >>> As a Gradle project you can depend on Lucene artifacts and use Gradle > >> Apis > >>> in your build files. > >> > >> Until 8.x, PyLucene is built via a Makefile that: > >> - calls Ant to build Lucene, building a bunch of jars individually > >> - calls Ant to build Lucene extensions (Java classes extending some > >> Lucene > >> classes with native methods that are then implemented in Python) > >> - calls JCC to generate and compile C++/Python PyLucene > >> > >> Now, with the Lucene Gradle build, the Makefile: > >> - inserts the Lucene extension classes into Lucene's Gradle build > via a > >> new subproject called 'extensions' > >> - calls Gradle to build all Lucene jars and the extra extensions.jar > in > >> one command: ./gradlew jar > >> - calls JCC to generate and compile C++/Python PyLucene > >> > >> But the antlr, asm, asm-commons and hppc jar files are no longer > available. > >> They were made available via Ivy before, in the old Lucene ant build. > >> > >> As you suggested, fishing around ~/.gradle, I can find them all in there > >> but > >> that seems very brittle as there are multiple versions present there. > >> > >> If at all possible, I'd like to not create a Maven project (PyLucene is > >> not > >> a Java project), mess with pom.xml files or create a new Gradle project > >> for > >> PyLucene. > >> > >> But maybe I should actually create a new Gradle project for PyLucene > that > >> replaces its Makefile ? Or is there an easy way for me to request from > the > >> Lucene Gradle build that these external jar files be put somewhere more > >> accessible ? Uwe, you say that they are present in the Luke .tgz ? What > is > >> the task that produces the Luke .tgz ? I might just be able to fish the > >> .jar > >> files out of it then. I tried assembleBinaryTgz but that only makes the > >> Lucene one and assembleRelease fails for me on checkWorkingCopyClean > since > >> I > >> have a bunch of changes not ready to be checked in... > >> > >> Thank you for your insights ! > >> > >> Andi.. > >> > >>> If you have the state of your work (do you use Gradle to build > already?) > >>> we may be able to help you. You may need to write a Gradle task that > >> calls > >>> your compiler. See ECJ (calls Java) or Changes2html (calls python) > tasks > >>> as examples. > >>> > >>> BTW, the jar files are hidden in the Gradle cache folder somewhere in > >> your > >>> home dir. Bit to access them you need Gradle Apis. > >>> > >>> Uwe > >>> > >>> Am 31. Dezember 2021 18:24:47 UTC schrieb Uwe Schindler < > [email protected] > >>> : > >>>> Hi, > >>>> > >>>> The Lucene 9.0 binary tgz no longer contains 3rd party dependencies, > >> unless they are needed to run Luke. > >>>> > >>>> Generally we expect people to parse the pom.xml files and download > >> artifacts as part of a downstream build. If you are able to use Maven, > I'd > >> recommend to create a small Maven Java Project listing the Lucene > >> dependencies and ask it to make a complete distribution. > >>>> > >>>> If you have the source distribution, I'd recommend to make pylucene > >> also use Gradle to build and then you can consume dependencies. > >>>> > >>>> Uwe > >>>> > >>>> Am 31. Dezember 2021 18:12:55 UTC schrieb Andi Vajda < > [email protected] > >>> : > >>>>> > >>>>> Hi, > >>>>> > >>>>> I've begun adapting PyLucene to Lucene 9.0 and switching it to using > >> gradle. > >>>>> > >>>>> The expressions sub-project depends on antlr4 and asm and I'm able to > >> build > >>>>> all of Lucene 9.0 without explicitely downloading these jar files. > >>>>> > >>>>> The PyLucene build needs these jar files then to produce wrappers for > >> the > >>>>> entrypoints into the expressions sub-project classes. > >>>>> > >>>>> Where are these jar files stored ? > >>>>> $ find lucene-java-9.0.0 -name '*.jar' | grep antlr > >>>>> produces nothing. > >>>>> > >>>>> Thanks ! > >>>>> > >>>>> Andi.. > >>>>> > >>>>> --------------------------------------------------------------------- > >>>>> To unsubscribe, e-mail: [email protected] > >>>>> For additional commands, e-mail: [email protected] > >>>>> > >>>> > >>>> -- > >>>> Uwe Schindler > >>>> Achterdiek 19, 28357 Bremen > >>>> https://www.thetaphi.de > >>> -- > >>> Uwe Schindler > >>> Achterdiek 19, 28357 Bremen > >>> https://www.thetaphi.de > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [email protected] > >> For additional commands, e-mail: [email protected] > >> > >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
