[arch-commits] Commit in eclipse/trunk (PKGBUILD commonify)

Jan Steffens heftig at archlinux.org
Thu Dec 20 04:50:38 UTC 2018


    Date: Thursday, December 20, 2018 @ 04:50:37
  Author: heftig
Revision: 416846

4.10-1

Modified:
  eclipse/trunk/PKGBUILD
  eclipse/trunk/commonify

-----------+
 PKGBUILD  |   24 +++++++-------
 commonify |  102 +++++++++++++++++++++++++++++++++---------------------------
 2 files changed, 69 insertions(+), 57 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2018-12-20 04:19:56 UTC (rev 416845)
+++ PKGBUILD	2018-12-20 04:50:37 UTC (rev 416846)
@@ -7,9 +7,9 @@
 
 pkgbase=eclipse
 pkgname=(eclipse-{common,java,jee,cpp,php,javascript,rust})
-pkgver=4.9
+pkgver=4.10
 pkgrel=1
-_release=2018-09
+_release=2018-12/R
 pkgdesc="Highly extensible IDE"
 license=(EPL)
 arch=(x86_64)
@@ -16,13 +16,13 @@
 url="https://eclipse.org"
 makedepends=(python3)
 source=(commonify)
-sha256sums=('70ae1934385b0b7c25e5a76bfcd6d092bfd8d19ce451c3d909afa3cf2448452e')
+sha256sums=('a68cccdf182449dfb4aef595ab26fe6542902421aef42a79672483865cbbd0ea')
 
 _sourcename() {
   case $1 in
     eclipse-common) return 1 ;;
-    eclipse-rust  ) echo $1-$_release-incubation-linux-gtk-x86_64.tar.gz ;;
-    *             ) echo $1-$_release-linux-gtk-x86_64.tar.gz ;;
+    eclipse-rust  ) echo $1-${_release//\//-}-incubation-linux-gtk-x86_64.tar.gz ;;
+    *             ) echo $1-${_release//\//-}-linux-gtk-x86_64.tar.gz ;;
   esac
 }
 
@@ -31,17 +31,17 @@
 
 for _pkg in ${pkgname[@]}; do
   _src=$(_sourcename $_pkg) || continue
-  source_x86_64+=(http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/technology/epp/downloads/release/$_release/R/$_src)
+  source_x86_64+=(http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/technology/epp/downloads/release/$_release/$_src)
   noextract+=($_src)
   eval "package_$_pkg() { _package $_pkg; }"
 done
 
-sha256sums_x86_64=('7f5264ab51477deed9f28a4d3f92209846fa9caa3b311f60d540543c7e172748'
-                   '9d1375f45fb9a37f471db71da07ef67d45c6e36bdd1c6fea9652a19ab388ed0c'
-                   'f18e533650ab1961651cb3ebdcf38d6fb78d983e1edb175da1afe5b06bebc9e0'
-                   '8fca8efa9f63291efacc0205dd85fc35a109c9518cf0f603cf632b534d01ed7e'
-                   '9197060e3e133d5033b7fcbe856ede5c0cb8f831ba5f0835d6ca2579bce22c3f'
-                   'adca1e695d0e6adb6fcf11a595c6d2d6b3c01436ab6cb02f99b63ae5cfecfbdd')
+sha256sums_x86_64=('d3bcf5e428de4d123eea4349f70a53180cc1aba4985c99018172340b9d54e2b7'
+                   'bfa929e417562d8ef41562c78fd492b5e20e05c039c9e177888dc688878dfcff'
+                   'ec936dcba42a4b4affe0d6deb8dbc62d68ea3cc4c6fcf0eb534b45ca1c990bbf'
+                   '5f2c7a456c7c357f98ed1b976d00048f846592c21221e60c76bb263597704543'
+                   '1bd80dfc177326183af0334f018bff48b4c70331bd0a62f907428faa267932f2'
+                   '65ff32a9e26da7df64777c80fa426cc723e2ad922647c2047bcd9a869074fcfb')
 
 prepare() {
   local pkg src

Modified: commonify
===================================================================
--- commonify	2018-12-20 04:19:56 UTC (rev 416845)
+++ commonify	2018-12-20 04:50:37 UTC (rev 416846)
@@ -1,15 +1,21 @@
 #!/usr/bin/env python3
 from argparse import ArgumentParser
+from asyncio import (
+    BoundedSemaphore,
+    IncompleteReadError,
+    create_subprocess_exec,
+    gather,
+    get_running_loop,
+    run,
+)
 from asyncio.subprocess import DEVNULL, PIPE
-from asyncio import (get_event_loop, gather, BoundedSemaphore, create_subprocess_exec,
-                     IncompleteReadError)
+from contextlib import asynccontextmanager
 from enum import Enum, auto
-from logging import getLogger, basicConfig, INFO, DEBUG
-from os import cpu_count, renames, remove, removedirs
-from os.path import isdir, join as pjoin, split as psplit, relpath
+from logging import DEBUG, INFO, basicConfig, getLogger
+from os import cpu_count, remove, removedirs, renames
+from os.path import isdir, join as pjoin, relpath, split as psplit
 from sys import exit
 
-
 logger = getLogger(__name__)
 
 
@@ -19,52 +25,58 @@
 
 
 def parse_args(args=None):
-    parser = ArgumentParser(description='Extract common files.')
+    parser = ArgumentParser(description="Extract common files.")
 
     modes = parser.add_mutually_exclusive_group(required=True)
     for m in Mode:
-        modes.add_argument(f'--{m.name}', dest='mode', action='store_const', const=m,
-                           help=f'extract {m.name} common files')
+        modes.add_argument(
+            f"--{m.name}",
+            dest="mode",
+            action="store_const",
+            const=m,
+            help=f"extract {m.name} common files",
+        )
 
-    parser.add_argument('-n', '--dry-run', action='store_true', help='Dry run (do nothing)')
-    parser.add_argument('-v', '--verbose', action='store_true', help='Raise verbosity')
-    parser.add_argument('common_dir', metavar='COMMON_DIR',
-                        help='common files directory to move to')
-    parser.add_argument('targets', nargs='+', metavar='INPUT_DIR', help='directory to move from')
+    parser.add_argument("-n", "--dry-run", action="store_true", help="Dry run (do nothing)")
+    parser.add_argument("-v", "--verbose", action="store_true", help="Raise verbosity")
+    parser.add_argument(
+        "common_dir", metavar="COMMON_DIR", help="common files directory to move to"
+    )
+    parser.add_argument("targets", nargs="+", metavar="INPUT_DIR", help="directory to move from")
 
     return parser.prog, parser.parse_args(args)
 
 
-class bounded_exec:
-    semaphore = BoundedSemaphore(value=cpu_count() + 1)
+ at asynccontextmanager
+async def bounded_exec(*args, **kwargs):
+    loop = get_running_loop()
 
-    def __init__(self, *args, **kwargs):
-        self.args = args
-        self.kwargs = kwargs
+    try:
+        semaphore = loop.__bounded_exec_semaphore
+    except AttributeError:
+        semaphore = loop.__bounded_exec_semaphore = BoundedSemaphore(value=cpu_count() + 1)
 
-    async def __aenter__(self):
-        await self.semaphore.acquire()
-        p = self.process = await create_subprocess_exec(*self.args, **self.kwargs)
-        return p
+    async with semaphore:
+        process = await create_subprocess_exec(*args, **kwargs)
+        try:
+            yield process
+        finally:
+            if process.returncode is None:
+                try:
+                    process.kill()
+                except OSError:
+                    pass
+                await process.wait()
 
-    async def __aexit__(self, exc_type, exc, tb):
-        p = self.process
-        if p.returncode is None:
-            try:
-                p.kill()
-            except:
-                pass
-            await p.wait()
-        self.semaphore.release()
 
-
 class DiffError(RuntimeError):
     pass
 
 
 async def diff(file1, file2):
-    async with bounded_exec('diff', '-q', file1, file2,
-                            stdin=DEVNULL, stdout=DEVNULL, stderr=DEVNULL) as p:
+    async with bounded_exec(
+        "diff", "-q", file1, file2, stdin=DEVNULL, stdout=DEVNULL, stderr=DEVNULL
+    ) as p:
         ret = await p.wait()
 
     if ret != 0:
@@ -78,7 +90,7 @@
     fut = gather(*[diff(first, f) for f in rest])
     try:
         await fut
-    except DiffError as e:
+    except DiffError:
         return False
     else:
         return True
@@ -104,11 +116,12 @@
 
 
 async def find_files(path):
-    async with bounded_exec('find', path, '-type', 'f', '-print0',
-                            stdin=DEVNULL, stdout=PIPE, stderr=DEVNULL) as p:
+    async with bounded_exec(
+        "find", path, "-type", "f", "-print0", stdin=DEVNULL, stdout=PIPE, stderr=DEVNULL
+    ) as p:
         while True:
             try:
-                line = await p.stdout.readuntil(b'\x00')
+                line = await p.stdout.readuntil(b"\x00")
             except IncompleteReadError as e:
                 line = e.partial
                 if not line:
@@ -122,7 +135,7 @@
     async for f in find_files(target):
         files.setdefault(relpath(f, target), []).append(target)
         n += 1
-    logger.info('Found %d files in %r', n, target)
+    logger.info("Found %d files in %r", n, target)
 
 
 async def scan(targets):
@@ -133,7 +146,7 @@
 
 def arg_dir(s):
     if not isdir(s):
-        raise ValueError(f'{s!r} is not a directory')
+        raise ValueError(f"{s!r} is not a directory")
     return s
 
 
@@ -161,12 +174,11 @@
 async def main(settings):
     files = await scan(arg_dir(t) for t in settings.targets)
     results = await gather(*[commonify(settings, *ft) for ft in files.items()])
-    logger.info('%d %s files in %r', sum(results), settings.mode.name, settings.common_dir)
+    logger.info("%d %s files in %r", sum(results), settings.mode.name, settings.common_dir)
     return 0
 
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     prog, settings = parse_args()
     basicConfig(level=DEBUG if settings.verbose else INFO, format=f"{prog}: %(message)s")
-    loop = get_event_loop()
-    exit(loop.run_until_complete(main(settings)))
+    exit(run(main(settings), debug=settings.verbose))



More information about the arch-commits mailing list