On Wed, Oct 17, 2012 at 12:50 PM, Edison Su <edison...@citrix.com> wrote:
>
>
>> -----Original Message-----
>> From: Noa Resare [mailto:n...@spotify.com]
>> Sent: Wednesday, October 17, 2012 8:15 AM
>> To: cloudstack-dev@incubator.apache.org
>> Subject: Re: what is the plan for the build system?
>>
>> On Wed, Oct 17, 2012 at 11:07 AM, Wido den Hollander <w...@widodh.nl>
>> wrote:
>>
>> > The work I done on the Debian packages makes sure they work on Ubuntu
>> > 12.04 and on Debian Unstable.
>>
>>
>> I think that is perfectly reasonable. If we determine that it is a
>> viable
>> solution to backport what is needed to Debian Squeeze I will do my best
>> to
>> convince my organization to make those packages available to the
>> community.
>>
>>
>> >  * What is the long term plan for the build system? Right now we use
>> Make
>> >> (debian/rules), waf, maven and ant and that setup doesn't exactly
>> lend
>> >> itself to a gentle learning curve. Also, it builds everything (at
>> least)
>> >> twice.
>> >>
>> >>
>> > This hasn't been decided yet in total, but my idea would be (deb):
>> >
>> > * dpkg (debian/rules) calls maven with sbindir, sysconfdir args, etc
>> > * maven outputs a completely build tree in build/usr/sbin,
>> > build/etc/cloud, etc, etc
>> > * dpkg then fetches the files from build/* into the required packages.
>> >
>> >
>> >
>> I agree that having debian/rules call maven that in turn builds the
>> packages would be the cleanest way.
>
> For RPM build, what Hugo did is that:
> 1. "maven install" will install everything into target folder under each 
> project
> 2. write a rpm spec file to pick up artifacts from all of these target 
> folders, e,g: 
> https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=blob;f=packaging/centos63/cloud.spec;h=b0f4046fef53dd302d1cdecd3db97bffb8357000;hb=4b079cd3dd1304272bbeb61b38c2a10c6715203c
>
> Can the same thing be done for deb build? I think this is the cleanest way, 
> rpm/deb build is decoupled from maven or ant, or whatever java build we will 
> use.


Personal opinion here.
I think both approaches are good, but not ideal.
Ideally in my mind - maven install (or some similar profile) would
actually deploy the software to the machine you are on. Configurable
arguments for things like bindir, sysconfdir, and prefix (default
being /) (and perhaps on a per-project basis). And that should become
the default way for developers to deploy CloudStack (with a remote
option that pushes software to a remote machine/devcloud)
Having different install/deploy methods for developers and users is
fail - everyone should be using the same thing - which will eliminate
many of the differences.
Packaging tools like rpmbuild/dpkg should call something like mvn
install -Dprefix=%{buildroot} and be able to walk away with packages
that would deliver something nearly identical (but better, because
it's a package) as running mvn install on a machine.

Thoughts, comments, flames?

--David

Reply via email to