Date: Monday, August 26, 2019 @ 17:59:06 Author: dvzrv Revision: 502143
Adding waf (as makedepnds for ntk and potentially countless others). Added: waf/ waf/repos/ waf/trunk/ waf/trunk/PKGBUILD waf/trunk/building-waf.md -----------------+ PKGBUILD | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ building-waf.md | 44 +++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) Added: waf/trunk/PKGBUILD =================================================================== --- waf/trunk/PKGBUILD (rev 0) +++ waf/trunk/PKGBUILD 2019-08-26 17:59:06 UTC (rev 502143) @@ -0,0 +1,63 @@ +# Maintainer: David Runge <d...@sleepmap.de> +# Contributor: XZS <d dot f dot fischer at web dot de> +# Contributor: Alexander Rødseth <rods...@gmail.com> +# Contributor: Sebastien Binet <bi...@cern.ch> + +pkgname=waf +pkgver=2.0.18 +pkgrel=1 +pkgdesc='General-purpose build system modelled after Scons' +url="http://waf.io/" +arch=('any') +license=('BSD') +depends=('python') +makedepends=('unzip') +provides=('python-waf') +source=("https://waf.io/${pkgname}-${pkgver}.tar.bz2"{,.asc} + 'building-waf.md') +sha512sums=('aa102922dd48bd1d2f39208ee84f91330a1a5993a3471667181e3e47817d4cf57b0ff9041c1d75b6648d279de6688c7564670cb76ca19da1bd412d1603389e0a' + 'SKIP' + 'fce4e44c3eff4b87165ad4c6856c028f90437af26ed0d2e7cdef825987a60ebe16afda3238813bc2aa4f4f39df2a705a9df870f93c85e9d755d5d1636f07af70') +validpgpkeys=('8AF22DE5A06822E3474F3C7049B4C67C05277AAA') # Thomas Nagy <tn...@waf.io> + +prepare() { + local _py_ver=$(python3 -c "import sys; print(str(sys.version_info.major)+'.'+str(sys.version_info.minor))") + cd "$pkgname-$pkgver" + # make waf find its waflib + sed -e "/test(i/ s|dirname|'python${_py_ver}/site-packages/waf'|" -i waf-light + # license needs to be extracted: + # https://gitlab.com/ita1024/waf/issues/2251 + head -n 30 waf | tail -n 28 | sed -e 's/# //g; s/"""//g' > LICENSE +} + +build() { + cd "$pkgname-$pkgver" + ./waf-light \ + configure --prefix=/usr \ + build --make-waf + + # removing compiled in vendored library from executable + sed -i '/^#==>$/,/^#<==$/d' waf +} + +package() { + local _py_ver=$(python3 -c "import sys; print(str(sys.version_info.major)+'.'+str(sys.version_info.minor))") + cd "$pkgname-$pkgver" + install -vDm 755 waf -t "$pkgdir/usr/bin" + install -vDm 644 wscript -t "$pkgdir/usr/share/$pkgname" + + # installing, byte-compiling waflib and stripping pkgdir from it + install -vDm 644 waflib/*.py \ + -t "${pkgdir}/usr/lib/python${_py_ver}/site-packages/waf/waflib" + install -vDm 644 waflib/Tools/*.py \ + -t "${pkgdir}/usr/lib/python${_py_ver}/site-packages/waf/waflib/Tools" + install -vDm 644 waflib/extras/*.py \ + -t "${pkgdir}/usr/lib/python${_py_ver}/site-packages/waf/waflib/extras" + python -m compileall -d "/usr/lib/python${_py_ver}" \ + "${pkgdir}/usr/lib/python${_py_ver}" + python -O -m compileall -d "/usr/lib/python${_py_ver}" \ + "${pkgdir}/usr/lib/python${_py_ver}" + install -vDm 644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}" + install -vDm 644 {README,../building-waf}.md -t "${pkgdir}/usr/share/doc/${pkgname}" +} +# vim:set ts=2 sw=2 et: Added: waf/trunk/building-waf.md =================================================================== --- waf/trunk/building-waf.md (rev 0) +++ waf/trunk/building-waf.md 2019-08-26 17:59:06 UTC (rev 502143) @@ -0,0 +1,44 @@ +# Building a custom waf binary + +Waf is primarily intended to be distributed with the project using it. The Arch +Linux package makes waf usable directly, but also brings all files necessary to +compose a custom binary for your project. To do so, create a temporary +directory, link all the resources together and build it. + + cd $(mktemp -d) + ln -s /usr/share/waf/wscript . + ln -s /usr/bin/waf waf-light + ln -s /usr/lib/python3.7/waf/waflib . + mkdir zip + waf configure build --make-waf --tools='' + +The last line allows you to choose tools to include. + +After this process, there should be a `waf` binary ready in the current working +directory. + +## Building an older version for current Python + +Especially after version 2 introduced API-breaking changes, some projects may +have become incompatible and require older waf versions to build. Fortunately, +they mostly stay available online and can be retrieved directly in binary form +with a command like + + + wget -O waf http://ftp.waf.io/pub/release/waf-1.2.3 + chmod 755 waf + +Unfortunately, a change in language library makes these impossible to run on +Python version 3.7 or up. However, by applying the necessary change that made +waf 2.0.7 compatible to newer Python versions, a compatible binary can still be +built. The patch should apply even on older versions. This can be achieved +through a build process similar to the one described above, extended with the +download of an older waf version and patch. + + wget 'https://waf.io/waf-1.8.22.tar.bz2' + wget 'https://gitlab.com/ita1024/waf/commit/facdc0b173d933073832c768ec1917c553cb369c.patch' + tar xjf waf-*.tar.bz2 + rm waf-*.tar.bz2 + cd waf-* + patch -p1 -i ../*.patch + ./waf-light configure build --make-waf --tools=''