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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +69 -0
- data/Rakefile +1 -0
- data/lib/rufus/lua/win.rb +18 -0
- data/lib/rufus/lua/win/version.rb +7 -0
- data/rufus-lua-win.gemspec +23 -0
- data/vendor/lua/bin/liblua.dll +0 -0
- data/vendor/lua/lib/lua/LuaXml.lua +119 -0
- data/vendor/lua/lib/lua/alien.lua +250 -0
- data/vendor/lua/lib/lua/alien/core.dll +0 -0
- data/vendor/lua/lib/lua/alien/struct.dll +0 -0
- data/vendor/lua/lib/lua/base.lua +536 -0
- data/vendor/lua/lib/lua/bin.lua +20 -0
- data/vendor/lua/lib/lua/bit.dll +0 -0
- data/vendor/lua/lib/lua/cdlua.dll +0 -0
- data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
- data/vendor/lua/lib/lua/cdluagl.dll +0 -0
- data/vendor/lua/lib/lua/cdluaim.dll +0 -0
- data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
- data/vendor/lua/lib/lua/copas.lua +543 -0
- data/vendor/lua/lib/lua/coxpcall.lua +57 -0
- data/vendor/lua/lib/lua/date.lua +745 -0
- data/vendor/lua/lib/lua/debug_ext.lua +84 -0
- data/vendor/lua/lib/lua/debug_init.lua +2 -0
- data/vendor/lua/lib/lua/des56.dll +0 -0
- data/vendor/lua/lib/lua/dist/config.lua +109 -0
- data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
- data/vendor/lua/lib/lua/dist/depends.lua +601 -0
- data/vendor/lua/lib/lua/dist/git.lua +307 -0
- data/vendor/lua/lib/lua/dist/init.lua +278 -0
- data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
- data/vendor/lua/lib/lua/dist/package.lua +583 -0
- data/vendor/lua/lib/lua/dist/sys.lua +367 -0
- data/vendor/lua/lib/lua/dist/utils.lua +130 -0
- data/vendor/lua/lib/lua/ex.dll +0 -0
- data/vendor/lua/lib/lua/fstable.lua +116 -0
- data/vendor/lua/lib/lua/getopt.lua +273 -0
- data/vendor/lua/lib/lua/git.lua +5 -0
- data/vendor/lua/lib/lua/git/core.dll +0 -0
- data/vendor/lua/lib/lua/git/objects.lua +121 -0
- data/vendor/lua/lib/lua/git/pack.lua +316 -0
- data/vendor/lua/lib/lua/git/protocol.lua +188 -0
- data/vendor/lua/lib/lua/git/repo.lua +283 -0
- data/vendor/lua/lib/lua/git/util.lua +233 -0
- data/vendor/lua/lib/lua/gzio.dll +0 -0
- data/vendor/lua/lib/lua/gzip.lua +81 -0
- data/vendor/lua/lib/lua/iconv.dll +0 -0
- data/vendor/lua/lib/lua/imlua.dll +0 -0
- data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
- data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
- data/vendor/lua/lib/lua/io_ext.lua +115 -0
- data/vendor/lua/lib/lua/iuplua.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
- data/vendor/lua/lib/lua/iupluacd.dll +0 -0
- data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
- data/vendor/lua/lib/lua/iupluagl.dll +0 -0
- data/vendor/lua/lib/lua/iupluaim.dll +0 -0
- data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
- data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
- data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
- data/vendor/lua/lib/lua/lanes.lua +591 -0
- data/vendor/lua/lib/lua/lanes/core.dll +0 -0
- data/vendor/lua/lib/lua/lcs.lua +55 -0
- data/vendor/lua/lib/lua/lemock.lua +659 -0
- data/vendor/lua/lib/lua/lfs.dll +0 -0
- data/vendor/lua/lib/lua/list.lua +375 -0
- data/vendor/lua/lib/lua/logging.lua +189 -0
- data/vendor/lua/lib/lua/logging/console.lua +22 -0
- data/vendor/lua/lib/lua/logging/email.lua +44 -0
- data/vendor/lua/lib/lua/logging/file.lua +55 -0
- data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
- data/vendor/lua/lib/lua/logging/socket.lua +35 -0
- data/vendor/lua/lib/lua/logging/sql.lua +64 -0
- data/vendor/lua/lib/lua/loop/base.lua +68 -0
- data/vendor/lua/lib/lua/loop/cached.lua +312 -0
- data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
- data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
- data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
- data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
- data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
- data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
- data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
- data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
- data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
- data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
- data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
- data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
- data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
- data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
- data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
- data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
- data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
- data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
- data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
- data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
- data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
- data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
- data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
- data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
- data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
- data/vendor/lua/lib/lua/loop/simple.lua +75 -0
- data/vendor/lua/lib/lua/loop/table.lua +71 -0
- data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
- data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
- data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
- data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
- data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
- data/vendor/lua/lib/lua/lpeg.dll +0 -0
- data/vendor/lua/lib/lua/ltn12.lua +292 -0
- data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
- data/vendor/lua/lib/lua/luacurl.dll +0 -0
- data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
- data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
- data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
- data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
- data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
- data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
- data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
- data/vendor/lua/lib/lua/luagl.dll +0 -0
- data/vendor/lua/lib/lua/luaglu.dll +0 -0
- data/vendor/lua/lib/lua/luaidl.lua +113 -0
- data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
- data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
- data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
- data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
- data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
- data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
- data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
- data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
- data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
- data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
- data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
- data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
- data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
- data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
- data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
- data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
- data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
- data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
- data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
- data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
- data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
- data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
- data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
- data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
- data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
- data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
- data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
- data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
- data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
- data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
- data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
- data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
- data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
- data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
- data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
- data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
- data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
- data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
- data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
- data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
- data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
- data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
- data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
- data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
- data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
- data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
- data/vendor/lua/lib/lua/luars232.dll +0 -0
- data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
- data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
- data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
- data/vendor/lua/lib/lua/luaunit.lua +601 -0
- data/vendor/lua/lib/lua/lxp.dll +0 -0
- data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
- data/vendor/lua/lib/lua/math_ext.lua +27 -0
- data/vendor/lua/lib/lua/mbox.lua +53 -0
- data/vendor/lua/lib/lua/md5.lua +19 -0
- data/vendor/lua/lib/lua/md5/core.dll +0 -0
- data/vendor/lua/lib/lua/metalua.lua +0 -0
- data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
- data/vendor/lua/lib/lua/metalua/base.lua +104 -0
- data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
- data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
- data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
- data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
- data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
- data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
- data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
- data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
- data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
- data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
- data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
- data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
- data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
- data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
- data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
- data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
- data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
- data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
- data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
- data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
- data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
- data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
- data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
- data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
- data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
- data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
- data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
- data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
- data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
- data/vendor/lua/lib/lua/mime.lua +87 -0
- data/vendor/lua/lib/lua/mime/core.dll +0 -0
- data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
- data/vendor/lua/lib/lua/modules.lua +16 -0
- data/vendor/lua/lib/lua/object.lua +56 -0
- data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
- data/vendor/lua/lib/lua/oil/arch.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
- data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
- data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
- data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
- data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
- data/vendor/lua/lib/lua/oil/assert.lua +87 -0
- data/vendor/lua/lib/lua/oil/builder.lua +45 -0
- data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
- data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
- data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
- data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/compat.lua +846 -0
- data/vendor/lua/lib/lua/oil/component.lua +1 -0
- data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
- data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
- data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
- data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
- data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
- data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
- data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
- data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
- data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
- data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
- data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
- data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
- data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
- data/vendor/lua/lib/lua/oil/oo.lua +1 -0
- data/vendor/lua/lib/lua/oil/port.lua +1 -0
- data/vendor/lua/lib/lua/oil/properties.lua +57 -0
- data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
- data/vendor/lua/lib/lua/package_ext.lua +15 -0
- data/vendor/lua/lib/lua/parser.lua +268 -0
- data/vendor/lua/lib/lua/pl/Date.lua +555 -0
- data/vendor/lua/lib/lua/pl/List.lua +613 -0
- data/vendor/lua/lib/lua/pl/Map.lua +113 -0
- data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
- data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
- data/vendor/lua/lib/lua/pl/Set.lua +153 -0
- data/vendor/lua/lib/lua/pl/app.lua +165 -0
- data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
- data/vendor/lua/lib/lua/pl/class.lua +180 -0
- data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
- data/vendor/lua/lib/lua/pl/config.lua +176 -0
- data/vendor/lua/lib/lua/pl/data.lua +606 -0
- data/vendor/lua/lib/lua/pl/dir.lua +475 -0
- data/vendor/lua/lib/lua/pl/file.lua +70 -0
- data/vendor/lua/lib/lua/pl/func.lua +376 -0
- data/vendor/lua/lib/lua/pl/init.lua +68 -0
- data/vendor/lua/lib/lua/pl/input.lua +173 -0
- data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
- data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
- data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
- data/vendor/lua/lib/lua/pl/operator.lua +201 -0
- data/vendor/lua/lib/lua/pl/path.lua +398 -0
- data/vendor/lua/lib/lua/pl/permute.lua +63 -0
- data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
- data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
- data/vendor/lua/lib/lua/pl/seq.lua +551 -0
- data/vendor/lua/lib/lua/pl/sip.lua +344 -0
- data/vendor/lua/lib/lua/pl/strict.lua +70 -0
- data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
- data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
- data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
- data/vendor/lua/lib/lua/pl/template.lua +103 -0
- data/vendor/lua/lib/lua/pl/test.lua +135 -0
- data/vendor/lua/lib/lua/pl/text.lua +243 -0
- data/vendor/lua/lib/lua/pl/utils.lua +550 -0
- data/vendor/lua/lib/lua/pl/xml.lua +689 -0
- data/vendor/lua/lib/lua/profiler.dll +0 -0
- data/vendor/lua/lib/lua/re.lua +248 -0
- data/vendor/lua/lib/lua/rex_onig.dll +0 -0
- data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
- data/vendor/lua/lib/lua/rex_posix.dll +0 -0
- data/vendor/lua/lib/lua/rings.dll +0 -0
- data/vendor/lua/lib/lua/serialize.lua +193 -0
- data/vendor/lua/lib/lua/set.lua +149 -0
- data/vendor/lua/lib/lua/socket.lua +133 -0
- data/vendor/lua/lib/lua/socket/core.dll +0 -0
- data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
- data/vendor/lua/lib/lua/socket/http.lua +350 -0
- data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
- data/vendor/lua/lib/lua/socket/tp.lua +123 -0
- data/vendor/lua/lib/lua/socket/url.lua +297 -0
- data/vendor/lua/lib/lua/ssl.dll +0 -0
- data/vendor/lua/lib/lua/ssl.lua +93 -0
- data/vendor/lua/lib/lua/ssl/https.lua +138 -0
- data/vendor/lua/lib/lua/stable.lua +28 -0
- data/vendor/lua/lib/lua/std.lua +16 -0
- data/vendor/lua/lib/lua/strbuf.lua +32 -0
- data/vendor/lua/lib/lua/strict.lua +45 -0
- data/vendor/lua/lib/lua/string_ext.lua +274 -0
- data/vendor/lua/lib/lua/table_ext.lua +117 -0
- data/vendor/lua/lib/lua/tar.lua +262 -0
- data/vendor/lua/lib/lua/task.dll +0 -0
- data/vendor/lua/lib/lua/tree.lua +81 -0
- data/vendor/lua/lib/lua/unicode.dll +0 -0
- data/vendor/lua/lib/lua/verbose_require.lua +11 -0
- data/vendor/lua/lib/lua/vstruct.lua +86 -0
- data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
- data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
- data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
- data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
- data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
- data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
- data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
- data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
- data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
- data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
- data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
- data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
- data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
- data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
- data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
- data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
- data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
- data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
- data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
- data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
- data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
- data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
- data/vendor/lua/lib/lua/wx.dll +0 -0
- data/vendor/lua/lib/lua/xml.lua +75 -0
- data/vendor/lua/lib/lua/zip.dll +0 -0
- data/vendor/lua/lib/lua/zlib.dll +0 -0
- 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
|