third_party: Import exact files from waf-2.0.8/waflib
[bbaumbach/samba-autobuild/.git] / third_party / waf / waflib / extras / cabal.py
index a5acce7737525ad00a726a01560a7828a571e190..e10a0d1129e5819af9bec3ed04649cbdd19754e0 100644 (file)
-#!/usr/bin/env python
-# encoding: utf-8
-# Anton Feldmann, 2012
-# "Base for cabal"
-
-from waflib import Task, Utils
-from waflib.TaskGen import extension
-from waflib.Utils import threading
-from shutil import rmtree
-
-lock = threading.Lock()
-registering = False
-
-def configure(self):
-    self.find_program('cabal', var='CABAL')
-    self.find_program('ghc-pkg', var='GHCPKG')
-    pkgconfd = self.bldnode.abspath() + '/package.conf.d'
-    self.env.PREFIX = self.bldnode.abspath() + '/dist'
-    self.env.PKGCONFD = pkgconfd
-    if self.root.find_node(pkgconfd + '/package.cache'):
-        self.msg('Using existing package database', pkgconfd, color='CYAN')
-    else:
-        pkgdir = self.root.find_dir(pkgconfd)
-        if pkgdir:
-            self.msg('Deleting corrupt package database', pkgdir.abspath(), color ='RED')
-            rmtree(pkgdir.abspath())
-            pkgdir = None
-
-        self.cmd_and_log(self.env.GHCPKG + ['init', pkgconfd])
-        self.msg('Created package database', pkgconfd, color = 'YELLOW' if pkgdir else 'GREEN')
-
-@extension('.cabal')
-def process_cabal(self, node):
-    out_dir_node = self.bld.root.find_dir(self.bld.out_dir)
-    package_node = node.change_ext('.package')
-    package_node = out_dir_node.find_or_declare(package_node.name)
-    build_node   = node.parent.get_bld()
-    build_path   = build_node.abspath()
-    config_node  = build_node.find_or_declare('setup-config')
-    inplace_node = build_node.find_or_declare('package.conf.inplace')
-
-    config_task = self.create_task('cabal_configure', node)
-    config_task.cwd = node.parent.abspath()
-    config_task.depends_on = getattr(self, 'depends_on', '')
-    config_task.build_path = build_path
-    config_task.set_outputs(config_node)
-
-    build_task = self.create_task('cabal_build', config_node)
-    build_task.cwd = node.parent.abspath()
-    build_task.build_path = build_path
-    build_task.set_outputs(inplace_node)
-
-    copy_task = self.create_task('cabal_copy', inplace_node)
-    copy_task.cwd = node.parent.abspath()
-    copy_task.depends_on = getattr(self, 'depends_on', '')
-    copy_task.build_path = build_path
-
-    last_task = copy_task
-    task_list = [config_task, build_task, copy_task]
-
-    if (getattr(self, 'register', False)):
-        register_task = self.create_task('cabal_register', inplace_node)
-        register_task.cwd = node.parent.abspath()
-        register_task.set_run_after(copy_task)
-        register_task.build_path = build_path
-
-        pkgreg_task = self.create_task('ghcpkg_register', inplace_node)
-        pkgreg_task.cwd = node.parent.abspath()
-        pkgreg_task.set_run_after(register_task)
-        pkgreg_task.build_path = build_path
-
-        last_task = pkgreg_task
-        task_list += [register_task, pkgreg_task]
-
-    touch_task = self.create_task('cabal_touch', inplace_node)
-    touch_task.set_run_after(last_task)
-    touch_task.set_outputs(package_node)
-    touch_task.build_path = build_path
-
-    task_list += [touch_task]
-
-    return task_list
-
-def get_all_src_deps(node):
-    hs_deps = node.ant_glob('**/*.hs')
-    hsc_deps = node.ant_glob('**/*.hsc')
-    lhs_deps = node.ant_glob('**/*.lhs')
-    c_deps = node.ant_glob('**/*.c')
-    cpp_deps = node.ant_glob('**/*.cpp')
-    proto_deps = node.ant_glob('**/*.proto')
-    return sum([hs_deps, hsc_deps, lhs_deps, c_deps, cpp_deps, proto_deps], [])
-
-class Cabal(Task.Task):
-    def scan(self):
-        return (get_all_src_deps(self.generator.path), ())
-
-class cabal_configure(Cabal):
-    run_str = '${CABAL} configure -v0 --prefix=${PREFIX} --global --user --package-db=${PKGCONFD} --builddir=${tsk.build_path}'
-    shell = True
-
-    def scan(self):
-        out_node = self.generator.bld.root.find_dir(self.generator.bld.out_dir)
-        deps = [out_node.find_or_declare(dep).change_ext('.package') for dep in Utils.to_list(self.depends_on)]
-        return (deps, ())
-
-class cabal_build(Cabal):
-    run_str = '${CABAL} build -v1 --builddir=${tsk.build_path}/'
-    shell = True
-
-class cabal_copy(Cabal):
-    run_str = '${CABAL} copy -v0 --builddir=${tsk.build_path}'
-    shell = True
-
-class cabal_register(Cabal):
-    run_str = '${CABAL} register -v0 --gen-pkg-config=${tsk.build_path}/pkg.config --builddir=${tsk.build_path}'
-    shell = True
-
-class ghcpkg_register(Cabal):
-    run_str = '${GHCPKG} update -v0 --global --user --package-conf=${PKGCONFD} ${tsk.build_path}/pkg.config'
-    shell = True
-
-    def runnable_status(self):
-        global lock, registering
-
-        val = False
-        lock.acquire()
-        val = registering
-        lock.release()
-
-        if val:
-            return Task.ASK_LATER
-
-        ret = Task.Task.runnable_status(self)
-        if ret == Task.RUN_ME:
-            lock.acquire()
-            registering = True
-            lock.release()
-
-        return ret
-
-    def post_run(self):
-        global lock, registering
-
-        lock.acquire()
-        registering = False
-        lock.release()
-
-        return Task.Task.post_run(self)
-
-class cabal_touch(Cabal):
-    run_str = 'touch ${TGT}'
-
+#!/usr/bin/env python\r
+# encoding: utf-8\r
+# Anton Feldmann, 2012\r
+# "Base for cabal"\r
+\r
+from waflib import Task, Utils\r
+from waflib.TaskGen import extension\r
+from waflib.Utils import threading\r
+from shutil import rmtree\r
+\r
+lock = threading.Lock()\r
+registering = False\r
+\r
+def configure(self):\r
+    self.find_program('cabal', var='CABAL')\r
+    self.find_program('ghc-pkg', var='GHCPKG')\r
+    pkgconfd = self.bldnode.abspath() + '/package.conf.d'\r
+    self.env.PREFIX = self.bldnode.abspath() + '/dist'\r
+    self.env.PKGCONFD = pkgconfd\r
+    if self.root.find_node(pkgconfd + '/package.cache'):\r
+        self.msg('Using existing package database', pkgconfd, color='CYAN')\r
+    else:\r
+        pkgdir = self.root.find_dir(pkgconfd)\r
+        if pkgdir:\r
+            self.msg('Deleting corrupt package database', pkgdir.abspath(), color ='RED')\r
+            rmtree(pkgdir.abspath())\r
+            pkgdir = None\r
+\r
+        self.cmd_and_log(self.env.GHCPKG + ['init', pkgconfd])\r
+        self.msg('Created package database', pkgconfd, color = 'YELLOW' if pkgdir else 'GREEN')\r
+\r
+@extension('.cabal')\r
+def process_cabal(self, node):\r
+    out_dir_node = self.bld.root.find_dir(self.bld.out_dir)\r
+    package_node = node.change_ext('.package')\r
+    package_node = out_dir_node.find_or_declare(package_node.name)\r
+    build_node   = node.parent.get_bld()\r
+    build_path   = build_node.abspath()\r
+    config_node  = build_node.find_or_declare('setup-config')\r
+    inplace_node = build_node.find_or_declare('package.conf.inplace')\r
+\r
+    config_task = self.create_task('cabal_configure', node)\r
+    config_task.cwd = node.parent.abspath()\r
+    config_task.depends_on = getattr(self, 'depends_on', '')\r
+    config_task.build_path = build_path\r
+    config_task.set_outputs(config_node)\r
+\r
+    build_task = self.create_task('cabal_build', config_node)\r
+    build_task.cwd = node.parent.abspath()\r
+    build_task.build_path = build_path\r
+    build_task.set_outputs(inplace_node)\r
+\r
+    copy_task = self.create_task('cabal_copy', inplace_node)\r
+    copy_task.cwd = node.parent.abspath()\r
+    copy_task.depends_on = getattr(self, 'depends_on', '')\r
+    copy_task.build_path = build_path\r
+\r
+    last_task = copy_task\r
+    task_list = [config_task, build_task, copy_task]\r
+\r
+    if (getattr(self, 'register', False)):\r
+        register_task = self.create_task('cabal_register', inplace_node)\r
+        register_task.cwd = node.parent.abspath()\r
+        register_task.set_run_after(copy_task)\r
+        register_task.build_path = build_path\r
+\r
+        pkgreg_task = self.create_task('ghcpkg_register', inplace_node)\r
+        pkgreg_task.cwd = node.parent.abspath()\r
+        pkgreg_task.set_run_after(register_task)\r
+        pkgreg_task.build_path = build_path\r
+\r
+        last_task = pkgreg_task\r
+        task_list += [register_task, pkgreg_task]\r
+\r
+    touch_task = self.create_task('cabal_touch', inplace_node)\r
+    touch_task.set_run_after(last_task)\r
+    touch_task.set_outputs(package_node)\r
+    touch_task.build_path = build_path\r
+\r
+    task_list += [touch_task]\r
+\r
+    return task_list\r
+\r
+def get_all_src_deps(node):\r
+    hs_deps = node.ant_glob('**/*.hs')\r
+    hsc_deps = node.ant_glob('**/*.hsc')\r
+    lhs_deps = node.ant_glob('**/*.lhs')\r
+    c_deps = node.ant_glob('**/*.c')\r
+    cpp_deps = node.ant_glob('**/*.cpp')\r
+    proto_deps = node.ant_glob('**/*.proto')\r
+    return sum([hs_deps, hsc_deps, lhs_deps, c_deps, cpp_deps, proto_deps], [])\r
+\r
+class Cabal(Task.Task):\r
+    def scan(self):\r
+        return (get_all_src_deps(self.generator.path), ())\r
+\r
+class cabal_configure(Cabal):\r
+    run_str = '${CABAL} configure -v0 --prefix=${PREFIX} --global --user --package-db=${PKGCONFD} --builddir=${tsk.build_path}'\r
+    shell = True\r
+\r
+    def scan(self):\r
+        out_node = self.generator.bld.root.find_dir(self.generator.bld.out_dir)\r
+        deps = [out_node.find_or_declare(dep).change_ext('.package') for dep in Utils.to_list(self.depends_on)]\r
+        return (deps, ())\r
+\r
+class cabal_build(Cabal):\r
+    run_str = '${CABAL} build -v1 --builddir=${tsk.build_path}/'\r
+    shell = True\r
+\r
+class cabal_copy(Cabal):\r
+    run_str = '${CABAL} copy -v0 --builddir=${tsk.build_path}'\r
+    shell = True\r
+\r
+class cabal_register(Cabal):\r
+    run_str = '${CABAL} register -v0 --gen-pkg-config=${tsk.build_path}/pkg.config --builddir=${tsk.build_path}'\r
+    shell = True\r
+\r
+class ghcpkg_register(Cabal):\r
+    run_str = '${GHCPKG} update -v0 --global --user --package-conf=${PKGCONFD} ${tsk.build_path}/pkg.config'\r
+    shell = True\r
+\r
+    def runnable_status(self):\r
+        global lock, registering\r
+\r
+        val = False \r
+        lock.acquire()\r
+        val = registering\r
+        lock.release()\r
+\r
+        if val:\r
+            return Task.ASK_LATER\r
+\r
+        ret = Task.Task.runnable_status(self)\r
+        if ret == Task.RUN_ME:\r
+            lock.acquire()\r
+            registering = True\r
+            lock.release()\r
+\r
+        return ret\r
+\r
+    def post_run(self):\r
+        global lock, registering\r
+\r
+        lock.acquire()\r
+        registering = False\r
+        lock.release()\r
+\r
+        return Task.Task.post_run(self)\r
+\r
+class cabal_touch(Cabal):\r
+    run_str = 'touch ${TGT}'\r
+\r