diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-05-02 08:07:46 -0700 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-05-02 08:07:46 -0700 |
| commit | 0e529c22d6ab6387b472a244df4dac17f702e4a1 (patch) | |
| tree | ef8e8ba8390b21d8f2abcdc95dbd43997a97e7c9 | |
| parent | 0323adc8ea620b0cf27419cefb86ec2c8826648e (diff) | |
| parent | d8ce46feda8cfb5533719f060365aa579caadce1 (diff) | |
| download | mruby-0e529c22d6ab6387b472a244df4dac17f702e4a1.tar.gz mruby-0e529c22d6ab6387b472a244df4dac17f702e4a1.zip | |
Merge pull request #1229 from bovi/dependencies_requirements
First strik on GEM Dependencies
| -rw-r--r-- | doc/mrbgems/README.md | 51 | ||||
| -rw-r--r-- | tasks/mrbgem_spec.rake | 12 |
2 files changed, 53 insertions, 10 deletions
diff --git a/doc/mrbgems/README.md b/doc/mrbgems/README.md index 1ad39a02b..f821379de 100644 --- a/doc/mrbgems/README.md +++ b/doc/mrbgems/README.md @@ -98,19 +98,50 @@ The mrbgems build process will use this specification to compile Object and Ruby files. The compilation results will be add to *lib/libmruby.a*. This file is used by tools like `mruby` and `mirb` to empower the GEM functionality. +The following properties can be set inside of your `MRuby::Gem::Specification` for +information purpose: + +* `spec.license` or `spec.licenses` (A single license or a list of them under which this GEM is licensed) +* `spec.author` or `spec.authors` (Developer name or a list of them) +* `spec.version` (Current version) +* `spec.description` (Detailed description) +* `spec.summary` (Short summary) +* `spec.homepage` (Homepage) +* `spec.requirements` (External requirements as information for user) + +It is required for every GEM to have a license and an author! + +In case your GEM is depending on other GEMs please use +`spec.add_dependency(gem, *requirements)` like: + + MRuby::Gem::Specification.new('c_and_ruby_extension_example') do |spec| + spec.license = 'MIT' + spec.authors = 'mruby developers' + + # add GEM dependency mruby-parser. + # Version has to be between 1.0.0 and 1.5.2 + spec.add_dependency('mruby-parser', '> 1.0.0', '< 1.5.2') + end + +The usage of versions is optional. + +__ATTENTION:__ +The dependency system is currently (May 2013) under development and doesn't check +or resolve dependencies! + In case your GEM has more complex build requirements you can use the following options additionally inside of your GEM specification: -* spec.cflags (C compiler flags for this GEM) -* spec.mruby_cflags (global C compiler flags for everything) -* spec.mruby_ldflags (global linker flags for everything) -* spec.mruby_libs (global libraries for everything) -* spec.mruby_includes (global includes for everything) -* spec.rbfiles (Ruby files to compile) -* spec.objs (Object files to compile) -* spec.test_rbfiles (Ruby test files for integration into mrbtest) -* spec.test_objs (Object test files for integration into mrbtest) -* spec.test_preload (Initialization files for mrbtest) +* `spec.cflags` (C compiler flags) +* `spec.mruby_cflags` (global C compiler flags for everything) +* `spec.mruby_ldflags` (global linker flags for everything) +* `spec.mruby_libs` (global libraries for everything) +* `spec.mruby_includes` (global includes for everything) +* `spec.rbfiles` (Ruby files to compile) +* `spec.objs` (Object files to compile) +* `spec.test_rbfiles` (Ruby test files for integration into mrbtest) +* `spec.test_objs` (Object test files for integration into mrbtest) +* `spec.test_preload` (Initialization files for mrbtest) ## C Extension diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake index 468a594ac..7b6751390 100644 --- a/tasks/mrbgem_spec.rake +++ b/tasks/mrbgem_spec.rake @@ -30,6 +30,9 @@ module MRuby attr_accessor :bins + attr_accessor :requirements + attr_reader :dependencies + attr_block MRuby::Build::COMMANDS def initialize(name, &block) @@ -63,6 +66,9 @@ module MRuby @bins = [] + @requirements = [] + @dependencies = [] + instance_eval(&@initializer) if !name || !licenses || !authors @@ -80,6 +86,12 @@ module MRuby define_gem_init_builder end + def add_dependency(name, *requirements) + requirements = ['> 0.0.0'] if requirements.empty? + requirements.flatten! + @dependencies << [:gem => name, :requirements => requirements] + end + def self.bin=(bin) @bins = [bin].flatten end |
