rufus-lua-win 5.1.5

Sign up to get free protection for your applications and to get access to all the features.
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