Sergey Ponomarev <stok...@gmail.com> [2018-11-29 17:20:07]: Hi,
> I'm working on porting openwrt utils like UCI and UHTTPD to Ubuntu and trying > to create a PPA. > During creation of a debian package for libubox it's build failed with: > dh_install: Cannot find (any matches for) > "/usr/lib/x86_64-linux-gnu/lua/5.1/uloop.so" (tried in ., debian/tmp) > After investigation it turned out that LUAPATH variable was evaluated as > /usr/local/lib/lua/5.1 while correct path is > /usr/lib/x86_64-linux-gnu/lua/5.1. That's wrong, see bellow. > The LUAPATH is evaluated by the command: > $ lua -e "for k in string.gmatch(package.cpath .. \";\", > \"([^;]+)/..so;\") do if k:sub(1,1) == \"/\" then print(k) break end end" > So it looks for array package.cpath and gets a first line which starts with / > (this is why k:sub(1,1) == \"/\"). > To see all pathes let's change the command a little bit: > $ lua -e "for k in string.gmatch(package.cpath .. \";\", > \"([^;]+)/..so;\") do print(k) end" > . > /usr/local/lib/lua/5.1 > /usr/lib/x86_64-linux-gnu/lua/5.1 > /usr/lib/lua/5.1 All 4 paths are valid, Lua would search for dynamic loadable libraries in those paths. > So on Ubuntu 18.10 and maybe in other distros the LUAPATH variable will > receive the /usr/local/lib/lua/5.1 as first path. > To fix that all what we need to do is just to get path which starts with not > just / but with /usr/lib/ i.e. > $ lua -e "for k in string.gmatch(package.cpath .. \";\", > \"([^;]+)/..so;\") do if k:sub(1,9) == \"/usr/lib/\" then print(k) break end > end" > So this parch is intended to fix that. No, this is not a fix, it's a hack for Ubuntu. You're probably breaking half of the world where you've stuff usually installed in /usr/local and other locations, like BSDs (and maybe OSX?) for example: ynezz@meh:~$ head -1 /etc/motd OpenBSD 6.4 (GENERIC) #349: Thu Oct 11 13:25:13 MDT 2018 ynezz@meh:~$ lua51 -e "for k in string.gmatch(package.cpath .. \";\", \"([^;]+)/..so;\") do if k:sub(1,1) == \"/\" then print(k) break end end" /usr/local/lib/lua/5.1 ynezz@meh:~$ lua51 -e "for k in string.gmatch(package.cpath .. \";\", \"([^;]+)/..so;\") do if k:sub(1,9) == \"/usr/lib/\" then print(k) break end end" -- ynezz _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel