[pacman-dev] [PATCH 4/4] makepkg: Fixed sourceball creation of split packages

Eric Bélanger snowmaniscool at gmail.com
Fri Nov 6 11:24:19 EST 2009


On Fri, Nov 6, 2009 at 10:59 AM, Eric Bélanger <snowmaniscool at gmail.com> wrote:
> On Fri, Nov 6, 2009 at 10:36 AM, Allan McRae <allan at archlinux.org> wrote:
>> Eric Bélanger wrote:
>>>
>>> In some case, the install script of split packages was not included in the
>>> sourceballs. This was due because split packages can specify their install
>>> script in the package functions.  They also can use several install scripts.
>>>
>>
>> Please add newlines to the commit message to keep them ~80 characters wide.
>
> OK.  I'll try to remember next time.
>
>>
>> Note that this will need done for changelogs too as they are now handled
>> like install files.
>
> ChangeLog are not  included in sourceball   even for non split
> package: $changelog doesn't get defined.  This will need to be fixed.
> We can  test if there is a ChangeLog file in $startdir and if so we
> include it. I could make a patch.

Forget about that. As Cedric mentionned earlier and Xavier explained
on IRC, ChangeLog will be handled like install files. I just got
confused for a moment.

>
>>
>>> Signed-off-by: Eric Bélanger <snowmaniscool at gmail.com>
>>> ---
>>>  scripts/makepkg.sh.in |   25 ++++++++++++++++++-------
>>>  1 files changed, 18 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
>>> index 8fc7c82..b77cc68 100644
>>> --- a/scripts/makepkg.sh.in
>>> +++ b/scripts/makepkg.sh.in
>>> @@ -1060,14 +1060,25 @@ create_srcpackage() {
>>>        msg2 "$(gettext "Adding %s...")" "$BUILDSCRIPT"
>>>        ln -s "${BUILDFILE}" "${srclinks}/${pkgbase}/${BUILDSCRIPT}"
>>>  -       if [ -n "$install" ]; then
>>> -               if [ -f $install ]; then
>>> -                       msg2 "$(gettext "Adding install script...")"
>>> -                       ln -s "${startdir}/$install"
>>> "${srclinks}/${pkgbase}/"
>>> -               else
>>> -                       error "$(gettext "Install scriptlet (%s) does not
>>> exist.")" "$install"
>>> +       local install_files
>>> +       install_files=$(grep "install=" "$BUILDSCRIPT")
>>> +       for pkg in ${pkgname[@]}; do
>>> +               install_files+=' '
>>> +               install_files+=$(echo $install_files |sed
>>> "s/\$pkgname/$pkg/"|sed "s/\${pkgname}/$pkg/")
>>> +               install_files=$(eval echo $install_files |tr '[:blank:]'
>>> '\n'|sort |uniq)
>>> +       done
>>
>> This is too inclusive.  If I have one package with an install file
>> $pkgname.install, then it will add an install file $pkg.install for every
>> $pkg in $pkgname.  Some of these may not exist which will lead to trouble
>> below when the files presence is tested for.
>
> I copied this from makechrootpkg.  I just tested it when a package in
> a split package doesn't use the install script and it works.
>
>>
>> I do not know how to fix that issue... Two potential options are:
>> 1) add install/changelog files to the source array
>> 2) change the split PKGBUILD format to allow easier evaluation of variables
>> within split packages.
>> Both have their drawbacks.
>>
>>> +
>>> +       for f in $install_files; do
>>> +               install="${f#"install="}"
>>> +               if [[ -n "$install" ]]; then
>>> +                       if [[ -f $install ]]; then
>>> +                               msg2 "$(gettext "Adding install
>>> script...")"
>>> +                               ln -s "${startdir}/$install"
>>> "${srclinks}/${pkgbase}/"
>>> +                       else
>>> +                               error "$(gettext "Install scriptlet (%s)
>>> does not exist.")" "$install"
>>> +                       fi
>>>                fi
>>> -       fi
>>> +       done
>>>          if [ -n "$changelog" ]; then
>>>                if [ -f "$changelog" ]; then
>>
>>
>>
>


More information about the pacman-dev mailing list