[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