[arch-haskell] Re: [extra] haskell-parallel
Peter Hercek
phercek at gmail.com
Sat Nov 13 11:05:13 EST 2010
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 at 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 at phnm ~/abs/test
855> pacman -Qi pacTestB |grep Depends
Depends On : pacTestA=1.0-1
16:59 tm=0 st=0 peter at 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 at 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 at phnm ~/abs/test
858>
More information about the arch-haskell
mailing list