[pacman-dev] [PATCH 2/2] makepkg: always keep sources symlinks

Dan McGee dpmcgee at gmail.com
Wed Aug 5 09:59:53 EDT 2009


On Wed, Aug 5, 2009 at 7:10 AM, Dan McGee<dpmcgee at gmail.com> wrote:
> On Wed, Aug 5, 2009 at 7:00 AM, Cedric Staniewski<cedric at gmx.ca> wrote:
>> This time a more tested patch...
>> Probably someone knows a possibility to quote the file name in the cmd
>> string so that the characters are recognized as quoting chars and not as
>> part of the filename without using eval.
>>
>>
>> >From 0aad0c6f6030806cea1804152afc0650d491b307 Mon Sep 17 00:00:00 2001
>> From: Cedric Staniewski <cedric at gmx.ca>
>> Date: Wed, 5 Aug 2009 12:43:03 +0200
>> Subject: [PATCH] makepkg: always keep sources symlinks
>>
>> Add -k (keep) option to the bunzip2/xz commands and make gunzip
>> decompressing to stdout, because it does not offer something like a
>> -k option.
>>
>> Additionally the selection of the decompression command for
>> gzip/bzip2/xz compressed files now also depends on the file suffix,
>> since the decompression programs rely on them when not using -c
>> option.
>>
>> Signed-off-by: Cedric Staniewski <cedric at gmx.ca>
>> ---
>>  scripts/makepkg.sh.in |   36 ++++++++++++++++++++++++------------
>>  1 files changed, 24 insertions(+), 12 deletions(-)
>>
>> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
>> index 56ad2c0..c7a6434 100644
>> --- a/scripts/makepkg.sh.in
>> +++ b/scripts/makepkg.sh.in
>> @@ -644,22 +644,34 @@ extract_sources() {
>>                local cmd=''
>>                case "$file_type" in
>>                        *application/x-tar*|*application/zip*|*application/x-zip*|*application/x-cpio*)
>> -                               cmd="bsdtar -x -f" ;;
>> -                       *application/x-gzip*)
>> -                               cmd="gunzip -d -f" ;;
>> -                       *application/x-bzip*)
>> -                               cmd="bunzip2 -f" ;;
>> -                       *application/x-xz*)
>> -                               cmd="xz -d -f" ;;
>> +                               cmd="bsdtar xf '$file'" ;;
>>                        *)
>> -                               # Don't know what to use to extract this file,
>> -                               # skip to the next file
>> -                               continue;;
>> +                               case "$file" in
>> +                                       *.gz|*.z|*.Z)
>> +                                               [[ "$file_type" = *application/x-gzip* ]] \
>> +                                                       && cmd="gunzip -cf '$file' > '${file%.*}'" \
>> +                                                       || continue
>> +                                               ;;
>> +                                       *.bz2|*.bz)
>> +                                               [[ "$file_type" = *application/x-bzip* ]] \
>> +                                                       && cmd="bunzip2 -fk '$file'" \
>> +                                                       || continue
>> +                                               ;;
>> +                                       *.xz)
>> +                                               [[ "$file_type" = *application/x-xz* ]] \
>> +                                                       && cmd="xz -dfk '$file'" \
>> +                                                       || continue
>> +                                               ;;
>
> This patch just makes me cry a little bit...its like taking a
> sledgehammer to kill a fly, unfortunately. All we wanted to do was
> keep a symlink around, and we've now regressed to using extensions,
> which we haven't done since pre 3.1.0.

(See below so it flows better for a better response on this)

> On a side note, if anyone can figure out how to annotate/blame an old
> version of a file that no longer exists (as it has been renamed),
> please let me know. git might be failing here:
>
> $ git blame scripts/makepkg.in e19d7da4~1
> fatal: cannot stat path 'scripts/makepkg.in': No such file or directory
>
> $ git annotate --follow "scripts/makepkg.sh.in" e19d7da4~1
> fatal: no such path scripts/makepkg.sh.in in e19d7da4~1

I found what I wanted with the following, thanks to the GIT ML:
$ git blame e19d7~1 -- scripts/makepkg.in

which leads to this commit:
$ git show 7ed7977e

which changed from extension-based to mime-type based to fix FS#6246,
http://bugs.archlinux.org/task/6246, so I'd rather not regress
something we fixed looooong ago.

-Dan


More information about the pacman-dev mailing list