solvit: removing a reverse dependency from package removal now checks for that package's dependencies instead of every package
This commit is contained in:
+9
-6
@@ -211,7 +211,6 @@ local function startTransaction(dbpath)
|
|||||||
return packInfo[avs.serializePack(pack)]
|
return packInfo[avs.serializePack(pack)]
|
||||||
end
|
end
|
||||||
local function finalizeInstall(settings)
|
local function finalizeInstall(settings)
|
||||||
installIncomplete=false
|
|
||||||
-- find missing package information
|
-- find missing package information
|
||||||
local missing = {}
|
local missing = {}
|
||||||
for i=1,#ins do
|
for i=1,#ins do
|
||||||
@@ -223,6 +222,7 @@ local function startTransaction(dbpath)
|
|||||||
return false,missing
|
return false,missing
|
||||||
end
|
end
|
||||||
-- find dependencies
|
-- find dependencies
|
||||||
|
installIncomplete=false
|
||||||
local i=1
|
local i=1
|
||||||
while i<=#ins do
|
while i<=#ins do
|
||||||
local deps = getPackInfo(ins[i]).dependencies
|
local deps = getPackInfo(ins[i]).dependencies
|
||||||
@@ -380,14 +380,17 @@ local function startTransaction(dbpath)
|
|||||||
db.remove(dbpath,pack[1])
|
db.remove(dbpath,pack[1])
|
||||||
end
|
end
|
||||||
-- remove reverse dependencies
|
-- remove reverse dependencies
|
||||||
for _,rdep in ipairs(rem) do
|
for _,pack in ipairs(rem) do
|
||||||
for _,pack in db.list(dbpath) do
|
local pdat = getPackInfo(pack)
|
||||||
local dat = db.get(dbpath,pack)
|
if not pdat.dependencies then goto continue end
|
||||||
|
for _,dep in ipairs(pdat.dependencies) do
|
||||||
|
local dat = db.get(dbpath,dep)
|
||||||
if dat.reverseDependencies then
|
if dat.reverseDependencies then
|
||||||
removeFromArray(rdep[1],dat.reverseDependencies)
|
removeFromArray(pack[1],dat.reverseDependencies)
|
||||||
end
|
end
|
||||||
db.set(dbpath,pack,dat)
|
db.set(dbpath,dep,dat)
|
||||||
end
|
end
|
||||||
|
::continue::
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function transaction.store()
|
function transaction.store()
|
||||||
|
|||||||
Reference in New Issue
Block a user