diff --git a/base b/base index fd34cb21c..4ecca10c5 160000 --- a/base +++ b/base @@ -1 +1 @@ -Subproject commit fd34cb21ce85583cce77f463d60607cd537d83b8 +Subproject commit 4ecca10c53ef54550957fe6b1b72d4a2c5d8c863 diff --git a/frontend/device/kindle/device.lua b/frontend/device/kindle/device.lua index 4bc3588d8..cc8b0025e 100644 --- a/frontend/device/kindle/device.lua +++ b/frontend/device/kindle/device.lua @@ -476,7 +476,7 @@ end function Kindle:openInputDevices() -- Auto-detect input devices (via FBInk's fbink_input_scan) - local ok, FBInkInput = pcall(ffi.load, "fbink_input") + local ok, FBInkInput = pcall(ffi.loadlib, "fbink_input") if not ok then -- NOP fallback for the testsuite... FBInkInput = { fbink_input_scan = function() end } diff --git a/frontend/device/kobo/device.lua b/frontend/device/kobo/device.lua index 54bf016ea..937a71d00 100644 --- a/frontend/device/kobo/device.lua +++ b/frontend/device/kobo/device.lua @@ -862,7 +862,7 @@ function Kobo:init() self:initEventAdjustHooks() -- Auto-detect input devices (via FBInk's fbink_input_scan) - local ok, FBInkInput = pcall(ffi.load, "fbink_input") + local ok, FBInkInput = pcall(ffi.loadlib, "fbink_input") if not ok then -- NOP fallback for the testsuite... FBInkInput = { fbink_input_scan = NOP } diff --git a/frontend/ui/message/filemessagequeue.lua b/frontend/ui/message/filemessagequeue.lua index 136db9a3f..99e616806 100644 --- a/frontend/ui/message/filemessagequeue.lua +++ b/frontend/ui/message/filemessagequeue.lua @@ -2,8 +2,8 @@ local ffi = require("ffi") local logger = require("logger") local MessageQueue = require("ui/message/messagequeue") local _ = require("ffi/zeromq_h") -local czmq = ffi.load("libs/libczmq.so.4") -local filemq = ffi.load("libs/libfmq.so.1") +local czmq = ffi.loadlib("czmq", "4") +local filemq = ffi.loadlib("fmq", "1") local FileMessageQueue = MessageQueue:extend{ client = nil, diff --git a/frontend/ui/message/messagequeue.lua b/frontend/ui/message/messagequeue.lua index e8bf3fd15..591d1d86f 100644 --- a/frontend/ui/message/messagequeue.lua +++ b/frontend/ui/message/messagequeue.lua @@ -3,7 +3,7 @@ local Event = require("ui/event") local logger = require("logger") local _ = require("ffi/zeromq_h") -local czmq = ffi.load("libs/libczmq.so.4") +local czmq = ffi.loadlib("czmq", "4") local MessageQueue = {} diff --git a/frontend/ui/message/streammessagequeue.lua b/frontend/ui/message/streammessagequeue.lua index 2d0b15ddc..1a27aa347 100644 --- a/frontend/ui/message/streammessagequeue.lua +++ b/frontend/ui/message/streammessagequeue.lua @@ -3,8 +3,8 @@ local logger = require("logger") local MessageQueue = require("ui/message/messagequeue") local _ = require("ffi/zeromq_h") -local zmq = ffi.load("libs/libzmq.so.5") -local czmq = ffi.load("libs/libczmq.so.4") +local zmq = ffi.loadlib("zmq", "5") +local czmq = ffi.loadlib("czmq", "4") local C = ffi.C local StreamMessageQueue = MessageQueue:extend{ diff --git a/frontend/ui/message/streammessagequeueserver.lua b/frontend/ui/message/streammessagequeueserver.lua index e5496aa47..c83e45044 100644 --- a/frontend/ui/message/streammessagequeueserver.lua +++ b/frontend/ui/message/streammessagequeueserver.lua @@ -3,8 +3,8 @@ local logger = require("logger") local MessageQueue = require("ui/message/messagequeue") local _ = require("ffi/zeromq_h") -local zmq = ffi.load("libs/libzmq.so.5") -local czmq = ffi.load("libs/libczmq.so.4") +local zmq = ffi.loadlib("zmq", "5") +local czmq = ffi.loadlib("czmq", "4") local C = ffi.C local StreamMessageQueueServer = MessageQueue:extend{ diff --git a/platform/android/llapp_main.lua b/platform/android/llapp_main.lua index c71e6ce58..0c1569f31 100644 --- a/platform/android/llapp_main.lua +++ b/platform/android/llapp_main.lua @@ -1,6 +1,9 @@ local android = require("android") android.dl.library_path = android.dl.library_path .. ":" .. android.dir .. "/libs" +-- setup Lua paths, and ffi helper / override +require("setupkoenv") + local lfs = require("libs/libkoreader-lfs") local ffi = require("ffi") local dummy = require("ffi/posix_h") diff --git a/platform/android/luajit-launcher b/platform/android/luajit-launcher index e8229d5c6..9b91b9548 160000 --- a/platform/android/luajit-launcher +++ b/platform/android/luajit-launcher @@ -1 +1 @@ -Subproject commit e8229d5c63154040e24a502bdd37e9c2c226dfab +Subproject commit 9b91b9548e151d2cac79b1fd2a613e22dfd9d62f diff --git a/plugins/externalkeyboard.koplugin/main.lua b/plugins/externalkeyboard.koplugin/main.lua index ca7eabce3..fa42aa322 100644 --- a/plugins/externalkeyboard.koplugin/main.lua +++ b/plugins/externalkeyboard.koplugin/main.lua @@ -291,7 +291,7 @@ end) local function findKeyboards() local keyboards = {} - local FBInkInput = ffi.load("fbink_input") + local FBInkInput = ffi.loadlib("fbink_input") local dev_count = ffi.new("size_t[1]") local devices = FBInkInput.fbink_input_scan(C.INPUT_KEYBOARD, 0, 0, dev_count) if devices ~= nil then @@ -312,7 +312,7 @@ end local function checkKeyboard(path) local keyboard - local FBInkInput = ffi.load("fbink_input") + local FBInkInput = ffi.loadlib("fbink_input") local dev = FBInkInput.fbink_input_check(path, C.INPUT_KEYBOARD, 0, 0) if dev ~= nil then if dev.matched then diff --git a/setupkoenv.lua b/setupkoenv.lua index 2bd1aad9b..ff1feb8c7 100644 --- a/setupkoenv.lua +++ b/setupkoenv.lua @@ -1,32 +1,9 @@ --- set search path for 'require()' +-- Set search path for `require()`. package.path = "common/?.lua;frontend/?.lua;" .. package.path package.cpath = "common/?.so;common/?.dll;/usr/lib/lua/?.so;" .. package.cpath - --- set search path for 'ffi.load()' -local ffi = require("ffi") -require("ffi/posix_h") -local C = ffi.C -if ffi.os == "Windows" then - C._putenv("PATH=libs;common;") -end -local ffi_load = ffi.load --- patch ffi.load for thirdparty luajit libraries -ffi.load = function(lib, global) - io.write("ffi.load: ", lib, global and " (RTLD_GLOBAL)\n" or "\n") - local loaded, re = pcall(ffi_load, lib) - if loaded then return re end - - local lib_path = package.searchpath(lib, "./lib?.so;./libs/lib?.so;./libs/lib?.so.1") - - if not lib_path then - io.write("ffi.load (warning): ", re, "\n") - error("Not able to load dynamic library: " .. lib) - else - io.write("ffi.load (assisted searchpath): ", lib_path, "\n") - return ffi_load(lib_path, global) - end -end +-- Setup `ffi.load` override and 'loadlib' helper. +require("ffi/loadlib")