On 09/04/2012 04:12 PM, Hugo Trippaers wrote:
Hey all,
The switch to maven is coming along nicely I think, however we are not there
yet. With the dependencies gone from the tree, the maven build is now the
easiest way to build CloudStack IMHO. All classes are properly compiled and
stored in jar files and dependencies are automagically downloaded to make sure
everything compiles. Over the last few days I've added packaging of the
systemvm.iso to the maven files and I did some work on the awsapi. The awsapi
is proving to be difficult as it has multiple results (.mar, .aar, .jar files
and a webapp). Maven doesn't really like this. On the other hand, maven has
plugins to deal with axis2 and generate everything, so with a bit of work we
should be able to simplify this. Test code is not compiled in some cases as
there are some interesting circular references (test code for server depending
on vmware plugin comes to mind), that needs to be sorted if we want maven to be
able to do its job.
I've spend the last two days to get packaging back into something that looks
workable. Even though we want to move away from waf, it seemed like the best
way to fix the packaging for now. With the exception of awsapi all RPM packages
are being built on my dev environment so that is looking good. I don't have a
debian environment yet, so I'm not able to test a debian build. I haven't done
any testing on the rpms yet, just verified that they are build, hoping to do
that tomorrow.
Couple of questions that I would like some feedback on:
* Maven includes the dependencies with their original filename, I believe we
used to ship our deps with cloud- prepended to the name. Now we need to either
check if our dependencies aren't already supplied by the OS or put them in a
different directory, like /usr/share/java/cloud/*jar. What is the best route to
take?
I'd not prefix cloud-, to me that hints towards a homebrew version of
that file.
Whenever a library/JAR is available through the package manager of that
distribution I'm voting for depending on that with the RPM/DEB packages,
that is one dependency resolved.
For example the MySQL connector is available under Ubuntu and Debian, I
already made a commit for that [0].
Placing the rest in /usr/share/java/cloud is fine with me, that way we
don't pollute the system.
Wido
[0]:
https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=commit;h=9064236879dc9f2f11538d891271545e1ff10e9c
* Awsapi should be split in three sub projects (directories) I think, the
autogenerated ec2 part, the autogenerated e3 part and cloudstack own code which
might be distributed as a webapp.
* I've split the server rpm in two, one called server and contains all oss
stuff and one called server-nonoss containing the modules that depend on
non-oss libs, is that ok?
Darren, is this more or less in line with the stuff you are doing?
Feedback, ideas, complaints anyone?
Will send an update when there is something to report.
Cheers,
Hugo