gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Jumpstarting a GNUstep development environment using vagrant


From: Niels Grewe
Subject: Jumpstarting a GNUstep development environment using vagrant
Date: Mon, 4 Jan 2016 09:03:47 +0000

HI guys,
 
some of you might have heard about vagrant [0], which is a tool for managing 
virtual machines. It’s quite useful especially if you are juggling multiple 
projects because it allows you to keep dependencies and build environments 
isolated in VMs while you can still use your familiar VCS/editor configuration 
on the host for coding via a directory that is shared between the host and the 
VM. 

Additionally, vagrant has the notion of a ‘box’: a pre-made virtual environment 
for a specific task. Using vagrant boxes, you can get up and running with a 
wordpress installation, an elasticsearch node, a CoreOS cluster, etc. within a 
matter of minutes because all you have to do is point vagrant at the box you 
want to use and have it download and launch it for you. That massively reduces 
the barrier of entry because you can just dip your toe in without learning the 
intricacies of a new build system and all that stuff. 

For that reason, I made it my holiday project to create a vagrant box that 
provides a GNUstep development environment and that has now actually reached a 
working state. So for the impatient: if you have vagrant, a supported 
hypervisor (currently that would be VirtualBox or VMware Fusion/Workstation), 
and an X server, you can get Gorm on your screen by just doing the following in 
an empty directory:

> vagrant init ngrewe/gnustep-gui
> vagrant up
> vagrant ssh -- -Y Gorm

(or just `vagrant ssh` to get a shell in the VM)

To provide a bit more detail, you will get the following with the box:

* a Debian 8.2 (jessie) base system 
* clang 3.7
* libobjc2 
* libdispatch
* gnustep-make
* gnustep-base
* gnustep-gui
* gnustep-back
* gorm

It’s configured to support all the modern Objective-C features (declared 
properties, non-fragile ABI, blocks, ARC). There is also a variant of the box 
called ngrewe/gnustep-headless that omits the GUI parts if you are looking to 
do some server side Objective-C development. I really hope that this is helpful 
for people who want to try out GNUstep.

The boxes themselves are built using packer [1] and I maintain the repository 
with the provisioning templates on github [2] if you want to have a closer look 
at how it works. The process of building the boxes is mostly automated, so I 
will do my best to update them on a regular basis.

There are a few things I’m looking at for the future:

* Slimming down the box: Currently the compressed boxes are close to 700MB, and 
about 2.3GB uncompressed, so I’m looking for things to remove to get he size 
down.
* Support for Parallels Desktop: The boxes already support both VirtualBox and 
VMware so most people should be able to use them, but at least as far as Mac OS 
hosts go, Parallels seems to be the third major desktop virtualisation 
provider. Both packer and vagrant support Parallels, so I would really like to 
add support for that as well. Unfortunately, I don’t have a license for the 
software, so I’m hoping that somebody might volunteer to add this provider…
* Additional layers/components: I’ve kept the list of things in the image 
fairly minimal for now. It might make sense to ship things like CoreFoundation, 
Opal, or DBusKit, though.

I’m also not really sure about the deployment story. I think vagrant boxes 
provide a pretty nice and consistent experience for developers, but for end 
users providing proper packages are probably much more useful. Still, packer 
provides a way to build docker images from the template as well, so I’m 
wondering how difficult it would be to containerize GNUstep apps for easy 
deployment?

Anyways, I encourage y’all to check this out, see how it fits your workflow, 
and report bugs and suggestions for improvements to me.

Cheers,

Niels 
--
[0] https://www.vagrantup.com
[1] https://www.packer.io
[2] https://github.com/ngrewe/gnustep-boxes


reply via email to

[Prev in Thread] Current Thread [Next in Thread]