FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > ArchLinux > ArchLinux Pacman Development

 
 
LinkBack Thread Tools
 
Old 07-17-2012, 03:53 AM
Allan McRae
 
Default Do not remove symlink to directory if an installed package use it

If a packge has a directory (e.g. /lib -> usr/lib), do not allow
it to be removed if any other package is trying to install a file
into that path (e.g. /lib/foo). This is because the local database
can become invalidated if the symlink is removed after then package
with file /lib/foo is installed (sync702.py). If the symlink is
removed before the file is installed (sync701.py), the upgrade is
actually a success, but we can not guarantee the ordering so both
cases should fail.

Signed-off-by: Allan McRae <allan@archlinux.org>
---
test/pacman/tests/sync701.py | 22 ++++++++++++++++++++++
test/pacman/tests/sync702.py | 22 ++++++++++++++++++++++
2 files changed, 44 insertions(+)
create mode 100644 test/pacman/tests/sync701.py
create mode 100644 test/pacman/tests/sync702.py

diff --git a/test/pacman/tests/sync701.py b/test/pacman/tests/sync701.py
new file mode 100644
index 0000000..201f602
--- /dev/null
+++ b/test/pacman/tests/sync701.py
@@ -0,0 +1,22 @@
+self.description = "do not remove directory symlink if incoming package has file in its path (order 1)"
+
+lp = pmpkg("pkg1")
+lp.files = ["usr/lib/foo",
+ "lib -> usr/lib"]
+self.addpkg2db("local", lp)
+
+p1 = pmpkg("pkg1", "1.0-2")
+p1.files = ["usr/lib/foo"]
+self.addpkg2db("sync", p1)
+
+p2 = pmpkg("pkg2")
+p2.files = ["lib/bar"]
+self.addpkg2db("sync", p2)
+
+self.args = "-S pkg1 pkg2"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_VERSION=pkg1|1.0-1")
+self.addrule("!PKG_EXIST=pkg2")
+
+self.expectfailure = True
diff --git a/test/pacman/tests/sync702.py b/test/pacman/tests/sync702.py
new file mode 100644
index 0000000..ee4eef9
--- /dev/null
+++ b/test/pacman/tests/sync702.py
@@ -0,0 +1,22 @@
+self.description = "do not remove directory symlink if incoming package has file in its path (order 2)"
+
+lp = pmpkg("pkg2")
+lp.files = ["usr/lib/foo",
+ "lib -> usr/lib"]
+self.addpkg2db("local", lp)
+
+p1 = pmpkg("pkg1")
+p1.files = ["lib/bar"]
+self.addpkg2db("sync", p1)
+
+p2 = pmpkg("pkg2", "1.0-2")
+p2.files = ["usr/lib/foo"]
+self.addpkg2db("sync", p2)
+
+self.args = "-S pkg1 pkg2"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_VERSION=pkg2|1.0-1")
+self.addrule("!PKG_EXIST=pkg1")
+
+self.expectfailure = True
--
1.7.11.2
 

Thread Tools




All times are GMT. The time now is 06:58 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org