Skip to content

Related work

Hisham Muhammad edited this page Feb 11, 2015 · 1 revision

Table of Contents

Deployment systems

Language-oriented deployment systems: this is the category LuaRocks fits in.

Ruby

  • RubyGems is the "premier ruby packaging system". It defines a package format and automated download and installation of Ruby modules from remote servers, as well as handling module versioning.

Perl

  • CPAN, the Comprehensive Perl Archive Network, features a standard Perl module, CPAN.pm, which automates download and installation of Perl modules from CPAN.

Python

  • Python Cheese Shop is Python's answer to CPAN; a repository of Python modules. SetupTools and EasyInstall are Python's answer to RubyGems; a tool for downloading and installing Python modules in an automated manner.

Build systems

Generic build systems can, of course, build projects written in any language regardless of the language they are written in, but language-specific build systems often offer useful features streamlining the compilation and installation of modules.

Lua

  • Hamster is a Makefile-generator for Lua inspired in scons. It can generate Makefiles for GNU make and nmake, as well as scons project files.
  • LuaIBS is a make-replacement written in Lua and C. Is uses LuaFileSystem to perform file operations. Supports Unix and Windows, but has a compile-time option.
  • Meique is a make-replacement written in C++ with Lua embedded as a scripting language.

Ruby

  • Rake is a build system for Ruby. "Rake is similar to make in scope and purpose."
  • Ruby's current de facto standard for building external modules is mkmf -- it is quite magical.
  • mkmf source code - support for multiple platforms seems too monolithic
  • mkmf2 - an alternative to mkmf, pointing out some of is limitations
  • mkrf is a Rakefile generator, created as a Google Summer of Code project. Its cross-platform abilities don't seem too transparent, though.

Python

  • In the Python world, the blessed standard is still distutils. Like Rake, it also does the entire work (serves as a Make replacement). In typical Python fashion, it is packed with features.
  • Given the amount of if's we had to add to the recipe_type=python section of GoboLinux Compile, its use doesn't seem too standardized.
  • An alternative in the Python community is scons.

Perl

  • In the Perl world, extensions use XS and its use is quite standardized. Looking at CPAN modules, basically everybody uses ExtUtils and its Makefile.PL, a Makefile generator.
  • ExtUtils::MakeMaker is the module that does this job.
  • It also works on Windows, with nmake.
  • makemaker.org - another resource for MakeMaker-related stuff.
  • Module::Build was an attempt to overthrow MakeMaker, dating back to 2003, but it didn't seem to succeed.
  • Some interesting quotes about the importance of a de facto standard build system: "The ExtUtils::MakeMaker module, along with the h2xs script, has been a huge boon to the Perl community" ... "ExtUtils-MakeMaker is a huge part of what makes PAUSE and CPAN possible" - http://www.perl.com/pub/a/2003/02/12/module1.html
  • Of course, there is also the father of SCons, Cons, which is written in Perl but seems to be dead.