gss 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +2 -0
- data/gss.gemspec +25 -0
- data/lib/gss.rb +62 -0
- data/lib/gss/version.rb +3 -0
- data/vendor/bundle/ruby/1.9.1/bin/nokogiri +23 -0
- data/vendor/bundle/ruby/1.9.1/bin/nokogiri.bat +6 -0
- data/vendor/bundle/ruby/1.9.1/bin/rake +23 -0
- data/vendor/bundle/ruby/1.9.1/bin/rake.bat +6 -0
- data/vendor/bundle/ruby/1.9.1/build_info/certified-0.1.2.info +1 -0
- data/vendor/bundle/ruby/1.9.1/build_info/mini_portile-0.6.0.info +1 -0
- data/vendor/bundle/ruby/1.9.1/build_info/nokogiri-1.6.2.1-x86-mingw32.info +1 -0
- data/vendor/bundle/ruby/1.9.1/build_info/rake-0.9.2.2.info +1 -0
- data/vendor/bundle/ruby/1.9.1/gems/certified-0.1.2/README.md +5 -0
- data/vendor/bundle/ruby/1.9.1/gems/certified-0.1.2/certified.rb +20 -0
- data/vendor/bundle/ruby/1.9.1/gems/certified-0.1.2/certs/ca-bundle.crt +3376 -0
- data/vendor/bundle/ruby/1.9.1/gems/mini_portile-0.6.0/History.txt +86 -0
- data/vendor/bundle/ruby/1.9.1/gems/mini_portile-0.6.0/LICENSE.txt +20 -0
- data/vendor/bundle/ruby/1.9.1/gems/mini_portile-0.6.0/README.rdoc +169 -0
- data/vendor/bundle/ruby/1.9.1/gems/mini_portile-0.6.0/Rakefile +53 -0
- data/vendor/bundle/ruby/1.9.1/gems/mini_portile-0.6.0/examples/Rakefile +113 -0
- data/vendor/bundle/ruby/1.9.1/gems/mini_portile-0.6.0/lib/mini_portile.rb +437 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/.autotest +26 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/.editorconfig +17 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/.gemtest +0 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/.travis.yml +27 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/CHANGELOG.ja.rdoc +889 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/CHANGELOG.rdoc +898 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/C_CODING_STYLE.rdoc +33 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/Gemfile +21 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/Manifest.txt +377 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/README.ja.rdoc +111 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/README.rdoc +180 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ROADMAP.md +89 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/Rakefile +356 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/STANDARD_RESPONSES.md +47 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/Y_U_NO_GEMSPEC.md +155 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/bin/nokogiri +78 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/build_all +130 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/dependencies.yml +4 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/depend +358 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/extconf.rb +543 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/html_document.c +170 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/html_document.h +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/html_element_description.c +279 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/html_element_description.h +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/html_entity_lookup.c +32 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/html_entity_lookup.h +8 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/html_sax_parser_context.c +116 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/html_sax_parser_context.h +11 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/html_sax_push_parser.c +87 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/html_sax_push_parser.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/nokogiri.c +148 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/nokogiri.h +164 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_attr.c +94 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_attr.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_attribute_decl.c +70 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_attribute_decl.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_cdata.c +56 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_cdata.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_comment.c +54 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_comment.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_document.c +577 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_document.h +23 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_document_fragment.c +48 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_document_fragment.h +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_dtd.c +202 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_dtd.h +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_element_content.c +123 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_element_content.h +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_element_decl.c +69 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_element_decl.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_encoding_handler.c +79 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_encoding_handler.h +8 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_entity_decl.c +110 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_entity_decl.h +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_entity_reference.c +52 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_entity_reference.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_io.c +56 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_io.h +11 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_libxml2_hacks.c +112 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_libxml2_hacks.h +12 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_namespace.c +78 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_namespace.h +13 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_node.c +1603 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_node.h +13 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_node_set.c +467 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_node_set.h +14 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_processing_instruction.c +56 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_processing_instruction.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_reader.c +681 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_reader.h +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_relax_ng.c +161 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_relax_ng.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_sax_parser.c +312 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_sax_parser.h +39 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_sax_parser_context.c +262 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_sax_parser_context.h +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_sax_push_parser.c +115 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_sax_push_parser.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_schema.c +205 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_schema.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_syntax_error.c +63 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_syntax_error.h +13 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_text.c +52 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_text.h +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_xpath_context.c +307 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xml_xpath_context.h +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xslt_stylesheet.c +270 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/ext/nokogiri/xslt_stylesheet.h +14 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri.rb +137 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/css.rb +27 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/css/node.rb +52 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/css/parser.rb +715 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/css/parser.y +249 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/css/parser_extras.rb +91 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/css/syntax_error.rb +7 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/css/tokenizer.rb +152 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/css/tokenizer.rex +55 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/css/xpath_visitor.rb +219 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/decorators/slop.rb +35 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/html.rb +37 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/html/builder.rb +35 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/html/document.rb +333 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/html/document_fragment.rb +41 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/html/element_description.rb +23 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/html/element_description_defaults.rb +671 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/html/entity_lookup.rb +13 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/html/sax/parser.rb +52 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/html/sax/parser_context.rb +16 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/html/sax/push_parser.rb +16 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/syntax_error.rb +4 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/version.rb +106 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml.rb +73 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/attr.rb +14 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/attribute_decl.rb +18 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/builder.rb +443 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/cdata.rb +11 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/character_data.rb +7 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/document.rb +279 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/document_fragment.rb +112 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/dtd.rb +32 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/element_content.rb +36 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/element_decl.rb +13 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/entity_decl.rb +19 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/namespace.rb +13 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/node.rb +982 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/node/save_options.rb +61 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/node_set.rb +355 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/notation.rb +6 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/parse_options.rb +98 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/pp.rb +2 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/pp/character_data.rb +18 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/pp/node.rb +56 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/processing_instruction.rb +8 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/reader.rb +112 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/relax_ng.rb +32 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/sax.rb +4 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/sax/document.rb +171 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/sax/parser.rb +123 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/sax/parser_context.rb +16 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/sax/push_parser.rb +60 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/schema.rb +63 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/syntax_error.rb +47 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/text.rb +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/xpath.rb +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/xpath/syntax_error.rb +11 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xml/xpath_context.rb +16 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xslt.rb +56 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/nokogiri/xslt/stylesheet.rb +25 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/lib/xsd/xmlparser/nokogiri.rb +102 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/suppressions/README.txt +1 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/suppressions/nokogiri_ree-1.8.7.358.supp +61 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/suppressions/nokogiri_ruby-1.8.7.370.supp +0 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/suppressions/nokogiri_ruby-1.9.2.320.supp +28 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/suppressions/nokogiri_ruby-1.9.3.327.supp +28 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/tasks/nokogiri.org.rb +24 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/tasks/test.rb +95 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/css/test_nthiness.rb +222 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/css/test_parser.rb +358 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/css/test_tokenizer.rb +198 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/css/test_xpath_visitor.rb +96 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/decorators/test_slop.rb +16 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/2ch.html +108 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/address_book.rlx +12 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/address_book.xml +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/atom.xml +344 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/bar/bar.xsd +4 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/bogus.xml +0 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/dont_hurt_em_why.xml +422 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/encoding.html +82 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/encoding.xhtml +84 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/exslt.xml +8 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/exslt.xslt +35 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/foo/foo.xsd +4 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/metacharset.html +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/noencoding.html +47 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/po.xml +32 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/po.xsd +66 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/saml/saml20assertion_schema.xsd +283 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/saml/saml20protocol_schema.xsd +302 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/saml/xenc_schema.xsd +146 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/saml/xmldsig_schema.xsd +318 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/shift_jis.html +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/shift_jis.xml +5 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/shift_jis_no_charset.html +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/slow-xpath.xml +25509 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/snuggles.xml +3 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/staff.dtd +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/staff.xml +59 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/staff.xslt +32 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/test_document_url/bar.xml +2 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/test_document_url/document.dtd +4 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/test_document_url/document.xml +6 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/tlm.html +850 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/to_be_xincluded.xml +2 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/valid_bar.xml +2 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/files/xinclude.xml +4 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/helper.rb +164 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/html/sax/test_parser.rb +141 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/html/sax/test_parser_context.rb +46 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/html/test_builder.rb +164 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/html/test_document.rb +619 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/html/test_document_encoding.rb +148 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/html/test_document_fragment.rb +267 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/html/test_element_description.rb +105 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/html/test_named_characters.rb +14 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/html/test_node.rb +196 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/html/test_node_encoding.rb +27 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/namespaces/test_additional_namespaces_in_builder_doc.rb +14 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/namespaces/test_namespaces_aliased_default.rb +24 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/namespaces/test_namespaces_in_builder_doc.rb +75 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/namespaces/test_namespaces_in_cloned_doc.rb +31 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/namespaces/test_namespaces_in_created_doc.rb +75 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/namespaces/test_namespaces_in_parsed_doc.rb +66 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/namespaces/test_namespaces_preservation.rb +31 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/test_convert_xpath.rb +135 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/test_css_cache.rb +45 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/test_encoding_handler.rb +46 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/test_memory_leak.rb +156 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/test_nokogiri.rb +138 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/test_reader.rb +558 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/test_soap4r_sax.rb +52 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/test_xslt_transforms.rb +279 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/node/test_save_options.rb +28 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/node/test_subclass.rb +44 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/sax/test_parser.rb +382 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/sax/test_parser_context.rb +115 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/sax/test_push_parser.rb +157 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_attr.rb +64 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_attribute_decl.rb +86 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_builder.rb +315 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_c14n.rb +161 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_cdata.rb +48 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_comment.rb +29 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_document.rb +934 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_document_encoding.rb +28 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_document_fragment.rb +228 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_dtd.rb +187 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_dtd_encoding.rb +33 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_element_content.rb +56 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_element_decl.rb +73 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_entity_decl.rb +122 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_entity_reference.rb +245 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_namespace.rb +95 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_node.rb +1155 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_node_attributes.rb +113 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_node_encoding.rb +107 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_node_inheritance.rb +32 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_node_reparenting.rb +374 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_node_set.rb +755 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_parse_options.rb +64 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_processing_instruction.rb +30 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_reader_encoding.rb +142 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_relax_ng.rb +60 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_schema.rb +129 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_syntax_error.rb +12 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_text.rb +60 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_unparented_node.rb +422 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_xinclude.rb +83 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xml/test_xpath.rb +382 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xslt/test_custom_functions.rb +133 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test/xslt/test_exception_handling.rb +37 -0
- data/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.6.2.1-x86-mingw32/test_all +81 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/.gemtest +0 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/CHANGES +522 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/README.rdoc +197 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/Rakefile +369 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/TODO +20 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake +33 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/install.rb +90 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake.rb +69 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/alt_system.rb +109 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb +595 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/classic_namespace.rb +11 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/clean.rb +32 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/cloneable.rb +25 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/contrib/compositepublisher.rb +21 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/contrib/ftptools.rb +150 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/contrib/publisher.rb +73 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/contrib/rubyforgepublisher.rb +16 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/contrib/sshpublisher.rb +50 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/contrib/sys.rb +191 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/default_loader.rb +10 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/dsl_definition.rb +176 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/early_time.rb +18 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/ext/core.rb +27 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/ext/module.rb +39 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/ext/string.rb +167 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/ext/time.rb +14 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/file_creation_task.rb +24 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/file_list.rb +403 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/file_task.rb +47 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb +114 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb +145 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/gempackagetask.rb +15 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb +51 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/invocation_exception_mixin.rb +16 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/loaders/makefile.rb +40 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/multi_task.rb +16 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/name_space.rb +25 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/packagetask.rb +185 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/pathmap.rb +1 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/pseudo_status.rb +24 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/rake_module.rb +29 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb +22 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/rdoctask.rb +234 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/ruby182_test_unit_fix.rb +25 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/runtest.rb +21 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb +327 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task_argument_error.rb +7 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task_arguments.rb +78 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task_manager.rb +307 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/tasklib.rb +22 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/testtask.rb +191 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/version.rb +8 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/win32.rb +55 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/file_creation.rb +34 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/helper.rb +492 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake.rb +40 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_application.rb +489 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_application_options.rb +335 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_clean.rb +14 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_definitions.rb +80 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_directory_task.rb +46 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_dsl.rb +77 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_early_time.rb +31 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_extension.rb +59 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_file_creation_task.rb +56 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_file_list.rb +628 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_file_list_path_map.rb +8 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_file_task.rb +102 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_file_utils.rb +305 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_ftp_file.rb +59 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_functional.rb +450 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_invocation_chain.rb +52 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_makefile_loader.rb +44 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_multi_task.rb +51 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_name_space.rb +43 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_package_task.rb +79 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_path_map.rb +157 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_path_map_explode.rb +34 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_path_map_partial.rb +18 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_pseudo_status.rb +21 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_rake_test_loader.rb +21 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_rdoc_task.rb +83 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_require.rb +40 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_rules.rb +327 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_task.rb +267 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_task_argument_parsing.rb +103 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_task_arguments.rb +88 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_task_lib.rb +9 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_task_manager.rb +157 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_task_manager_argument_resolution.rb +36 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_task_with_arguments.rb +173 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_test_task.rb +120 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_top_level_functions.rb +111 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_rake_win32.rb +72 -0
- data/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/test/test_sys.rb +20 -0
- data/vendor/bundle/ruby/1.9.1/specifications/certified-0.1.2.gemspec +20 -0
- data/vendor/bundle/ruby/1.9.1/specifications/mini_portile-0.6.0.gemspec +24 -0
- data/vendor/bundle/ruby/1.9.1/specifications/nokogiri-1.6.2.1-x86-mingw32.gemspec +73 -0
- data/vendor/bundle/ruby/1.9.1/specifications/rake-0.9.2.2.gemspec +37 -0
- metadata +489 -0
@@ -0,0 +1,86 @@
|
|
1
|
+
=== 0.6.0 / 2014-04-18
|
2
|
+
|
3
|
+
* Enhancements:
|
4
|
+
* Add default cert store and custom certs from `SSL_CERT_FILE` if present.
|
5
|
+
This increases compatibility with Ruby 1.8.7.
|
6
|
+
|
7
|
+
* Bugfixes:
|
8
|
+
* Specify Accept-Encoding to make sure a raw file content is downloaded.
|
9
|
+
Pull #30. [knu]
|
10
|
+
|
11
|
+
* Internal:
|
12
|
+
* Improve examples and use them as test harness.
|
13
|
+
|
14
|
+
=== 0.5.3 / 2014-03-24
|
15
|
+
|
16
|
+
* Bugfixes:
|
17
|
+
* Shell escape paths in tar command. Pull #29. [quickshiftin]
|
18
|
+
* Support older versions of tar that cannot auto-detect
|
19
|
+
the compression type. Pull #27. Closes #21. [b-dean]
|
20
|
+
* Try RbConfig's CC before fall back to 'gcc'. Ref #28.
|
21
|
+
|
22
|
+
=== 0.5.2 / 2013-10-23
|
23
|
+
|
24
|
+
* Bugfixes:
|
25
|
+
* Change tar detection order to support NetBSD 'gtar'. Closes #24
|
26
|
+
* Trick 'git-apply' when applying patches on nested Git checkouts. [larskanis]
|
27
|
+
* Respect ENV's MAKE before fallback to 'make'. [larskanis]
|
28
|
+
* Respect ENV's CC variable before fallback to 'gcc'.
|
29
|
+
* Avoid non-ASCII output of GCC cause host detection issues. Closes #22
|
30
|
+
|
31
|
+
=== 0.5.1 / 2013-07-07
|
32
|
+
|
33
|
+
* Bugfixes:
|
34
|
+
* Detect tar executable without shelling out. [jtimberman]
|
35
|
+
|
36
|
+
=== 0.5.0 / 2012-11-17
|
37
|
+
|
38
|
+
* Enhancements:
|
39
|
+
* Allow patching extracted files using `git apply`. [metaskills]
|
40
|
+
|
41
|
+
=== 0.4.1 / 2012-10-24
|
42
|
+
|
43
|
+
* Bugfixes:
|
44
|
+
* Syntax to process FTp binary chunks differs between Ruby 1.8.7 and 1.9.x
|
45
|
+
|
46
|
+
=== 0.4.0 / 2012-10-24
|
47
|
+
|
48
|
+
* Enhancements:
|
49
|
+
* Allow fetching of FTP URLs along HTTP ones. [metaskills]
|
50
|
+
|
51
|
+
=== 0.3.0 / 2012-03-23
|
52
|
+
|
53
|
+
* Enhancements:
|
54
|
+
* Use `gcc -v` to determine original host (platform) instead of Ruby one.
|
55
|
+
|
56
|
+
* Deprecations:
|
57
|
+
* Dropped support for Rubies older than 1.8.7
|
58
|
+
|
59
|
+
=== 0.2.2 / 2011-04-11
|
60
|
+
|
61
|
+
* Minor enhancements:
|
62
|
+
* Use LDFLAGS when activating recipes for cross-compilation. Closes #6
|
63
|
+
|
64
|
+
* Bugfixes:
|
65
|
+
* Remove memoization of *_path helpers. Closes #7
|
66
|
+
|
67
|
+
=== 0.2.1 / 2011-04-06
|
68
|
+
|
69
|
+
* Minor enhancements:
|
70
|
+
* Provide MiniPortile#path to obtain full path to installation directory. Closes GH-5
|
71
|
+
|
72
|
+
=== 0.2.0 / 2011-04-05
|
73
|
+
|
74
|
+
* Enhancements:
|
75
|
+
* Improve tar detection
|
76
|
+
* Improve and refactor configure_options
|
77
|
+
* Detect configure_options changes. Closes GH-1
|
78
|
+
* Add recipe examples
|
79
|
+
|
80
|
+
* Bugfixes:
|
81
|
+
* MiniPortile#target can be changed now. Closes GH-2
|
82
|
+
* Always redirect tar output properly
|
83
|
+
|
84
|
+
=== 0.1.0 / 2011-03-08
|
85
|
+
|
86
|
+
* Initial release. Welcome to this world!
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Luis Lavena.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,169 @@
|
|
1
|
+
= MiniPortile
|
2
|
+
|
3
|
+
* {Source Code}[https://github.com/luislavena/mini_portile]
|
4
|
+
* {Bug Reports}[https://github.com/luislavena/mini_portile/issues]
|
5
|
+
|
6
|
+
This project is a minimalistic, simplistic and stupid implementation of a port/recipe
|
7
|
+
system <b>for developers</b>.
|
8
|
+
|
9
|
+
== Another port system, srsly?
|
10
|
+
|
11
|
+
No, is not a general port system, is not aimed to take over apt, macports or
|
12
|
+
anything like that.
|
13
|
+
|
14
|
+
The rationale is simple.
|
15
|
+
|
16
|
+
You create a library A that uses B at runtime or compile time. Target audience
|
17
|
+
of your library might have different versions of B installed than yours.
|
18
|
+
|
19
|
+
You know, <em>Works on my machine</em> is not what you expect from one
|
20
|
+
developer to another.
|
21
|
+
|
22
|
+
Developers having problems report them back to you, and what you do then?
|
23
|
+
Compile B locally, replacing your existing installation of B or simply hacking
|
24
|
+
things around so nothing breaks.
|
25
|
+
|
26
|
+
All this, manually.
|
27
|
+
|
28
|
+
Computers are tools, are meant to help us, not the other way around.
|
29
|
+
|
30
|
+
What if I tell you the above scenario can be simplified with something like
|
31
|
+
this:
|
32
|
+
|
33
|
+
rake compile B_VERSION=1.2.3
|
34
|
+
|
35
|
+
And your library will use the version of B you specified. Done.
|
36
|
+
|
37
|
+
== You make it sound easy, where is the catch?
|
38
|
+
|
39
|
+
You got me, there is a catch. At this time (and highly likely will be always)
|
40
|
+
MiniPortile is only compatible with GCC compilers and autoconf/configure-based
|
41
|
+
projects.
|
42
|
+
|
43
|
+
It assumes the library you want to build contains a <tt>configure</tt> script,
|
44
|
+
which all the autoconf-based libraries do.
|
45
|
+
|
46
|
+
=== How to use
|
47
|
+
|
48
|
+
Now that you know the catch, and you're still reading this, let me show you a
|
49
|
+
quick example:
|
50
|
+
|
51
|
+
require "mini_portile"
|
52
|
+
recipe = MiniPortile.new("libiconv", "1.13.1")
|
53
|
+
recipe.files = ["http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz"]
|
54
|
+
recipe.cook
|
55
|
+
recipe.activate
|
56
|
+
|
57
|
+
That's all. <tt>cook</tt> will download, extract, patch, configure and compile
|
58
|
+
the library into a namespaced structure. <tt>activate</tt> ensures GCC find
|
59
|
+
this library and prefers it over a system-wide installation.
|
60
|
+
|
61
|
+
=== Structure
|
62
|
+
|
63
|
+
At this time, if you haven't digged into the code yet, are wondering <em>what
|
64
|
+
is all that structure talk about?</em>.
|
65
|
+
|
66
|
+
MiniPortile follows the principle of <b>convention over configuration</b> and
|
67
|
+
established a folder structure where is going to place files and perform work.
|
68
|
+
|
69
|
+
Take the above example, and let's draw some picture:
|
70
|
+
|
71
|
+
mylib
|
72
|
+
|-- ports
|
73
|
+
| |-- archives
|
74
|
+
| | `-- libiconv-1.13.1.tar.gz
|
75
|
+
| `-- <platform>
|
76
|
+
| `-- libiconv
|
77
|
+
| `-- 1.13.1
|
78
|
+
| |-- bin
|
79
|
+
| |-- include
|
80
|
+
| `-- lib
|
81
|
+
`-- tmp
|
82
|
+
`-- <platform>
|
83
|
+
`-- ports
|
84
|
+
|
85
|
+
In above structure, <tt>platform</tt> refers to the architecture that represents
|
86
|
+
the operating system you're using (e.g. i686-linux, i386-mingw32, etc).
|
87
|
+
|
88
|
+
Inside this folder, MiniPortile will store the artifacts that result from the
|
89
|
+
compilation process. As you cans see, it versions out the library so you can
|
90
|
+
run multiple version combination without compromising these overlap each other.
|
91
|
+
|
92
|
+
<tt>archives</tt> is where downloaded source files are stored. It is recommended
|
93
|
+
you avoid trashing that folder so no further downloads will be required (save
|
94
|
+
bandwidth, save the world).
|
95
|
+
|
96
|
+
The <tt>tmp</tt> is where compilation is performed and can be safely discarded.
|
97
|
+
|
98
|
+
Don't worry, you don't need to know the path structure by memory, just use recipe's
|
99
|
+
<tt>path</tt> to obtain the full path to the installation directory:
|
100
|
+
|
101
|
+
recipe.cook
|
102
|
+
recipe.path # => /home/luis/projects/myapp/ports/i686-linux/libiconv/1.13.1
|
103
|
+
|
104
|
+
=== How can I combine this with my compilation task?
|
105
|
+
|
106
|
+
In the simplified proposal, the idea is that using Rake, your <tt>compile</tt>
|
107
|
+
task depends on MiniPortile compilation and most important, activation.
|
108
|
+
|
109
|
+
Take the following as a simplification of how you can use MiniPortile with
|
110
|
+
Rake:
|
111
|
+
|
112
|
+
task :libiconv do
|
113
|
+
recipe = MiniPortile.new("libiconv", "1.13.1")
|
114
|
+
recipe.files = ["http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz"]
|
115
|
+
checkpoint = ".#{recipe.name}-#{recipe.version}.installed"
|
116
|
+
|
117
|
+
unless File.exist?(checkpoint)
|
118
|
+
recipe.cook
|
119
|
+
touch checkpoint
|
120
|
+
end
|
121
|
+
|
122
|
+
recipe.activate
|
123
|
+
end
|
124
|
+
|
125
|
+
task :compile => [:libiconv] do
|
126
|
+
# ...
|
127
|
+
end
|
128
|
+
|
129
|
+
This example will:
|
130
|
+
|
131
|
+
* Compile the library only once (using a timestamp file)
|
132
|
+
* Ensure compiled library gets activated every time
|
133
|
+
* Make compile task depend on compiled library activation
|
134
|
+
|
135
|
+
For your homework, you can make libiconv version be taken from <tt>ENV</tt>
|
136
|
+
variables.
|
137
|
+
|
138
|
+
=== Native or cross-compilation
|
139
|
+
|
140
|
+
Above examples cover the normal use case: compile support libraries natively.
|
141
|
+
|
142
|
+
MiniPortile also covers another use case, which is the cross-compilation of the
|
143
|
+
support libraries to be used as part of a binary gem compilation.
|
144
|
+
|
145
|
+
It is the perfect complementary tool for rake-compiler and it's <tt>cross</tt>
|
146
|
+
Rake task.
|
147
|
+
|
148
|
+
Depending on your usage of rake-compiler, you will need to use <tt>host</tt> to
|
149
|
+
match the installed cross-compiler toolchain.
|
150
|
+
|
151
|
+
Please refer to the examples directory for simplified and practical usage.
|
152
|
+
|
153
|
+
=== Supported scenarios
|
154
|
+
|
155
|
+
As mentioned before, MiniPortile requires a GCC compiler toolchain. This has
|
156
|
+
been tested against Ubuntu, OSX and even Windows (RubyInstaller with DevKit)
|
157
|
+
|
158
|
+
== Disclaimer
|
159
|
+
|
160
|
+
If you have any trouble, don't hesitate to contact the author. As always,
|
161
|
+
I'm not going to say <em>Use at your own risk</em> because I don't want this
|
162
|
+
library to be risky.
|
163
|
+
|
164
|
+
If you trip on something, I'll share the liability by repairing things
|
165
|
+
as quickly as I can. Your responsibility is to report the inadequacies.
|
166
|
+
|
167
|
+
== License
|
168
|
+
|
169
|
+
This library is licensed under MIT license. Please see LICENSE.txt for details.
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require "rake/clean"
|
2
|
+
require "rubygems/package_task"
|
3
|
+
|
4
|
+
GEM_SPEC = Gem::Specification.new do |s|
|
5
|
+
# basic information
|
6
|
+
s.name = "mini_portile"
|
7
|
+
s.version = "0.6.0"
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
|
10
|
+
# description and details
|
11
|
+
s.summary = "Simplistic port-like solution for developers"
|
12
|
+
s.description = "Simplistic port-like solution for developers. It provides a standard and simplified way to compile against dependency libraries without messing up your system."
|
13
|
+
|
14
|
+
# requirements
|
15
|
+
s.required_ruby_version = ">= 1.8.7"
|
16
|
+
s.required_rubygems_version = ">= 1.3.5"
|
17
|
+
|
18
|
+
# dependencies (add_dependency)
|
19
|
+
# development dependencies (add_development_dependency)
|
20
|
+
|
21
|
+
# components, files and paths
|
22
|
+
s.files = FileList["examples/Rakefile", "lib/**/*.rb", "Rakefile", "*.{rdoc,txt}"]
|
23
|
+
|
24
|
+
s.require_path = 'lib'
|
25
|
+
|
26
|
+
# documentation
|
27
|
+
s.has_rdoc = true
|
28
|
+
s.rdoc_options << '--main' << 'README.rdoc' << '--title' << 'MiniPortile -- Documentation'
|
29
|
+
|
30
|
+
s.extra_rdoc_files = %w(README.rdoc History.txt LICENSE.txt)
|
31
|
+
|
32
|
+
# project information
|
33
|
+
s.homepage = 'http://github.com/luislavena/mini_portile'
|
34
|
+
s.licenses = ['MIT']
|
35
|
+
|
36
|
+
# author and contributors
|
37
|
+
s.author = 'Luis Lavena'
|
38
|
+
s.email = 'luislavena@gmail.com'
|
39
|
+
end
|
40
|
+
|
41
|
+
Gem::PackageTask.new(GEM_SPEC) do |pkg|
|
42
|
+
pkg.need_tar = false
|
43
|
+
pkg.need_zip = false
|
44
|
+
end
|
45
|
+
|
46
|
+
desc "Test MiniPortile by compiling examples"
|
47
|
+
task :test do
|
48
|
+
Dir.chdir("examples") do
|
49
|
+
sh "rake ports:all"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
task :default => [:test]
|
@@ -0,0 +1,113 @@
|
|
1
|
+
require File.expand_path("mini_portile", File.join(File.dirname(__FILE__), "../lib"))
|
2
|
+
|
3
|
+
recipes = []
|
4
|
+
|
5
|
+
# libiconv
|
6
|
+
libiconv = MiniPortile.new "libiconv", "1.14"
|
7
|
+
libiconv.files << "ftp://ftp.gnu.org/pub/gnu/#{libiconv.name}/#{libiconv.name}-#{libiconv.version}.tar.gz"
|
8
|
+
|
9
|
+
recipes.push libiconv
|
10
|
+
|
11
|
+
# sqlite3
|
12
|
+
sqlite3 = MiniPortile.new "sqlite3", "3.8.4.1"
|
13
|
+
sqlite3.files << "http://sqlite.org/2014/sqlite-autoconf-3080401.tar.gz"
|
14
|
+
|
15
|
+
recipes.push sqlite3
|
16
|
+
|
17
|
+
# c-ares
|
18
|
+
c_ares = MiniPortile.new "c-ares", "1.7.5"
|
19
|
+
c_ares.files << "https://s3.amazonaws.com/distfiles.openknapsack.org/#{c_ares.name}/#{c_ares.name}-#{c_ares.version}.tar.gz"
|
20
|
+
|
21
|
+
recipes.push c_ares
|
22
|
+
|
23
|
+
# zlib
|
24
|
+
class ZlibRecipe < MiniPortile
|
25
|
+
def windows?
|
26
|
+
!(host =~ /mswin|mingw/).nil?
|
27
|
+
end
|
28
|
+
|
29
|
+
def configure
|
30
|
+
return super unless windows?
|
31
|
+
|
32
|
+
Dir.chdir work_path do
|
33
|
+
mk = File.read 'win32/Makefile.gcc'
|
34
|
+
File.open 'win32/Makefile.gcc', 'wb' do |f|
|
35
|
+
f.puts "BINARY_PATH = #{path}/bin"
|
36
|
+
f.puts "LIBRARY_PATH = #{path}/lib"
|
37
|
+
f.puts "INCLUDE_PATH = #{path}/include"
|
38
|
+
|
39
|
+
cross_build? and
|
40
|
+
mk.sub!(/^PREFIX\s*=\s*$/, "PREFIX = #{host}-")
|
41
|
+
|
42
|
+
f.puts mk
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def configure_defaults
|
48
|
+
["--static"]
|
49
|
+
end
|
50
|
+
|
51
|
+
def configured?
|
52
|
+
return super unless windows?
|
53
|
+
|
54
|
+
!!(File.read(File.join(work_path, 'win32/Makefile.gcc')) =~ /^BINARY_PATH/)
|
55
|
+
end
|
56
|
+
|
57
|
+
def compile
|
58
|
+
return super unless windows?
|
59
|
+
|
60
|
+
execute "compile", "make -f win32/Makefile.gcc"
|
61
|
+
end
|
62
|
+
|
63
|
+
def install
|
64
|
+
return if installed?
|
65
|
+
return super unless windows?
|
66
|
+
|
67
|
+
execute "install", %Q(#{make_cmd} -f win32/Makefile.gcc install)
|
68
|
+
end
|
69
|
+
|
70
|
+
def cross_build?
|
71
|
+
host != original_host
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
zlib = ZlibRecipe.new "zlib", "1.2.8"
|
76
|
+
zlib.files << "http://zlib.net/#{zlib.name}-#{zlib.version}.tar.gz"
|
77
|
+
|
78
|
+
recipes.push zlib
|
79
|
+
|
80
|
+
namespace :ports do
|
81
|
+
directory "ports"
|
82
|
+
|
83
|
+
recipes.each do |recipe|
|
84
|
+
desc "Install port #{recipe.name} #{recipe.version}"
|
85
|
+
task recipe.name => ["ports"] do |t|
|
86
|
+
checkpoint = "ports/.#{recipe.name}-#{recipe.version}-#{recipe.host}.installed"
|
87
|
+
|
88
|
+
unless File.exist?(checkpoint)
|
89
|
+
recipe.cook
|
90
|
+
touch checkpoint
|
91
|
+
end
|
92
|
+
|
93
|
+
recipe.activate
|
94
|
+
end
|
95
|
+
|
96
|
+
task :all => recipe.name
|
97
|
+
end
|
98
|
+
|
99
|
+
desc "Install all ports and display installation location"
|
100
|
+
task :all do
|
101
|
+
recipes.each do |recipe|
|
102
|
+
puts "Artifacts of '#{recipe.name}' in '#{recipe.path}'"
|
103
|
+
end
|
104
|
+
puts "LDFLAGS: " << ENV['LDFLAGS'].inspect
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
desc "Adjust all recipes host for cross-compilation"
|
109
|
+
task :cross do
|
110
|
+
recipes.each do |recipe|
|
111
|
+
recipe.host = "i686-w64-mingw32"
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,437 @@
|
|
1
|
+
require 'rbconfig'
|
2
|
+
require 'net/http'
|
3
|
+
require 'net/https'
|
4
|
+
require 'net/ftp'
|
5
|
+
require 'fileutils'
|
6
|
+
require 'tempfile'
|
7
|
+
require 'digest/md5'
|
8
|
+
|
9
|
+
class MiniPortile
|
10
|
+
attr_reader :name, :version, :original_host
|
11
|
+
attr_writer :configure_options
|
12
|
+
attr_accessor :host, :files, :patch_files, :target, :logger
|
13
|
+
|
14
|
+
def initialize(name, version)
|
15
|
+
@name = name
|
16
|
+
@version = version
|
17
|
+
@target = 'ports'
|
18
|
+
@files = []
|
19
|
+
@patch_files = []
|
20
|
+
@logger = STDOUT
|
21
|
+
|
22
|
+
@original_host = @host = detect_host
|
23
|
+
end
|
24
|
+
|
25
|
+
def download
|
26
|
+
@files.each do |url|
|
27
|
+
filename = File.basename(url)
|
28
|
+
download_file(url, File.join(archives_path, filename))
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def extract
|
33
|
+
@files.each do |url|
|
34
|
+
filename = File.basename(url)
|
35
|
+
extract_file(File.join(archives_path, filename), tmp_path)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def patch
|
40
|
+
# Set GIT_DIR while appying patches to work around
|
41
|
+
# git-apply doing nothing when started within another
|
42
|
+
# git directory.
|
43
|
+
ENV['GIT_DIR'], old_git = '.', ENV['GIT_DIR']
|
44
|
+
begin
|
45
|
+
@patch_files.each do |full_path|
|
46
|
+
next unless File.exists?(full_path)
|
47
|
+
output "Running git apply with #{full_path}..."
|
48
|
+
execute('patch', %Q(git apply #{full_path}))
|
49
|
+
end
|
50
|
+
ensure
|
51
|
+
ENV['GIT_DIR'] = old_git
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def configure_options
|
56
|
+
@configure_options ||= configure_defaults
|
57
|
+
end
|
58
|
+
|
59
|
+
def configure
|
60
|
+
return if configured?
|
61
|
+
|
62
|
+
md5_file = File.join(tmp_path, 'configure.md5')
|
63
|
+
digest = Digest::MD5.hexdigest(computed_options)
|
64
|
+
File.open(md5_file, "w") { |f| f.write digest }
|
65
|
+
|
66
|
+
execute('configure', %Q(sh configure #{computed_options}))
|
67
|
+
end
|
68
|
+
|
69
|
+
def compile
|
70
|
+
execute('compile', make_cmd)
|
71
|
+
end
|
72
|
+
|
73
|
+
def install
|
74
|
+
return if installed?
|
75
|
+
execute('install', %Q(#{make_cmd} install))
|
76
|
+
end
|
77
|
+
|
78
|
+
def downloaded?
|
79
|
+
missing = @files.detect do |url|
|
80
|
+
filename = File.basename(url)
|
81
|
+
!File.exist?(File.join(archives_path, filename))
|
82
|
+
end
|
83
|
+
|
84
|
+
missing ? false : true
|
85
|
+
end
|
86
|
+
|
87
|
+
def configured?
|
88
|
+
configure = File.join(work_path, 'configure')
|
89
|
+
makefile = File.join(work_path, 'Makefile')
|
90
|
+
md5_file = File.join(tmp_path, 'configure.md5')
|
91
|
+
|
92
|
+
stored_md5 = File.exist?(md5_file) ? File.read(md5_file) : ""
|
93
|
+
current_md5 = Digest::MD5.hexdigest(computed_options)
|
94
|
+
|
95
|
+
(current_md5 == stored_md5) && newer?(makefile, configure)
|
96
|
+
end
|
97
|
+
|
98
|
+
def installed?
|
99
|
+
makefile = File.join(work_path, 'Makefile')
|
100
|
+
target_dir = Dir.glob("#{port_path}/*").find { |d| File.directory?(d) }
|
101
|
+
|
102
|
+
newer?(target_dir, makefile)
|
103
|
+
end
|
104
|
+
|
105
|
+
def cook
|
106
|
+
download unless downloaded?
|
107
|
+
extract
|
108
|
+
patch
|
109
|
+
configure unless configured?
|
110
|
+
compile
|
111
|
+
install unless installed?
|
112
|
+
|
113
|
+
return true
|
114
|
+
end
|
115
|
+
|
116
|
+
def activate
|
117
|
+
lib_path = File.join(port_path, "lib")
|
118
|
+
vars = {
|
119
|
+
'PATH' => File.join(port_path, 'bin'),
|
120
|
+
'CPATH' => File.join(port_path, 'include'),
|
121
|
+
'LIBRARY_PATH' => lib_path
|
122
|
+
}.reject { |env, path| !File.directory?(path) }
|
123
|
+
|
124
|
+
output "Activating #{@name} #{@version} (from #{port_path})..."
|
125
|
+
vars.each do |var, path|
|
126
|
+
full_path = File.expand_path(path)
|
127
|
+
|
128
|
+
# turn into a valid Windows path (if required)
|
129
|
+
full_path.gsub!(File::SEPARATOR, File::ALT_SEPARATOR) if File::ALT_SEPARATOR
|
130
|
+
|
131
|
+
# save current variable value
|
132
|
+
old_value = ENV[var] || ''
|
133
|
+
|
134
|
+
unless old_value.include?(full_path)
|
135
|
+
ENV[var] = "#{full_path}#{File::PATH_SEPARATOR}#{old_value}"
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
# rely on LDFLAGS when cross-compiling
|
140
|
+
if File.exist?(lib_path) && (@host != @original_host)
|
141
|
+
full_path = File.expand_path(lib_path)
|
142
|
+
|
143
|
+
old_value = ENV.fetch("LDFLAGS", "")
|
144
|
+
|
145
|
+
unless old_value.include?(full_path)
|
146
|
+
ENV["LDFLAGS"] = "-L#{full_path} #{old_value}".strip
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
def path
|
152
|
+
File.expand_path(port_path)
|
153
|
+
end
|
154
|
+
|
155
|
+
private
|
156
|
+
|
157
|
+
def tmp_path
|
158
|
+
"tmp/#{@host}/ports/#{@name}/#{@version}"
|
159
|
+
end
|
160
|
+
|
161
|
+
def port_path
|
162
|
+
"#{@target}/#{@host}/#{@name}/#{@version}"
|
163
|
+
end
|
164
|
+
|
165
|
+
def archives_path
|
166
|
+
"#{@target}/archives"
|
167
|
+
end
|
168
|
+
|
169
|
+
def work_path
|
170
|
+
Dir.glob("#{tmp_path}/*").find { |d| File.directory?(d) }
|
171
|
+
end
|
172
|
+
|
173
|
+
def configure_defaults
|
174
|
+
[
|
175
|
+
"--host=#{@host}", # build for specific target (host)
|
176
|
+
"--enable-static", # build static library
|
177
|
+
"--disable-shared" # disable generation of shared object
|
178
|
+
]
|
179
|
+
end
|
180
|
+
|
181
|
+
def configure_prefix
|
182
|
+
"--prefix=#{File.expand_path(port_path)}"
|
183
|
+
end
|
184
|
+
|
185
|
+
def computed_options
|
186
|
+
[
|
187
|
+
configure_options, # customized or default options
|
188
|
+
configure_prefix, # installation target
|
189
|
+
].flatten.join(' ')
|
190
|
+
end
|
191
|
+
|
192
|
+
def log_file(action)
|
193
|
+
File.join(tmp_path, "#{action}.log")
|
194
|
+
end
|
195
|
+
|
196
|
+
def tar_exe
|
197
|
+
@@tar_exe ||= begin
|
198
|
+
%w[gtar bsdtar tar basic-bsdtar].find { |c|
|
199
|
+
which(c)
|
200
|
+
}
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
def tar_compression_switch(filename)
|
205
|
+
case File.extname(filename)
|
206
|
+
when '.gz', '.tgz'
|
207
|
+
'z'
|
208
|
+
when '.bz2', '.tbz2'
|
209
|
+
'j'
|
210
|
+
when '.Z'
|
211
|
+
'Z'
|
212
|
+
else
|
213
|
+
''
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
# From: http://stackoverflow.com/a/5471032/7672
|
218
|
+
# Thanks, Mislav!
|
219
|
+
#
|
220
|
+
# Cross-platform way of finding an executable in the $PATH.
|
221
|
+
#
|
222
|
+
# which('ruby') #=> /usr/bin/ruby
|
223
|
+
def which(cmd)
|
224
|
+
exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
|
225
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
|
226
|
+
exts.each { |ext|
|
227
|
+
exe = File.join(path, "#{cmd}#{ext}")
|
228
|
+
return exe if File.executable? exe
|
229
|
+
}
|
230
|
+
end
|
231
|
+
return nil
|
232
|
+
end
|
233
|
+
|
234
|
+
def detect_host
|
235
|
+
return @detect_host if defined?(@detect_host)
|
236
|
+
|
237
|
+
begin
|
238
|
+
ENV["LC_ALL"], old_lc_all = "C", ENV["LC_ALL"]
|
239
|
+
|
240
|
+
output = `#{gcc_cmd} -v 2>&1`
|
241
|
+
if m = output.match(/^Target\: (.*)$/)
|
242
|
+
@detect_host = m[1]
|
243
|
+
end
|
244
|
+
|
245
|
+
@detect_host
|
246
|
+
ensure
|
247
|
+
ENV["LC_ALL"] = old_lc_all
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
def extract_file(file, target)
|
252
|
+
filename = File.basename(file)
|
253
|
+
FileUtils.mkdir_p target
|
254
|
+
|
255
|
+
message "Extracting #{filename} into #{target}... "
|
256
|
+
result = `#{tar_exe} #{tar_compression_switch(filename)}xf "#{file}" -C "#{target}" 2>&1`
|
257
|
+
if $?.success?
|
258
|
+
output "OK"
|
259
|
+
else
|
260
|
+
output "ERROR"
|
261
|
+
output result
|
262
|
+
raise "Failed to complete extract task"
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
def execute(action, command)
|
267
|
+
log = log_file(action)
|
268
|
+
log_out = File.expand_path(log)
|
269
|
+
redirected = command << " >#{log_out} 2>&1"
|
270
|
+
|
271
|
+
Dir.chdir work_path do
|
272
|
+
message "Running '#{action}' for #{@name} #{@version}... "
|
273
|
+
system redirected
|
274
|
+
if $?.success?
|
275
|
+
output "OK"
|
276
|
+
return true
|
277
|
+
else
|
278
|
+
output "ERROR, review '#{log}' to see what happened."
|
279
|
+
raise "Failed to complete #{action} task"
|
280
|
+
end
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
284
|
+
def newer?(target, checkpoint)
|
285
|
+
if (target && File.exist?(target)) && (checkpoint && File.exist?(checkpoint))
|
286
|
+
File.mtime(target) > File.mtime(checkpoint)
|
287
|
+
else
|
288
|
+
false
|
289
|
+
end
|
290
|
+
end
|
291
|
+
|
292
|
+
# print out a message with the logger
|
293
|
+
def message(text)
|
294
|
+
@logger.print text
|
295
|
+
@logger.flush
|
296
|
+
end
|
297
|
+
|
298
|
+
# print out a message using the logger but return to a new line
|
299
|
+
def output(text = "")
|
300
|
+
@logger.puts text
|
301
|
+
@logger.flush
|
302
|
+
end
|
303
|
+
|
304
|
+
# Slighly modified from RubyInstaller uri_ext, Rubinius configure
|
305
|
+
# and adaptations of Wayne's RailsInstaller
|
306
|
+
def download_file(url, full_path, count = 3)
|
307
|
+
return if File.exist?(full_path)
|
308
|
+
uri = URI.parse(url)
|
309
|
+
begin
|
310
|
+
case uri.scheme.downcase
|
311
|
+
when /ftp/
|
312
|
+
download_file_ftp(uri, full_path)
|
313
|
+
when /http|https/
|
314
|
+
download_file_http(url, full_path, count)
|
315
|
+
end
|
316
|
+
rescue Exception => e
|
317
|
+
File.unlink full_path if File.exists?(full_path)
|
318
|
+
output "ERROR: #{e.message}"
|
319
|
+
raise "Failed to complete download task"
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
323
|
+
def download_file_http(url, full_path, count = 3)
|
324
|
+
filename = File.basename(full_path)
|
325
|
+
uri = URI.parse(url)
|
326
|
+
|
327
|
+
if ENV['http_proxy']
|
328
|
+
_, userinfo, p_host, p_port = URI.split(ENV['http_proxy'])
|
329
|
+
proxy_user, proxy_pass = userinfo.split(/:/) if userinfo
|
330
|
+
http = Net::HTTP.new(uri.host, uri.port, p_host, p_port, proxy_user, proxy_pass)
|
331
|
+
else
|
332
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
333
|
+
|
334
|
+
if URI::HTTPS === uri
|
335
|
+
http.use_ssl = true
|
336
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
337
|
+
|
338
|
+
store = OpenSSL::X509::Store.new
|
339
|
+
|
340
|
+
# Auto-include system-provided certificates
|
341
|
+
store.set_default_paths
|
342
|
+
|
343
|
+
if ENV.has_key?("SSL_CERT_FILE") && File.exist?(ENV["SSL_CERT_FILE"])
|
344
|
+
store.add_file ENV["SSL_CERT_FILE"]
|
345
|
+
end
|
346
|
+
|
347
|
+
http.cert_store = store
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
351
|
+
message "Downloading #{filename} "
|
352
|
+
http.start do |h|
|
353
|
+
h.request_get(uri.path, 'Accept-Encoding' => 'identity') do |response|
|
354
|
+
case response
|
355
|
+
when Net::HTTPNotFound
|
356
|
+
output "404 - Not Found"
|
357
|
+
return false
|
358
|
+
|
359
|
+
when Net::HTTPClientError
|
360
|
+
output "Error: Client Error: #{response.inspect}"
|
361
|
+
return false
|
362
|
+
|
363
|
+
when Net::HTTPRedirection
|
364
|
+
raise "Too many redirections for the original URL, halting." if count <= 0
|
365
|
+
url = response["location"]
|
366
|
+
return download_file(url, full_path, count - 1)
|
367
|
+
|
368
|
+
when Net::HTTPOK
|
369
|
+
return with_tempfile(filename, full_path) do |temp_file|
|
370
|
+
size = 0
|
371
|
+
progress = 0
|
372
|
+
total = response.header["Content-Length"].to_i
|
373
|
+
response.read_body do |chunk|
|
374
|
+
temp_file << chunk
|
375
|
+
size += chunk.size
|
376
|
+
new_progress = (size * 100) / total
|
377
|
+
unless new_progress == progress
|
378
|
+
message "\rDownloading %s (%3d%%) " % [filename, new_progress]
|
379
|
+
end
|
380
|
+
progress = new_progress
|
381
|
+
end
|
382
|
+
output
|
383
|
+
end
|
384
|
+
end
|
385
|
+
end
|
386
|
+
end
|
387
|
+
end
|
388
|
+
|
389
|
+
def download_file_ftp(uri, full_path)
|
390
|
+
filename = File.basename(uri.path)
|
391
|
+
with_tempfile(filename, full_path) do |temp_file|
|
392
|
+
size = 0
|
393
|
+
progress = 0
|
394
|
+
Net::FTP.open(uri.host, uri.user, uri.password) do |ftp|
|
395
|
+
ftp.passive = true
|
396
|
+
ftp.login
|
397
|
+
remote_dir = File.dirname(uri.path)
|
398
|
+
ftp.chdir(remote_dir) unless remote_dir == '.'
|
399
|
+
total = ftp.size(filename)
|
400
|
+
ftp.getbinaryfile(filename, temp_file.path, 8192) do |chunk|
|
401
|
+
# Ruby 1.8.7 already wrote the chunk into the file
|
402
|
+
unless RUBY_VERSION < "1.9"
|
403
|
+
temp_file << chunk
|
404
|
+
end
|
405
|
+
|
406
|
+
size += chunk.size
|
407
|
+
new_progress = (size * 100) / total
|
408
|
+
unless new_progress == progress
|
409
|
+
message "\rDownloading %s (%3d%%) " % [filename, new_progress]
|
410
|
+
end
|
411
|
+
progress = new_progress
|
412
|
+
end
|
413
|
+
end
|
414
|
+
output
|
415
|
+
end
|
416
|
+
end
|
417
|
+
|
418
|
+
def with_tempfile(filename, full_path)
|
419
|
+
temp_file = Tempfile.new("download-#{filename}")
|
420
|
+
temp_file.binmode
|
421
|
+
yield temp_file
|
422
|
+
temp_file.close
|
423
|
+
File.unlink full_path if File.exists?(full_path)
|
424
|
+
FileUtils.mkdir_p File.dirname(full_path)
|
425
|
+
FileUtils.mv temp_file.path, full_path, :force => true
|
426
|
+
end
|
427
|
+
|
428
|
+
def gcc_cmd
|
429
|
+
cc = ENV["CC"] || RbConfig::CONFIG["CC"] || "gcc"
|
430
|
+
return cc.dup
|
431
|
+
end
|
432
|
+
|
433
|
+
def make_cmd
|
434
|
+
m = ENV['MAKE'] || ENV['make'] || 'make'
|
435
|
+
return m.dup
|
436
|
+
end
|
437
|
+
end
|