[arch-commits] Commit in waf/repos (3 files)
Felix Yan
felixonmars at archlinux.org
Mon Nov 9 16:20:29 UTC 2020
Date: Monday, November 9, 2020 @ 16:20:29
Author: felixonmars
Revision: 747482
archrelease: copy trunk to community-staging-any
Added:
waf/repos/community-staging-any/
waf/repos/community-staging-any/PKGBUILD
(from rev 747477, waf/trunk/PKGBUILD)
waf/repos/community-staging-any/building-waf.md
(from rev 747479, waf/trunk/building-waf.md)
-----------------+
PKGBUILD | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
building-waf.md | 44 ++++++++++++++++++++++++++++++++++++
2 files changed, 110 insertions(+)
Copied: waf/repos/community-staging-any/PKGBUILD (from rev 747477, waf/trunk/PKGBUILD)
===================================================================
--- community-staging-any/PKGBUILD (rev 0)
+++ community-staging-any/PKGBUILD 2020-11-09 16:20:29 UTC (rev 747482)
@@ -0,0 +1,66 @@
+# Maintainer: David Runge <dvzrv at archlinux.org>
+# Contributor: XZS <d dot f dot fischer at web dot de>
+# Contributor: Alexander Rødseth <rodseth at gmail.com>
+# Contributor: Sebastien Binet <binet at cern.ch>
+
+pkgname=waf
+pkgver=2.0.21
+pkgrel=2
+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=('b76c32d5992757af1f483dc59dc439e414d06d0325eaf1c8ac20bc20ee62bee25d8a97099d80e6d8e3a2ca9c9aeadf0543c2ba5005479e9617c1fbcfd60ba6b8'
+ 'SKIP'
+ 'fce4e44c3eff4b87165ad4c6856c028f90437af26ed0d2e7cdef825987a60ebe16afda3238813bc2aa4f4f39df2a705a9df870f93c85e9d755d5d1636f07af70')
+b2sums=('ba7d85c50d4ba1ad566620f7da2779ac1a4e0a5fcc5bcc639c64a59750bf9df40318070f771098d21335cc8d494b4043ecbdae1baa67c4bce3ce791ce2e538d5'
+ 'SKIP'
+ 'a42039f8419417a312ccdb65a01b22c5e1133ebaa3e3a905387565bf2e3991ce3efb74f3b2fb0ec5e8408b665044946337c6ecfd4af1083ae2811aad9dc7d76e')
+validpgpkeys=('0B3972B2D9E32EAB423D2E0F22BE0C62FFBFA548') # Thomas Nagy <tnagy at 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:
Copied: waf/repos/community-staging-any/building-waf.md (from rev 747479, waf/trunk/building-waf.md)
===================================================================
--- community-staging-any/building-waf.md (rev 0)
+++ community-staging-any/building-waf.md 2020-11-09 16:20:29 UTC (rev 747482)
@@ -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=''
More information about the arch-commits
mailing list