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