On Friday 25 March 2011 12:19:54 pm David C. Rankin wrote:
On 03/25/2011 03:47 AM, Serghei Amelian wrote:
On Friday 25 March 2011 07:52:42 David C. Rankin
wrote:
[...]
I'm not sure why this is needed since the
PKGBUILD process takes
place in a *newly* created src directory that is *outside* the svn tree.
This will take a rewrite of all PKGBUILDS to accommodate this change.
newly created src != out of source
I made out-of-source mode mandatory because too many people have weird
building problems and I waste far too much time to debug it.
Serghei,
The change prevents Arch PKGBUILDs from working. Arch PKGBUILDs start
with a *new* directory, eg:
trinity-kdelibs
Arch then creates:
trinity-kdelibs
\-pkg
\-src
The svn checkout is then done in:
trinity-kdelibs
\-pkg
\-src
\-kdelibs
Building is then done under the *new* 'kdelibs' and finish packages are
then installed into the fake-root '\-pkg' where the final package is
created from.
The change you have implemented prevents the Arch 'makepkg' process from
working as it traditionally does. It *is* possible to force the build in an
alternate directory in the PKGBUILD scripts, but that is *not* the way Arch
traditionally works.
The key here is that Arch downloads the trinity code into a new
directory. Yes -- if you keep building over and over again in the same
directory without deleting 'src' or without issuing --clean or
--cleancache, you can run into problems, but I don't think forcing an
out-of-source-build is the right way to cure the problem.
I do out of source builds with all my PKGBUILDS and I do not hit the svn
server every time I build. I do an update once daily and then build all the
packages from there. When 3.5.13 comes out I will change the PKGBUILD
scripts to build from the 3.5.13 tarballs not from the svn tree.
Of course I will do it however you guys decide, but I would suggest it
is far better to warn about potential problems when reusing a source tree
than it is to mandate a change from the traditional build methods.
You guys think about it and let me know. I would change the *mandate* of
the out-or-source requirement to a *WARNING* so that the build can proceed,
but the builder is aware that if he is not building from a clean source,
then unforeseen problems can arise. Something like:
WARNING: you are attempting to build withing the original source tree. If
you have built from this same source tree earlier, your build may fail or
you may experience runtime errors due to a compromised build cache. Please
insure you are building from a clean source. Out-of-source building is
strongly advised.
http://link/to/out/of/source/build/howto
I'll get with Baho and sort out what will be required if this out of
source change is kept as an error instead of a warning. I'm swamped for the
next few days, but will fit this in if needed. Thanks :)
Have a look at my clean chroot build system and PKGBUILDs. It does not
require the VM that you presently use and produces clean packages without
unwanted dependences.
My PKGBUILDs do exactly what Serghei has proposed. They have worked perfect
until just this past week, but that is due to the state of flux in the svn
source tree. I am confindent when the svn source tree settles down all will
be well.