On Sun, Feb 20, 2011 at 08:54:28PM +1000, Allan McRae wrote: > On 20/02/11 20:35, Allan McRae wrote: > >On 20/02/11 20:19, Magnus Therning wrote: > >>On Sun, Feb 20, 2011 at 08:09:16PM +1000, Allan McRae wrote: > >>>On 20/02/11 20:05, Magnus Therning wrote: > >>>>On Sun, Feb 20, 2011 at 07:55:10PM +1000, Allan McRae wrote: > >>>>>On 20/02/11 19:36, Magnus Therning wrote: > >>>>>>I just tried building a package with more than one source file using > >>>>>>makechrootpkg. It failed with this message: > >>>>>> > >>>>>>==> ERROR: Integrity checks (md5) differ in size from the source > >>>>>>array. > >>>>> > >>>>>That is an error from makepkg. > >>>> > >>>>Indeed, but AFAICS it's caused by makechrootpkg not copying all the > >>>>sources into the build chroot for makepkg to find. > >>>> > >>> > >>>No... it cause by your PKGBUILD having more/less entries in the > >>>sources array that the md5sums array. > >> > >>Please, read my initial email! > >> > >>My PKGBUILD is just fine, it builds out of the build chroot (using > >>makepkg directly) and it builds when I modify makechrootpkg as I > >>outlined. > >> > >>The source array is modified based on files in the dir holding the > >>PKGBUILD, like this: > >> > >>if [[ -f my.patch ]]; then > >>sources=(${sources[@] my.patch) > >>fi > >> > >>So the build failure reported by makepkg *really* is caused by > >>makechrootpkg not copying over all the source files. > >> > >>(Now it may be bad to modify the source array that way, but that's a > >>different discussion altogether.) > >> > > > >makechrootpkg sets SRCDEST and copies the source files there. Your > >PKGBUILD assumes the sources are alongside the PKGBUILD. When run > >with makechrootpkg, your PKGBUILD fails as the "[[ -f my.patch ]]" > >fails as my.patch is not in the current directory, but rather in > >$SRCDIR. Yes, I just never thought that the assumption would go wrong. Out of curiosity, why doesn't makechrootpkg just copy all the sources into /build so that they are next to the PKGBUILD? > >Try: > >if [[ -f $SRCDIR/my.patch ]]; > > Well, that would be wrong. This probably works... > > if [[ -f ${SRCDEST:-.}/my.patch ]] Nope, that doesn't work. The setting of SRCDEST doesn't seem to get all the way through to the PKGBUILD's build function :-( I modified the little build script used by makechrootpkg (/chrootbuild) to export SRCDEST, but that still didn't do it. How can I detect within a PKGBUILD that the build is invoked by makechrootpkg in an elegant way? /M -- Magnus Therning OpenPGP: 0xAB4DFBA4 email: magnus@xxxxxxxxxxxx jabber: magnus@xxxxxxxxxxxx twitter: magthe http://therning.org/magnus I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. -- Alan Kay
Attachment:
pgp9Fg6BMsDIW.pgp
Description: PGP signature