diff mbox

RFC: Adding Vagrant file for provisioning

Message ID 1441836107-17689-1-git-send-email-angelo.compagnucci@gmail.com
State Superseded
Headers show

Commit Message

Angelo Compagnucci Sept. 9, 2015, 10:01 p.m. UTC
This patch adds a Vagrant file to buildroot. With this file
you can provision a complete buildroot developing environment
in minutes on all major platforms.

Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
---

This patch is a tentative approach to add a standard and official
Vagrant file to buildroot. With this file you can setup an isolated
build environment based on Vagrant on all major platforms.

The file is fairly basic right now, it sets up correct Ubuntu version
to download and install required packages for buildroot.

I'm open to suggestions and critics!

 docs/manual/getting.txt    |  7 +++++++
 docs/website/download.html |  9 +++++++++
 support/misc/Vagrantfile   | 42 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 58 insertions(+)
 create mode 100644 support/misc/Vagrantfile

Comments

Arnout Vandecappelle Sept. 9, 2015, 10:14 p.m. UTC | #1
On 10-09-15 00:01, Angelo Compagnucci wrote:
> This patch adds a Vagrant file to buildroot. With this file
> you can provision a complete buildroot developing environment
> in minutes on all major platforms.
> 
> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
> ---
> 
> This patch is a tentative approach to add a standard and official
> Vagrant file to buildroot. With this file you can setup an isolated
> build environment based on Vagrant on all major platforms.
> 
> The file is fairly basic right now, it sets up correct Ubuntu version
> to download and install required packages for buildroot.
> 
> I'm open to suggestions and critics!

 Here goes:

 If you're already on a platform that runs vagrant, then you have enough to run
buildroot as well, so why would you want to put it inside a VM and double your
build time? Buildroot really really tries very hard to make sure it runs in any
environment, so there should be no need for any of this trickery.

 The only limitation you do have is that you need some tools like a compiler and
some VCSes. If that is what you want to work around, then I'd prefer to go the
way of a single-user nix environment to import these tools.

 Regards,
 Arnout
Angelo Compagnucci Sept. 10, 2015, 6:15 a.m. UTC | #2
Dear Arnout Vandecappelle ,

2015-09-10 0:14 GMT+02:00 Arnout Vandecappelle <arnout@mind.be>:
> On 10-09-15 00:01, Angelo Compagnucci wrote:
>> This patch adds a Vagrant file to buildroot. With this file
>> you can provision a complete buildroot developing environment
>> in minutes on all major platforms.
>>
>> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
>> ---
>>
>> This patch is a tentative approach to add a standard and official
>> Vagrant file to buildroot. With this file you can setup an isolated
>> build environment based on Vagrant on all major platforms.
>>
>> The file is fairly basic right now, it sets up correct Ubuntu version
>> to download and install required packages for buildroot.
>>
>> I'm open to suggestions and critics!
>
>  Here goes:
>
>  If you're already on a platform that runs vagrant, then you have enough to run
> buildroot as well, so why would you want to put it inside a VM and double your
> build time? Buildroot really really tries very hard to make sure it runs in any
> environment, so there should be no need for any of this trickery.

Not true. I know of certain corporate environments in which you have
to stick on windows, and usually the people working in these
environment use virtual machines also if buildtime will be longer.
IMHO with a fairly recent computer you will not notice of being inside
a virtual machine.

Also having buildroot on mac is not that easy, Vagrant will solve
these problems brilliantly!

>  The only limitation you do have is that you need some tools like a compiler and
> some VCSes. If that is what you want to work around, then I'd prefer to go the
> way of a single-user nix environment to import these tools.

Yes, true, when you are on a unix environment!

>
>  Regards,
>  Arnout
>
> --
> Arnout Vandecappelle                          arnout at mind be
> Senior Embedded Software Architect            +32-16-286500
> Essensium/Mind                                http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
Arnout Vandecappelle Sept. 10, 2015, 8:07 a.m. UTC | #3
On 10-09-15 08:15, Angelo Compagnucci wrote:
> Dear Arnout Vandecappelle ,
> 
> 2015-09-10 0:14 GMT+02:00 Arnout Vandecappelle <arnout@mind.be>:
>> On 10-09-15 00:01, Angelo Compagnucci wrote:
>>> This patch adds a Vagrant file to buildroot. With this file
>>> you can provision a complete buildroot developing environment
>>> in minutes on all major platforms.
>>>
>>> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
>>> ---
>>>
>>> This patch is a tentative approach to add a standard and official
>>> Vagrant file to buildroot. With this file you can setup an isolated
>>> build environment based on Vagrant on all major platforms.
>>>
>>> The file is fairly basic right now, it sets up correct Ubuntu version
>>> to download and install required packages for buildroot.
>>>
>>> I'm open to suggestions and critics!
>>
>>  Here goes:
>>
>>  If you're already on a platform that runs vagrant, then you have enough to run
>> buildroot as well, so why would you want to put it inside a VM and double your
>> build time? Buildroot really really tries very hard to make sure it runs in any
>> environment, so there should be no need for any of this trickery.
> 
> Not true. I know of certain corporate environments in which you have
> to stick on windows, and usually the people working in these
> environment use virtual machines also if buildtime will be longer.

 So I was wrong about Vagrant not running on Windows? Oh, now I see. Sorry for
my confusion.

 At some point I considered that we should host an official VM image. This is a
lot better then, of course!


> IMHO with a fairly recent computer you will not notice of being inside
> a virtual machine.

 Do the test. AFAIK it doubles the build time.

> 
> Also having buildroot on mac is not that easy, Vagrant will solve
> these problems brilliantly!

 Yep, I didn't think of that either.



 Regards,
 Arnout
Angelo Compagnucci Sept. 10, 2015, 8:12 a.m. UTC | #4
Dear Arnout Vandecappelle,

2015-09-10 10:07 GMT+02:00 Arnout Vandecappelle <arnout@mind.be>:
>
>
> On 10-09-15 08:15, Angelo Compagnucci wrote:
>> Dear Arnout Vandecappelle ,
>>
>> 2015-09-10 0:14 GMT+02:00 Arnout Vandecappelle <arnout@mind.be>:
>>> On 10-09-15 00:01, Angelo Compagnucci wrote:
>>>> This patch adds a Vagrant file to buildroot. With this file
>>>> you can provision a complete buildroot developing environment
>>>> in minutes on all major platforms.
>>>>
>>>> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
>>>> ---
>>>>
>>>> This patch is a tentative approach to add a standard and official
>>>> Vagrant file to buildroot. With this file you can setup an isolated
>>>> build environment based on Vagrant on all major platforms.
>>>>
>>>> The file is fairly basic right now, it sets up correct Ubuntu version
>>>> to download and install required packages for buildroot.
>>>>
>>>> I'm open to suggestions and critics!
>>>
>>>  Here goes:
>>>
>>>  If you're already on a platform that runs vagrant, then you have enough to run
>>> buildroot as well, so why would you want to put it inside a VM and double your
>>> build time? Buildroot really really tries very hard to make sure it runs in any
>>> environment, so there should be no need for any of this trickery.
>>
>> Not true. I know of certain corporate environments in which you have
>> to stick on windows, and usually the people working in these
>> environment use virtual machines also if buildtime will be longer.
>
>  So I was wrong about Vagrant not running on Windows? Oh, now I see. Sorry for
> my confusion.
>
>  At some point I considered that we should host an official VM image. This is a
> lot better then, of course!

Yes, Vagrant make it simple and replicable.

>> IMHO with a fairly recent computer you will not notice of being inside
>> a virtual machine.
>
>  Do the test. AFAIK it doubles the build time.

You can raise the core numbers and memory allocated to your vm, see
the variable at the head of the Vagrant file. I have a quad core 4th
generation core i7 and the build is slower, but not that much.

>> Also having buildroot on mac is not that easy, Vagrant will solve
>> these problems brilliantly!
>
>  Yep, I didn't think of that either.
>
>  Regards,
>  Arnout
>
> --
> Arnout Vandecappelle      arnout dot vandecappelle at essensium dot com
> Senior Embedded Software Architect . . . . . . +32-478-010353 (mobile)
> Essensium, Mind division . . . . . . . . . . . . . . http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium . . . . . BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
>
Nimai Mahajan Sept. 10, 2015, 11:56 a.m. UTC | #5
Angelo Compagnucci <angelo.compagnucci@...> writes:

> 
> Dear Arnout Vandecappelle,
> 
> 2015-09-10 10:07 GMT+02:00 Arnout Vandecappelle <arnout@...>:
> >
> >
> > On 10-09-15 08:15, Angelo Compagnucci wrote:
> >> Dear Arnout Vandecappelle ,
> >>
> >> 2015-09-10 0:14 GMT+02:00 Arnout Vandecappelle <arnout@...>:
> >>> On 10-09-15 00:01, Angelo Compagnucci wrote:
> >>>> This patch adds a Vagrant file to buildroot. With this file
> >>>> you can provision a complete buildroot developing environment
> >>>> in minutes on all major platforms.
> >>>>
> >>>> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@...>
> >>>> ---
> >>>>
> >>>> This patch is a tentative approach to add a standard and official
> >>>> Vagrant file to buildroot. With this file you can setup an isolated
> >>>> build environment based on Vagrant on all major platforms.
> >>>>
> >>>> The file is fairly basic right now, it sets up correct Ubuntu version
> >>>> to download and install required packages for buildroot.
> >>>>
> >>>> I'm open to suggestions and critics!
> >>>
> >>>  Here goes:
> >>>
> >>>  If you're already on a platform that runs vagrant, then you have
enough to run
> >>> buildroot as well, so why would you want to put it inside a VM and
double your
> >>> build time? Buildroot really really tries very hard to make sure it
runs in any
> >>> environment, so there should be no need for any of this trickery.
> >>
> >> Not true. I know of certain corporate environments in which you have
> >> to stick on windows, and usually the people working in these
> >> environment use virtual machines also if buildtime will be longer.
> >
> >  So I was wrong about Vagrant not running on Windows? Oh, now I see.
Sorry for
> > my confusion.
> >
> >  At some point I considered that we should host an official VM image.
This is a
> > lot better then, of course!
> 
> Yes, Vagrant make it simple and replicable.

We use strict configuration management practices and part of that is
automating reproducible builds. Vagrant allows doing just that (very
important use case in my opinion) so I thank you for submitting this; an
official VM image would be great for testing purposes as well. Furthermore,
you can have Vagrant automate a bunch of commands on top of just building
which introduces a lot of options.

> 
> >> IMHO with a fairly recent computer you will not notice of being inside
> >> a virtual machine.
> >
> >  Do the test. AFAIK it doubles the build time.
> 
> You can raise the core numbers and memory allocated to your vm, see
> the variable at the head of the Vagrant file. I have a quad core 4th
> generation core i7 and the build is slower, but not that much.
> 
> >> Also having buildroot on mac is not that easy, Vagrant will solve
> >> these problems brilliantly!

While our build servers are running native Linux, we use Vagrant + VMs (both
Virtualbox and VMware) at work on Macs daily as our development machines. It
works great. The past few years, performance has gotten very good and with
the recent Macbook Pro PCI-E SSDs, there is not a noticeable drop off in
performance. In fact, we also do daily builds on these machines. You just
have to make sure you have a beasty machine for it (i7, 8GB RAM minimum,
preferably SSD, etc.). This works especially well in corporate scenarios (as
mentioned) where you are required to run Windows as the host.

> >
> >  Yep, I didn't think of that either.
> >
> >  Regards,
> >  Arnout
> >
> > --
> > Arnout Vandecappelle      arnout dot vandecappelle at essensium dot com
> > Senior Embedded Software Architect . . . . . . +32-478-010353 (mobile)
> > Essensium, Mind division . . . . . . . . . . . . . . http://www.mind.be
> > G.Geenslaan 9, 3001 Leuven, Belgium . . . . . BE 872 984 063 RPR Leuven
> > LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> > GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
> >
>
Angelo Compagnucci Sept. 10, 2015, 12:13 p.m. UTC | #6
Dear Nimai Mahajan,

2015-09-10 13:56 GMT+02:00 Nimai Mahajan <nimaim@gmail.com>:
> Angelo Compagnucci <angelo.compagnucci@...> writes:
>
>>
>> Dear Arnout Vandecappelle,
>>
>> 2015-09-10 10:07 GMT+02:00 Arnout Vandecappelle <arnout@...>:
>> >
>> >
>> > On 10-09-15 08:15, Angelo Compagnucci wrote:
>> >> Dear Arnout Vandecappelle ,
>> >>
>> >> 2015-09-10 0:14 GMT+02:00 Arnout Vandecappelle <arnout@...>:
>> >>> On 10-09-15 00:01, Angelo Compagnucci wrote:
>> >>>> This patch adds a Vagrant file to buildroot. With this file
>> >>>> you can provision a complete buildroot developing environment
>> >>>> in minutes on all major platforms.
>> >>>>
>> >>>> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@...>
>> >>>> ---
>> >>>>
>> >>>> This patch is a tentative approach to add a standard and official
>> >>>> Vagrant file to buildroot. With this file you can setup an isolated
>> >>>> build environment based on Vagrant on all major platforms.
>> >>>>
>> >>>> The file is fairly basic right now, it sets up correct Ubuntu version
>> >>>> to download and install required packages for buildroot.
>> >>>>
>> >>>> I'm open to suggestions and critics!
>> >>>
>> >>>  Here goes:
>> >>>
>> >>>  If you're already on a platform that runs vagrant, then you have
> enough to run
>> >>> buildroot as well, so why would you want to put it inside a VM and
> double your
>> >>> build time? Buildroot really really tries very hard to make sure it
> runs in any
>> >>> environment, so there should be no need for any of this trickery.
>> >>
>> >> Not true. I know of certain corporate environments in which you have
>> >> to stick on windows, and usually the people working in these
>> >> environment use virtual machines also if buildtime will be longer.
>> >
>> >  So I was wrong about Vagrant not running on Windows? Oh, now I see.
> Sorry for
>> > my confusion.
>> >
>> >  At some point I considered that we should host an official VM image.
> This is a
>> > lot better then, of course!
>>
>> Yes, Vagrant make it simple and replicable.
>
> We use strict configuration management practices and part of that is
> automating reproducible builds. Vagrant allows doing just that (very
> important use case in my opinion) so I thank you for submitting this; an
> official VM image would be great for testing purposes as well. Furthermore,
> you can have Vagrant automate a bunch of commands on top of just building
> which introduces a lot of options.

Same here. We build a new VM with vagrant for each testing scenario
with jenkins and ansible provisioning.

>>
>> >> IMHO with a fairly recent computer you will not notice of being inside
>> >> a virtual machine.
>> >
>> >  Do the test. AFAIK it doubles the build time.
>>
>> You can raise the core numbers and memory allocated to your vm, see
>> the variable at the head of the Vagrant file. I have a quad core 4th
>> generation core i7 and the build is slower, but not that much.
>>
>> >> Also having buildroot on mac is not that easy, Vagrant will solve
>> >> these problems brilliantly!
>
> While our build servers are running native Linux, we use Vagrant + VMs (both
> Virtualbox and VMware) at work on Macs daily as our development machines. It
> works great. The past few years, performance has gotten very good and with
> the recent Macbook Pro PCI-E SSDs, there is not a noticeable drop off in
> performance. In fact, we also do daily builds on these machines. You just
> have to make sure you have a beasty machine for it (i7, 8GB RAM minimum,
> preferably SSD, etc.). This works especially well in corporate scenarios (as
> mentioned) where you are required to run Windows as the host.

I can confirm. Good hardware produces really good performances.

>
>> >
>> >  Yep, I didn't think of that either.
>> >
>> >  Regards,
>> >  Arnout
>> >
>> > --
>> > Arnout Vandecappelle      arnout dot vandecappelle at essensium dot com
>> > Senior Embedded Software Architect . . . . . . +32-478-010353 (mobile)
>> > Essensium, Mind division . . . . . . . . . . . . . . http://www.mind.be
>> > G.Geenslaan 9, 3001 Leuven, Belgium . . . . . BE 872 984 063 RPR Leuven
>> > LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
>> > GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
>> >
>>
>
>
>
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
diff mbox

Patch

diff --git a/docs/manual/getting.txt b/docs/manual/getting.txt
index 3437f93..5b96928 100644
--- a/docs/manual/getting.txt
+++ b/docs/manual/getting.txt
@@ -10,6 +10,13 @@  November. Release numbers are in the format YYYY.MM, so for example
 
 Release tarballs are available at http://buildroot.org/downloads/[].
 
+If you want an isolated developing environment with Vagrant, paste this
+line in your terminal:
+
+--------------------
+wget http://git.buildroot.net/buildroot/tree/support/misc/Vagrantfile; vagrant up
+--------------------
+
 If you want to follow development, you can use the daily snapshots or
 make a clone of the Git repository. Refer to the
 http://buildroot.org/download[Download page] of the Buildroot website
diff --git a/docs/website/download.html b/docs/website/download.html
index ef87b1c..ece0f19 100644
--- a/docs/website/download.html
+++ b/docs/website/download.html
@@ -32,6 +32,15 @@  This and earlier releases (and their PGP signatures) can always be downloaded fr
 
 <p>
 
+<p>
+If you want an isolated developing environment with Vagrant, paste this
+line in your terminal:
+
+--------------------
+wget http://git.buildroot.net/buildroot/tree/support/misc/Vagrantfile; vagrant up
+--------------------
+</p>
+
 You can also obtain daily snapshots of the latest Buildroot source tree if you
 want to follow development, but cannot or do not wish to use Git.
 
diff --git a/support/misc/Vagrantfile b/support/misc/Vagrantfile
new file mode 100644
index 0000000..e8162f9
--- /dev/null
+++ b/support/misc/Vagrantfile
@@ -0,0 +1,42 @@ 
+################################################################################
+#
+# Vagrant file
+#
+################################################################################
+
+### Change here for more memory/cores or different version ###
+VM_MEMORY=1024
+VM_CORES=1
+BUILDROOT_VERSION="2015.08.1"
+
+$sudo_script = <<SCRIPT
+sudo apt-get update
+sudo apt-get -y autoremove
+sudo apt-get -y install build-essential libncurses5-dev \
+	git bzr cvs mercurial subversion
+SCRIPT
+
+$script = <<SCRIPT
+echo "Downloading http://buildroot.org/downloads/buildroot-#{BUILDROOT_VERSION}.tar.gz"
+curl -s http://buildroot.org/downloads/buildroot-#{BUILDROOT_VERSION}.tar.gz | tar zx
+SCRIPT
+
+Vagrant.configure("2") do |config|
+  config.vm.box = "ubuntu/trusty64"
+
+  config.vm.provider :vmware_fusion do |v, override|
+    v.vmx["numvcpus"] = VM_CORES
+    v.vmx["memsize"] = VM_MEMORY
+    v.vmx['displayname'] = 'Buildroot'
+  end
+
+  config.vm.provider :virtualbox do |v, override|
+	v.name = "Buildroot"
+	v.customize ["modifyvm", :id, "--name", "Buildroot"]
+    v.customize ["modifyvm", :id, "--memory", VM_MEMORY]
+    v.customize ["modifyvm", :id, "--cpus", VM_CORES]
+  end
+
+  config.vm.provision "shell", inline: $sudo_script
+  config.vm.provision "shell", privileged: false, inline: $script
+end