omnibus 3.2.2 → 4.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (302) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +140 -10
  3. data/CHANGELOG.md +181 -8
  4. data/README.md +63 -35
  5. data/Rakefile +1 -1
  6. data/docs/omnibus-build-cache.md b/data/docs/Build → Cache.md +0 -0
  7. data/docs/Building on Debian.md +59 -0
  8. data/docs/Building on OSX.md +61 -35
  9. data/docs/Building on RHEL.md +74 -0
  10. data/docs/Building on Windows.md +40 -81
  11. data/features/commands/build.feature +1 -2
  12. data/features/commands/clean.feature +1 -1
  13. data/lib/omnibus.rb +111 -204
  14. data/lib/omnibus/build_version.rb +3 -20
  15. data/lib/omnibus/build_version_dsl.rb +2 -3
  16. data/lib/omnibus/builder.rb +103 -211
  17. data/lib/omnibus/cleaner.rb +5 -7
  18. data/lib/omnibus/cli.rb +1 -4
  19. data/lib/omnibus/cli/base.rb +9 -16
  20. data/lib/omnibus/compressor.rb +60 -0
  21. data/{spec/data/complicated/config/software/version-manifest.rb → lib/omnibus/compressors/base.rb} +17 -12
  22. data/lib/omnibus/compressors/dmg.rb +312 -0
  23. data/lib/omnibus/{null_builder.rb → compressors/null.rb} +10 -4
  24. data/lib/omnibus/compressors/tgz.rb +141 -0
  25. data/lib/omnibus/config.rb +89 -83
  26. data/lib/omnibus/core_extensions.rb +1 -0
  27. data/lib/omnibus/core_extensions/open_uri.rb +58 -0
  28. data/lib/omnibus/digestable.rb +9 -3
  29. data/lib/omnibus/exceptions.rb +116 -175
  30. data/lib/omnibus/fetcher.rb +97 -138
  31. data/lib/omnibus/fetchers/git_fetcher.rb +130 -165
  32. data/lib/omnibus/fetchers/net_fetcher.rb +205 -164
  33. data/lib/omnibus/fetchers/{s3_cache_fetcher.rb → null_fetcher.rb} +27 -17
  34. data/lib/omnibus/fetchers/path_fetcher.rb +74 -32
  35. data/lib/omnibus/file_syncer.rb +149 -0
  36. data/lib/omnibus/generator.rb +103 -32
  37. data/lib/omnibus/generator_files/.kitchen.yml.erb +5 -1
  38. data/lib/omnibus/generator_files/Gemfile.erb +13 -7
  39. data/lib/omnibus/generator_files/config/projects/project.rb.erb +28 -0
  40. data/lib/omnibus/generator_files/config/software/zlib.rb.erb +55 -0
  41. data/lib/omnibus/generator_files/omnibus.rb.erb +5 -7
  42. data/lib/omnibus/git_cache.rb +11 -13
  43. data/lib/omnibus/logger.rb +76 -22
  44. data/lib/omnibus/logging.rb +1 -1
  45. data/lib/omnibus/metadata.rb +264 -0
  46. data/lib/omnibus/ohai.rb +0 -51
  47. data/lib/omnibus/package.rb +4 -228
  48. data/lib/omnibus/packager.rb +71 -0
  49. data/lib/omnibus/packagers/base.rb +118 -176
  50. data/lib/omnibus/packagers/bff.rb +136 -0
  51. data/lib/omnibus/packagers/deb.rb +389 -0
  52. data/lib/omnibus/packagers/makeself.rb +114 -0
  53. data/lib/omnibus/packagers/msi.rb +346 -0
  54. data/lib/omnibus/packagers/pkg.rb +278 -0
  55. data/lib/omnibus/packagers/rpm.rb +438 -0
  56. data/lib/omnibus/packagers/solaris.rb +110 -0
  57. data/lib/omnibus/project.rb +263 -666
  58. data/lib/omnibus/publisher.rb +3 -3
  59. data/lib/omnibus/s3_cache.rb +21 -30
  60. data/lib/omnibus/software.rb +132 -271
  61. data/lib/omnibus/templating.rb +66 -0
  62. data/lib/omnibus/thread_pool.rb +109 -0
  63. data/lib/omnibus/util.rb +137 -15
  64. data/lib/omnibus/version.rb +1 -1
  65. data/omnibus.gemspec +2 -2
  66. data/resources/bff/gen.template.erb +22 -0
  67. data/resources/bff/postinstall.sh +0 -0
  68. data/resources/bff/unpostinstall.sh +0 -0
  69. data/resources/deb/conffiles.erb +3 -0
  70. data/resources/deb/control.erb +25 -0
  71. data/resources/deb/md5sums.erb +3 -0
  72. data/{lib/omnibus/generator_files/mac_dmg → resources/dmg}/background.png +0 -0
  73. data/resources/dmg/create_dmg.osascript.erb +17 -0
  74. data/{lib/omnibus/generator_files/mac_dmg → resources/dmg}/icon.png +0 -0
  75. data/{bin → resources/makeself}/makeself-header.sh +0 -0
  76. data/{bin → resources/makeself}/makeself.sh +0 -0
  77. data/{lib/omnibus/generator_files/package_scripts/makeselfinst.erb → resources/makeself/post_extract.sh.erb} +4 -4
  78. data/{lib/omnibus/generator_files/windows_msi → resources/msi}/assets/LICENSE.rtf +0 -0
  79. data/{lib/omnibus/generator_files/windows_msi → resources/msi}/assets/banner_background.bmp +0 -0
  80. data/{lib/omnibus/generator_files/windows_msi → resources/msi}/assets/dialog_background.bmp +0 -0
  81. data/{lib/omnibus/generator_files/windows_msi → resources/msi}/assets/project.ico +0 -0
  82. data/{lib/omnibus/generator_files/windows_msi → resources/msi}/assets/project_16x16.ico +0 -0
  83. data/{lib/omnibus/generator_files/windows_msi → resources/msi}/assets/project_32x32.ico +0 -0
  84. data/{spec/fixtures/sample/files/windows_msi/Resources/localization-en-us.wxl → resources/msi/localization-en-us.wxl.erb} +3 -4
  85. data/resources/msi/parameters.wxi.erb +9 -0
  86. data/{lib/omnibus/generator_files/windows_msi → resources/msi}/source.wxs.erb +14 -15
  87. data/{lib/omnibus/generator_files/mac_pkg → resources/pkg}/background.png +0 -0
  88. data/resources/pkg/distribution.xml.erb +21 -0
  89. data/resources/pkg/license.html.erb +3 -0
  90. data/resources/pkg/welcome.html.erb +7 -0
  91. data/resources/rpm/rpmmacros.erb +3 -0
  92. data/resources/rpm/signing.erb +40 -0
  93. data/resources/rpm/spec.erb +70 -0
  94. data/spec/functional/builder_spec.rb +90 -111
  95. data/spec/functional/fetchers/git_fetcher_spec.rb +130 -0
  96. data/spec/functional/fetchers/net_fetcher_spec.rb +110 -0
  97. data/spec/functional/fetchers/path_fetcher_spec.rb +97 -0
  98. data/spec/functional/file_syncer_spec.rb +206 -0
  99. data/spec/functional/templating_spec.rb +73 -0
  100. data/spec/spec_helper.rb +31 -94
  101. data/spec/support/env_helpers.rb +20 -0
  102. data/spec/support/examples.rb +56 -0
  103. data/spec/support/file_helpers.rb +46 -0
  104. data/spec/support/git_helpers.rb +107 -0
  105. data/spec/support/logging_helpers.rb +33 -0
  106. data/spec/support/matchers.rb +36 -0
  107. data/spec/support/ohai_helpers.rb +22 -0
  108. data/spec/support/path_helpers.rb +19 -0
  109. data/spec/support/shell_helpers.rb +14 -0
  110. data/spec/unit/build_version_dsl_spec.rb +0 -17
  111. data/spec/unit/build_version_spec.rb +1 -19
  112. data/spec/unit/builder_spec.rb +158 -46
  113. data/spec/unit/compressor_spec.rb +45 -0
  114. data/spec/unit/compressors/base_spec.rb +26 -0
  115. data/spec/unit/compressors/dmg_spec.rb +291 -0
  116. data/spec/unit/compressors/null_spec.rb +23 -0
  117. data/spec/unit/compressors/tgz_spec.rb +67 -0
  118. data/spec/unit/config_spec.rb +27 -34
  119. data/spec/unit/digestable_spec.rb +4 -4
  120. data/spec/unit/fetchers/git_fetcher_spec.rb +110 -39
  121. data/spec/unit/fetchers/net_fetcher_spec.rb +182 -72
  122. data/spec/unit/fetchers/path_fetcher_spec.rb +111 -0
  123. data/spec/unit/generator_spec.rb +137 -0
  124. data/spec/unit/git_cache_spec.rb +24 -34
  125. data/spec/unit/library_spec.rb +21 -82
  126. data/spec/unit/metadata_spec.rb +207 -0
  127. data/spec/unit/ohai_spec.rb +0 -7
  128. data/spec/unit/omnibus_spec.rb +41 -36
  129. data/spec/unit/package_spec.rb +1 -216
  130. data/spec/unit/packagers/base_spec.rb +76 -190
  131. data/spec/unit/packagers/bff_spec.rb +160 -0
  132. data/spec/unit/packagers/deb_spec.rb +324 -0
  133. data/spec/unit/packagers/makeself_spec.rb +80 -0
  134. data/spec/unit/packagers/msi_spec.rb +267 -0
  135. data/spec/unit/packagers/pkg_spec.rb +219 -0
  136. data/spec/unit/packagers/rpm_spec.rb +328 -0
  137. data/spec/unit/project_spec.rb +217 -80
  138. data/spec/unit/publisher_spec.rb +6 -2
  139. data/spec/unit/publishers/artifactory_publisher_spec.rb +1 -1
  140. data/spec/unit/publishers/s3_publisher_spec.rb +1 -1
  141. data/spec/unit/s3_cacher_spec.rb +22 -5
  142. data/spec/unit/software_spec.rb +89 -232
  143. data/spec/unit/util_spec.rb +188 -0
  144. metadata +159 -402
  145. data/features/commands/_deprecated.feature +0 -84
  146. data/lib/omnibus/cleanroom.rb +0 -141
  147. data/lib/omnibus/cli/deprecated.rb +0 -132
  148. data/lib/omnibus/generator_files/mac_pkg/license.html.erb +0 -1
  149. data/lib/omnibus/generator_files/mac_pkg/welcome.html.erb +0 -9
  150. data/lib/omnibus/generator_files/project.rb.erb +0 -20
  151. data/lib/omnibus/generator_files/software/c-example.rb.erb +0 -42
  152. data/lib/omnibus/generator_files/software/erlang-example.rb.erb +0 -38
  153. data/lib/omnibus/generator_files/software/ruby-example.rb.erb +0 -24
  154. data/lib/omnibus/generator_files/windows_msi/localization-en-us.wxl.erb +0 -20
  155. data/lib/omnibus/generator_files/windows_msi/parameters.wxi.erb +0 -9
  156. data/lib/omnibus/packagers/mac_dmg.rb +0 -235
  157. data/lib/omnibus/packagers/mac_pkg.rb +0 -176
  158. data/lib/omnibus/packagers/windows_msi.rb +0 -109
  159. data/spec/data/complicated/config/patches/bzip2/makefile_take_env_vars.patch +0 -15
  160. data/spec/data/complicated/config/patches/couchdb/patch_for_couchjs_stack.patch +0 -19
  161. data/spec/data/complicated/config/patches/gd/gd-2.0.33-configure-libpng.patch +0 -100
  162. data/spec/data/complicated/config/patches/keepalived/keepalived-1.2.9_opscode_centos_5.patch +0 -15
  163. data/spec/data/complicated/config/patches/libedit/freebsd-vi-fix.patch +0 -24
  164. data/spec/data/complicated/config/patches/libiconv/libiconv-1.14_srclib_stdio.in.h-remove-gets-declarations.patch +0 -29
  165. data/spec/data/complicated/config/patches/libwrap/tcp_wrappers-7.6-makefile-dest-fix.patch +0 -35
  166. data/spec/data/complicated/config/patches/libwrap/tcp_wrappers-7.6-malloc-fix.patch +0 -13
  167. data/spec/data/complicated/config/patches/libwrap/tcp_wrappers-7.6-shared_lib_plus_plus-1.patch +0 -1035
  168. data/spec/data/complicated/config/patches/logrotate/logrotate_basedir_override.patch +0 -12
  169. data/spec/data/complicated/config/patches/ncurses/ncurses-5.9-solaris-xopen_source_extended-detection.patch +0 -11
  170. data/spec/data/complicated/config/patches/ncurses/ncurses-clang.patch +0 -42
  171. data/spec/data/complicated/config/patches/ncurses/patch-aa +0 -23
  172. data/spec/data/complicated/config/patches/ncurses/patch-ab +0 -44
  173. data/spec/data/complicated/config/patches/ncurses/patch-ac +0 -40
  174. data/spec/data/complicated/config/patches/ncurses/patch-ad +0 -12
  175. data/spec/data/complicated/config/patches/ncurses/patch-aix-configure +0 -23
  176. data/spec/data/complicated/config/patches/ncurses/patch-cxx_cursesf.h +0 -22
  177. data/spec/data/complicated/config/patches/ncurses/patch-cxx_cursesm.h +0 -22
  178. data/spec/data/complicated/config/patches/nrpe/fix_for_runit.patch +0 -64
  179. data/spec/data/complicated/config/patches/openssl/openssl-1.0.1f-do-not-build-docs.patch +0 -101
  180. data/spec/data/complicated/config/patches/postgresql/postgresql-9.1.2-configure-ncurses-fix.patch +0 -12
  181. data/spec/data/complicated/config/patches/ruby/patch-configure +0 -103
  182. data/spec/data/complicated/config/patches/ruby/ruby-aix-configure.patch +0 -10
  183. data/spec/data/complicated/config/patches/ruby/ruby-openssl-1.0.1c.patch +0 -42
  184. data/spec/data/complicated/config/patches/ruby/ruby_aix_1_9_3_448_ssl_EAGAIN.patch +0 -57
  185. data/spec/data/complicated/config/patches/ruby/rvm-cflags.patch +0 -27
  186. data/spec/data/complicated/config/projects/angrychef.rb +0 -32
  187. data/spec/data/complicated/config/projects/chef-windows.rb +0 -32
  188. data/spec/data/complicated/config/projects/chef.rb +0 -32
  189. data/spec/data/complicated/config/projects/chefdk-windows.rb +0 -41
  190. data/spec/data/complicated/config/projects/chefdk.rb +0 -44
  191. data/spec/data/complicated/config/software/appbundler.rb +0 -25
  192. data/spec/data/complicated/config/software/autoconf.rb +0 -35
  193. data/spec/data/complicated/config/software/automake.rb +0 -39
  194. data/spec/data/complicated/config/software/berkshelf.rb +0 -44
  195. data/spec/data/complicated/config/software/bundler.rb +0 -25
  196. data/spec/data/complicated/config/software/bzip2.rb +0 -46
  197. data/spec/data/complicated/config/software/cacerts.rb +0 -44
  198. data/spec/data/complicated/config/software/chef-client-msi.rb +0 -87
  199. data/spec/data/complicated/config/software/chef-gem.rb +0 -26
  200. data/spec/data/complicated/config/software/chef-vault.rb +0 -43
  201. data/spec/data/complicated/config/software/chef-windows.rb +0 -158
  202. data/spec/data/complicated/config/software/chef.rb +0 -170
  203. data/spec/data/complicated/config/software/chefdk.rb +0 -103
  204. data/spec/data/complicated/config/software/couchdb.rb +0 -53
  205. data/spec/data/complicated/config/software/curl.rb +0 -48
  206. data/spec/data/complicated/config/software/erlang.rb +0 -65
  207. data/spec/data/complicated/config/software/expat.rb +0 -21
  208. data/spec/data/complicated/config/software/fcgi.rb +0 -56
  209. data/spec/data/complicated/config/software/fcgiwrap.rb +0 -41
  210. data/spec/data/complicated/config/software/gd.rb +0 -56
  211. data/spec/data/complicated/config/software/gdbm.rb +0 -40
  212. data/spec/data/complicated/config/software/gecode.rb +0 -48
  213. data/spec/data/complicated/config/software/git.rb +0 -40
  214. data/spec/data/complicated/config/software/help2man.rb +0 -30
  215. data/spec/data/complicated/config/software/icu.rb +0 -40
  216. data/spec/data/complicated/config/software/jre.rb +0 -48
  217. data/spec/data/complicated/config/software/keepalived.rb +0 -43
  218. data/spec/data/complicated/config/software/libarchive.rb +0 -50
  219. data/spec/data/complicated/config/software/libedit.rb +0 -69
  220. data/spec/data/complicated/config/software/libffi.rb +0 -71
  221. data/spec/data/complicated/config/software/libgcc.rb +0 -39
  222. data/spec/data/complicated/config/software/libiconv.rb +0 -55
  223. data/spec/data/complicated/config/software/libjpeg.rb +0 -39
  224. data/spec/data/complicated/config/software/libpng.rb +0 -38
  225. data/spec/data/complicated/config/software/libtool.rb +0 -52
  226. data/spec/data/complicated/config/software/libwrap.rb +0 -50
  227. data/spec/data/complicated/config/software/libxml2.rb +0 -51
  228. data/spec/data/complicated/config/software/libxslt.rb +0 -52
  229. data/spec/data/complicated/config/software/libyaml-windows.rb +0 -43
  230. data/spec/data/complicated/config/software/libyaml.rb +0 -62
  231. data/spec/data/complicated/config/software/logrotate.rb +0 -41
  232. data/spec/data/complicated/config/software/makedepend.rb +0 -73
  233. data/spec/data/complicated/config/software/mysql2.rb +0 -42
  234. data/spec/data/complicated/config/software/nagios-plugins.rb +0 -53
  235. data/spec/data/complicated/config/software/nagios.rb +0 -66
  236. data/spec/data/complicated/config/software/ncurses.rb +0 -149
  237. data/spec/data/complicated/config/software/nginx.rb +0 -40
  238. data/spec/data/complicated/config/software/nodejs.rb +0 -44
  239. data/spec/data/complicated/config/software/nokogiri.rb +0 -55
  240. data/spec/data/complicated/config/software/nrpe.rb +0 -61
  241. data/spec/data/complicated/config/software/ohai.rb +0 -64
  242. data/spec/data/complicated/config/software/omnibus-ctl.rb +0 -34
  243. data/spec/data/complicated/config/software/openresty.rb +0 -67
  244. data/spec/data/complicated/config/software/openssl.rb +0 -158
  245. data/spec/data/complicated/config/software/pcre.rb +0 -42
  246. data/spec/data/complicated/config/software/perl-extutils-embed.rb +0 -15
  247. data/spec/data/complicated/config/software/perl-extutils-makemaker.rb +0 -15
  248. data/spec/data/complicated/config/software/perl.rb +0 -48
  249. data/spec/data/complicated/config/software/perl_pg_driver.rb +0 -12
  250. data/spec/data/complicated/config/software/php.rb +0 -41
  251. data/spec/data/complicated/config/software/pip.rb +0 -30
  252. data/spec/data/complicated/config/software/pkg-config.rb +0 -66
  253. data/spec/data/complicated/config/software/popt.rb +0 -47
  254. data/spec/data/complicated/config/software/postgresql.rb +0 -51
  255. data/spec/data/complicated/config/software/preparation.rb +0 -30
  256. data/spec/data/complicated/config/software/pygments.rb +0 -25
  257. data/spec/data/complicated/config/software/python.rb +0 -49
  258. data/spec/data/complicated/config/software/rabbitmq.rb +0 -36
  259. data/spec/data/complicated/config/software/rebar.rb +0 -36
  260. data/spec/data/complicated/config/software/redis.rb +0 -33
  261. data/spec/data/complicated/config/software/rsync.rb +0 -48
  262. data/spec/data/complicated/config/software/ruby-windows-devkit.rb +0 -30
  263. data/spec/data/complicated/config/software/ruby-windows.rb +0 -30
  264. data/spec/data/complicated/config/software/ruby.rb +0 -162
  265. data/spec/data/complicated/config/software/rubygems-customization.rb +0 -57
  266. data/spec/data/complicated/config/software/rubygems.rb +0 -37
  267. data/spec/data/complicated/config/software/runit.rb +0 -118
  268. data/spec/data/complicated/config/software/server-jre.rb +0 -46
  269. data/spec/data/complicated/config/software/setuptools.rb +0 -30
  270. data/spec/data/complicated/config/software/spawn-fcgi.rb +0 -40
  271. data/spec/data/complicated/config/software/sphinx.rb +0 -26
  272. data/spec/data/complicated/config/software/spidermonkey.rb +0 -60
  273. data/spec/data/complicated/config/software/sqitch.rb +0 -24
  274. data/spec/data/complicated/config/software/test-kitchen.rb +0 -39
  275. data/spec/data/complicated/config/software/unicorn.rb +0 -27
  276. data/spec/data/complicated/config/software/util-macros.rb +0 -46
  277. data/spec/data/complicated/config/software/xproto.rb +0 -46
  278. data/spec/data/complicated/config/software/yajl.rb +0 -30
  279. data/spec/data/complicated/config/software/zlib.rb +0 -67
  280. data/spec/data/overrides/bad_line.overrides +0 -3
  281. data/spec/data/overrides/good.overrides +0 -5
  282. data/spec/data/overrides/with_dupes.overrides +0 -4
  283. data/spec/data/projects/chefdk.rb +0 -41
  284. data/spec/data/projects/sample.rb +0 -13
  285. data/spec/data/software/erchef.rb +0 -42
  286. data/spec/data/software/zlib.rb +0 -67
  287. data/spec/fixtures/sample/files/mac_dmg/Resources/background.png +0 -0
  288. data/spec/fixtures/sample/files/mac_dmg/Resources/icon.png +0 -0
  289. data/spec/fixtures/sample/files/mac_pkg/Resources/background.png +0 -0
  290. data/spec/fixtures/sample/files/mac_pkg/Resources/license.html +0 -1
  291. data/spec/fixtures/sample/files/mac_pkg/Resources/welcome.html +0 -9
  292. data/spec/fixtures/sample/files/windows_msi/Resources/assets/LICENSE.rtf +0 -8
  293. data/spec/fixtures/sample/files/windows_msi/Resources/assets/banner_background.bmp +0 -0
  294. data/spec/fixtures/sample/files/windows_msi/Resources/assets/dialog_background.bmp +0 -0
  295. data/spec/fixtures/sample/files/windows_msi/Resources/assets/project.ico +0 -0
  296. data/spec/fixtures/sample/files/windows_msi/Resources/assets/project_16x16.ico +0 -0
  297. data/spec/fixtures/sample/files/windows_msi/Resources/assets/project_32x32.ico +0 -0
  298. data/spec/fixtures/sample/files/windows_msi/Resources/parameters.wxi.erb +0 -9
  299. data/spec/fixtures/sample/files/windows_msi/Resources/source.wxs +0 -74
  300. data/spec/integration/packagers/mac_spec.rb +0 -58
  301. data/spec/integration/packagers/windows_spec.rb +0 -70
  302. data/spec/unit/packagers/mac_pkg_spec.rb +0 -151
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dec9872ce88998ffa0792cb936e9f81a5955c5f3
4
+ data.tar.gz: 114a41ab14dc94359e1efb6a8f1f6e375031438e
5
+ SHA512:
6
+ metadata.gz: e3cf0b1538b35bb9750427bab3c3779d1355c491e55ac889b81f4b970e85657c2053ec0a6872fd9318e82be70561b77cb354added176c59b6e3b11d536a1dc43
7
+ data.tar.gz: f551ee709ea94e53af2a6b0bc5e09c7e144a686eab51c692fdbc84f74e13b17bd588c4d2c8fc779ec9bf912784583919edadc09d2120f2f94e1554b4e504437f
data/.gitignore CHANGED
@@ -1,12 +1,142 @@
1
+ ### OSX ###
2
+ .DS_Store
3
+ .AppleDouble
4
+ .LSOverride
5
+
6
+ # Icon must end with two \r
7
+ Icon
8
+
9
+
10
+ # Thumbnails
11
+ ._*
12
+
13
+ # Files that might appear on external disk
14
+ .Spotlight-V100
15
+ .Trashes
16
+
17
+ # Directories potentially created on remote AFP share
18
+ .AppleDB
19
+ .AppleDesktop
20
+ Network Trash Folder
21
+ Temporary Items
22
+ .apdisk
23
+
24
+
25
+ ### Windows ###
26
+ # Windows image file caches
27
+ Thumbs.db
28
+ ehthumbs.db
29
+
30
+ # Folder config file
31
+ Desktop.ini
32
+
33
+ # Recycle Bin used on file shares
34
+ $RECYCLE.BIN/
35
+
36
+ # Windows Installer files
37
+ *.cab
38
+ *.msi
39
+ *.msm
40
+ *.msp
41
+
42
+
43
+ ### Ruby ###
1
44
  *.gem
2
- tmp
3
- # package file created by functional tests:
4
- *.pkg
5
- # Bundler related
45
+ *.rbc
46
+ /.config
47
+ /coverage/
48
+ /InstalledFiles
49
+ /pkg/
50
+ /spec/reports/
51
+ /test/tmp/
52
+ /test/version_tmp/
53
+ /tmp/
54
+ /spec/tmp
55
+
56
+ ## Specific to RubyMotion:
57
+ .dat*
58
+ .repl_history
59
+ build/
60
+
61
+ ## Documentation cache and generated files:
62
+ /.yardoc/
63
+ /_yardoc/
64
+ /doc/
65
+ /rdoc/
66
+
67
+ ## Environment normalisation:
68
+ /.bundle/
69
+ /lib/bundler/man/
70
+
71
+ # for a library or gem, you might want to ignore these files since the code is
72
+ # intended to run in multiple environments; otherwise, check them in:
6
73
  Gemfile.lock
7
- .bundle/
8
- vendor/
9
- .rspec
10
- .yardoc
11
- .yardopts
12
- doc/
74
+ .ruby-version
75
+ .ruby-gemset
76
+
77
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
78
+ .rvmrc
79
+
80
+
81
+ ### TextMate ###
82
+ *.tmproj
83
+ *.tmproject
84
+ tmtags
85
+
86
+
87
+ ### SublimeText ###
88
+ # workspace files are user-specific
89
+ *.sublime-workspace
90
+
91
+ # project files should be checked into the repository, unless a significant
92
+ # proportion of contributors will probably not be using SublimeText
93
+ # *.sublime-project
94
+
95
+ #sftp configuration file
96
+ sftp-config.json
97
+
98
+
99
+ ### Tower ###
100
+ # Tower.app - http://www.git-tower.com/
101
+ Icon.png
102
+
103
+
104
+ ### vim ###
105
+ [._]*.s[a-w][a-z]
106
+ [._]s[a-w][a-z]
107
+ *.un~
108
+ Session.vim
109
+ .netrwhist
110
+ *~
111
+
112
+
113
+ ### Emacs ###
114
+ # -*- mode: gitignore; -*-
115
+ *~
116
+ \#*\#
117
+ /.emacs.desktop
118
+ /.emacs.desktop.lock
119
+ *.elc
120
+ auto-save-list
121
+ tramp
122
+ .\#*
123
+
124
+ # Org-mode
125
+ .org-id-locations
126
+ *_archive
127
+
128
+ # flymake-mode
129
+ *_flymake.*
130
+
131
+ # eshell files
132
+ /eshell/history
133
+ /eshell/lastdir
134
+
135
+ # elpa packages
136
+ /elpa/
137
+
138
+ # reftex files
139
+ *.rel
140
+
141
+ # AUCTeX auto folder
142
+ /auto/
@@ -1,11 +1,184 @@
1
- Omnibus Ruby CHANGELOG
2
- ======================
3
-
4
- v3.2.2 (September 16, 2014)
5
- -------------------
6
- - Deprecate `max_build_jobs` in favor of `workers`
7
- - Ensure permissions are preserved on copy package. #336
8
- - Ensure default package user and group are `root`.
1
+ Omnibus CHANGELOG
2
+ =================
3
+
4
+ v4.0.0.beta.1 (August 20, 2014)
5
+ -------------------------------
6
+ ### New Features
7
+ - Implement packager-specific DSLs. Packagers now define their own custom methods that may be configured using the `package` block in a project file. For more information, please see the README or any of the embedded "Building on X" documents.
8
+ - Use vendored assets. In previous versions of Omnibus, the generator would create resource assets for DMG, PKG, and MSI packages, regardless of whether you intended to build those packages. This could cause repo bloat and information overload. In Omnibus 4, the default generator does not create these assets, and instead prefers "general" vendored assets. If you are planning to make a resource-intensive package (such as a PKG or MSI), it is encouraged you generate these assets by specifing the `--pkg-assets` flag during project generation. Omnibus will prefer local resources in the `resources/` directory and then fall-back to "sane" defaults which are vendored within Omnibus.
9
+ - Refactored packagers and remove FPM. Omnibus now builds all packages using Ruby and system tooling. This provides a speed improvement and added control over the way packages are built, while simplifying the DSL.
10
+ - Refactored fetcher objects that include performance enhancements and better cachability across platforms.
11
+ - Added `Omnibus.which` to search `ENV['PATH']` for the given executable. This is used internally in Omnibus but is also available inside software definitions.
12
+ - Lazy load project and software definitions. In previous versions of Omnibus, Omnibus would load **all** software files found on disk. Omnibus 4 will selectively load softwares from the most preferred location.
13
+ - Expand project and software searching. Omnibus 4 now allows a user to specify a list of local software repos and software gems. Omnibus 4 will search the local repository (config/software), then any local file system specified software repos, then any loaded gems. These search paths and gems can be specified in the Omnibus config.
14
+ - Extracted template rendering into a helper module. Omnibus now renders templates from this single method, so you always have the same ERB expectations.
15
+ - Added many new DSL methods for packagers, builders, project, and software. Please see the **DSL Changes** below for detailed information.
16
+ - Extracted FileSyncer into a top-level class with added test coverage.
17
+ - Builder DSL method `erb` will search all configured software repos for the template, following the previously described specificity search.
18
+ - Builder DSL method `patch` will search all configured software repos for the patch file, following the previously described specificity search.
19
+ - Standardize on a single way for loading projects from disk - `Project.load`. This method is part of the public API and can be used with Omnibus as a library for loading a project from preferred paths on disk.
20
+ - Standardize on a single way for loading software from disk - `Software.load`. This method is part of the public API and can be used with Omnibus as a library for loading a software from preferred paths on disk.
21
+ - Added all-new compressor scaffolding and skeleton. Previously, a DMG was considered a "packager", but it is actually a compressor. You can read more about the compressor syntax in the Omnibus 4 release notes or the Omnibus README.
22
+ - Added a TGZ compressor for post-processing larger packagers into tarballs.
23
+ - Use Ruby's native `open-uri` in the NetFetcher. This permits users to specify http, https, or ftp URLs.
24
+ - Include hidden files and folders when calculating a directory digest.
25
+ - Use the relative path of a file when calculating a directory digest.
26
+ - Create required directories "as-needed" rather than at the start of a run. This prevents Omnibus from creating a ton of random directories on disk before the build even begins.
27
+ - Use an Ruby implmentation that behaves like rsync for PathFetcher objects. This removes the implicit dependency on rsync/rubocopy on build systems.
28
+ - Add support for Ubuntu 14.04 in the build lab
29
+ - Centralize the algorithm for determining the packager for the current system.
30
+ - Enhance the `Util` module to include FileSystem methods like `create_directory`.
31
+ - Always build packages in a temporary, staging directory and then copy the generated asset(s) back into `Config.package_dir`.
32
+ - Add sanity checking around package name generation (e.g. removing specical characters) and issue a warning when package names might contain invalid characters.
33
+ - Rewrite AIX BFF packager from scratch.
34
+ - Rewrite Debian/Ubuntu DEB packager from scratch using `dpkg-deb`.
35
+ - Rewrite Other Makeself packager from scratch using more in-memory operations (instead of filesystem).
36
+ - Rewrite Windows MSI packager from scratch and use more flexible default XML templates.
37
+ - Support installing an MSI package into more than one directory deep (e.g. C:\Program Files\Chef Software\Chef).
38
+ - Rewrite OS X PKG packager from scratch with templates instead of heredocs for XML/PLists.
39
+ - Rewrite RedHat/CentOS RPM packager from scratch to use custom spec files and `rpmbuild`.
40
+ - Rewrite Solaris Solaris packager. This packager is still in need of a major overhaul.
41
+ - Allow DSL authors to specify a URL may be downloaded using `:unsafe` redirects from HTTPS -> HTTP.
42
+ - Added a real functional test suite that runs on Travis CI for the Build DSL
43
+ - Improved test coverage by 280%.
44
+ - Treat all files as binary. This solves a number of strange encoding issues you may have been experiencing.
45
+ - Prevent Ruby from automatically ungzipping responses.
46
+ - Added `Config.workers` key for specifying the maximum number of parallel events to take place.
47
+ - Added parallel downloads for fetcher objects.
48
+ - Use `fakeroot` for building DEBs and RPMs.
49
+
50
+ ### Potentially Breaking Changes
51
+ - Remove embedded functional tests. Because the functional tests were skipped on CI (and require a system of each type to properly execute), they have been removed. Chef has created the [omnibus-harmony](https://github.com/opscode/omnibus-harmony) pipeline to perform true integration testing using the in-house CI cluster. If you were relying on the integration tests (or the associated Rake tasks), they have been removed.
52
+ - Move vendored `makeself` and `makeself-header` script from `bin/` to `resources/` folder. Having the `makeself` script inside `bin/` would cause `makeself` to be bundled with the gem and added to `$PATH`. If you were previously relying on Omnibus adding `makeself` to your `$PATH`, this will no longer happen.
53
+ - Cleanroom now subclasses `Object` instead of `Omnibus`. This could have unintended side-effects if you were accessing Omnibus internals (like `Config`) inside software or project DSL methods. You must now specify the entire namespace (e.g. `Omnibus::Config`).
54
+ - Builder filesystem DSL methods change directory into `Software#project_dir` before executing.
55
+ - Builder filesystem DSL methods now accept paths or globs.
56
+ - Packagers attempt to ignore SCM-based files during packaging.
57
+ - Move internal cleanroom implementation into a [cleanroom standalone-gem](https://rubygems.org/gems/cleanroom). If you were relying or invoking `Omnibus::Cleanroom`, please see the gem documentation.
58
+ - `Omnibus.process_configuration` has been removed. This method was actually a noop and entirely unused. If you are using Omnibus as a library, this method does not need to be invoked and the call can safely be removed.
59
+ - Remove `Config.fetch` and `Config[:key]`. You should use `Config.thing` instead.
60
+ - Standardize errors on `MissingRequiredAttribute`. In previous versions of Omnibus, you would get a different error depending on _where_ a required attribute was missing. In Config, Omnibus would raise `MissingConfigOption`, in project, Omnibus would raise `MissingProjectConfiguration` and in software, Omnibus would raise `MissingSoftwareConfiguration`. All these error classes have been removed and standardized on `MissingRequiredAttribute`.
61
+ - Remove many unused error classes.
62
+ - Remove all implementations of ErrorReporter classes. These classes attempted to read the output of a stacktrace and intelligently display information to the user about the failure. However, these classes proved to hide errors or provide false information more than they were helpful.
63
+ - Raise `NotImplementedError` (Ruby core) instead of `AbstractMethod` or `AbstractFunction` (Omnibus) errors when a method should be overridden by the child class.
64
+ - Refactor `GitFetcher`, removing retries and complex error handling. If a git command fails, you will see the error from git instead of an Omnibus-translated error.
65
+ - Raise a `ChecksumMismatch` exception when a provided md5 does not match the downloaded one.
66
+ - When extracting tar archives, prefer gtar over tar when gtar is present.
67
+ - Move `Omnibus::Packager::Metadata` to `Omnibus::Metadata` and improve documentation
68
+ - Change the airty of `Omnibus::Metadata.generate` to accept [1] the path to the package on disk and [2] the project which created the package.
69
+ - Selectively load Ohai plugins. Please note: the Ohai that is loaded with Omnibus includes very minimal system information compared to the Ohai that comes with Chef. If you are expecting the data to be the same, you have been warned!
70
+ - Remove all uses of forwardable delegation.
71
+ - Cache the loading of projects
72
+ - Cache the loading of software
73
+ - When accessing DSL methods for the first time, do not persist the default value onto the instance variable.
74
+ - Bump the required version of Chef Sugar to `~> 2.2` to pick up new `smartos?` and `omnios?` matchers.
75
+ - Removed vendor spec fixture data. I do not know why you would be using it, but if you were relying on any of that data, it is now gone and fixtures are constructed manually at test time.
76
+ - Renamed `Package::MacPkg` to `Packager::PKG`
77
+ - Renamed `Package::MacDmg` to `Compressor::DMG`
78
+ - Truncate SLES and other RedHat derivatives platform version.
79
+ - Refactor logger objects to separate Omnibus internal debugging info with build/compile/configure debugging info.
80
+ - Improve error and debugging output when an exception is raised while shelling out. Failed shell commands will now raise `Omnibus::CommandFailed` and `Omnibus::CommandTimeout` instead of the `Mixlib::ShellOut` exceptions. If you were previously rescuing the Mixlib exceptions, you should switch to the new ones.
81
+
82
+ ### Definitely Breaking Changes
83
+ - Previously deprecated methods have been removed.
84
+ - `Config#package_tmp` is no longer used. `Dir.mktmpdir` is used to generate an operating-system agnostic temporary directory for packagers to operate in.
85
+ - `Config#build_dmg` is no longer used. If you wish to build a dmg, you must specify a `compressor` block with the `:dmg` option.
86
+ - `Config#dmg_window_bounds` is no longer used. If you wish to specify dmg window bounds, you must specify a `compressor` block with the `:dmg` option and specify the `window_bounds` attribute.
87
+ - `Config#dmg_pkg_position` is no longer used. If you wish to specify dmg package positioning, you must specify a `compressor` block with the `:dmg` option and specify the `pkg_position` attribute.
88
+ - `Config#sign_pkg` is no longer used. If you specify a signing identity, it is assumed you want to sign the package.
89
+ - `Config#signing_identity` is no longer used. If you wish to specify package signing identity, you must specify a `package` block with the `:pkg` option and specify the `signing_identity` attribute.
90
+ - `Config#sign_rpm` is no longer used. If you specify an rpm signing passphrase, it is assumed you want to sign the package.
91
+ - `Config#rpm_signing_passphrase` is no longer used. If you wish to specify package signing identity, you must specify a `package` block with the `:rpm` option and specify the `signing_passphrase` attribute.
92
+ - `Project#msi_parameters` has been removed. If you wish to specify msi parameters, you must specify a `package` block with the `:msi` option and specify the `parameters` attribute.
93
+ - **`Project#msi_parameters[:upgrade_code]` is no longer used!** You must specify an `upgrade_code` in a `package` block with the `:msi` option.
94
+ - Remove all instances of `NullBuilder`. If you were previously invoking a `NullBuilder`, simply omit a `build` block.
95
+ - Remove packager `validate` pre-step
96
+ - Remove packager `cleanup` post-step
97
+ - **Changed the method arity of `Software#initialize` - this method no longer accepts a list of overrides.**
98
+ - `Builder#max_build_jobs` has been renamed to `Builder#workers`.
99
+
100
+ ### Deprecations
101
+ - `Config#package_tmp` prints a deprecation. There is no replacement for this method.
102
+ - `Config#build_dmg` prints a deprecation. You should specify a `compressor` block with the `:dmg` option instead.
103
+ - `Config#dmg_window_bounds` prints a deprecation. You should specify the `window_bounds` inside `compressor :dmg` instead.
104
+ - `Config#dmg_pkg_position` prints a deprecation. You should specify the `pkg_position` inside `compressor :dmg` instead.
105
+ - `Config#sign_pkg` prints a deprecation. If you specify a signing identity, it is assumed you want to sign the package.
106
+ - `Config#signing_identity` prints a deprecation. You should specify the `signing_identity` inside `package :pkg` instead.
107
+ - `Config#sign_rpm` prints a deprecation. If you specify an rpm signing passphrase, it is assumed you want to sign the package.
108
+ - `Config#rpm_signing_passphrase` prints a deprecation. You should specify the `signing_passphrase` inside `package :rpm` instead.
109
+ - Warn the user when invoking the `command` method in a `build` block that should be replaced with a top-level DSL method (like `command "rm -rf thing.rb"` should be replaced with `delete "thing.rb"`).
110
+
111
+ ### Generator Changes
112
+ - The generator (`omnibus new NAME`) no longer generates assets (MSI, PKG, DMG, etc). If you need those assets, you can specify the `--thing-assets` (e.g. `--msi-assets`) flag.
113
+ - The generator does not render ERB files for assets - instead, it just generates the raw ERB files for your modification.
114
+ - Improve the comments in teh generated project Gemfile
115
+ - Put "development" gems in a `:development` group in the generated project Gemfile for easy exclusion with `bundle install --without development`.
116
+ - Update generated `<project>.rb` file to use new APIs
117
+ - Generate a "real" software example (zlib) that showcases many of the new APIs for learning.
118
+ - Always generate an `omnibus.rb` configuration file with "secret" values specified using `ENV`.
119
+ - Remove outdated and `-example.rb` software definitions.
120
+
121
+ ### DSL Changes
122
+ #### Project
123
+ - Removed `Project#msi_parameters`. Please use the packager-specific DSL `parameters` method instead.
124
+ - Removed `Project#msi_parameters[:upgrade_code]`. You must specify the `upgrade_code` packager-specific DSL method instead.
125
+ - Removed `Project#package_name`. This value is now calculated by Omnibus and you cannot tune it.
126
+ - Removed `Project#install_path`. Please use `Project#install_dir` instead.
127
+ - Removed `Project#files_path`. Please use `Project#resources_path` instead.
128
+ - Added `Project#resources_path`. Previously called "files", any Omnibus assets, images, or files are now referred to as "resources". The default value is `resources/PROJECT_NAME`.
129
+ - Removed `Project#replaces`. Please use `Project#replace` and specify a single package. You can specify `Package#replace` multiple times in the same project.
130
+ - Added `Project#replace` for specifying which existing package this project replaces.
131
+ - Added `Project#default_root` that uses `/opt` on Unix and `C:/` on Windows for easy cross-platform path-setting.
132
+ - Added `Project#package` for customizing a specific packager. This is a sub-DSL that is evaluated on the OS-specific packager. This DSL method may be specified in a file multiple times.
133
+ - Added `Project#compress` for customizing a specific compressor. This is a sub-DSL that is evaluated on the given compressor. This DSL method may be specified in a file multiple times and Omnibus will select the "best" compressor for the given platform. For example, if both DMG and TGZ compressors are given, Omnibus will prefer DMG on OS X systems and fallback to TGZ on others.
134
+ - Changed `Project#package_user` to default to `root` when no value is given.
135
+ - Changed `Project#package_group` to default to `Ohai['root_group']` and then `root` when no value is given.
136
+ - Removed `Project#platform_version`. Use `ohai` instead.
137
+ - Removed `Project#platform_family`. Use `ohai` instead.
138
+ - Removed `Project#platform`. Use `ohai` instead.
139
+ - Removed `Project#machine`. Use `ohai` instead.
140
+ - Removed `Project#dependencies`. List each dependency using `dependency` instead.
141
+ - Added `Project#ohai` for quick access to Ohai data.
142
+ - Removed `Software#override_version`. There is no replacement.
143
+ - Removed `Software#install_dir`. Please use `Software#install_path` instead.
144
+ - Removed `Software#platform_version`. Use `ohai` instead.
145
+ - Removed `Software#platform_family`. Use `ohai` instead.
146
+ - Removed `Software#platform`. Use `ohai` instead.
147
+ - Removed `Software#architecture`. Use `ohai` instead or Chef Sugar instead.
148
+ - Added `Software#ohai` for quick access to Ohai data.
149
+ - Changed `Software#downloaded_file` to `Software#project_file`.
150
+ - Removed `Software#source_dir`. You can use `Omnibus::Config.source_dir` instead, but if you need access to this method, it is probably a bug in Omnibus.
151
+ - Removed `Software#cache_dir`. You can use `Omnibus::Config.cache_dir` instead, but if you need access to this method, it is probably a bug in Omnibus.
152
+ - Removed `Software#config`. You can use `Omnibus::Config` instead.
153
+ - Added `Builder#make` for choosing the correct `make` binary on the system. When `gmake` is present, it is preferred. The use of this method also sets the `MAKE` environment variable for consistency. You should change all instances of `command "make ..."` to `make "..."` to ensure true cross-platform building.
154
+ - Added `Builder#windows_safe_path` for shelling out to the system with the correct path separators.
155
+ - Added `Buidler#workers` for delegation to the config option.
156
+ - Removed `Buidler#max_build_jobs` in favor of `Builder#workers`.
157
+ - Added `Packager::DEB#vendor` for specifying the package vendor.
158
+ - Added `Packager::DEB#license` for specifying the package license.
159
+ - Added `Packager::DEB#priority` for specifying the package priority.
160
+ - Added `Packager::DEB#section` for specifying the package section.
161
+ - Added `Packager::MSI#upgrade_code` for specifying an upgrade code. You must specify this attribute to make MSI packages.
162
+ - Added `Packager::MSI#parameters` for specifying arbitrary parameters to be read into the Wix XML.
163
+ - Added `Packager::MSI#wix_light_extension` for activating arbitrary Wix light extentions.
164
+ - Added `Packager::MSI#wix_candle_extension` for activating arbitrary Wix candle extentions.
165
+ - Added `Packager::PKG#identifer` for specifying the identifier of the the Mac OS X PKG. This value is still interpreted if one is not given. Note: the `Config.mac_pkg_identifier` is no longer honored.
166
+ - Added `Packager::PKG#signing_passphrase` for specifying the signing passphrase. If this value is given, it is assumed you want to sign the package. Note: the `Config.sign_rpm` and `Config.rpm_signing_passphrase` is no longer honored.
167
+ - Added `Packager::RPM#vendor` for specifying the package vendor.
168
+ - Added `Packager::RPM#license` for specifying the package license.
169
+ - Added `Packager::RPM#priority` for specifying the package priority.
170
+ - Added `Packager::RPM#category` for specifying the package category.
171
+
172
+ ### Bugfixes
173
+ - Drastically improve test coverage around packagers.
174
+ - Improved documentation for Building on OSX.
175
+ - Improved documentation for Building on Windows.
176
+ - Improved documentation for Building on RHEL.
177
+ - Improved documentation for the `Builder` DSL.
178
+ - Standardized license headers.
179
+ - Added SSH forwarding as part of the default generated `.kitchen.yml`.
180
+ - Updated Chef version in generated `.kitchen.yml`.
181
+
9
182
 
10
183
  v3.2.1 (July 26, 2014)
11
184
  ----------------------
data/README.md CHANGED
@@ -54,7 +54,11 @@ Omnibus determines the platform for which to build an installer based on **the p
54
54
 
55
55
  More documentation
56
56
  ------------------
57
- If you are creating OSX packages, please see the [OSX-specific documentation](docs/Building on OSX.md).
57
+ - [Building on Debian](docs/Building on Debian.md)
58
+ - [Building on OSX](docs/Building on OSX.md)
59
+ - [Building on RHEL](docs/Building on RHEL.md)
60
+ - [Building on Windows](docs/Building on Windows.md)
61
+ - [Build Cache](docs/Build Cache.md)
58
62
 
59
63
 
60
64
  Configuration DSL
@@ -83,7 +87,7 @@ s3_bucket ENV['S3_BUCKET']
83
87
 
84
88
  For more information, please see the [`Config` documentation](http://rubydoc.info/github/opscode/omnibus/Omnibus/Config).
85
89
 
86
- You can tell Omnibus to load a difference configuration file by passing the `--config` option to any command:
90
+ You can tell Omnibus to load a different configuration file by passing the `--config` option to any command:
87
91
 
88
92
  ```shell
89
93
  $ bin/omnibus --config /path/to/config.rb
@@ -101,15 +105,15 @@ A Project DSL file defines your actual application; this is the thing you are cr
101
105
  All project definitions must be in the `config/projects` directory of your Omnibus repository.
102
106
 
103
107
  ```ruby
104
- name 'chef-full'
105
- maintainer 'YOUR NAME'
106
- homepage 'http://yoursite.com'
108
+ name "chef-full"
109
+ maintainer "YOUR NAME"
110
+ homepage "http://yoursite.com"
107
111
 
108
- install_dir '/opt/chef'
109
- build_version '0.10.8'
112
+ install_dir "/opt/chef"
113
+ build_version "0.10.8"
110
114
  build_iteration 4
111
115
 
112
- dependency 'chef'
116
+ dependency "chef"
113
117
  ```
114
118
 
115
119
  Some DSL methods available include:
@@ -121,10 +125,11 @@ Some DSL methods available include:
121
125
  | `build_version` | The package version |
122
126
  | `build_iteration` | The package iteration number |
123
127
  | `dependency` | An Omnibus software-defined component to include in this package |
128
+ | `package` | Invoke a packager-specific DSL |
129
+ | `compress` | Invoke a compressor-specific DSL |
124
130
 
125
131
  For more information, please see the [`Project` documentation](http://rubydoc.info/github/opscode/omnibus/Omnibus/Project).
126
132
 
127
-
128
133
  ### Software
129
134
  Omnibus "software" files define individual software components that go into making your overall package. They are the building blocks of your application. The Software DSL provides a way to define where to retrieve the software sources, how to build them, and what dependencies they have. These dependencies are also defined in their own Software DSL files, thus forming the basis for a dependency-aware build ordering.
130
135
 
@@ -133,21 +138,21 @@ All Software definitions should go in the `config/software` directory of your Om
133
138
  Here is an example:
134
139
 
135
140
  ```ruby
136
- name 'ruby'
137
- default_version '1.9.2-p290'
138
- source url: 'http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-#{version}.tar.gz',
139
- md5: '604da71839a6ae02b5b5b5e1b792d5eb'
141
+ name "ruby"
142
+ default_version "1.9.2-p290"
143
+ source url: "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-#{version}.tar.gz",
144
+ md5: "604da71839a6ae02b5b5b5e1b792d5eb"
140
145
 
141
- dependency 'zlib'
142
- dependency 'ncurses'
143
- dependency 'openssl'
146
+ dependency "zlib"
147
+ dependency "ncurses"
148
+ dependency "openssl"
144
149
 
145
150
  relative_path "ruby-#{version}"
146
151
 
147
152
  build do
148
- command './configure'
149
- command 'make'
150
- command 'make install'
153
+ command "./configure"
154
+ command "make"
155
+ command "make install"
151
156
  end
152
157
  ```
153
158
 
@@ -161,34 +166,57 @@ Some of the DSL methods available include:
161
166
  | `dependency` | An Omnibus software-defined component that this software depends on |
162
167
  | `relative_path` | The relative path of the extracted tarball |
163
168
  | `build` | The build instructions |
164
- | `command` | An individual build step |
165
169
 
170
+ For more DSL methods, please consult the [`Software` documentation](http://rubydoc.info/github/opscode/omnibus/Omnibus/Software).
171
+
172
+ Additionally, there are a number of DSL methods avaiable inside the `build` block:
173
+
174
+ | DSL Method | Description |
175
+ | :-----------------: | -------------------------------------------|
176
+ | `command` | Execute a single shell command |
177
+ | `make` | Run make (with or without args), using gmake when appropriate |
178
+ | `patch` | Apply a patch from disk |
179
+ | `workers` | The maximum number of builders |
180
+ | `windows_safe_path` | Format the path to be safe for shelling out on Windows |
181
+ | `ruby` | Execute the code as the embedded Ruby |
182
+ | `gem` | Execute the code as the embedded Rubygems |
183
+ | `bundle` | Execute the code as the embedded Bundler |
184
+ | `rake` | Execute the code as the embedded Rake gem |
185
+ | `block` | Execute Ruby block at build time |
186
+ | `erb` | Render the given ERB template |
187
+ | `mkdir` | Create the given directory |
188
+ | `touch` | Create the given empty file |
189
+ | `delete` | Remove the given file or directory |
190
+ | `copy` | Copy a to b |
191
+ | `move` | Move a to b |
192
+ | `link` | Link a to b |
193
+ | `sync` | Copy all files from a to b, removing any union files |
194
+
195
+ For more DSL methods, please consult the [`Builder` documentation](http://rubydoc.info/github/opscode/omnibus/Omnibus/Builder).
166
196
 
167
197
  You can support building multiple verisons of the same software in the same software definition file using the `version` method and giving a block:
168
198
 
169
199
  ```ruby
170
- name 'ruby'
171
- default_version '1.9.2-p290'
200
+ name "ruby"
201
+ default_version "1.9.2-p290"
172
202
 
173
- version '1.9.2-p290' do
174
- source url: 'http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-#{version}.tar.gz',
175
- md5: '604da71839a6ae02b5b5b5e1b792d5eb'
203
+ version "1.9.2-p290" do
204
+ source url: "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-#{version}.tar.gz",
205
+ md5: "604da71839a6ae02b5b5b5e1b792d5eb"
176
206
  end
177
207
 
178
- version '2.1.1' do
179
- source url: 'http://ftp.ruby-lang.org/pub/ruby/2.1/ruby-#{version}.tar.gz',
180
- md5: 'e57fdbb8ed56e70c43f39c79da1654b2'
208
+ version "2.1.1" do
209
+ source url: "http://ftp.ruby-lang.org/pub/ruby/2.1/ruby-#{version}.tar.gz",
210
+ md5: "e57fdbb8ed56e70c43f39c79da1654b2"
181
211
  end
182
212
  ```
183
213
 
184
214
  Since the software definitions are simply ruby code, you can conditionally execute anything by wrapping it with pure Ruby that tests for the version number.
185
215
 
186
- For more DSL methods, please consult the [`Software` documentation](http://rubydoc.info/github/opscode/omnibus/Omnibus/Software).
187
-
188
216
  #### Sharing software definitions
189
217
  The easiest way to share organization-wide software is via bundler and Rubygems. For an example software repository, look at Chef's [omnibus-software](https://github.com/opscode/omnibus-software). For more information, please see the [Rubygems documentation](http://guides.rubygems.org/publishing/).
190
218
 
191
- It is recommended you use bundler to pull down these gems (as bundler also permits pulling softare directly from GitHub):
219
+ It is recommended you use bundler to pull down these gems (as bundler also permits pulling software directly from GitHub):
192
220
 
193
221
  ```ruby
194
222
  gem 'my-company-omnibus-software'
@@ -227,13 +255,13 @@ Caveats
227
255
  The project definitions can override specific software dependencies by passing in `override` to use the correct version:
228
256
 
229
257
  ```ruby
230
- name 'chef-full'
258
+ name "chef-full"
231
259
  # <snip>
232
260
 
233
261
  # This will override the default version of "chef"
234
- override :chef, version: '2.1.1'
262
+ override :chef, version: "2.1.1"
235
263
 
236
- dependency 'chef'
264
+ dependency "chef"
237
265
  ```
238
266
 
239
267
  **The overridden version must be defined in the associated software!**
@@ -242,7 +270,7 @@ dependency 'chef'
242
270
  By default, Omnibus will log at the `warn` level. You can override this by passing the `--log-level` flag to your Omnibus call:
243
271
 
244
272
  ```shell
245
- $ bin/omnibus build <project> --log-level info // or 'debug'
273
+ $ bin/omnibus build <project> --log-level info # or "debug"
246
274
  ```
247
275
 
248
276
  ### Git caching