> On Aug. 4, 2014, 4:35 p.m., Santhosh Edukulla wrote: > > tools/marvin/setup.py, line 35 > > <https://reviews.apache.org/r/24238/diff/1/?file=650483#file650483line35> > > > > Please tying like this to as a dependency on pom.xml, may unnecessarily > > lead to tight coupling with mvn logic inside of setup.py. Currently, only > > cloudstackAPI is the one which marvin relies upon while building cs through > > mvn, otherwise we can remove that dependency as well, its in plan. Any > > upload of marvin to external package download system will tie this > > dependency on pom.xml. > > Leo Simons wrote: > Yep, this change requires that there is a file named pom.xml which has in > it <parent xmlns="...maven..."><version>...</version></parent>. That's why > MANIFEST.in now has to include that file. It doesn't depend on maven being > installed or available. It's pretty common practice with distutils to > externalize the version into a VERSION file or similar, especially on > multi-module projects. But, maven can't externalize _its_ versions, they MUST > be in the pom. I guess you can choose: > > * have an ugly pom.xml file shipped in your sdist, but maven release > plugin works for bumping _all_ versions, marvin versions stay synced with > management server, you don't have multiple places to update a string (DRY), > etc > * don't have the pom.xml file in your sdist, and have the same version > number repeated in 3+ places, leading to bugs like the one that just > happened, ever-lasting confusing errors when bumping versions, difficulty > configuring CI servers to inject different versions, and other such fun > * add an ugly non-standard pre processor to the build process which > injects version numbers into the various build files > > This patch represents my opinion on the subject: if you can, don't have > maven, but if you have maven, respect it's authority over your versioning :-) > > I have no idea why you call this a dependency. It's just a VERSION file > that happens to have some extra XML around it. > > Rohit Yadav wrote: > Leo thanks for the patch, how about we add a statement in pom.xml that > creates a version.py (or pick any other suitable name) file that only have > version information and setup.py imports it. We can commit a static > version.py file just in mvn fails this way Marvin dist won't have to depend > on pom.xml file and we can still dynamically change version string? > > I think this will adress Santhosh's comment. Can you re-submit the patch > with such a logic or any better logic? > > Leo Simons wrote: > Hey Rohit, nice idea, yes I guess we can come up with something like > that...I'm not sure it is a better addressing of the 'maven dependency' > concern. With the patch as I wrote it, to build a proper 'for distribution' > release of marvin, with the right version, using automated tooling (i.e. > jenkins build that splices in the build number), you need the ability to edit > pom.xml, and distutils. If we have maven generate the version.py, all of a > sudden you _do_ need mvn installed to make a release! > > ...but I guess we can avoid _that_ if we have jenkins write the version > in the same way maven would. Maybe allow an env variable override? Ok, yeah, > that's fine with me, I can work that out, I'll provide a new patch tomorrow. > Anything can be solved with another layer of indirection, I should've thought > of that :-)
Hi Leo, was just going through reviewboard. Just wanted to discuss if this needs any improvements or my help? - Rohit ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/24238/#review49460 ----------------------------------------------------------- On Aug. 5, 2014, 8:43 a.m., Leo Simons wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/24238/ > ----------------------------------------------------------- > > (Updated Aug. 5, 2014, 8:43 a.m.) > > > Review request for cloudstack and Rohit Yadav. > > > Repository: cloudstack-git > > > Description > ------- > > Commit e10f8e887571e28f31dbcf02a0beac163a901fe1 broke > mvn -X -Pdeveloper,marvin.sync -Dendpoint=localhost -pl :cloud-marvin > Because the maven file had hard-coded 0.1.0. > > This fix removes the hard-coding completely, by having the python setup read > the version from the maven pom.xml, and the maven setup using its version. > > > Diffs > ----- > > tools/marvin/mvn-setup.py PRE-CREATION > tools/marvin/pom.xml 3bf70e041c6bab051d7a184ff9c3c81ea31d2054 > tools/marvin/setup.py 555d67dfc491cf5ab52d36b417a6b5842ea6ad96 > > Diff: https://reviews.apache.org/r/24238/diff/ > > > Testing > ------- > > Commands that work now for me include: > > mvn -X -Pdeveloper,marvin.sync -Dendpoint=localhost -pl :cloud-marvin > python setup.py install > python setup.py develop > mvn -P developer -pl :cloud-marvin > > > Thanks, > > Leo Simons > >