[pacman-dev] [PATCH] makepkg: improve removal of installed dependencies

Allan McRae allan at archlinux.org
Thu Dec 10 00:40:07 EST 2009


Cedric Staniewski wrote:
> On 12/03/2009 03:33 PM, Allan McRae wrote:
>> Compare a list of packages on the system before and after dependency resolution
>> in order to get a complete list of packages to remove.  This allows makepkg to
>> remove packages installed due to provides.
>>
>> Bail in cases where packages that were on the system originally have been
>> removed as there is a risk of breaking the system when removing the new
>> packages
>>
>> Fixes FS#15144
>>
>> Signed-off-by: Allan McRae <allan at archlinux.org>
>> ---
> 
> I have not tested the patch yet, so just some comments on the code for now.
> 

Thanks for the comments.  I have pushed the updated patch on my working 
branch: 
http://projects.archlinux.org/users/allan/pacman.git/commit/?h=working&id=ffc7b0dc

<snip>

 >
 > You could use comm here. The advantage would be that it do not pull in
 > a new dependency as it is in coreutils too and you do not need grep to
 > get the unique lines.
 >
 > if [[ -n $(printf "%s\n" ${original_pkglist[@]} \
 > 	| comm -23 - <(printf "%s\n" ${current_pkglist[@]})) ]]
 >

I went for:
   if [[ -n $(comm -23 <(printf "%s\n" "${original_pkglist[@]}") \
                       <(printf "%s\n" "${current_pkglist[@]}")) ]]; then

The only slight annoyance was when using comm the output of pacman -Qq 
needed sorted as pacman outputs in a very slightly different 
alphabetical order to what comm expects and "--nocheck-order" is not 
portable to BSD/OSX.

Allan


More information about the pacman-dev mailing list