[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