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

Pierre Schmitz pierre at archlinux.de
Mon Jun 28 02:07:24 EDT 2010


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)

-- 
Pierre Schmitz, https://users.archlinux.de/~pierre


More information about the arch-dev-public mailing list