modules/admin-full: display raw opkg output, the error codes are useless with recent...
authorJo-Philipp Wich <jow@openwrt.org>
Thu, 23 Jun 2011 10:14:26 +0000 (10:14 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Thu, 23 Jun 2011 10:14:26 +0000 (10:14 +0000)
modules/admin-full/luasrc/controller/admin/system.lua
modules/admin-full/luasrc/view/admin_system/packages.htm

index 69ef6b7aa07beb7d2ef3c2aea2a7f15915582b44..dd78f1e8c6ae94d4ea129d1354425e01566e65a6 100644 (file)
@@ -47,6 +47,9 @@ function action_packages()
        local changes = false
        local install = { }
        local remove  = { }
+       local stdout  = { "" }
+       local stderr  = { "" }
+       local out, err
 
        -- Search query
        local query = luci.http.formvalue("query")
@@ -65,19 +68,25 @@ function action_packages()
 
        -- Do install
        if ninst then
-               _, install[ninst] = ipkg.install(ninst)
+               install[ninst], out, err = ipkg.install(ninst)
+               stdout[#stdout+1] = out
+               stderr[#stderr+1] = err
                changes = true
        end
 
        if uinst then
-               _, install[uinst] = ipkg.install(uinst)
+               install[uinst], out, err = ipkg.install(uinst)
+               stdout[#stdout+1] = out
+               stderr[#stderr+1] = err
                changes = true
        end
 
        -- Remove packets
        local rem = submit and luci.http.formvalue("remove")
        if rem then
-               _, remove[rem] = ipkg.remove(rem)
+               remove[rem], out, err = ipkg.remove(rem)
+               stdout[#stdout+1] = out
+               stderr[#stderr+1] = err
                changes = true
        end
 
@@ -85,19 +94,29 @@ function action_packages()
        -- Update all packets
        local update = luci.http.formvalue("update")
        if update then
-               _, update = ipkg.update()
+               update, out, err = ipkg.update()
+               stdout[#stdout+1] = out
+               stderr[#stderr+1] = err
        end
 
 
        -- Upgrade all packets
        local upgrade = luci.http.formvalue("upgrade")
        if upgrade then
-               _, upgrade = ipkg.upgrade()
+               upgrade, out, err = ipkg.upgrade()
+               stdout[#stdout+1] = out
+               stderr[#stderr+1] = err
        end
 
 
        luci.template.render("admin_system/packages", {
-               query=query, install=install, remove=remove, update=update, upgrade=upgrade
+               query   = query,
+               install = install,
+               remove  = remove,
+               update  = update,
+               upgrade = upgrade,
+               stdout  = table.concat(stdout, ""),
+               stderr  = table.concat(stderr, "")
        })
 
        -- Remove index cache
index 51c50500a88598779b5ddb0e5a31f3fe4b41bcb0..524eb4d8b4cf16bc36ecf5bf4a296af0802525ff 100644 (file)
@@ -24,11 +24,6 @@ function rowstyle()
        return (rowcnt % 2) + 1
 end
 
-function opkg_error(code)
-       code = bit.rshift(tonumber(code), 8)
-       return translate("OPKG error code %i" % code)
-end
-
 local fstat = fs.statvfs(opkg.overlay_root())
 local space_total = fstat and fstat.blocks or 0
 local space_free  = fstat and fstat.bfree  or 0
@@ -80,18 +75,8 @@ local filter = { }
 
                        <% if (install and next(install)) or (remove and next(remove)) or update or upgrade then %>
                                <br /><hr /><br />
-                               <% if update then %>
-                                       <%:Package lists updated%>: <% if update == 0 then %><span class="ok"><%:OK%></span><% else %><span class="error"><%:Error%> (<%=opkg_error(update)%>)</span><% end %><br />
-                               <% end %>
-                               <% if upgrade then%>
-                                       <%:Upgrade installed packages%>: <% if upgrade == 0 then %><span class="ok"><%:OK%></span><% else %><span class="error"><%:Error%> (<%=opkg_error(upgrade)%>)</span><% end %><br />
-                               <% end %>
-                               <% if install then for k,v in pairs(install) do %>
-                                       <%:Install%> '<%=k%>': <% if v == 0 then %><span class="ok"><%:OK%></span><% else %><span class="error"><%:Error%> (<%=opkg_error(v)%>)</span><% end %><br />
-                               <% end end %>
-                               <% if remove then for k,v in pairs(remove) do %>
-                                       <%:Remove%> '<%=k%>': <% if v == 0 then %><span class="ok"><%:OK%></span><% else %><span class="error"><%:Error%> (<%=opkg_error(v)%>)</span><% end %><br />
-                               <% end end %>
+                               <% if #stdout > 0 then %><pre><%=pcdata(stdout)%></pre><% end %>
+                               <% if #stderr > 0 then %><pre class="error"><%=pcdata(stderr)%></pre><% end %>
                        <% end %>
                </fieldset>
                <br />