On 28/06/10 16:07, Pierre Schmitz wrote:
On Sun, 27 Jun 2010 21:08:19 -0400, Eric Bélanger
<[email protected]>  wrote:
Signed-off-by: Eric Bélanger<[email protected]>
---
  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 ${pkgna...@]}; 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

Reply via email to