[SOLVED] New feature: localrepo

I’ve followed the steps described here

for release level 3.9.1 and ended up with an updater error:

user configuration:

root@turris:/usr/share/updater/localrepo$ cat /etc/updater/conf.d/user.lua 
--[[
A place for user definitions.

Repository "name" "URI" { ca = "file:///etc/ssl/ca.pem", pubkey = "file:///etc/repo.pubkey" }
Install "pkgname" "other"
]]
Install("custom", {repository = "localrepo-user"})

Both ‘local add’ commands working fine (at least without any error message)

local repo root directory after that:

root@turris:/usr/share/updater/localrepo$ ls -la /usr/share/updater/localrepo/
drwxr-xr-x    1 root     root            34 Jan 16 08:51 .
drwxr-xr-x    1 root     root           156 Jan 16 08:51 ..
-rw-r--r--    1 root     root           116 Jan 16 08:51 localrepo.lua
drwxr-xr-x    1 root     root           154 Jan 16 08:51 user

local user repo:

root@turris:/usr/share/updater/localrepo$ ls -la /usr/share/updater/localrepo/user/
drwxr-xr-x    1 root     root           154 Jan 16 08:51 .
drwxr-xr-x    1 root     root            34 Jan 16 08:51 ..
-rw-r--r--    1 root     root           655 Jan 16 08:51 Packages.gz
-rw-r--r--    1 root     root         10691 Jan 16 08:51 adblock_3.4.3-1.ipk
-rw-r--r--    1 root     root          7912 Jan 16 08:51 luci-app-adblock_git-18.011.23874-43867a8-1.ipk

Whenever I start updater.sh -e DBG, I receive the following error output:

[...]
DEBUG:requests.lua:440 (func):Running script file:////etc/updater/conf.d/opkg-auto.lua
DEBUG:requests.lua:366 (submit):Request install of mc
DEBUG:requests.lua:366 (submit):Request install of nano
DEBUG:requests.lua:440 (func):Running script file:////etc/updater/conf.d/opkg.lua
DEBUG:requests.lua:440 (func):Running script file:////etc/updater/conf.d/localrepo.lua
DEBUG:requests.lua:440 (func):Running script file:///usr/share/updater/localrepo/localrepo.lua
DEBUG:requests.lua:440 (func):Running script file:////etc/updater/conf.d/example.lua
DEBUG:requests.lua:440 (func):Running script file:////etc/updater/conf.d/user.lua
DEBUG:requests.lua:366 (submit):Request install of custom
DEBUG:postprocess.lua:47 (get_repos):Getting repos
DEBUG:postprocess.lua:111 (cback):Received repository index turris/https://repo.turris.cz/omnia/packages/base/Packages.gz
DEBUG:postprocess.lua:118 (cback):Index turris/https://repo.turris.cz/omnia/packages/base/Packages.gz is compressed, decompressing
DEBUG:src/lib/interpreter.c:317 (lua_run_generic):Util command: gzip -dc 
DEBUG:postprocess.lua:111 (cback):Received repository index turris/https://repo.turris.cz/omnia/packages/routing/Packages.gz
DEBUG:postprocess.lua:118 (cback):Index turris/https://repo.turris.cz/omnia/packages/routing/Packages.gz is compressed, decompressing
DEBUG:src/lib/interpreter.c:317 (lua_run_generic):Util command: gzip -dc 
DEBUG:postprocess.lua:111 (cback):Received repository index turris/https://repo.turris.cz/omnia/packages/php/Packages.gz
DEBUG:postprocess.lua:118 (cback):Index turris/https://repo.turris.cz/omnia/packages/php/Packages.gz is compressed, decompressing
DEBUG:src/lib/interpreter.c:317 (lua_run_generic):Util command: gzip -dc 
DEBUG:postprocess.lua:111 (cback):Received repository index turris/https://repo.turris.cz/omnia/packages/turrispackages/Packages.gz
DEBUG:postprocess.lua:118 (cback):Index turris/https://repo.turris.cz/omnia/packages/turrispackages/Packages.gz is compressed, decompressing
DEBUG:src/lib/interpreter.c:317 (lua_run_generic):Util command: gzip -dc 
DEBUG:postprocess.lua:111 (cback):Received repository index turris/https://repo.turris.cz/omnia/packages/lucics/Packages.gz
DEBUG:postprocess.lua:118 (cback):Index turris/https://repo.turris.cz/omnia/packages/lucics/Packages.gz is compressed, decompressing
DEBUG:src/lib/interpreter.c:317 (lua_run_generic):Util command: gzip -dc 
DEBUG:postprocess.lua:111 (cback):Received repository index turris/https://repo.turris.cz/omnia/packages/hardware/Packages.gz
DEBUG:postprocess.lua:118 (cback):Index turris/https://repo.turris.cz/omnia/packages/hardware/Packages.gz is compressed, decompressing
DEBUG:src/lib/interpreter.c:317 (lua_run_generic):Util command: gzip -dc 
DEBUG:postprocess.lua:111 (cback):Received repository index turris/https://repo.turris.cz/omnia/packages/packages/Packages.gz
DEBUG:postprocess.lua:118 (cback):Index turris/https://repo.turris.cz/omnia/packages/packages/Packages.gz is compressed, decompressing
DEBUG:src/lib/interpreter.c:317 (lua_run_generic):Util command: gzip -dc 
DEBUG:postprocess.lua:111 (cback):Received repository index turris/https://repo.turris.cz/omnia/packages/telephony/Packages.gz
DEBUG:postprocess.lua:118 (cback):Index turris/https://repo.turris.cz/omnia/packages/telephony/Packages.gz is compressed, decompressing
DEBUG:src/lib/interpreter.c:317 (lua_run_generic):Util command: gzip -dc 
DEBUG:postprocess.lua:111 (cback):Received repository index turris/https://repo.turris.cz/omnia/packages/printing/Packages.gz
DEBUG:postprocess.lua:118 (cback):Index turris/https://repo.turris.cz/omnia/packages/printing/Packages.gz is compressed, decompressing
DEBUG:src/lib/interpreter.c:317 (lua_run_generic):Util command: gzip -dc 
DEBUG:postprocess.lua:111 (cback):Received repository index turris/https://repo.turris.cz/omnia/packages/management/Packages.gz
DEBUG:postprocess.lua:118 (cback):Index turris/https://repo.turris.cz/omnia/packages/management/Packages.gz is compressed, decompressing
DEBUG:src/lib/interpreter.c:317 (lua_run_generic):Util command: gzip -dc 
DEBUG:postprocess.lua:111 (cback):Received repository index localrepo-user/file:///usr/share/updater/localrepo/user/Packages.gz
DEBUG:postprocess.lua:118 (cback):Index localrepo-user/file:///usr/share/updater/localrepo/user/Packages.gz is compressed, decompressing
DEBUG:src/lib/interpreter.c:317 (lua_run_generic):Util command: gzip -dc 
DEBUG:postprocess.lua:103 (Globals):Decompression of localrepo-user/file:///usr/share/updater/localrepo/user/Packages.gz done
DEBUG:postprocess.lua:86 (parse):Parsing index localrepo-user/file:///usr/share/updater/localrepo/user/Packages.gz
DEBUG:postprocess.lua:103 (Globals):Decompression of turris/https://repo.turris.cz/omnia/packages/printing/Packages.gz done
DEBUG:postprocess.lua:86 (parse):Parsing index turris/https://repo.turris.cz/omnia/packages/printing/Packages.gz
DEBUG:postprocess.lua:103 (Globals):Decompression of turris/https://repo.turris.cz/omnia/packages/hardware/Packages.gz done
DEBUG:postprocess.lua:86 (parse):Parsing index turris/https://repo.turris.cz/omnia/packages/hardware/Packages.gz
DEBUG:postprocess.lua:103 (Globals):Decompression of turris/https://repo.turris.cz/omnia/packages/management/Packages.gz done
DEBUG:postprocess.lua:86 (parse):Parsing index turris/https://repo.turris.cz/omnia/packages/management/Packages.gz
DEBUG:postprocess.lua:103 (Globals):Decompression of turris/https://repo.turris.cz/omnia/packages/php/Packages.gz done
DEBUG:postprocess.lua:86 (parse):Parsing index turris/https://repo.turris.cz/omnia/packages/php/Packages.gz
DEBUG:postprocess.lua:103 (Globals):Decompression of turris/https://repo.turris.cz/omnia/packages/routing/Packages.gz done
DEBUG:postprocess.lua:86 (parse):Parsing index turris/https://repo.turris.cz/omnia/packages/routing/Packages.gz
DEBUG:postprocess.lua:103 (Globals):Decompression of turris/https://repo.turris.cz/omnia/packages/telephony/Packages.gz done
DEBUG:postprocess.lua:86 (parse):Parsing index turris/https://repo.turris.cz/omnia/packages/telephony/Packages.gz
DEBUG:postprocess.lua:103 (Globals):Decompression of turris/https://repo.turris.cz/omnia/packages/turrispackages/Packages.gz done
DEBUG:postprocess.lua:86 (parse):Parsing index turris/https://repo.turris.cz/omnia/packages/turrispackages/Packages.gz
DEBUG:postprocess.lua:103 (Globals):Decompression of turris/https://repo.turris.cz/omnia/packages/lucics/Packages.gz done
DEBUG:postprocess.lua:86 (parse):Parsing index turris/https://repo.turris.cz/omnia/packages/lucics/Packages.gz
DEBUG:postprocess.lua:103 (Globals):Decompression of turris/https://repo.turris.cz/omnia/packages/base/Packages.gz done
DEBUG:postprocess.lua:86 (parse):Parsing index turris/https://repo.turris.cz/omnia/packages/base/Packages.gz
DEBUG:postprocess.lua:103 (Globals):Decompression of turris/https://repo.turris.cz/omnia/packages/packages/Packages.gz done
DEBUG:postprocess.lua:86 (parse):Parsing index turris/https://repo.turris.cz/omnia/packages/packages/Packages.gz
DEBUG:postprocess.lua:386 (pkg_aggregate):Aggregating packages together
line not found
line not found
line not found
line not found
ERROR:src/pkgupdate/main.c:249 (main):
[string "planner"]:48: bad argument #1 to 'pairs' (table expected, got string)
DEBUG:src/lib/locks.c:81 (lua_lock_release):Released lock at //var/lock/opkg.lock
Working on message: 1516089286-23738
Working on message: 1516089956-24590
There is no message to send.

@cynerd is this a known error?

Edit: Trace output of the error:

TRACE:src/lib/interpreter.c:105 (interpreter_error_result):
Stack Traceback
===============
(1) Lua function '?' at line 64 of chunk '"logging"]'
	Local variables:
	 err = string: "[string \"planner\"]:48: bad argument #1 to 'pairs' (table expected, got string)"
	 err2string = Lua function '?' (defined at line 45 of chunk "logging"])
	 msg = string: "\
[string \"planner\"]:48: bad argument #1 to 'pairs' (table expected, got string)"
	 (*temporary) = table: 0x2009760  {msg:
[string "planner"]:48: bad argument #1 to 'pairs' (table expected, got string) (more...)}
(2)  C function 'function: 0x671fa0'
(3) upvalue C function 'pairs'
(4) Lua global 'candidates_choose' at line 48 of chunk '"planner"]'
	Local variables:
	 candidates = table: 0x12b8f00  {}
	 pkg_name = string: "custom"
	 version = nil
	 repository = string: "localrepo-user"
	 repos = table: 0x20094c0  {}
(5) Lua global 'sat_dep' at line 178 of chunk '"planner"]'
	Local variables:
	 state = table: 0x1ec90c0  {pkgs:table: 0x6462f0, pkg2sat:table: 0x1ec9200, sat:userdata: 0x1ec8b88 (more...)}
	 pkg = table: 0xd9a2c0  {name:custom, tp:package, final:table: 0x17376e0}
	 version = nil
	 repository = string: "localrepo-user"
	 name = string: "custom"
	 group_var = number: 2263
	 var = number: 2264
(6) Lua upvalue 'sat_build' at line 269 of chunk '"planner"]'
	Local variables:
	 sat = userdata: 0x1ec8b88
	 pkgs = table: 0x6462f0  {kmod-video-gspca-vc032x:table: 0x12b9980, iptables-mod-clusterip:table: 0xf84c90 (more...)}
	 requests = table: 0x654fc0  {1:table: 0xd3afa0, 2:table: 0xd3b230, 3:table: 0xd12000, 4:table: 0xd121d0 (more...)}
	 state = table: 0x1ec90c0  {pkgs:table: 0x6462f0, pkg2sat:table: 0x1ec9200, sat:userdata: 0x1ec8b88 (more...)}
	 (for generator) = C function: 0xb6c036d0
	 (for state) = table: 0x654fc0  {1:table: 0xd3afa0, 2:table: 0xd3b230, 3:table: 0xd12000, 4:table: 0xd121d0 (more...)}
	 (for control) = number: 339
	 _ = number: 339
	 req = table: 0xd9a320  {package:table: 0xd9a2c0, priority:50, tp:install, repository:localrepo-user (more...)}
	 req_var = number: 2262
(7) Lua function '?' at line 493 of chunk '"planner"]'
	Local variables:
	 pkgs = table: 0x6462f0  {kmod-video-gspca-vc032x:table: 0x12b9980, iptables-mod-clusterip:table: 0xf84c90 (more...)}
	 requests = table: 0x654fc0  {1:table: 0xd3afa0, 2:table: 0xd3b230, 3:table: 0xd12000, 4:table: 0xd121d0 (more...)}
	 sat = userdata: 0x1ec8b88
(8) tail call
	Local variables:
	 (*temporary) = C function: 0x671fa0
(9) Lua function '?' at line 67 of chunk '"updater"]'
	Local variables:
	 entrypoint = string: "internal:entry_lua"

ERROR:src/pkgupdate/main.c:249 (main):
[string "planner"]:48: bad argument #1 to 'pairs' (table expected, got string)