git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 00/12] fsmonitor: Implement fsmonitor for Linux

From
Glen Choo <chooglen@google.com>
Date
Oct 17, 2022, 22:14 UTC
Message-ID
<kl6l7d0yyu6r.fsf@chooglen-macbookpro.roam.corp.google.com>
In-Reply-To
<pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>
At $DAYJOB, we observed that this topic breaks MacOS builds with sha1dc:
  $ make NO_APPLE_COMMON_CRYPTO=1 DC_SHA1=1 NO_OPENSSL=1 compat/fsmonitor/fsm-ipc-darwin.o  
      CC compat/fsmonitor/fsm-ipc-darwin.o
    compat/fsmonitor/fsm-ipc-darwin.c:13:2: error: unknown type name 'SHA_CTX'; did you mean 'SHA1_CTX'?
            SHA_CTX sha1ctx;
            ^~~~~~~
            SHA1_CTX
    ./sha1dc/sha1.h:55:3: note: 'SHA1_CTX' declared here
    } SHA1_CTX;
      ^
    compat/fsmonitor/fsm-ipc-darwin.c:16:21: error: use of undeclared identifier 'SHA_DIGEST_LENGTH'
            unsigned char hash[SHA_DIGEST_LENGTH];
                              ^
    compat/fsmonitor/fsm-ipc-darwin.c:31:2: error: implicit declaration of function 'SHA1_Init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
            SHA1_Init(&sha1ctx);
            ^
    compat/fsmonitor/fsm-ipc-darwin.c:31:2: note: did you mean 'SHA1DCInit'?
    ./sha1dc/sha1.h:58:6: note: 'SHA1DCInit' declared here
    void SHA1DCInit(SHA1_CTX*);
        ^
    compat/fsmonitor/fsm-ipc-darwin.c:32:2: error: implicit declaration of function 'SHA1_Update' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
            SHA1_Update(&sha1ctx, r->worktree, strlen(r->worktree));
            ^
    compat/fsmonitor/fsm-ipc-darwin.c:32:2: note: did you mean 'SHA1DCUpdate'?
    ./sha1dc/sha1.h:96:6: note: 'SHA1DCUpdate' declared here
    void SHA1DCUpdate(SHA1_CTX*, const char*, size_t);
        ^
    compat/fsmonitor/fsm-ipc-darwin.c:33:2: error: implicit declaration of function 'SHA1_Final' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
            SHA1_Final(hash, &sha1ctx);
            ^
    compat/fsmonitor/fsm-ipc-darwin.c:33:2: note: did you mean 'SHA1DCFinal'?
    ./sha1dc/sha1.h:100:6: note: 'SHA1DCFinal' declared here
    int  SHA1DCFinal(unsigned char[20], SHA1_CTX*);
        ^
    5 errors generated.
    make: *** [compat/fsmonitor/fsm-ipc-darwin.o] Error 1

Without NO_OPENSSL, this still fails, but with slightly different error messages.

  $ make NO_APPLE_COMMON_CRYPTO=1 DC_SHA1=1 compat/fsmonitor/fsm-ipc-darwin.o
        CC compat/fsmonitor/fsm-ipc-darwin.o
    compat/fsmonitor/fsm-ipc-darwin.c:31:2: error: 'SHA1_Init' is deprecated [-Werror,-Wdeprecated-declarations]
            SHA1_Init(&sha1ctx);
            ^
    /opt/local/include/openssl/sha.h:49:1: note: 'SHA1_Init' has been explicitly marked deprecated here
    OSSL_DEPRECATEDIN_3_0 int SHA1_Init(SHA_CTX *c);
    ^
    /opt/local/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
    #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
                                                    ^
    /opt/local/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
    #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                      ^
    compat/fsmonitor/fsm-ipc-darwin.c:32:2: error: 'SHA1_Update' is deprecated [-Werror,-Wdeprecated-declarations]
            SHA1_Update(&sha1ctx, r->worktree, strlen(r->worktree));
            ^
    /opt/local/include/openssl/sha.h:50:1: note: 'SHA1_Update' has been explicitly marked deprecated here
    OSSL_DEPRECATEDIN_3_0 int SHA1_Update(SHA_CTX *c, const void *data, size_t len);
    ^
    /opt/local/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
    #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
                                                    ^
    /opt/local/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
    #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                      ^
    compat/fsmonitor/fsm-ipc-darwin.c:33:2: error: 'SHA1_Final' is deprecated [-Werror,-Wdeprecated-declarations]
            SHA1_Final(hash, &sha1ctx);
            ^
    /opt/local/include/openssl/sha.h:51:1: note: 'SHA1_Final' has been explicitly marked deprecated here
    OSSL_DEPRECATEDIN_3_0 int SHA1_Final(unsigned char *md, SHA_CTX *c);
    ^
    /opt/local/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
    #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
                                                    ^
    /opt/local/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
    #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                      ^
    3 errors generated.
    make: *** [compat/fsmonitor/fsm-ipc-darwin.o] Error 1
"Eric DeCosta via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 20 quoted lines
> Goal is to deliver fsmonitor for Linux that is on par with fsmonitor for
> Windows and Mac OS.
>
> This patch set builds upon previous work for done for Windows and Mac OS
> (first 6 patches) to implement a fsmonitor back-end for Linux based on the
> Linux inotify API. inotify differs significantly from the equivalent Windows
> and Mac OS APIs in that a watch must be registered for every directory of
> interest (rather than a singular watch at the root of the directory tree)
> and special care must be taken to handle directory renames correctly.
>
> More information about inotify:
> https://man7.org/linux/man-pages/man7/inotify.7.html
>
> v1 differs from v0:
>
>  * Code review feedback
>  * Update how and which code can be shared between Mac OS and Linux
>  * Increase polling frequency to every 1ms (matches Mac OS)
>  * Updates to t7527 to improve test stability
>
Previous: Johannes SchindelinNext: Junio C Hamano
Message 46 of 89 in “fsmonitor: Implement fsmonitor for Linux”
  1. 00/12 fsmonitor: Implement fsmonitor for LinuxEric DeCosta via GitGitGadget, Oct 9, 2022
  2. 02/12 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Oct 9, 2022
  3. 04/12 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Oct 9, 2022
  4. 03/12 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Oct 9, 2022
  5. 05/12 fsmonitor: check for compatability before communicating with fsmonitorEric DeCosta via GitGitGadget, Oct 9, 2022
  6. 01/12 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Oct 9, 2022
  7. Ævar Arnfjörð BjarmasonOct 18, 2022
  8. 06/12 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Oct 9, 2022
  9. 07/12 fsmonitor: prepare to share code between Mac OS and LinuxEric DeCosta via GitGitGadget, Oct 9, 2022
  10. Junio C HamanoOct 9, 2022
  11. Jeff HostetlerOct 10, 2022
  12. 08/12 fsmonitor: determine if filesystem is local or remoteEric DeCosta via GitGitGadget, Oct 9, 2022
  13. Ævar Arnfjörð BjarmasonOct 10, 2022
  14. Eric DeCostaOct 14, 2022
  15. 09/12 fsmonitor: implement filesystem change listener for LinuxEric DeCosta via GitGitGadget, Oct 9, 2022
  16. 10/12 fsmonitor: enable fsmonitor for LinuxEric DeCosta via GitGitGadget, Oct 9, 2022
  17. 11/12 fsmonitor: test updatesEric DeCosta via GitGitGadget, Oct 9, 2022
  18. Ævar Arnfjörð BjarmasonOct 18, 2022
  19. 12/12 fsmonitor: update doc for LinuxEric DeCosta via GitGitGadget, Oct 9, 2022
  20. Ævar Arnfjörð BjarmasonOct 18, 2022
  21. Junio C HamanoOct 9, 2022
  22. Eric SunshineOct 10, 2022
  23. Junio C HamanoOct 10, 2022
  24. 00/12 fsmonitor: Implement fsmonitor for LinuxEric DeCosta via GitGitGadget, Oct 14, 2022
  25. 01/12 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Oct 14, 2022
  26. 02/12 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Oct 14, 2022
  27. Ævar Arnfjörð BjarmasonOct 18, 2022
  28. 05/12 fsmonitor: check for compatability before communicating with fsmonitorEric DeCosta via GitGitGadget, Oct 14, 2022
  29. 03/12 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Oct 14, 2022
  30. 04/12 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Oct 14, 2022
  31. 06/12 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Oct 14, 2022
  32. 07/12 fsmonitor: prepare to share code between Mac OS and LinuxEric DeCosta via GitGitGadget, Oct 14, 2022
  33. Junio C HamanoOct 14, 2022
  34. Eric DeCostaOct 17, 2022
  35. Junio C HamanoOct 18, 2022
  36. 10/12 fsmonitor: enable fsmonitor for LinuxEric DeCosta via GitGitGadget, Oct 14, 2022
  37. 11/12 fsmonitor: test updatesEric DeCosta via GitGitGadget, Oct 14, 2022
  38. 09/12 fsmonitor: implement filesystem change listener for LinuxEric DeCosta via GitGitGadget, Oct 14, 2022
  39. Ævar Arnfjörð BjarmasonOct 18, 2022
  40. 08/12 fsmonitor: determine if filesystem is local or remoteEric DeCosta via GitGitGadget, Oct 14, 2022
  41. 12/12 fsmonitor: update doc for LinuxEric DeCosta via GitGitGadget, Oct 14, 2022
  42. Junio C HamanoOct 14, 2022
  43. Eric DeCostaOct 17, 2022
  44. Junio C HamanoOct 17, 2022
  45. Johannes SchindelinOct 18, 2022
  46. Glen ChooOct 17, 2022
  47. Junio C HamanoOct 18, 2022
  48. Glen ChooOct 18, 2022
  49. Junio C HamanoOct 18, 2022
  50. Ævar Arnfjörð BjarmasonOct 19, 2022
  51. Eric SunshineOct 19, 2022
  52. Junio C HamanoOct 19, 2022
  53. Ævar Arnfjörð BjarmasonOct 19, 2022
  54. Eric SunshineOct 19, 2022
  55. Ævar Arnfjörð BjarmasonOct 19, 2022
  56. Junio C HamanoOct 19, 2022
  57. Junio C HamanoOct 20, 2022
  58. Eric SunshineOct 20, 2022
  59. Junio C HamanoOct 20, 2022
  60. Eric SunshineOct 20, 2022
  61. Junio C HamanoOct 20, 2022
  62. Junio C HamanoOct 20, 2022
  63. 0/6 fsmonitor: Implement fsmonitor for LinuxEric DeCosta via GitGitGadget, Nov 16, 2022
  64. 1/6 fsmonitor: prepare to share code between Mac OS and LinuxEric DeCosta via GitGitGadget, Nov 16, 2022
  65. 2/6 fsmonitor: determine if filesystem is local or remoteEric DeCosta via GitGitGadget, Nov 16, 2022
  66. 3/6 fsmonitor: implement filesystem change listener for LinuxEric DeCosta via GitGitGadget, Nov 16, 2022
  67. 4/6 fsmonitor: enable fsmonitor for LinuxEric DeCosta via GitGitGadget, Nov 16, 2022
  68. 5/6 fsmonitor: test updatesEric DeCosta via GitGitGadget, Nov 16, 2022
  69. 6/6 fsmonitor: update doc for LinuxEric DeCosta via GitGitGadget, Nov 16, 2022
  70. Taylor BlauNov 16, 2022
  71. 0/6 fsmonitor: Implement fsmonitor for LinuxEric DeCosta via GitGitGadget, Nov 23, 2022
  72. 1/6 fsmonitor: prepare to share code between Mac OS and LinuxEric DeCosta via GitGitGadget, Nov 23, 2022
  73. 2/6 fsmonitor: determine if filesystem is local or remoteEric DeCosta via GitGitGadget, Nov 23, 2022
  74. Junio C HamanoNov 25, 2022
  75. Ævar Arnfjörð BjarmasonDec 12, 2022
  76. 3/6 fsmonitor: implement filesystem change listener for LinuxEric DeCosta via GitGitGadget, Nov 23, 2022
  77. Ævar Arnfjörð BjarmasonDec 12, 2022
  78. 4/6 fsmonitor: enable fsmonitor for LinuxEric DeCosta via GitGitGadget, Nov 23, 2022
  79. 5/6 fsmonitor: test updatesEric DeCosta via GitGitGadget, Nov 23, 2022
  80. 6/6 fsmonitor: update doc for LinuxEric DeCosta via GitGitGadget, Nov 23, 2022
  81. 0/6 fsmonitor: Implement fsmonitor for LinuxEric DeCosta via GitGitGadget, Dec 12, 2022
  82. 1/6 fsmonitor: prepare to share code between Mac OS and LinuxEric DeCosta via GitGitGadget, Dec 12, 2022
  83. 2/6 fsmonitor: determine if filesystem is local or remoteEric DeCosta via GitGitGadget, Dec 12, 2022
  84. 4/6 fsmonitor: enable fsmonitor for LinuxEric DeCosta via GitGitGadget, Dec 12, 2022
  85. 3/6 fsmonitor: implement filesystem change listener for LinuxEric DeCosta via GitGitGadget, Dec 12, 2022
  86. 5/6 fsmonitor: test updatesEric DeCosta via GitGitGadget, Dec 12, 2022
  87. 6/6 fsmonitor: update doc for LinuxEric DeCosta via GitGitGadget, Dec 12, 2022
  88. Junio C HamanoApr 12, 2023
  89. Ævar Arnfjörð BjarmasonOct 18, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.