lucene-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dawid Weiss (Jira)" <j...@apache.org>
Subject [jira] [Updated] (LUCENE-9077) Gradle build
Date Mon, 02 Dec 2019 14:29:00 GMT

     [ https://issues.apache.org/jira/browse/LUCENE-9077?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Dawid Weiss updated LUCENE-9077:
--------------------------------
    Description: 
This task focuses on providing gradle-based build equivalent for Lucene and Solr (on master
branch). See notes below on why this respin is needed.

The code lives on *gradle-master* branch. It is kept with sync with *master*. Try running
the following to see an overview of helper guides concerning typical workflow, testing and
ant-migration helpers:

gradlew :help

A list of items that needs to be added or requires work. If you'd like to work on any of these,
please add your name to the list. Once you have a patch/ pull request let me (dweiss) know
- I'll try to coordinate the merges.
 * Apply forbiddenAPIs
 * Configure security policy/ sandboxing for tests.
 * Add test 'beasting' (rerunning the same suite multiple times). I'm afraid it'll be difficult
to run it sensibly because gradle doesn't offer cwd separation for the forked test runners.
 * jar checksums, jar checksum computation and validation. This should be done without intermediate
folders (directly on dependency sets).
 * add a :helpDeps explanation to how the dependency system works (palantir plugin, lockfile)
and how to retrieve structured information about current dependencies of a given module (in
a tree-like output).
 * identify and list precommit tasks so that they can be ported one by one. (Mark's branch
has some of this stuff already implemented)
 * identify and port any other "check" utilities that may be called from ant. (Mark's branch
has some of this stuff already implemented)
 * identify and port various "regenerate" tasks from ant builds (javacc, precompiled automata,
etc.)
 * add rendering of javadocs (gradlew javadoc) and attaching them to maven publications.
 * fill in POM details in gradle/defaults-maven.gradle so that they reflect the previous content
better (dependencies aside).
 * Add any IDE integration layers that should be added (I use IntelliJ and it imports the
project out of the box, without the need for any special tuning).
 * *Clean up dependencies, especially for Solr*: any \{ transitive = false } should just explicitly
exclude whatever they don't need (and their dependencies currently declared explicitly should
be folded). Figure out which scope to import a dependency to.
 * Add Solr packaging for docs/* (see TODO in packaging/build.gradle; currently XSLT...)
 * I didn't bother adding Solr dist/test-framework to packaging (who'd use it from a binary
distribution? 

 

*{color:#ff0000}Note:{color}* this builds on the work done by Mark Miller and Cao Mạnh
Đạt but also applies lessons learned from those two efforts:
 * *Do not try to do too many things at once*. If we deviate too far from master, the branch
will be hard to merge.
 * *Do everything in baby-steps* and add small, independent build fragments replacing the
old ant infrastructure.
 * *Try to engage people to run, test and contribute early*. It can't be a one-man effort.
The more people understand and can contribute to the build, the more healthy it will be.

 

  was:
This task focuses on providing gradle-based build equivalent for Lucene and Solr (on master
branch). See notes below on why this respin is needed.

The code lives on *issues/gradle-master* branch. It is kept with sync with *master*. Try
running the following to see an overview of helper guides concerning typical workflow, testing
and ant-migration helpers:

gradlew :help

A list of items that needs to be added or requires work. If you'd like to work on any of these,
please add your name to the list. Once you have a patch/ pull request let me (dweiss) know
- I'll try to coordinate the merges.
 * Apply forbiddenAPIs
 * Configure security policy/ sandboxing for tests.
 * Add test 'beasting' (rerunning the same suite multiple times). I'm afraid it'll be difficult
to run it sensibly because gradle doesn't offer cwd separation for the forked test runners.
 * jar checksums, jar checksum computation and validation. This should be done without intermediate
folders (directly on dependency sets).
 * add a :helpDeps explanation to how the dependency system works (palantir plugin, lockfile)
and how to retrieve structured information about current dependencies of a given module (in
a tree-like output).
 * identify and list precommit tasks so that they can be ported one by one. (Mark's branch
has some of this stuff already implemented)
 * identify and port any other "check" utilities that may be called from ant. (Mark's branch
has some of this stuff already implemented)
 * identify and port various "regenerate" tasks from ant builds (javacc, precompiled automata,
etc.)
 * add rendering of javadocs (gradlew javadoc) and attaching them to maven publications.
 * fill in POM details in gradle/defaults-maven.gradle so that they reflect the previous content
better (dependencies aside).
 * Add any IDE integration layers that should be added (I use IntelliJ and it imports the
project out of the box, without the need for any special tuning).
 * *Clean up dependencies, especially for Solr*: any \{ transitive = false } should just explicitly
exclude whatever they don't need (and their dependencies currently declared explicitly should
be folded). Figure out which scope to import a dependency to.
 * Add Solr packaging for docs/* (see TODO in packaging/build.gradle; currently XSLT...)
 * I didn't bother adding Solr dist/test-framework to packaging (who'd use it from a binary
distribution? 

 

*{color:#ff0000}Note:{color}* this builds on the work done by Mark Miller and Cao Mạnh
Đạt but also applies lessons learned from those two efforts:
 * *Do not try to do too many things at once*. If we deviate too far from master, the branch
will be hard to merge.
 * *Do everything in baby-steps* and add small, independent build fragments replacing the
old ant infrastructure.
 * *Try to engage people to run, test and contribute early*. It can't be a one-man effort.
The more people understand and can contribute to the build, the more healthy it will be.

 


> Gradle build
> ------------
>
>                 Key: LUCENE-9077
>                 URL: https://issues.apache.org/jira/browse/LUCENE-9077
>             Project: Lucene - Core
>          Issue Type: Task
>            Reporter: Dawid Weiss
>            Assignee: Dawid Weiss
>            Priority: Major
>             Fix For: master (9.0)
>
>
> This task focuses on providing gradle-based build equivalent for Lucene and Solr (on
master branch). See notes below on why this respin is needed.
> The code lives on *gradle-master* branch. It is kept with sync with *master*. Try running
the following to see an overview of helper guides concerning typical workflow, testing and
ant-migration helpers:
> gradlew :help
> A list of items that needs to be added or requires work. If you'd like to work on any
of these, please add your name to the list. Once you have a patch/ pull request let me (dweiss)
know - I'll try to coordinate the merges.
>  * Apply forbiddenAPIs
>  * Configure security policy/ sandboxing for tests.
>  * Add test 'beasting' (rerunning the same suite multiple times). I'm afraid it'll be
difficult to run it sensibly because gradle doesn't offer cwd separation for the forked test
runners.
>  * jar checksums, jar checksum computation and validation. This should be done without
intermediate folders (directly on dependency sets).
>  * add a :helpDeps explanation to how the dependency system works (palantir plugin, lockfile)
and how to retrieve structured information about current dependencies of a given module (in
a tree-like output).
>  * identify and list precommit tasks so that they can be ported one by one. (Mark's branch
has some of this stuff already implemented)
>  * identify and port any other "check" utilities that may be called from ant. (Mark's
branch has some of this stuff already implemented)
>  * identify and port various "regenerate" tasks from ant builds (javacc, precompiled
automata, etc.)
>  * add rendering of javadocs (gradlew javadoc) and attaching them to maven publications.
>  * fill in POM details in gradle/defaults-maven.gradle so that they reflect the previous
content better (dependencies aside).
>  * Add any IDE integration layers that should be added (I use IntelliJ and it imports
the project out of the box, without the need for any special tuning).
>  * *Clean up dependencies, especially for Solr*: any \{ transitive = false } should just
explicitly exclude whatever they don't need (and their dependencies currently declared explicitly
should be folded). Figure out which scope to import a dependency to.
>  * Add Solr packaging for docs/* (see TODO in packaging/build.gradle; currently XSLT...)
>  * I didn't bother adding Solr dist/test-framework to packaging (who'd use it from a
binary distribution? 
>  
> *{color:#ff0000}Note:{color}* this builds on the work done by Mark Miller and Cao Mạnh
Đạt but also applies lessons learned from those two efforts:
>  * *Do not try to do too many things at once*. If we deviate too far from master, the
branch will be hard to merge.
>  * *Do everything in baby-steps* and add small, independent build fragments replacing
the old ant infrastructure.
>  * *Try to engage people to run, test and contribute early*. It can't be a one-man effort.
The more people understand and can contribute to the build, the more healthy it will be.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org


Mime
View raw message