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.