
On 11/11/2010 09:39 PM, Peter Hercek wrote:
On 11/11/2010 08:21 PM, Peter Simons wrote:
Hi Peter,
Hmm, what we would need is so that when haskell-pandoc is being built it's PKGFILE is updated so that it requires haskell-http 4000.0.9 exactly. Then an attempt to uninstall haskell-hp-http later would require an uninstallation of haskell-pandoc too.
fortunately, Pacman does that already:
| # pacman -R haskell-http | checking dependencies... | error: failed to prepare transaction (could not satisfy dependencies) | :: haskell-pandoc: requires haskell-http>=4000.0.5
It's not possible to remove a package that another installed package depends on.
It's a different story, though, when a prerequisite is updated. Suppose that pandoc has been installed. Now, an update of haskell-http shows up an AUR. Pacman will perform that update, and it will break pandoc in the process. Will pacman do the update (without requiring haskell-pandoc removal) even if haskell-pandoc had specified haskell-http=4000.0.9 as dependency?
I would expect pacman to require haskell-pandoc removal in such a case but I did not test it.
That is what we want. If something (Y) was built against a given version of X then Y must be there if and only if the right X is there. Would be great if pacman can ensure this for us. Well, this is needed only for haskell libraries though.
Answering my own question. I did the test to check whether pacman tracks dependencies correctly even when exact versions are specified. The result is good. Pacman does it. So fixing dependencies at pkgbuild time would be a way to enforce consistent set of packages on user machines. If we would do this and provided the users use pacman to install/uninstall then they cannot break their set of haskell packages. Lets say package pacTestB depends on exact version 1.0-1 of package pacTestA. Then pacman does not allow removal nor update of pacTestA without removal (or update) of pacTestB: 16:59 tm=0 st=0 peter@phnm ~/abs/test 854> pacman -Qs pacTest local/pacTestA 1.0-1 Test of pacman verstion tracking in dependencies. local/pacTestB 1.0-1 Test of pacman verstion tracking in dependencies. 16:59 tm=0 st=0 peter@phnm ~/abs/test 855> pacman -Qi pacTestB |grep Depends Depends On : pacTestA=1.0-1 16:59 tm=0 st=0 peter@phnm ~/abs/test 856> sudo pacman -R pacTestA Password: checking dependencies... :: pacTestB: requires pacTestA=1.0-1 error: failed to prepare transaction (could not satisfy dependencies) 16:59 tm=1 st=0 peter@phnm ~/abs/test 857> sudo pacman -U a1/pacTestA-1.0-2-x86_64.pkg.tar.xz resolving dependencies... looking for inter-conflicts... :: pacTestB: requires pacTestA=1.0-1 error: failed to prepare transaction (could not satisfy dependencies) 17:00 tm=0 st=0 peter@phnm ~/abs/test 858>