[arch-dev-public] [PATCH] [makechrootpkg] Fixed changelog support to work with makepkg 3.4

Allan McRae allan at archlinux.org
Mon Jun 28 02:18:14 EDT 2010


On 28/06/10 16:07, Pierre Schmitz wrote:
> On Sun, 27 Jun 2010 21:08:19 -0400, Eric Bélanger
> <snowmaniscool at gmail.com>  wrote:
>> Signed-off-by: Eric Bélanger<snowmaniscool at gmail.com>
>> ---
>>   makechrootpkg |   16 +++++++++++++---
>>   1 files changed, 13 insertions(+), 3 deletions(-)
>>
>> diff --git a/makechrootpkg b/makechrootpkg
>> index 830a8af..01cb3a9 100755
>> --- a/makechrootpkg
>> +++ b/makechrootpkg
>> @@ -175,9 +175,19 @@ for f in $install_files;do
>>   	fi
>>   done
>>
>> -if [ -f 'ChangeLog' ]; then
>> -	cp ChangeLog "$copydir/build/"
>> -fi
>> +changelog_files=$(grep 'changelog=' PKGBUILD)
>> +for pkg in ${pkgname[@]}; do
>> +	changelog_files+=' '
>> +	changelog_files+=$(echo $changelog_files |sed
>> "s/\$pkgname/$pkg/"|sed "s/\${pkgname}/$pkg/")
>> +	changelog_files=$(eval echo $changelog_files |tr '[:blank:]'
>> '\n'|sort |uniq)
>> +done
>> +
>> +for f in $changelog_files;do
>> +	changelog="${f#"changelog="}"
>> +	if [ "$changelog" != "" -a -f "$changelog" ]; then
>> +		cp "$changelog" "$copydir/build/"
>> +	fi
>> +done
>>
>>   chown -R nobody "$copydir/build"
>>   chown -R nobody "$copydir/srcdest"
>
> I will apply this for now as we handle the install files the same way.
> In future we should come up with a better solution though. It's quite
> easy to write a PKGBUILD where this method will fail. The propper way is
> to source the PKGBUILD and use the evaluated $changelog variable.
>
> A problem are the package functions; I don't see a way to call them
> without executing the make install or whatever commands. (I'll better
> open a new thread about this problem)
>

You can probably follow makepkg's handling in the source package 
creation.  See makepkg lines 1110-1122.

Allan


More information about the arch-dev-public mailing list