NAME

Enbld - Build your development environment by perl-based DSL.

SYNOPSIS

#!/usr/bin/perl

use 5.012;
use warnings;

use utf8;

use lib "$ENV{HOME}/.enbld/extlib/lib/perl5/";

use Enbld;

enbld 'myenv' => build {

    # install latest version
    target 'git' => define {
        version 'latest';
    };

    # install specific version
    target 'tmux' => define {
        version '1.8';
    };

    # install software and set configuration file
    target 'vim' => define {
        version 'latest';
    };

    conf '.vimrc' => load {
        from 'https://raw.github.com/magnolia-k/vimrc/master/.vimrc';
    };
};

DESCRIPTION

Enbld is a tool for building development environment.

Write installation conditions (a version - latest or specific version number, the execution of a test code, configuration file etc.) of target software in perl-based DSL,then download of a source code, building, and installation will be performed altogether automatically.

If DSL is performed once again when the software of a later more high version is released, the latest version will be installed automatically.

FEATURES

  • Configuration file which described installation conditions is defined by perl-based DSL.

    Once it writes a configuration file, same environment is easily reproducible .

  • Arbitrary versions are installable.

    If it is specified as 'latest', the latest version will be judged automatically and it will be installed.

  • The version will be installed if arbitrary versions are specified.

    Like other package management systems (Homebrew, MacPorts etc.), the package managerial system side does not specify a version.

  • It can be confirmed whether a version higher than the version installed is released.

    The software (vim, git, etc.) upgraded frequently can also always use the latest version.

  • All software is installed in a home directory.

    Software which became unnecessary can be deleted easily.

Supported software

Now, Enbld supports for installation below software.

apache         http://httpd.apache.org
apr            http://apr.apache.org
aprutil        http://apr.apache.org
autoconf       http://www.gnu.org/software/autoconf/
automake       http://www.gnu.org/software/automake/
cmake          http://www.cmake.org
emacs          http://www.gnu.org/software/emacs/
git            http://git-scm.com
groff          http://www.gnu.org/software/groff/
hello          http://www.gnu.org/software/hello/
libevent       http://libevent.org
libidn         http://www.gnu.org/software/libidn/
libtool        http://www.gnu.org/software/libtool/
mysql          http://www.mysql.com
nginx          http://nginx.org
nodejs         http://nodejs.org
pcre           http://www.pcre.org
perl           http://www.perl.org
pkgconfig      http://www.freedesktop.org/wiki/Software/pkg-config/
python         http://www.python.org
rakudostar     http://rakudo.org
ruby           https://www.ruby-lang.org
scala          http://www.cmake.org
tmux           http://tmux.sourceforge.net
tree           http://mama.indstate.edu/users/ice/tree/
vim            http://www.vim.org
wget           http://www.gnu.org/software/wget/
zsh            http://www.zsh.org

ANTI-FEATURES

  • Enbld does NOT aim at perfect package management software.

    The selection plan of the software to support by Enbld is as follows.

    • Software required for a developer updated frequently (e.g. git, vim).

    • Software with which the developer who has participated in the project needs to unite a version (e.g. web server, database, programming language etc.).

    • Software required for a developer although not installed in Mac OS X (e.g. tmux).

  • It does not have a function which overlaps with the module controlling function which each software has (e.g. CPAN,gem etc.).

SUPPORTED PLATFORMS

Enbld is performing verification of running on Mac OS X 10.8 Mountain Lion.

Probably, it may operate also on Linux (Debian etc.). When not running, it is waiting for the report :)

CAUTION

Success of building of all the versions is not guaranteed. Since log file is displayed when building goes wrong, please analyze and send report:)

INSTALLATION

Install by Enbld installer (Download tarball from CPAN).

$ curl -L http://goo.gl/MrbDDB | perl

or

Install from tarball.

Download and unpack tarball (Download tarball from CPAN or GitHub).

$ tar xvf Enbld-x.xxxx.tar.gz
$ cd Enbld-x.xxxx
$ ./setup

Enbld installs all the components in a $HOME/.enbld directory.Therefore, it is necessary to set the path of the software which Enbld installed.

Set Enbld's path.

In .bashrc, write below setting.

export $PATH=$HOME/.enbld/bin:$HOME/.enbld/extlib/bin:$PATH
export MANPATH=$HOME/.enbld/share/man:$HOME/.enbld/man:$MANPATH

GETTING STARTED

INSTALL LATEST VERSION

Ready configuration file

$ cat samples/git_install.plx
#!/usr/bin/perl

use 5.012;
use warnings;

use utf8;

use lib "$ENV{HOME}/.enbld/extlib/lib/perl5/";

use Enbld;

enbld 'myenv' => build {

    target 'git' => define {
        version 'latest';
    };
}

Execute configuration file

$ ./samples/git_install.plx

Target software is installed

$ git --version
git version [latest version]

Upgrade installed software

Then, if the software of a latest version is released, please execute a configuration file again. The software of the latest version will be installed.

$ ./samples/git_install.plx

Latest software is installed.

INSTALL SPECIFIC VERSION

A specific version is specified in setting file. -> version '5.18.1';

$ cat samples/specific_version_install.plx
#!/usr/bin/perl
   
use 5.012;
use warnings;
   
use utf8;
   
use lib "$ENV{HOME}/.enbld/extlib/lib/perl5/";
   
use Enbld;
   
enbld 'myenv' => build {
   
    target 'perl' => define {
        version '5.18.1';
    };
   
};

'perl 5.18.1' is installed.

$ perl -v

This is perl 5, version 18, subversion 1 (v5.18.1) built for darwin-multi-2level

DOWNLOAD OR CREATE SOFTWARE' CONFIGURATION FILE (DOTFILE)

Enbld also can create software' configuration file(.dotfile).

'conf' function set software' configuration file to home directory.

Download software' configuration file

$ cat samples/vim_install.plx
#!/usr/bin/perl
   
use 5.012;
use warnings;
   
use utf8;
   
use lib "$ENV{HOME}/.enbld/extlib/lib/perl5/";
   
use Enbld;
   
enbld 'myenv' => build {
   
    target 'vim' => define {
        version 'latest';
    };
   
    conf '.vimrc' => load {
        from 'https://raw.github.com/magnolia-k/vimrc/master/.vimrc';
    };
   
};

'.vimrc' is downloaded to $HOME from 'https://raw.github.com/magnolia-k/vimrc/master/.vimrc'.

Nothing is done when the file of the same file already exists.

Create software' configuration file

conf '.vimrc' => set {
    content 'syntax on';
    content 'set cindent';
};

'.vimrc' is created to $HOME.

Nothing is done when the file of the same file already exists.

Copy software' configuration file

conf '.vimrc' => copy {
    from "/copy/from/.vimrc";
};

'.vimrc' is created to $HOME.

Nothing is done when the file of the same file already exists.

MAKE TEST AT INSTALLATION

Enbld can make test at installation.

target 'git' => define {
    version 'latest';
    make_test 1;
};

As default, this function is OFF.

If a test goes wrong, also building will go wrong.

ADD ARGUMENTS

'arguments' method adds additional arguments to './configure'.

target 'perl' => define {
    version '5.18.1';
    arguments '-Dusethreads';
};

perl 5.18.1 with thread

$ perl -v
   
This is perl 5, version 18, subversion 1 (v5.18.1) built for darwin-thread-multi-2level

UTILITY COMMAND 'enblder'

Enbld installs utility command 'enblder'.

Displays available software

Subcommand 'available' displays software that can install by Enbld.

$ enblder available

Displays installed software

Subcommand 'list' displays software that is installed.

$ enblder list

Displays configuration file

Subcommand 'freeze' displays configuration file that is condition of installed software.

$ enblder freeze

Displays outdated software

Subcommand 'outdated' displays outdated software list.

$ enblder outdated

Upgrade outdated software

Subcommand 'upgrade' upgrade outdated software.

$ enblder upgrade git

SEE ALSO

Enbld::Tutorial

enblder

COPYRIGHT

copyright 2013- Magnolia <magnolia.k@me.com>.

LICENSE

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.