[pacman-dev] [PATCH] makepkg: fix check for previously built packages with package splitting
Marc - A. Dahlhaus
mad at wol.de
Thu Jul 2 00:55:34 EDT 2009
Allan McRae schrieb:
> Dan McGee wrote:
>> On Wed, Jul 1, 2009 at 8:54 PM, Allan McRae<allan at archlinux.org> wrote:
>>
>>> Dan McGee wrote:
>>>
>>>> On Wed, Jul 1, 2009 at 2:36 AM, Allan McRae<allan at archlinux.org>
>>>> wrote:
>>>>
>>>>
>>>>> Checks if some or all packages are built before
>>>>> overwriting/installing.
>>>>> Adds two new translation strings
>>>>>
>>>>> Signed-off-by: Allan McRae <allan at archlinux.org>
>>>>> ---
>>>>> scripts/makepkg.sh.in | 41
>>>>> ++++++++++++++++++++++++++++++++---------
>>>>> 1 files changed, 32 insertions(+), 9 deletions(-)
>>>>>
>>>>> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
>>>>> index 2bb7eb9..61ae037 100644
>>>>> --- a/scripts/makepkg.sh.in
>>>>> +++ b/scripts/makepkg.sh.in
>>>>> @@ -1646,15 +1646,38 @@ if [ "${#pkgname[@]}" -gt "1" ]; then
>>>>> SPLITPKG=1
>>>>> fi
>>>>>
>>>>> -if [ -f
>>>>> "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" \
>>>>> - -a "$FORCE" -eq 0 -a "$SOURCEONLY" -eq 0 -a "$NOBUILD" -eq 0 ];
>>>>> then
>>>>> - if [ "$INSTALL" -eq 1 ]; then
>>>>> - warning "$(gettext "A package has already been built,
>>>>> installing existing package...")"
>>>>> - install_package
>>>>> - exit $?
>>>>> - else
>>>>> - error "$(gettext "A package has already been
>>>>> built. (use
>>>>> -f to overwrite)")"
>>>>> - exit 1
>>>>> +if [ "$SPLITPKG" -eq 0 ]; then
>>>>> + if [ -f
>>>>> "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" \
>>>>> + -a "$FORCE" -eq 0 -a "$SOURCEONLY" -eq 0 -a
>>>>> "$NOBUILD" -eq 0 ]; then
>>>>> + if [ "$INSTALL" -eq 1 ]; then
>>>>> + warning "$(gettext "A package has already
>>>>> been
>>>>> built, installing existing package...")"
>>>>> + install_package
>>>>> + exit $?
>>>>> + else
>>>>> + error "$(gettext "A package has already been
>>>>> built. (use -f to overwrite)")"
>>>>> + exit 1
>>>>> + fi
>>>>> + fi
>>>>> +else
>>>>> + local allpkgbuilt=1
>>>>> + local somepkgbuilt=0
>>>>>
>>>>>
>>>> Declared local which doesn't make sense outside of a bash function.
>>>> You probably want to just leave them as plain variables here and add
>>>> an "unset" at the end of the outer else/fi block.
>>>>
>>>>
>>>>
>>> Crap, I removed the local and added the unset on the version of
>>> makepkg-git
>>> running on my system but not here... Declaring local outside a
>>> function in
>>> bash does not actually work at all.
>>>
>>>>> + for pkg in ${pkgname[@]}; do
>>>>> + if [ -f
>>>>> "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" ]; then
>>>>>
>>>>>
>>>> $pkgver/$pkgrel can't be overridden in subpackages, correct? Otherwise
>>>> this line will not work right.
>>>>
>>>>
>>> Correct.
>>>
>>>>
>>>>> + somepkgbuilt=1
>>>>> + else
>>>>> + allpkgbuilt=0
>>>>> + fi
>>>>> + done
>>>>> + if [ -f "$FORCE" -eq 0 -a "$SOURCEONLY" -eq 0 -a
>>>>> "$NOBUILD" -eq 0
>>>>> ]; then
>>>>> + if [ "$INSTALL" -eq 1 -a "$allpkgbuilt" -eq 1 ]; then
>>>>> + warning "$(gettext "The package group has
>>>>> already
>>>>> been built, installing existing packages...")"
>>>>> + install_package
>>>>> + exit $?
>>>>> + fi
>>>>> + if [ "$somepkgbuilt" -eq 1 ]; then
>>>>> + error "$(gettext "The package group has
>>>>> already
>>>>> been (partially) built. (use -f to overwrite)")"
>>>>>
>>>>>
>>>> Awkward English text, trying to think of something better...I'd at
>>>> least drop the () around partially, maybe something like:
>>>> "Part of the package group has already been built. (use -f to
>>>> overwrite)"
>>>>
>>>>
>>> The problem is it could be all of the package group, or just part of
>>> it. I
>>> found this whole patch awkward...
>>>
>>
>> You have somepkgbuilt and allpkgbuilt; do a different message for
>> each case?
>>
>
> Do we even want to warn when the package is partially built? Then the
> user is clearly trying to get a complete set of split packages.
Is there a way to rebuild only a subset of split packages?
Marc
More information about the pacman-dev
mailing list