[pacman-dev] [PATCH] makepkg: Place packages symlinks in build dir when DESTDIR is used
Allan McRae
allan at archlinux.org
Fri Nov 6 08:59:03 EST 2009
Eric Bélanger wrote:
> On Wed, Nov 4, 2009 at 2:37 AM, Eric Bélanger <snowmaniscool at gmail.com> wrote:
>> On Wed, Nov 4, 2009 at 1:45 AM, Allan McRae <allan at archlinux.org> wrote:
>>> Eric Bélanger wrote:
>>>>
>>>> Here's the latest patch. I hope everything is correct.
>>>>
>>>> BTW, do you want me to continue sending patches as attachment too? I
>>>> see that 'git send-email' doesn't so I guess you can grab the inline
>>>> patch or get it directly from git. Is that correct?
>>>>
>>> The way I handle this is to just send them directly with git send-email
>>> using the "In reply to" value to keep the thread... um... threaded. Any
>>> comments about the patch and what you have changed to fix things can go
>>> under the "---" after the sign-off. Of course, you can inline them as you
>>> have and push them to a git repo somewhere and we can just pull from there.
>> OK. I'll do that. I was inlining them manually to keep everything in
>> the same thread.
>>
>>> Also, can you insert newlines into you commit message to keep them at about
>>> 80 characters per line.
>>>
>>>> Signed-off-by: Eric Bélanger <snowmaniscool at gmail.com>
>>>> ---
>>>> scripts/makepkg.sh.in | 26 +++++++++++++++++++++-----
>>>> 1 files changed, 21 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
>>>> index 92b0454..aaf576b 100644
>>>> --- a/scripts/makepkg.sh.in
>>>> +++ b/scripts/makepkg.sh.in
>>>> @@ -138,11 +138,17 @@ clean_up() {
>>>> if [ -n "$pkgbase" ]; then
>>>> # Can't do this unless the BUILDSCRIPT has been
>>>> sourced.
>>>> rm -f
>>>> "${pkgbase}-${pkgver}-${pkgrel}-${CARCH}-build.log"*
>>>> + [[ "$PKGDEST" != "${startdir}" ]] \
>>>> + && rm -f
>>>> "${pkgbase}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}"
>>>> if [ "$PKGFUNC" -eq 1 ]; then
>>>> rm -f
>>>> "${pkgbase}-${pkgver}-${pkgrel}-${CARCH}-package.log"*
>>>> + [[ "$PKGDEST" != "${startdir}" ]] \
>>>> + && rm -f
>>>> "${pkgbase}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}"
>>>> elif [ "$SPLITPKG" -eq 1 ]; then
>>>> for pkg in ${pkgname[@]}; do
>>>> rm -f
>>>> "${pkg}-${pkgver}-${pkgrel}-${CARCH}-package.log"*
>>>> + [[ "$PKGDEST" != "${startdir}" ]]
>>>> \
>>>> + && rm -f
>>>> "${pkg}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}"
>>>> done
>>>> fi
>>>> fi
>>> I am not happy with this way of cleaning up the symlinks to packages. If
>>> the package is not a split package, then the package name will be
>>> $pkgname-... and not $pkgbase (although, they are likely the same thing).
>> I was following (maybe too closely) the log files removal as template
>> here. I'll change it to pkgname.
>>
>>> I am also not sure what the second clean-up (in the "$PKGFUNC -eq 1" test)
>>> is doing that has not already by the one above it.
>> Yeah, it probably can be removed.
>>
>>> However, thinking about this more, we do not remove old packages when using
>>> --clean so why remove symlinks to old packages. Only when package symlinks
>>> are pointing to packages that no longer exist in PKGDEST have we made a mess
>>> that needs cleaned up. So how about something like:
>>>
>>> for pkg in ${pkgname[@]}; do
>>> for file in ${pkg}-*-*-${CARCH}${PKGEXT}; do
>>> if [[ -h $file & ! -e $file ]]; then
>>> rm -f $file
>>> fi
>>> done
>>> fi
>>>
>> Sure. I'll use this instead. I don't use the --clean option so I am
>> indifferent. I'll send a new patch tomorrow.
>>
>> Eric
>>
>>> Everything else in the patch is fine.
>>>
>>> Allan
>>>
>>>
>>>
>
> Here's the new patch. I struggled getting git to work so hopefully
> it's OK. BTW, the 'git send-email' --in-reply-to option asks for an
> identifier. I can't seem to find it in the patches or email headers in
> gmail.
>
>
>
> Signed-off-by: Eric Bélanger <snowmaniscool at gmail.com>
> ---
Pushed to my working branch. I added a comment above the clean up of
symlinks just to document what was happening.
Allan
More information about the pacman-dev
mailing list