solvit: removing a reverse dependency from package removal now checks for that package's dependencies instead of every package

This commit is contained in:
Ponali
2026-05-03 17:46:11 +02:00
parent 95b1c56d65
commit 8dda210eb3
+9 -6
View File
@@ -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()