Change:
Describe the bug upgraded to 2.0.0, but this version is broken on darwin: It appears this is because ' macOS SDK is 10.12, but the symbols that cause problems in 2.0.0 are only available in 10.13+:
Issue regarding newer SDK
I'm also seeing watchdog as a blocker for installing some packages. e.g., installing was-sam-cli is broken: Any work-around or fix?
Still happens with watchdog
Yeah, unfortunately, I think nothing is going to change on this issue until someone has time to upgrade the macOS SDK ()
That's happening at as part of
What if the package uses sdk_11 for now?
It needs , so maybe fine.
Talking to this doesn't seem so simple. The 11 SDK is only available through the Aarch64 stdenv IIUC. So maybe this package doesn't need to be marked broken for Aarch64 Darwin, could someone using native Nix on an M1 mac confirm this? Making it available on x86_64 properly would entail as much work as bumping the SDK to 10.13 does because we have as much as possible depend on the Apple source releases rather than the SDK. So I don't think this'd be an easy workaround. would be better able to judge how practical the idea is though.
<details<summaryHere's what I tried, from a checkout of master: </summary</detailsI suspect the problem is trying to with the 10.12 darwin-stubs, which could explain missing dylibs. The usual 10.12 expression explicitly depends on but does not so I'm not able to override it. I'm not sure why this is,
Maybe it's using impure stubs from the host? Would be cool if someone running Big Sur could confirm or deny whether the above works for them.
I ran into the same issue on Big Sur.
Just coming into this but I see this has been merged? Is there anything to be done here? Thanks A
sorry for causing confusion. That PR became just a bump of LLVM and the bit that was merged is just the small bootstrap-tools bump the work depends on. So this has no impact on this issue. I continue to work on both getting LLVM updated and the Apple SDK. You can keep an eye on or the Discourse thread for updates.
This issue has been mentioned on NixOS Discourse. There might be relevant details there:
I marked this as stale due to inactivity. &rarr;
Package ‘python3.9-watchdog-2.1.6’ in /nix/store/16znkxs25xghynrdrrcf3asczxh3hdm3-nixpkgs-22.05pre346850./nixpkgs/pkgs/development/python- is marked as broken, refusing to evaluate.
Hi all, is there a recommended workaround for this?
I used to create a Python virtualenv with my , then just install directly with inside that virtualenv: I mainly use this for , and it WAS working correctly. I don't have a mac currently, so can't say if it still works, but you can give it a try.

Discussion:
sha256 = "sha256-P9R4FTU76cRO68lMwo/iaysMW9iJ2vxKWny9+SQUNIA="; }; <ins> patches = lib.optionals (stdenv.isDarwin && !stdenv.isAarch64) [ ./force-kqueue.patch ]; </ins> buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ]; propagatedBuildInputs = [

disabledTests = [ # probably failing because of an encoding related issue "test_create_wrong_encoding" <ins> ] ++ lib.optionals (stdenv.isDarwin && !stdenv.isAarch64) [ "test_delete" </ins> ]; disabledTestPaths = [

homepage = "https://github.com/gorakhargosh/watchdog"; license = licenses.asl20; maintainers = with maintainers; [ goibhniu ]; <del> # error: use of undeclared identifier 'kFSEventStreamEventFlagItemCloned' # builds fine on aarch64-darwin broken = stdenv.isDarwin && !stdenv.isAarch64; </del> }; }

<ins> diff --git a/setup.py b/setup.py index 072dfc8..64732bb 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,7 @@ _apple_devices = ('appletv', 'iphone', 'ipod', 'ipad', 'watch') is_macos = sys.platform == 'darwin' and not machine().lower().startswith(_apple_devices) ext_modules = [] -if is_macos or os.getenv('FORCE_MACOS_MACHINE', '0') == '1': +if False: ext_modules = [ Extension( name='_watchdog_fsevents', diff --git a/tests/test_emitter.py b/tests/test_emitter.py index bec052c..242fbea 100644 --- a/tests/test_emitter.py +++ b/tests/test_emitter.py @@ -42,13 +42,11 @@ if platform.is_linux(): InotifyEmitter as Emitter, InotifyFullEmitter, ) -elif platform.is_darwin(): -    from watchdog.observers.fsevents import FSEventsEmitter as Emitter elif platform.is_windows(): from watchdog.observers.read_directory_changes import ( WindowsApiEmitter as Emitter ) -elif platform.is_bsd(): +elif platform.is_bsd() or platform.is_darwin(): from watchdog.observers.kqueue import ( KqueueEmitter as Emitter ) @@ -57,12 +55,6 @@ logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) -if platform.is_darwin(): -    # enable more verbose logs -    fsevents_logger = logging.getLogger("fsevents") -    fsevents_logger.setLevel(logging.DEBUG) - - @pytest.fixture(autouse=True) def setup_teardown(tmpdir): global p, emitter, event_queue @@ -85,9 +77,6 @@ def start_watching(path=None, use_full_emitter=False, recursive=True): else: emitter = Emitter(event_queue, ObservedWatch(path, recursive=recursive)) -    if platform.is_darwin(): -        emitter.suppress_history = True - emitter.start() @@ -345,7 +334,7 @@ def test_separate_consecutive_moves(): if platform.is_windows(): expected_events = [a_deleted, d_created] -    if platform.is_bsd(): +    if platform.is_bsd() or platform.is_darwin(): # Due to the way kqueue works, we can't really order # 'Created' and 'Deleted' events in time, so creation queues first expected_events = [d_created, a_deleted, dir_modif, dir_modif] @@ -355,7 +344,7 @@ def test_separate_consecutive_moves(): @pytest.mark.flaky(max_runs=5, min_passes=1, rerun_filter=rerun_filter) -@pytest.mark.skipif(platform.is_bsd(), reason="BSD create another set of events for this test") +@pytest.mark.skipif(platform.is_bsd() or platform.is_darwin(), reason="BSD create another set of events for this test") def test_delete_self(): mkdir(p('dir1')) start_watching(p('dir1')) @@ -365,7 +354,7 @@ def test_delete_self(): assert not emitter.is_alive() -@pytest.mark.skipif(platform.is_windows() or platform.is_bsd(), +@pytest.mark.skipif(platform.is_windows() or platform.is_bsd() or platform.is_darwin(), reason="Windows|BSD create another set of events for this test") def test_fast_subdirectory_creation_deletion(): root_dir = p('dir1') @@ -429,7 +418,7 @@ def test_recursive_on(): assert event.src_path == p('dir1', 'dir2', 'dir3') assert isinstance(event, DirModifiedEvent) -        if not platform.is_bsd(): +        if not (platform.is_bsd() or platform.is_darwin()): event = event_queue.get(timeout=5)[0] assert event.src_path == p('dir1', 'dir2', 'dir3', 'a') assert isinstance(event, FileModifiedEvent) @@ -452,26 +441,6 @@ def test_recursive_off(): if platform.is_linux(): expect_event(FileClosedEvent(p('b'))) -    # currently limiting these additional events to macOS only, see https://github.com/gorakhargosh/watchdog/pull/779 -    if platform.is_darwin(): -        mkdir(p('dir1', 'dir2')) -        with pytest.raises(Empty): -            event_queue.get(timeout=5) -        mkfile(p('dir1', 'dir2', 'somefile')) -        with pytest.raises(Empty): -            event_queue.get(timeout=5) - -        mkdir(p('dir3')) -        expect_event(DirModifiedEvent(p()))  # the contents of the parent directory changed - -        mv(p('dir1', 'dir2', 'somefile'), p('somefile')) -        expect_event(FileMovedEvent(p('dir1', 'dir2', 'somefile'), p('somefile'))) -        expect_event(DirModifiedEvent(p())) - -        mv(p('dir1', 'dir2'), p('dir2')) -        expect_event(DirMovedEvent(p('dir1', 'dir2'), p('dir2'))) -        expect_event(DirModifiedEvent(p())) - @pytest.mark.skipif(platform.is_windows(), reason="Windows create another set of events for this test") @@ -493,7 +462,7 @@ def test_renaming_top_level_directory(): expect_event(DirMovedEvent(p('a', 'b'), p('a2', 'b'))) -    if platform.is_bsd(): +    if platform.is_bsd() or platform.is_darwin(): expect_event(DirModifiedEvent(p())) open(p('a2', 'b', 'c'), 'a').close() @@ -584,7 +553,7 @@ def test_move_nested_subdirectories(): expect_event(DirMovedEvent(p('dir1', 'dir2', 'dir3'), p('dir2', 'dir3'))) expect_event(FileMovedEvent(p('dir1', 'dir2', 'dir3', 'a'), p('dir2', 'dir3', 'a'))) -    if platform.is_bsd(): +    if platform.is_bsd() or platform.is_darwin(): event = event_queue.get(timeout=5)[0] assert p(event.src_path) == p() assert isinstance(event, DirModifiedEvent) @@ -643,7 +612,7 @@ def test_move_nested_subdirectories_on_windows(): @pytest.mark.flaky(max_runs=5, min_passes=1, rerun_filter=rerun_filter) -@pytest.mark.skipif(platform.is_bsd(), reason="BSD create another set of events for this test") +@pytest.mark.skipif(platform.is_bsd() or platform.is_darwin(), reason="BSD create another set of events for this test") def test_file_lifecyle(): start_watching() diff --git a/tests/test_fsevents.py b/tests/test_fsevents.py index 4a4fabf..49886a1 100644 --- a/tests/test_fsevents.py +++ b/tests/test_fsevents.py @@ -3,8 +3,7 @@ import pytest from watchdog.utils import platform -if not platform.is_darwin():  # noqa -    pytest.skip("macOS only.", allow_module_level=True) +pytest.skip("doesn't work with Nix yet", allow_module_level=True) import logging import os </ins>