diff options
author | Adrian Moennich <adrian@planetcoding.net> | 2020-09-06 00:21:37 +0200 |
---|---|---|
committer | Patrice Clement <monsieurp@gentoo.org> | 2020-11-12 22:28:42 +0100 |
commit | d428c50a040b5ae00ec1d0fc38769565108c5d24 (patch) | |
tree | 19175e0a9949584bf6c1bb021d2d42de231d0152 /dev-util/watchman/files | |
parent | net-misc/qtm: update SRC_URI. (diff) | |
download | gentoo-d428c50a040b5ae00ec1d0fc38769565108c5d24.tar.gz gentoo-d428c50a040b5ae00ec1d0fc38769565108c5d24.tar.bz2 gentoo-d428c50a040b5ae00ec1d0fc38769565108c5d24.zip |
dev-util/watchman: new package.
Watchman is a file watching service.
Signed-off-by: Adrian Moennich <adrian@planetcoding.net>
Package-Manager: Portage-3.0.4, Repoman-3.0.1
Closes: https://github.com/gentoo/gentoo/pull/17433
Signed-off-by: Patrice Clement <monsieurp@gentoo.org>
Diffstat (limited to 'dev-util/watchman/files')
-rw-r--r-- | dev-util/watchman/files/4.9.0-changes.patch | 80 | ||||
-rw-r--r-- | dev-util/watchman/files/4.9.0-python3.patch | 65 |
2 files changed, 145 insertions, 0 deletions
diff --git a/dev-util/watchman/files/4.9.0-changes.patch b/dev-util/watchman/files/4.9.0-changes.patch new file mode 100644 index 000000000000..4625bc815539 --- /dev/null +++ b/dev-util/watchman/files/4.9.0-changes.patch @@ -0,0 +1,80 @@ +diff -ru old/python/bin/watchman-make new/python/bin/watchman-make +--- old/python/bin/watchman-make 2020-09-06 11:36:12.202435809 +0200 ++++ new/python/bin/watchman-make 2020-09-06 11:36:14.105482419 +0200 +@@ -55,7 +55,14 @@ + data = client.getSubscription(self.name) + if data is None: + return +- self.triggered = True ++ for item in data: ++ # We only want to trigger if files matched; ++ # updates without a files list are metadata ++ # such as state-enter/leave notices so we skip them ++ if 'files' in item: ++ self.triggered = True ++ if 'canceled' in item: ++ raise RuntimeError('Watch was cancelled') + + def execute(self): + if not self.triggered: +@@ -165,6 +172,11 @@ + parser.add_argument('-r', '--run', type=str, help=""" + The script that should be run when changes are detected + """) ++parser.add_argument('--connect-timeout', type=float, default=600, help=""" ++Initial watchman client connection timeout. It should be sufficiently large to ++prevent timeouts when watchman is busy (eg. performing a crawl). The default ++value is 600 seconds. ++""") + args = parser.parse_args() + + if args.target is None and args.run is None: +@@ -187,7 +199,7 @@ + sys.exit(1) + + targets = {} +-client = pywatchman.client(timeout=600) ++client = pywatchman.client(timeout=args.connect_timeout) + try: + client.capabilityCheck( + required=['cmd-watch-project', 'wildmatch']) +diff -ru old/python/bin/watchman-wait new/python/bin/watchman-wait +--- old/python/bin/watchman-wait 2020-09-06 11:36:12.202435809 +0200 ++++ new/python/bin/watchman-wait 2020-09-06 11:36:14.106482444 +0200 +@@ -76,6 +76,11 @@ + Exit if no events trigger within the specified timeout. If timeout is + zero (the default) then keep running indefinitely. + """) ++parser.add_argument('--connect-timeout', type=float, default=100, help=""" ++Initial watchman client connection timeout. It should be sufficiently large to ++prevent timeouts when watchman is busy (eg. performing a crawl). The default ++value is 100 seconds. ++""") + args = parser.parse_args() + + +@@ -141,7 +146,7 @@ + def formatField(self, fname, val): + if fname == 'name': + # Respect the --relative path printing option +- return os.path.relpath(val, args.relative) ++ return os.path.relpath(os.path.join(self.name, val), args.relative) + # otherwise just make sure it's a string so that we can join it + return str(val) + +@@ -173,12 +178,13 @@ + for path in args.path: + sub = Subscription(path) + ++# and start up the client + subscriptions ++client = pywatchman.client(timeout=args.connect_timeout) ++ + deadline = None + if args.timeout > 0: + deadline = time.time() + args.timeout + +-# and start up the client + subscriptions +-client = pywatchman.client() + try: + client.capabilityCheck( + required=['term-dirname', 'cmd-watch-project', 'wildmatch']) diff --git a/dev-util/watchman/files/4.9.0-python3.patch b/dev-util/watchman/files/4.9.0-python3.patch new file mode 100644 index 000000000000..5b416f24ae46 --- /dev/null +++ b/dev-util/watchman/files/4.9.0-python3.patch @@ -0,0 +1,65 @@ +diff -ru backup/old/python/bin/watchman-make old/python/bin/watchman-make +--- backup/old/python/bin/watchman-make 2020-09-06 11:33:34.449582111 +0200 ++++ old/python/bin/watchman-make 2020-09-06 11:33:43.473801969 +0200 +@@ -100,7 +100,7 @@ + targets = [] + setattr(namespace, self.dest, targets) + +- if isinstance(values, basestring): ++ if isinstance(values, (str, bytes)): + values = [values] + + if namespace.pattern is None or len(namespace.pattern) == 0: +@@ -209,7 +209,7 @@ + client.setTimeout(600) + + result = client.receive() +- for _, t in targets.iteritems(): ++ for _, t in targets.items(): + t.consumeEvents(client) + + # Now we wait for events to settle +@@ -218,7 +218,7 @@ + while not settled: + try: + result = client.receive() +- for _, t in targets.iteritems(): ++ for _, t in targets.items(): + t.consumeEvents(client) + except pywatchman.SocketTimeout as ex: + # Our short settle timeout hit, so we're now settled +@@ -226,7 +226,7 @@ + break + + # Now we can work on executing the targets +- for _, t in targets.iteritems(): ++ for _, t in targets.items(): + t.execute() + + # Print this at the bottom of the loop rather than the top +@@ -249,4 +249,3 @@ + except KeyboardInterrupt: + # suppress ugly stack trace when they Ctrl-C + break +- +diff -ru backup/old/python/bin/watchman-wait old/python/bin/watchman-wait +--- backup/old/python/bin/watchman-wait 2020-09-06 11:33:34.449582111 +0200 ++++ old/python/bin/watchman-wait 2020-09-06 11:33:43.473801969 +0200 +@@ -182,7 +182,7 @@ + try: + client.capabilityCheck( + required=['term-dirname', 'cmd-watch-project', 'wildmatch']) +- for _, sub in subscriptions.iteritems(): ++ for _, sub in subscriptions.items(): + sub.start(client) + + except pywatchman.CommandError as ex: +@@ -200,7 +200,7 @@ + # the client object will accumulate all subscription results + # over time, so we ask it to remove and return those values + # for each of the subscriptions +- for _, sub in subscriptions.iteritems(): ++ for _, sub in subscriptions.items(): + sub.emit(client) + + except pywatchman.SocketTimeout as ex: |