rufus-lua-win 5.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +69 -0
  6. data/Rakefile +1 -0
  7. data/lib/rufus/lua/win.rb +18 -0
  8. data/lib/rufus/lua/win/version.rb +7 -0
  9. data/rufus-lua-win.gemspec +23 -0
  10. data/vendor/lua/bin/liblua.dll +0 -0
  11. data/vendor/lua/lib/lua/LuaXml.lua +119 -0
  12. data/vendor/lua/lib/lua/alien.lua +250 -0
  13. data/vendor/lua/lib/lua/alien/core.dll +0 -0
  14. data/vendor/lua/lib/lua/alien/struct.dll +0 -0
  15. data/vendor/lua/lib/lua/base.lua +536 -0
  16. data/vendor/lua/lib/lua/bin.lua +20 -0
  17. data/vendor/lua/lib/lua/bit.dll +0 -0
  18. data/vendor/lua/lib/lua/cdlua.dll +0 -0
  19. data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
  20. data/vendor/lua/lib/lua/cdluagl.dll +0 -0
  21. data/vendor/lua/lib/lua/cdluaim.dll +0 -0
  22. data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
  23. data/vendor/lua/lib/lua/copas.lua +543 -0
  24. data/vendor/lua/lib/lua/coxpcall.lua +57 -0
  25. data/vendor/lua/lib/lua/date.lua +745 -0
  26. data/vendor/lua/lib/lua/debug_ext.lua +84 -0
  27. data/vendor/lua/lib/lua/debug_init.lua +2 -0
  28. data/vendor/lua/lib/lua/des56.dll +0 -0
  29. data/vendor/lua/lib/lua/dist/config.lua +109 -0
  30. data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
  31. data/vendor/lua/lib/lua/dist/depends.lua +601 -0
  32. data/vendor/lua/lib/lua/dist/git.lua +307 -0
  33. data/vendor/lua/lib/lua/dist/init.lua +278 -0
  34. data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
  35. data/vendor/lua/lib/lua/dist/package.lua +583 -0
  36. data/vendor/lua/lib/lua/dist/sys.lua +367 -0
  37. data/vendor/lua/lib/lua/dist/utils.lua +130 -0
  38. data/vendor/lua/lib/lua/ex.dll +0 -0
  39. data/vendor/lua/lib/lua/fstable.lua +116 -0
  40. data/vendor/lua/lib/lua/getopt.lua +273 -0
  41. data/vendor/lua/lib/lua/git.lua +5 -0
  42. data/vendor/lua/lib/lua/git/core.dll +0 -0
  43. data/vendor/lua/lib/lua/git/objects.lua +121 -0
  44. data/vendor/lua/lib/lua/git/pack.lua +316 -0
  45. data/vendor/lua/lib/lua/git/protocol.lua +188 -0
  46. data/vendor/lua/lib/lua/git/repo.lua +283 -0
  47. data/vendor/lua/lib/lua/git/util.lua +233 -0
  48. data/vendor/lua/lib/lua/gzio.dll +0 -0
  49. data/vendor/lua/lib/lua/gzip.lua +81 -0
  50. data/vendor/lua/lib/lua/iconv.dll +0 -0
  51. data/vendor/lua/lib/lua/imlua.dll +0 -0
  52. data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
  53. data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
  54. data/vendor/lua/lib/lua/imlua_process.dll +0 -0
  55. data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
  56. data/vendor/lua/lib/lua/io_ext.lua +115 -0
  57. data/vendor/lua/lib/lua/iuplua.dll +0 -0
  58. data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
  59. data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
  60. data/vendor/lua/lib/lua/iupluacd.dll +0 -0
  61. data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
  62. data/vendor/lua/lib/lua/iupluagl.dll +0 -0
  63. data/vendor/lua/lib/lua/iupluaim.dll +0 -0
  64. data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
  65. data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
  66. data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
  67. data/vendor/lua/lib/lua/lanes.lua +591 -0
  68. data/vendor/lua/lib/lua/lanes/core.dll +0 -0
  69. data/vendor/lua/lib/lua/lcs.lua +55 -0
  70. data/vendor/lua/lib/lua/lemock.lua +659 -0
  71. data/vendor/lua/lib/lua/lfs.dll +0 -0
  72. data/vendor/lua/lib/lua/list.lua +375 -0
  73. data/vendor/lua/lib/lua/logging.lua +189 -0
  74. data/vendor/lua/lib/lua/logging/console.lua +22 -0
  75. data/vendor/lua/lib/lua/logging/email.lua +44 -0
  76. data/vendor/lua/lib/lua/logging/file.lua +55 -0
  77. data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
  78. data/vendor/lua/lib/lua/logging/socket.lua +35 -0
  79. data/vendor/lua/lib/lua/logging/sql.lua +64 -0
  80. data/vendor/lua/lib/lua/loop/base.lua +68 -0
  81. data/vendor/lua/lib/lua/loop/cached.lua +312 -0
  82. data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
  83. data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
  84. data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
  85. data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
  86. data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
  87. data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
  88. data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
  89. data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
  90. data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
  91. data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
  92. data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
  93. data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
  94. data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
  95. data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
  96. data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
  97. data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
  98. data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
  99. data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
  100. data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
  101. data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
  102. data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
  103. data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
  104. data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
  105. data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
  106. data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
  107. data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
  108. data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
  109. data/vendor/lua/lib/lua/loop/simple.lua +75 -0
  110. data/vendor/lua/lib/lua/loop/table.lua +71 -0
  111. data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
  112. data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
  113. data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
  114. data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
  115. data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
  116. data/vendor/lua/lib/lua/lpeg.dll +0 -0
  117. data/vendor/lua/lib/lua/ltn12.lua +292 -0
  118. data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
  119. data/vendor/lua/lib/lua/luacurl.dll +0 -0
  120. data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
  121. data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
  122. data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
  123. data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
  124. data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
  125. data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
  126. data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
  127. data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
  128. data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
  129. data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
  130. data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
  131. data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
  132. data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
  133. data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
  134. data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
  135. data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
  136. data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
  137. data/vendor/lua/lib/lua/luagl.dll +0 -0
  138. data/vendor/lua/lib/lua/luaglu.dll +0 -0
  139. data/vendor/lua/lib/lua/luaidl.lua +113 -0
  140. data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
  141. data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
  142. data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
  143. data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
  144. data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
  145. data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
  146. data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
  147. data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
  148. data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
  149. data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
  150. data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
  151. data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
  152. data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
  153. data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
  154. data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
  155. data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
  156. data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
  157. data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
  158. data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
  159. data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
  160. data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
  161. data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
  162. data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
  163. data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
  164. data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
  165. data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
  166. data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
  167. data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
  168. data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
  169. data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
  170. data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
  171. data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
  172. data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
  173. data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
  174. data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
  175. data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
  176. data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
  177. data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
  178. data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
  179. data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
  180. data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
  181. data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
  182. data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
  183. data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
  184. data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
  185. data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
  186. data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
  187. data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
  188. data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
  189. data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
  190. data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
  191. data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
  192. data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
  193. data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
  194. data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
  195. data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
  196. data/vendor/lua/lib/lua/luars232.dll +0 -0
  197. data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
  198. data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
  199. data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
  200. data/vendor/lua/lib/lua/luaunit.lua +601 -0
  201. data/vendor/lua/lib/lua/lxp.dll +0 -0
  202. data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
  203. data/vendor/lua/lib/lua/math_ext.lua +27 -0
  204. data/vendor/lua/lib/lua/mbox.lua +53 -0
  205. data/vendor/lua/lib/lua/md5.lua +19 -0
  206. data/vendor/lua/lib/lua/md5/core.dll +0 -0
  207. data/vendor/lua/lib/lua/metalua.lua +0 -0
  208. data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
  209. data/vendor/lua/lib/lua/metalua/base.lua +104 -0
  210. data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
  211. data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
  212. data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
  213. data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
  214. data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
  215. data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
  216. data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
  217. data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
  218. data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
  219. data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
  220. data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
  221. data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
  222. data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
  223. data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
  224. data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
  225. data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
  226. data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
  227. data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
  228. data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
  229. data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
  230. data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
  231. data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
  232. data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
  233. data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
  234. data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
  235. data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
  236. data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
  237. data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
  238. data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
  239. data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
  240. data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
  241. data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
  242. data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
  243. data/vendor/lua/lib/lua/mime.lua +87 -0
  244. data/vendor/lua/lib/lua/mime/core.dll +0 -0
  245. data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
  246. data/vendor/lua/lib/lua/modules.lua +16 -0
  247. data/vendor/lua/lib/lua/object.lua +56 -0
  248. data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
  249. data/vendor/lua/lib/lua/oil/arch.lua +27 -0
  250. data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
  251. data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
  252. data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
  253. data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
  254. data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
  255. data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
  256. data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
  257. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
  258. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
  259. data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
  260. data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
  261. data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
  262. data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
  263. data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
  264. data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
  265. data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
  266. data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
  267. data/vendor/lua/lib/lua/oil/assert.lua +87 -0
  268. data/vendor/lua/lib/lua/oil/builder.lua +45 -0
  269. data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
  270. data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
  271. data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
  272. data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
  273. data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
  274. data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
  275. data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
  276. data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
  277. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
  278. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
  279. data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
  280. data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
  281. data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
  282. data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
  283. data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
  284. data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
  285. data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
  286. data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
  287. data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
  288. data/vendor/lua/lib/lua/oil/compat.lua +846 -0
  289. data/vendor/lua/lib/lua/oil/component.lua +1 -0
  290. data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
  291. data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
  292. data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
  293. data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
  294. data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
  295. data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
  296. data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
  297. data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
  298. data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
  299. data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
  300. data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
  301. data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
  302. data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
  303. data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
  304. data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
  305. data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
  306. data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
  307. data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
  308. data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
  309. data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
  310. data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
  311. data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
  312. data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
  313. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
  314. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
  315. data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
  316. data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
  317. data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
  318. data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
  319. data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
  320. data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
  321. data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
  322. data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
  323. data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
  324. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
  325. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
  326. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
  327. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
  328. data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
  329. data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
  330. data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
  331. data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
  332. data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
  333. data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
  334. data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
  335. data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
  336. data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
  337. data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
  338. data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
  339. data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
  340. data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
  341. data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
  342. data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
  343. data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
  344. data/vendor/lua/lib/lua/oil/oo.lua +1 -0
  345. data/vendor/lua/lib/lua/oil/port.lua +1 -0
  346. data/vendor/lua/lib/lua/oil/properties.lua +57 -0
  347. data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
  348. data/vendor/lua/lib/lua/package_ext.lua +15 -0
  349. data/vendor/lua/lib/lua/parser.lua +268 -0
  350. data/vendor/lua/lib/lua/pl/Date.lua +555 -0
  351. data/vendor/lua/lib/lua/pl/List.lua +613 -0
  352. data/vendor/lua/lib/lua/pl/Map.lua +113 -0
  353. data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
  354. data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
  355. data/vendor/lua/lib/lua/pl/Set.lua +153 -0
  356. data/vendor/lua/lib/lua/pl/app.lua +165 -0
  357. data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
  358. data/vendor/lua/lib/lua/pl/class.lua +180 -0
  359. data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
  360. data/vendor/lua/lib/lua/pl/config.lua +176 -0
  361. data/vendor/lua/lib/lua/pl/data.lua +606 -0
  362. data/vendor/lua/lib/lua/pl/dir.lua +475 -0
  363. data/vendor/lua/lib/lua/pl/file.lua +70 -0
  364. data/vendor/lua/lib/lua/pl/func.lua +376 -0
  365. data/vendor/lua/lib/lua/pl/init.lua +68 -0
  366. data/vendor/lua/lib/lua/pl/input.lua +173 -0
  367. data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
  368. data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
  369. data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
  370. data/vendor/lua/lib/lua/pl/operator.lua +201 -0
  371. data/vendor/lua/lib/lua/pl/path.lua +398 -0
  372. data/vendor/lua/lib/lua/pl/permute.lua +63 -0
  373. data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
  374. data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
  375. data/vendor/lua/lib/lua/pl/seq.lua +551 -0
  376. data/vendor/lua/lib/lua/pl/sip.lua +344 -0
  377. data/vendor/lua/lib/lua/pl/strict.lua +70 -0
  378. data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
  379. data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
  380. data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
  381. data/vendor/lua/lib/lua/pl/template.lua +103 -0
  382. data/vendor/lua/lib/lua/pl/test.lua +135 -0
  383. data/vendor/lua/lib/lua/pl/text.lua +243 -0
  384. data/vendor/lua/lib/lua/pl/utils.lua +550 -0
  385. data/vendor/lua/lib/lua/pl/xml.lua +689 -0
  386. data/vendor/lua/lib/lua/profiler.dll +0 -0
  387. data/vendor/lua/lib/lua/re.lua +248 -0
  388. data/vendor/lua/lib/lua/rex_onig.dll +0 -0
  389. data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
  390. data/vendor/lua/lib/lua/rex_posix.dll +0 -0
  391. data/vendor/lua/lib/lua/rings.dll +0 -0
  392. data/vendor/lua/lib/lua/serialize.lua +193 -0
  393. data/vendor/lua/lib/lua/set.lua +149 -0
  394. data/vendor/lua/lib/lua/socket.lua +133 -0
  395. data/vendor/lua/lib/lua/socket/core.dll +0 -0
  396. data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
  397. data/vendor/lua/lib/lua/socket/http.lua +350 -0
  398. data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
  399. data/vendor/lua/lib/lua/socket/tp.lua +123 -0
  400. data/vendor/lua/lib/lua/socket/url.lua +297 -0
  401. data/vendor/lua/lib/lua/ssl.dll +0 -0
  402. data/vendor/lua/lib/lua/ssl.lua +93 -0
  403. data/vendor/lua/lib/lua/ssl/https.lua +138 -0
  404. data/vendor/lua/lib/lua/stable.lua +28 -0
  405. data/vendor/lua/lib/lua/std.lua +16 -0
  406. data/vendor/lua/lib/lua/strbuf.lua +32 -0
  407. data/vendor/lua/lib/lua/strict.lua +45 -0
  408. data/vendor/lua/lib/lua/string_ext.lua +274 -0
  409. data/vendor/lua/lib/lua/table_ext.lua +117 -0
  410. data/vendor/lua/lib/lua/tar.lua +262 -0
  411. data/vendor/lua/lib/lua/task.dll +0 -0
  412. data/vendor/lua/lib/lua/tree.lua +81 -0
  413. data/vendor/lua/lib/lua/unicode.dll +0 -0
  414. data/vendor/lua/lib/lua/verbose_require.lua +11 -0
  415. data/vendor/lua/lib/lua/vstruct.lua +86 -0
  416. data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
  417. data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
  418. data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
  419. data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
  420. data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
  421. data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
  422. data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
  423. data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
  424. data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
  425. data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
  426. data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
  427. data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
  428. data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
  429. data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
  430. data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
  431. data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
  432. data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
  433. data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
  434. data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
  435. data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
  436. data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
  437. data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
  438. data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
  439. data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
  440. data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
  441. data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
  442. data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
  443. data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
  444. data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
  445. data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
  446. data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
  447. data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
  448. data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
  449. data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
  450. data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
  451. data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
  452. data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
  453. data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
  454. data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
  455. data/vendor/lua/lib/lua/wx.dll +0 -0
  456. data/vendor/lua/lib/lua/xml.lua +75 -0
  457. data/vendor/lua/lib/lua/zip.dll +0 -0
  458. data/vendor/lua/lib/lua/zlib.dll +0 -0
  459. metadata +529 -0
@@ -0,0 +1,601 @@
1
+ -- Utility functions for dependencies
2
+
3
+ module ("dist.depends", package.seeall)
4
+
5
+ local cfg = require "dist.config"
6
+ local mf = require "dist.manifest"
7
+ local sys = require "dist.sys"
8
+ local const = require "dist.constraints"
9
+ local utils = require "dist.utils"
10
+ local package = require "dist.package"
11
+
12
+ -- Return all packages with specified names from manifest.
13
+ -- Names can also contain version constraint (e.g. 'copas>=1.2.3', 'saci-1.0' etc.).
14
+ function find_packages(package_names, manifest)
15
+ if type(package_names) == "string" then package_names = {package_names} end
16
+ manifest = manifest or mf.get_manifest()
17
+ assert(type(package_names) == "table", "depends.find_packages: Argument 'package_names' is not a table or string.")
18
+ assert(type(manifest) == "table", "depends.find_packages: Argument 'manifest' is not a table.")
19
+
20
+ local packages_found = {}
21
+ -- find matching packages in manifest
22
+ for _, pkg_to_find in pairs(package_names) do
23
+ local pkg_name, pkg_constraint = split_name_constraint(pkg_to_find)
24
+ pkg_name = utils.escape_magic(pkg_name):gsub("%%%*",".*")
25
+ for _, repo_pkg in pairs(manifest) do
26
+ if string.match(repo_pkg.name, "^" .. pkg_name .. "$") and (not pkg_constraint or satisfies_constraint(repo_pkg.version, pkg_constraint)) then
27
+ table.insert(packages_found, repo_pkg)
28
+ end
29
+ end
30
+ end
31
+ return packages_found
32
+ end
33
+
34
+ -- Return manifest consisting of packages installed in specified deploy_dir directory
35
+ function get_installed(deploy_dir)
36
+ deploy_dir = deploy_dir or cfg.root_dir
37
+ assert(type(deploy_dir) == "string", "depends.get_installed: Argument 'deploy_dir' is not a string.")
38
+ deploy_dir = sys.abs_path(deploy_dir)
39
+
40
+ local distinfos_path = sys.make_path(deploy_dir, cfg.distinfos_dir)
41
+ local manifest = {}
42
+
43
+ if not sys.is_dir(distinfos_path) then return {} end
44
+
45
+ -- from all directories of packages installed in deploy_dir
46
+ for dir in sys.get_directory(distinfos_path) do
47
+
48
+ if dir ~= "." and dir ~= ".." and sys.is_dir(sys.make_path(distinfos_path, dir)) then
49
+ local pkg_dist_dir = sys.make_path(distinfos_path, dir)
50
+
51
+ -- load the dist.info file
52
+ for file in sys.get_directory(pkg_dist_dir) do
53
+ local pkg_dist_file = sys.make_path(pkg_dist_dir, file)
54
+
55
+ if sys.is_file(pkg_dist_file) then
56
+ table.insert(manifest, mf.load_distinfo(pkg_dist_file))
57
+ end
58
+ end
59
+
60
+ end
61
+
62
+ end
63
+ return manifest
64
+ end
65
+
66
+ -- If 'pkg.selected' == true then returns 'selected' else 'installed'.
67
+ -- Used in error messages.
68
+ local function selected_or_installed(pkg)
69
+ assert(type(pkg) == "table", "depends.selected_or_installed: Argument 'pkg' is not a table.")
70
+ if pkg.selected == true then
71
+ return "selected"
72
+ else
73
+ return "installed"
74
+ end
75
+ end
76
+
77
+ -- Return whether the 'package_name' is installed according to the the manifest 'installed_pkgs'
78
+ -- If optional 'version_wanted' constraint is specified, then installed packages must
79
+ -- also satisfy specified version constraint.
80
+ -- If package is installed but doesn't satisfy version constraint, error message
81
+ -- is returned as the second value.
82
+ function is_installed(package_name, installed_pkgs, version_wanted)
83
+ assert(type(package_name) == "string", "depends.is_installed: Argument 'package_name' is not a string.")
84
+ assert(type(installed_pkgs) == "table", "depends.is_installed: Argument 'installed_pkgs' is not a table.")
85
+ assert(type(version_wanted) == "string" or type(version_wanted) == "nil", "depends.is_installed: Argument 'version_wanted' is not a string or nil.")
86
+
87
+ local pkg_is_installed, err = false, nil
88
+
89
+ for _, installed_pkg in pairs(installed_pkgs) do
90
+
91
+ -- check if package_name is in installed
92
+ if package_name == installed_pkg.name then
93
+
94
+ -- check if package is installed in satisfying version
95
+ if not version_wanted or satisfies_constraint(installed_pkg.version, version_wanted) then
96
+ pkg_is_installed = true
97
+ break
98
+ else
99
+ err = "Package '" .. package_name .. (version_wanted and " " .. version_wanted or "") .. "' needed, but " .. selected_or_installed(installed_pkg) .. " at version '" .. installed_pkg.version .. "'."
100
+ break
101
+ end
102
+ end
103
+
104
+ end
105
+ return pkg_is_installed, err
106
+ end
107
+
108
+ -- Check whether the package 'pkg' conflicts with 'installed_pkg' and return
109
+ -- false or error message.
110
+ local function packages_conflicts(pkg, installed_pkg, was_scm_version)
111
+ assert(type(pkg) == "table", "depends.packages_conflicts: Argument 'pkg' is not a table.")
112
+ assert(type(installed_pkg) == "table", "depends.packages_conflicts: Argument 'installed_pkg' is not a table.")
113
+ assert(type(was_scm_version) == "boolean", "depends.packages_conflicts: Argument 'was_scm_version' is not a boolean.")
114
+
115
+ -- check if pkg doesn't provide an already installed_pkg
116
+ if pkg.provides then
117
+ -- for all of pkg's provides
118
+ for _, provided_pkg in pairs(get_provides(pkg)) do
119
+ if provided_pkg.name == installed_pkg.name then
120
+ return "Package '" .. pkg_full_name(pkg.name, pkg.version, was_scm_version) .. "' provides '" .. pkg_full_name(provided_pkg.name, provided_pkg.version) .. "' but package '" .. pkg_full_name(installed_pkg.name, installed_pkg.version) .. "' is already " .. selected_or_installed(installed_pkg) .. "."
121
+ end
122
+ end
123
+ end
124
+
125
+ -- check for conflicts of package to install with installed package
126
+ if pkg.conflicts then
127
+ for _, conflict in pairs (pkg.conflicts) do
128
+ if conflict == installed_pkg.name then
129
+ return "Package '" .. pkg_full_name(pkg.name, pkg.version, was_scm_version) .. "' conflicts with already " .. selected_or_installed(installed_pkg) .. " package '" .. pkg_full_name(installed_pkg.name, installed_pkg.version) .. "'."
130
+ end
131
+ end
132
+ end
133
+
134
+ -- check for conflicts of installed package with package to install
135
+ if installed_pkg.conflicts then
136
+
137
+ -- direct conflicts with 'pkg'
138
+ for _, conflict in pairs (installed_pkg.conflicts) do
139
+ if conflict == pkg.name then
140
+ return "Already " .. selected_or_installed(installed_pkg) .. " package '" .. pkg_full_name(installed_pkg.name, installed_pkg.version) .. "' conflicts with package '" .. pkg_full_name(pkg.name, pkg.version, was_scm_version) .. "'."
141
+ end
142
+ end
143
+
144
+ -- conflicts with 'provides' of 'pkg' (packages provided by package to install)
145
+ if pkg.provides then
146
+ for _, conflict in pairs (installed_pkg.conflicts) do
147
+ -- for all of pkg's provides
148
+ for _, provided_pkg in pairs(get_provides(pkg)) do
149
+ if conflict == provided_pkg.name then
150
+ return "Already '" .. selected_or_installed(installed_pkg) .. " package '" .. pkg_full_name(installed_pkg.name, installed_pkg.version) .. "' conflicts with package '" .. pkg_full_name(provided_pkg.name, provided_pkg.version) .. "' provided by '" .. pkg_full_name(pkg.name, pkg.version, was_scm_version) .. "'."
151
+ end
152
+ end
153
+ end
154
+ end
155
+ end
156
+
157
+ -- no conflicts found
158
+ return false
159
+ end
160
+
161
+ -- Return all packages needed in order to install package 'pkg'
162
+ -- and with specified 'installed' packages in the system using 'manifest'.
163
+ -- 'pkg' can also contain version constraint (e.g. 'copas>=1.2.3', 'saci-1.0' etc.).
164
+ --
165
+ -- This function also downloads packages to get information about their dependencies.
166
+ -- Directory where the package was downloaded is stored in 'download_dir' attribute
167
+ -- of that package in the table of packages returned by this function.
168
+ --
169
+ -- When optional 'force_no_download' parameter is set to true, then information
170
+ -- about packages won't be downloaded during dependency resolving, assuming that
171
+ -- entries in the provided manifest are already complete.
172
+ --
173
+ -- When optional 'suppress_printing' parameter is set to true, then messages
174
+ -- for the user won't be printed during dependency resolving.
175
+ --
176
+ -- Optional argument 'deploy_dir' is used just as a temporary place to place
177
+ -- the downloaded packages into.
178
+ --
179
+ -- 'dependency_parents' is table of all packages encountered so far when resolving dependencies
180
+ -- and is used to detect and deal with circular dependencies. Leave it 'nil'
181
+ -- and it will do its job just fine :-).
182
+ --
183
+ -- 'tmp_installed' is internal table used in recursion and should be left 'nil' when
184
+ -- calling this function from other context. It is used for passing the changes
185
+ -- in installed packages between the recursive calls of this function.
186
+ --
187
+ -- TODO: refactor this spaghetti code!
188
+ local function get_packages_to_install(pkg, installed, manifest, force_no_download, suppress_printing, deploy_dir, dependency_parents, tmp_installed)
189
+ manifest = manifest or mf.get_manifest()
190
+ force_no_download = force_no_download or false
191
+ suppress_printing = suppress_printing or false
192
+ deploy_dir = deploy_dir or cfg.root_dir
193
+ dependency_parents = dependency_parents or {}
194
+
195
+ -- set helper table 'tmp_installed'
196
+ tmp_installed = tmp_installed or utils.deepcopy(installed)
197
+
198
+ assert(type(pkg) == "string", "depends.get_packages_to_install: Argument 'pkg' is not a string.")
199
+ assert(type(installed) == "table", "depends.get_packages_to_install: Argument 'installed' is not a table.")
200
+ assert(type(manifest) == "table", "depends.get_packages_to_install: Argument 'manifest' is not a table.")
201
+ assert(type(force_no_download) == "boolean", "depends.get_packages_to_install: Argument 'force_no_download' is not a boolean.")
202
+ assert(type(suppress_printing) == "boolean", "depends.get_packages_to_install: Argument 'suppress_printing' is not a boolean.")
203
+ assert(type(deploy_dir) == "string", "depends.get_packages_to_install: Argument 'deploy_dir' is not a string.")
204
+ assert(type(dependency_parents) == "table", "depends.get_packages_to_install: Argument 'dependency_parents' is not a table.")
205
+ assert(type(tmp_installed) == "table", "depends.get_packages_to_install: Argument 'tmp_installed' is not a table.")
206
+ deploy_dir = sys.abs_path(deploy_dir)
207
+
208
+ --[[ for future debugging:
209
+ print('resolving: '.. pkg)
210
+ print(' installed: ', utils.table_tostring(installed))
211
+ print(' tmp_installed: ', utils.table_tostring(tmp_installed))
212
+ --]]
213
+
214
+ -- check if package is already installed
215
+ local pkg_name, pkg_constraint = split_name_constraint(pkg)
216
+ local pkg_is_installed, err = is_installed(pkg_name, tmp_installed, pkg_constraint)
217
+ if pkg_is_installed then return {} end
218
+ if err then return nil, err end
219
+
220
+ -- table of packages needed to be installed (will be returned)
221
+ local to_install = {}
222
+
223
+ -- find out available versions of 'pkg'
224
+ if not force_no_download then
225
+ local versions, err = package.retrieve_versions(pkg, manifest)
226
+ if not versions then return nil, err end
227
+ for _, version in pairs(versions) do
228
+ table.insert(manifest, version)
229
+ end
230
+ end
231
+
232
+ -- find candidates & sort them
233
+ local candidates_to_install = find_packages(pkg, manifest)
234
+ if #candidates_to_install == 0 then
235
+ return nil, "No suitable candidate for package '" .. pkg .. "' found."
236
+ end
237
+ candidates_to_install = sort_by_versions(candidates_to_install)
238
+
239
+ for _, pkg in pairs(candidates_to_install) do
240
+
241
+ --[[ for future debugging:
242
+ print(' candidate: '.. pkg.name..'-'..pkg.version)
243
+ print(' installed: ', utils.table_tostring(installed))
244
+ print(' tmp_installed: ', utils.table_tostring(tmp_installed))
245
+ print(' to_install: ', utils.table_tostring(to_install))
246
+ print(' -is installed: ', is_installed(pkg.name, tmp_installed, pkg_constraint))
247
+ --]]
248
+
249
+ -- if there's an error from previous candidate, print the reason for trying another one
250
+ if not suppress_printing and err then print(" - trying another candidate due to: " .. err) end
251
+
252
+ -- clear the state from previous candidate
253
+ pkg_is_installed, err = false, nil
254
+
255
+ -- check whether this package has already been added to 'tmp_installed' by another of its candidates
256
+ pkg_is_installed, err = is_installed(pkg.name, tmp_installed, pkg_constraint)
257
+ if pkg_is_installed then break end
258
+
259
+ local was_scm_version = false
260
+ if pkg.version == "scm" then was_scm_version = true end
261
+
262
+ -- download info about the package
263
+ if not force_no_download then
264
+ local path_or_err
265
+ pkg, path_or_err = package.retrieve_pkg_info(pkg, deploy_dir)
266
+ if not pkg then
267
+ err = "Error when resolving dependencies: " .. path_or_err
268
+ else
269
+ -- set path to downloaded package - used to delete unused but downloaded
270
+ -- packages and also to install packages selected to install
271
+ pkg.download_dir = path_or_err
272
+ end
273
+ end
274
+
275
+ -- check arch & type
276
+ if not err then
277
+ if not (pkg.arch == "Universal" or pkg.arch == cfg.arch) or
278
+ not (pkg.type == "all" or pkg.type == "source" or pkg.type == cfg.type) then
279
+ err = "Package '" .. pkg_full_name(pkg.name, pkg.version) .. "' doesn't have required arch and type."
280
+ end
281
+ end
282
+
283
+ -- checks for conflicts with other installed (or previously selected) packages
284
+ if not err then
285
+ for _, installed_pkg in pairs(tmp_installed) do
286
+ err = packages_conflicts(pkg, installed_pkg, was_scm_version)
287
+ if err then break end
288
+ end
289
+ end
290
+
291
+ -- if pkg passed all of the above tests
292
+ if not err then
293
+
294
+ -- check if pkg's dependencies are satisfied
295
+ if pkg.depends then
296
+
297
+ -- insert pkg into the stack of circular dependencies detection
298
+ table.insert(dependency_parents, pkg.name)
299
+
300
+ -- collect all OS specific dependencies of pkg
301
+ for k, depend in pairs(pkg.depends) do
302
+
303
+ -- if 'depend' is a table of OS specific dependencies for
304
+ -- this arch, add them to the normal dependencies of pkg
305
+ if type(depend) == "table" then
306
+ if k == cfg.arch then
307
+ for _, os_specific_depend in pairs(depend) do
308
+ table.insert(pkg.depends, os_specific_depend)
309
+ end
310
+ end
311
+ end
312
+ end
313
+
314
+ -- for all dependencies of pkg
315
+ for _, depend in pairs(pkg.depends) do
316
+
317
+ -- skip tables of OS specific dependencies
318
+ if type(depend) ~= "table" then
319
+ local dep_name = split_name_constraint(depend)
320
+
321
+ -- detect circular dependencies using 'dependency_parents'
322
+ local is_circular_dependency = false
323
+ for _, parent in pairs(dependency_parents) do
324
+ if dep_name == parent then
325
+ is_circular_dependency = true
326
+ break
327
+ end
328
+ end
329
+
330
+ -- if circular dependencies not detected
331
+ if not is_circular_dependency then
332
+
333
+ -- recursively call this function on the candidates of this pkg's dependency
334
+ local depends_to_install, dep_err = get_packages_to_install(depend, installed, manifest, force_no_download, suppress_printing, deploy_dir, dependency_parents, tmp_installed)
335
+
336
+ -- if any suitable dependency packages were found, insert them to the 'to_install' table
337
+ if depends_to_install then
338
+ for _, depend_to_install in pairs(depends_to_install) do
339
+ table.insert(to_install, depend_to_install)
340
+ table.insert(tmp_installed, depend_to_install)
341
+ table.insert(installed, depend_to_install)
342
+ end
343
+ else
344
+ err = "Error getting dependency of '" .. pkg_full_name(pkg.name, pkg.version) .. "': " .. dep_err
345
+ break
346
+ end
347
+
348
+ -- if circular dependencies detected
349
+ else
350
+ err = "Error getting dependency of '" .. pkg_full_name(pkg.name, pkg.version) .. "': '" .. dep_name .. "' is a circular dependency."
351
+ break
352
+ end
353
+
354
+ end
355
+ end
356
+
357
+ -- remove last package from the stack of circular dependencies detection
358
+ table.remove(dependency_parents)
359
+ end
360
+
361
+ -- if no error occured
362
+ if not err then
363
+ -- add pkg and it's provides to the fake table of installed packages, with
364
+ -- property 'selected' set, indicating that the package isn't
365
+ -- really installed in the system, just selected to be installed (this is used e.g. in error messages)
366
+ pkg.selected = true
367
+ table.insert(tmp_installed, pkg)
368
+ if pkg.provides then
369
+ for _, provided_pkg in pairs(get_provides(pkg)) do
370
+ provided_pkg.selected = true
371
+ table.insert(tmp_installed, provided_pkg)
372
+ end
373
+ end
374
+ -- add pkg to the table of packages to install
375
+ table.insert(to_install, pkg)
376
+
377
+ -- if some error occured
378
+ else
379
+ -- delete the downloaded package
380
+ if pkg.download_dir and not cfg.debug then sys.delete(pkg.download_dir) end
381
+
382
+ -- set tables of 'packages to install' and 'installed packages' to their original state
383
+ to_install = {}
384
+ tmp_installed = utils.deepcopy(installed)
385
+
386
+ -- add provided packages to installed ones
387
+ for _, installed_pkg in pairs(tmp_installed) do
388
+ for _, pkg in pairs(get_provides(installed_pkg)) do
389
+ table.insert(tmp_installed, pkg)
390
+ end
391
+ end
392
+ end
393
+
394
+ -- if error occured
395
+ else
396
+ -- delete the downloaded package
397
+ if pkg and pkg.download_dir and not cfg.debug then sys.delete(pkg.download_dir) end
398
+
399
+ -- if pkg is already installed, skip checking its other candidates
400
+ if pkg_is_installed then break end
401
+ end
402
+ end
403
+
404
+ -- if package is not installed and no suitable candidates were found, return the last error
405
+ if #to_install == 0 and not pkg_is_installed then
406
+ return nil, err
407
+ else
408
+ return to_install
409
+ end
410
+ end
411
+
412
+ -- Resolve dependencies and return all packages needed in order to install
413
+ -- 'packages' into the system with already 'installed' packages, using 'manifest'.
414
+ --
415
+ -- When optional 'force_no_download' parameter is set to true, then information
416
+ -- about packages won't be downloaded during dependency resolving, assuming that
417
+ -- entries in manifest are complete.
418
+ --
419
+ -- When optional 'suppress_printing' parameter is set to true, then messages
420
+ -- for the user won't be printed during dependency resolving.
421
+ --
422
+ -- Optional argument 'deploy_dir' is used just as a temporary place to place
423
+ -- the downloaded packages into.
424
+ function get_depends(packages, installed, manifest, force_no_download, suppress_printing, deploy_dir)
425
+ if not packages then return {} end
426
+ manifest = manifest or mf.get_manifest()
427
+ force_no_download = force_no_download or false
428
+ suppress_printing = suppress_printing or false
429
+ deploy_dir = deploy_dir or cfg.root_dir
430
+ if type(packages) == "string" then packages = {packages} end
431
+
432
+ assert(type(packages) == "table", "depends.get_depends: Argument 'packages' is not a table or string.")
433
+ assert(type(installed) == "table", "depends.get_depends: Argument 'installed' is not a table.")
434
+ assert(type(manifest) == "table", "depends.get_depends: Argument 'manifest' is not a table.")
435
+ assert(type(force_no_download) == "boolean", "depends.get_depends: Argument 'force_no_download' is not a boolean.")
436
+ assert(type(suppress_printing) == "boolean", "depends.get_depends: Argument 'suppress_printing' is not a boolean.")
437
+ assert(type(deploy_dir) == "string", "depends.get_depends: Argument 'deploy_dir' is not a string.")
438
+ deploy_dir = sys.abs_path(deploy_dir)
439
+
440
+ local tmp_installed = utils.deepcopy(installed)
441
+
442
+ -- add provided packages to installed ones
443
+ for _, installed_pkg in pairs(tmp_installed) do
444
+ for _, pkg in pairs(get_provides(installed_pkg)) do
445
+ table.insert(tmp_installed, pkg)
446
+ end
447
+ end
448
+
449
+ local to_install = {}
450
+
451
+ -- get packages needed to to satisfy dependencies
452
+ for _, pkg in pairs(packages) do
453
+
454
+ local needed_to_install, err = get_packages_to_install(pkg, tmp_installed, manifest, force_no_download, suppress_printing, deploy_dir)
455
+
456
+ if needed_to_install then
457
+ for _, needed_pkg in pairs(needed_to_install) do
458
+ table.insert(to_install, needed_pkg)
459
+ table.insert(tmp_installed, needed_pkg)
460
+ -- add provides of needed_pkg to installed ones
461
+ for _, provided_pkg in pairs(get_provides(needed_pkg)) do
462
+ -- copy 'selected' property
463
+ provided_pkg.selected = needed_pkg.selected
464
+ table.insert(tmp_installed, provided_pkg)
465
+ end
466
+ end
467
+ else
468
+ -- delete already downloaded packages
469
+ for _, pkg in pairs(to_install) do
470
+ if pkg.download_dir and not cfg.debug then sys.delete(pkg.download_dir) end
471
+ end
472
+ return nil, "Cannot install package '" .. pkg .. "': ".. err
473
+ end
474
+ end
475
+
476
+ return to_install
477
+ end
478
+
479
+ -- Return table of packages provided by specified package (from it's 'provides' field)
480
+ function get_provides(package)
481
+ assert(type(package) == "table", "depends.get_provides: Argument 'package' is not a table.")
482
+ if not package.provides then return {} end
483
+
484
+ local provided = {}
485
+ for _, provided_name in pairs(package.provides) do
486
+ local pkg = {}
487
+ pkg.name, pkg.version = split_name_constraint(provided_name)
488
+ pkg.type = package.type
489
+ pkg.arch = package.arch
490
+ pkg.provided = package.name .. "-" .. package.version
491
+ table.insert(provided, pkg)
492
+ end
493
+ return provided
494
+ end
495
+
496
+ -- Return package name and version constraint from full package version constraint specification
497
+ -- E. g.:
498
+ -- for 'luaexpat-1.2.3' return: 'luaexpat' , '1.2.3'
499
+ -- for 'luajit >= 1.2' return: 'luajit' , '>=1.2'
500
+ function split_name_constraint(version_constraint)
501
+ assert(type(version_constraint) == "string", "depends.split_name_constraint: Argument 'version_constraint' is not a string.")
502
+
503
+ local split = version_constraint:find("[%s=~<>-]+%d") or version_constraint:find("[%s=~<>-]+scm")
504
+
505
+ if split then
506
+ return version_constraint:sub(1, split - 1), version_constraint:sub(split):gsub("[%s-]", "")
507
+ else
508
+ return version_constraint, nil
509
+ end
510
+ end
511
+
512
+ -- Return only packages that can be installed on the specified architecture and type
513
+ function filter_packages_by_arch_and_type(packages, req_arch, req_type)
514
+ assert(type(packages) == "table", "depends.filter_packages_by_arch_and_type: Argument 'packages' is not a table.")
515
+ assert(type(req_arch) == "string", "depends.filter_packages_by_arch_and_type: Argument 'req_arch' is not a string.")
516
+ assert(type(req_type) == "string", "depends.filter_packages_by_arch_and_type: Argument 'pkg_type' is not a string.")
517
+
518
+ return utils.filter(packages,
519
+ function (pkg)
520
+ return (pkg.arch == "Universal" or pkg.arch == req_arch) and
521
+ (pkg.type == "all" or pkg.type == "source" or pkg.type == req_type)
522
+ end)
523
+ end
524
+
525
+ -- Return only packages that contain one of the specified strings in their 'name-version'.
526
+ -- Case is ignored. If no strings are specified, return all the packages.
527
+ -- Argument 'search_in_desc' specifies if search also in description of packages.
528
+ function filter_packages_by_strings(packages, strings, search_in_desc)
529
+ if type(strings) == "string" then strings = {strings} end
530
+ assert(type(packages) == "table", "depends.filter_packages_by_strings: Argument 'packages' is not a table.")
531
+ assert(type(strings) == "table", "depends.filter_packages_by_strings: Argument 'strings' is not a string or table.")
532
+
533
+ if #strings ~= 0 then
534
+ return utils.filter(packages,
535
+ function (pkg)
536
+ for _,str in pairs(strings) do
537
+ local name = pkg.name .. "-" .. pkg.version
538
+ if search_in_desc then
539
+ name = name .. " " .. (pkg.desc or "")
540
+ end
541
+ if string.find(string.lower(name), string.lower(str), 1 ,true) ~= nil then return true end
542
+ end
543
+ end)
544
+ else
545
+ return packages
546
+ end
547
+ end
548
+
549
+
550
+ -- Return full package name and version string (e.g. 'luajit-2.0'). When version
551
+ -- is nil or '' then return only name (e.g. 'luajit') and when name is nil or ''
552
+ -- then return '<unknown>'. Optional 'was_scm_version' argument is a boolean,
553
+ -- stating whether the package was originally selected for installation as a 'scm' version.
554
+ function pkg_full_name(name, version, was_scm_version)
555
+ name = name or ""
556
+ version = version or ""
557
+ if type(version) == "number" then version = tostring(version) end
558
+
559
+ assert(type(name) == "string", "depends.pkg_full_name: Argument 'name' is not a string.")
560
+ assert(type(version) == "string", "depends.pkg_full_name: Argument 'version' is not a string.")
561
+
562
+ if was_scm_version then version = version .. " [scm version]" end
563
+
564
+ if name == "" then
565
+ return "<unknown>"
566
+ else
567
+ return name .. ((version ~= "") and "-" .. version or "")
568
+ end
569
+ end
570
+
571
+ -- Return table of packages, sorted descendingly by versions (newer ones are moved to the top).
572
+ function sort_by_versions(packages)
573
+ assert(type(packages) == "table", "depends.sort_by_versions: Argument 'packages' is not a table.")
574
+ return utils.sort(packages, function (a, b) return compare_versions(a.version, b.version) end)
575
+ end
576
+
577
+ -- Return table of packages, sorted alphabetically by name and then descendingly by version.
578
+ function sort_by_names(packages)
579
+ assert(type(packages) == "table", "depends.sort_by_names: Argument 'packages' is not a table.")
580
+ return utils.sort(packages, function (a, b)
581
+ if a.name == b.name then
582
+ return compare_versions(a.version, b.version)
583
+ else
584
+ return a.name < b.name
585
+ end
586
+ end)
587
+ end
588
+
589
+ -- Return if version satisfies the specified constraint
590
+ function satisfies_constraint(version, constraint)
591
+ assert(type(version) == "string", "depends.satisfies_constraint: Argument 'version' is not a string.")
592
+ assert(type(constraint) == "string", "depends.satisfies_constraint: Argument 'constraint' is not a string.")
593
+ return const.constraint_satisfied(version, constraint)
594
+ end
595
+
596
+ -- For package versions, return whether: 'version_a' > 'version_b'
597
+ function compare_versions(version_a, version_b)
598
+ assert(type(version_a) == "string", "depends.compare_versions: Argument 'version_a' is not a string.")
599
+ assert(type(version_b) == "string", "depends.compare_versions: Argument 'version_b' is not a string.")
600
+ return const.compareVersions(version_a, version_b)
601
+ end