I seem to remember a tool called `make` that was pretty good at this. On Tue, Nov 28, 2017 at 10:47 AM, Lukasz Cwik <lc...@google.com> wrote:
> Its been well shown that a build system that uses input/output set change > detection can correctly implement incremental builds. Build systems are not > tied to knowing the internal details of how Java compiles things. Knowing > that there are some inputs, a process, and some outputs is enough to know > when the process needs to be rerun. > > On Mon, Nov 27, 2017 at 9:53 PM, Romain Manni-Bucau <rmannibu...@gmail.com > > wrote: > >> Hmm, no. >> >> Incremental build is never correctly implemented cause there is just no >> way to detect some dependencies statically with java code - or any dynamic >> language. >> >> Side note: same applies for gradle daemon usage BTW. >> >> After if the list is not maintained it is a bug at the same level than >> coding a toString() with "null.toString()". This is not very hard to handle >> the list of modules and worse case a mvnextension can make it coded if you >> feel more comfortable with this kind of solution. >> >> Le 27 nov. 2017 23:12, "Lukasz Cwik" <lc...@google.com.invalid> a écrit : >> >>> Manually whitelisting/blacklisting sub-modules is error prone since it >>> hides issues due to incorrectly maintaining that list is the same >>> argument >>> as if the build process doesn't correctly invoke an incremental build >>> process. >>> >>> On Mon, Nov 27, 2017 at 1:45 PM, Romain Manni-Bucau < >>> rmannibu...@gmail.com> >>> wrote: >>> >>> > Well for validation builds- pre PR, incremental support is pointless >>> since >>> > it easily hides issues die to caching so a solution saving half of the >>> > build without loosing anuyhing would still be good IMHO. >>> > >>> > Le 27 nov. 2017 21:12, "Lukasz Cwik" <lc...@google.com.invalid> a >>> écrit : >>> > >>> > > Incremental builds aren't correctly setup right now so your likely >>> to see >>> > > Python/Go rebuild even if there were no changes. See >>> > > https://issues.apache.org/jira/browse/BEAM-3253 >>> > > >>> > > On Mon, Nov 27, 2017 at 11:46 AM, Romain Manni-Bucau < >>> > > rmannibu...@gmail.com> >>> > > wrote: >>> > > >>> > > > that was the goal: validate there was no side effect of the >>> changes on >>> > > > the whole project. Now the "not java" part of the build will not be >>> > > > impacted by java changed so this is the part i want to skip since >>> it >>> > > > takes a lot of time and I have guarantees it is safe to skip them. >>> > > > >>> > > > Romain Manni-Bucau >>> > > > @rmannibucau | Blog | Old Blog | Github | LinkedIn >>> > > > >>> > > > >>> > > > 2017-11-27 20:28 GMT+01:00 Lukasz Cwik <lc...@google.com.invalid>: >>> > > > > Romain, that will build the entire project. I think you want to >>> > execute >>> > > > > (from the root of the project): >>> > > > > ./gradlew :beam-sdks-parent:beam-sdks-python:build >>> > > > > >>> > > > > On Mon, Nov 27, 2017 at 11:25 AM, Romain Manni-Bucau < >>> > > > rmannibu...@gmail.com> >>> > > > > wrote: >>> > > > > >>> > > > >> gradle build --no-daemon >>> > > > >> >>> > > > >> (with gradle 4.2) >>> > > > >> >>> > > > >> Romain Manni-Bucau >>> > > > >> @rmannibucau | Blog | Old Blog | Github | LinkedIn >>> > > > >> >>> > > > >> >>> > > > >> 2017-11-27 20:21 GMT+01:00 Kenneth Knowles >>> <k...@google.com.invalid >>> > >: >>> > > > >> > What is the gradle command you are using to build just the >>> Python >>> > > SDK? >>> > > > >> > >>> > > > >> > On Mon, Nov 27, 2017 at 11:19 AM, Romain Manni-Bucau < >>> > > > >> rmannibu...@gmail.com> >>> > > > >> > wrote: >>> > > > >> > >>> > > > >> >> Hmm, >>> > > > >> >> >>> > > > >> >> issue is the same with gradle (locally python build takes >>> 15mn >>> > > alone >>> > > > >> >> which is as much as the java build and it is not >>> parallelized I >>> > > > think) >>> > > > >> >> >>> > > > >> >> pl is not as smooth since it means doing it on each command >>> > whereas >>> > > > >> >> the proposal is automatically activated through settings.xml >>> > > > >> >> >>> > > > >> >> Romain Manni-Bucau >>> > > > >> >> @rmannibucau | Blog | Old Blog | Github | LinkedIn >>> > > > >> >> >>> > > > >> >> >>> > > > >> >> 2017-11-27 20:07 GMT+01:00 Kenneth Knowles >>> > <k...@google.com.invalid >>> > > >: >>> > > > >> >> > I think you can already mostly do this with mvn -pl >>> sdks/XYZ >>> > -am >>> > > > >> -amd. I >>> > > > >> >> > think that we have other work (gradle support) underway >>> that >>> > will >>> > > > make >>> > > > >> >> this >>> > > > >> >> > a non-issue since gradle automatically does even better >>> than >>> > the >>> > > > >> profile >>> > > > >> >> or >>> > > > >> >> > -am -amd. >>> > > > >> >> > >>> > > > >> >> > On Mon, Nov 27, 2017 at 11:01 AM, Romain Manni-Bucau < >>> > > > >> >> rmannibu...@gmail.com> >>> > > > >> >> > wrote: >>> > > > >> >> > >>> > > > >> >> >> Hi guys, >>> > > > >> >> >> >>> > > > >> >> >> java/python/go/xxx support is great but as a developer you >>> > > rarely >>> > > > >> hack >>> > > > >> >> >> on them all. >>> > > > >> >> >> >>> > > > >> >> >> For that reason I opened https://github.com/apache/ >>> > > beam/pull/4173 >>> > > > . >>> > > > >> >> >> >>> > > > >> >> >> Goal is to give each developer a way to build the whole >>> > project >>> > > > and >>> > > > >> >> >> all the code he can impact at once but without caring of >>> the >>> > > code >>> > > > he >>> > > > >> >> >> doesn't modify at all - other languages. >>> > > > >> >> >> >>> > > > >> >> >> Wdyt? >>> > > > >> >> >> >>> > > > >> >> >> Romain Manni-Bucau >>> > > > >> >> >> @rmannibucau | Blog | Old Blog | Github | LinkedIn >>> > > > >> >> >> >>> > > > >> >> >>> > > > >> >>> > > > >>> > > >>> > >>> >> >