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

Eric Bélanger snowmaniscool at gmail.com
Fri Nov 6 10:59:44 EST 2009


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.

>
>> 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