[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