From 1f6378cd9a91c1bec32a9b5e6272eb5bfa92aeb1 Mon Sep 17 00:00:00 2001 From: Dima Korolev Date: Wed, 26 Jun 2024 17:30:36 +0800 Subject: [PATCH 1/9] Uncommented `macos-latest` in GH action runs. --- .github/workflows/run.yml | 2 +- .github/workflows/test.yml | 2 +- .github/workflows/timings.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/run.yml b/.github/workflows/run.yml index c293311..382c933 100644 --- a/.github/workflows/run.yml +++ b/.github/workflows/run.yml @@ -12,7 +12,7 @@ jobs: run: strategy: matrix: - os: [ubuntu-latest] #, macos-latest] + os: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - name: git clone diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7bc971a..90e7bea 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: run: strategy: matrix: - os: [ubuntu-latest] #, macos-latest] + os: [ubuntu-latest, macos-latest] test_make_target: [test, debug_test] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/timings.yml b/.github/workflows/timings.yml index cdb7072..6f379a1 100644 --- a/.github/workflows/timings.yml +++ b/.github/workflows/timings.yml @@ -12,7 +12,7 @@ jobs: run: strategy: matrix: - os: [ubuntu-latest] #, macos-latest] + os: [ubuntu-latest, macos-latest] test_make_target: [release, debug] runs-on: ${{ matrix.os }} steps: From 4f4f9ee99226c8027b4e1f8edd38f0a817159f2d Mon Sep 17 00:00:00 2001 From: Dima Korolev Date: Wed, 26 Jun 2024 17:44:25 +0800 Subject: [PATCH 2/9] Minor tweak. --- src/lib_c5t_logger.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib_c5t_logger.h b/src/lib_c5t_logger.h index 48d0076..97b3485 100644 --- a/src/lib_c5t_logger.h +++ b/src/lib_c5t_logger.h @@ -64,6 +64,7 @@ struct C5T_LOGGER_SINGLETON_Holder final { ptr = &impl; return impl; } + template C5T_LOGGER_SINGLETON_Interface& Val() { if (ptr == nullptr) { return C5T_LOGGER_CREATE_SINGLETON(); From 38e76809a4ca4859d1f9930c1eab98c00b66de79 Mon Sep 17 00:00:00 2001 From: Dima Korolev Date: Wed, 26 Jun 2024 18:03:14 +0800 Subject: [PATCH 3/9] Employing `C5T_DLIB`. --- Makefile | 2 +- src/lib_c5t_logger.h | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 753fc2e..89b0b33 100644 --- a/Makefile +++ b/Makefile @@ -56,7 +56,7 @@ fmt: ${CLANG_FORMAT} -i src/*.cc src/*.h CMakeLists.txt: - @curl -s https://raw.githubusercontent.com/C5T/Current/stable/cmake/CMakeLists.txt >$@ + @curl -s https://raw.githubusercontent.com/dimacurrentai/Current/c5t_dlib_symbol/cmake/CMakeLists.txt >$@ .gitignore: @touch .gitignore diff --git a/src/lib_c5t_logger.h b/src/lib_c5t_logger.h index 97b3485..05e20c9 100644 --- a/src/lib_c5t_logger.h +++ b/src/lib_c5t_logger.h @@ -55,8 +55,10 @@ struct C5T_LOGGER_SINGLETON_Interface { virtual C5T_LOGGER_Interface& operator[](std::string const& log_file_name) = 0; }; +#ifndef C5T_DLIB // NOTE(dkorolev): This is deliberately not "pimpl", since it's not to be used from `dlib_*.cc` sources! C5T_LOGGER_SINGLETON_Interface& C5T_LOGGER_CREATE_SINGLETON(); +#endif struct C5T_LOGGER_SINGLETON_Holder final { C5T_LOGGER_SINGLETON_Interface* ptr = nullptr; @@ -64,10 +66,14 @@ struct C5T_LOGGER_SINGLETON_Holder final { ptr = &impl; return impl; } - template C5T_LOGGER_SINGLETON_Interface& Val() { if (ptr == nullptr) { +#ifndef C5T_DLIB return C5T_LOGGER_CREATE_SINGLETON(); +#else + std::cerr << "FATAL: No logger initialized.\n"; + *reinterpret_cast(0) = 42; +#endif } return *ptr; } @@ -88,7 +94,9 @@ void C5T_LOGGER_USE(T&& wrapper) { C5T_LOGGER_USE(wrapper.Logger()); } +#ifndef C5T_DLIB inline void C5T_LOGGER_SET_LOGS_DIR(std::string dir) { current::logger::C5T_LOGGER_CREATE_SINGLETON().SetLogsDir(dir); } +#endif #define C5T_LOGGER_LIST(cb) C5T_LOGGER().C5T_LOGGER_LIST_Impl(cb) #define C5T_LOGGER_FIND(key, cb_found, cb_notfound) C5T_LOGGER().C5T_LOGGER_FIND_Impl(key, cb_found, cb_notfound) From d8e599c093919f38cbe89cf7a3e37adab707478e Mon Sep 17 00:00:00 2001 From: Dima Korolev Date: Wed, 26 Jun 2024 18:08:04 +0800 Subject: [PATCH 4/9] Employing `C5T_DLIB` for the actor model too. --- src/lib_c5t_actor_model.h | 7 +++++++ src/lib_c5t_logger.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib_c5t_actor_model.h b/src/lib_c5t_actor_model.h index 8b3419c..b24f61b 100644 --- a/src/lib_c5t_actor_model.h +++ b/src/lib_c5t_actor_model.h @@ -425,11 +425,18 @@ struct ActorModelInjectableInstance final { std::atomic p = std::atomic(nullptr); C5T_ACTOR_MODEL_Interface& Get() { if (!p) { +#ifndef C5T_DLIB p = &GetSingleton(); +#else + std::cerr << "FATAL: No actor model.\n"; + __builtin_trap(); +#endif } return *p; } +#ifndef C5T_DLIB C5T_ACTOR_MODEL_Interface& GetSingleton(); +#endif }; inline C5T_ACTOR_MODEL_Interface& C5T_ACTOR_MODEL_INSTANCE() { diff --git a/src/lib_c5t_logger.h b/src/lib_c5t_logger.h index 05e20c9..d5f6ffc 100644 --- a/src/lib_c5t_logger.h +++ b/src/lib_c5t_logger.h @@ -72,7 +72,7 @@ struct C5T_LOGGER_SINGLETON_Holder final { return C5T_LOGGER_CREATE_SINGLETON(); #else std::cerr << "FATAL: No logger initialized.\n"; - *reinterpret_cast(0) = 42; + __builtin_trap(); #endif } return *ptr; From 8d9c63d54350b413ebaf570c67581baa6b38841b Mon Sep 17 00:00:00 2001 From: Dima Korolev Date: Wed, 26 Jun 2024 18:10:16 +0800 Subject: [PATCH 5/9] And that Apple fix. --- src/lib_c5t_dlib.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lib_c5t_dlib.cc b/src/lib_c5t_dlib.cc index fd587cd..31c4729 100644 --- a/src/lib_c5t_dlib.cc +++ b/src/lib_c5t_dlib.cc @@ -66,7 +66,11 @@ class C5T_DLib_Impl final : public C5T_DLib { }; inline decltype(auto) StructStatIntoKey(struct stat const& data) { +#ifndef APPLE return std::make_tuple(data.st_ino, data.st_mtim.tv_sec, data.st_mtim.tv_nsec); +#else // APPLE + return std::make_tuple(data.st_ino, data.st_mtimespec.tv_sec, data.st_mtimespec.tv_nsec); +#endif } class C5T_DLibs_Manager final : public C5T_DLibs_Manager_Interface { From 1de8da6524dead601ec4dd8f54f480bb05b1a2ac Mon Sep 17 00:00:00 2001 From: Dima Korolev Date: Thu, 27 Jun 2024 08:11:19 +0800 Subject: [PATCH 6/9] OS X fixes, thanks to `dimacurrentai/exec_on_macos` experiments. --- src/lib_c5t_dlib.cc | 4 ++-- src/lib_c5t_popen2.cc | 11 +++++------ src/test_c5t_popen2.cc | 24 ++++++++++++------------ times_to_rebuild.sh | 10 +++++++++- 4 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/lib_c5t_dlib.cc b/src/lib_c5t_dlib.cc index 31c4729..f91c6eb 100644 --- a/src/lib_c5t_dlib.cc +++ b/src/lib_c5t_dlib.cc @@ -66,9 +66,9 @@ class C5T_DLib_Impl final : public C5T_DLib { }; inline decltype(auto) StructStatIntoKey(struct stat const& data) { -#ifndef APPLE +#ifndef CURRENT_APPLE return std::make_tuple(data.st_ino, data.st_mtim.tv_sec, data.st_mtim.tv_nsec); -#else // APPLE +#else // CURRENT_APPLE return std::make_tuple(data.st_ino, data.st_mtimespec.tv_sec, data.st_mtimespec.tv_nsec); #endif } diff --git a/src/lib_c5t_popen2.cc b/src/lib_c5t_popen2.cc index 3c95273..23e7aa8 100644 --- a/src/lib_c5t_popen2.cc +++ b/src/lib_c5t_popen2.cc @@ -141,9 +141,9 @@ void C5T_POPEN2(std::vector const& cmdline, return std::thread( [](std::function cb_line, int read_fd, int terminate_fd) { struct pollfd fds[2]; - fds[0].fd = read_fd; + fds[0].fd = terminate_fd; fds[0].events = POLLIN; - fds[1].fd = terminate_fd; + fds[1].fd = read_fd; fds[1].events = POLLIN; char buf[1000]; @@ -153,6 +153,9 @@ void C5T_POPEN2(std::vector const& cmdline, while (true) { ::poll(fds, 2, -1); if (fds[0].revents & POLLIN) { + // NOTE(dkorolev): Termination signaled. + break; + } else if (fds[1].revents & POLLIN) { ssize_t const n = ::read(read_fd, buf, sizeof(buf) - 1); if (n < 0) { // NOTE(dkorolev): This may or may not be a major issue. @@ -161,10 +164,6 @@ void C5T_POPEN2(std::vector const& cmdline, } buf[n] = '\0'; grouper.Feed(buf); - } else if (fds[1].revents & POLLIN) { - // NOTE(dkorolev): Termination signaled. - // std::cerr << __LINE__ << std::endl; - break; } } }, diff --git a/src/test_c5t_popen2.cc b/src/test_c5t_popen2.cc index ae49017..c8129e9 100644 --- a/src/test_c5t_popen2.cc +++ b/src/test_c5t_popen2.cc @@ -10,26 +10,26 @@ TEST(Popen2Test, Smoke) { std::string result; - C5T_POPEN2({"/usr/bin/bash", "-c", "echo PASS"}, [&result](std::string const& line) { result = line; }); + C5T_POPEN2({"/bin/bash", "-c", "echo PASS"}, [&result](std::string const& line) { result = line; }); EXPECT_EQ(result, "PASS"); } TEST(Popen2Test, WithDelay) { std::string result; - C5T_POPEN2({"/usr/bin/bash", "-c", "sleep 0.01; echo PASS2"}, [&result](std::string const& line) { result = line; }); + C5T_POPEN2({"/bin/bash", "-c", "sleep 0.01; echo PASS2"}, [&result](std::string const& line) { result = line; }); EXPECT_EQ(result, "PASS2"); } TEST(Popen2Test, InnerBashBecauseParentheses) { std::string result; - C5T_POPEN2({"/usr/bin/bash", "-c", "(sleep 0.01; echo PASS3)"}, + C5T_POPEN2({"/bin/bash", "-c", "(sleep 0.01; echo PASS3)"}, [&result](std::string const& line) { result = line; }); EXPECT_EQ(result, "PASS3"); } TEST(Popen2Test, ThreePrints) { std::string result; - C5T_POPEN2({"/usr/bin/bash", "-c", "echo ONE; sleep 0.01; echo TWO; sleep 0.01; echo THREE"}, + C5T_POPEN2({"/bin/bash", "-c", "echo ONE; sleep 0.01; echo TWO; sleep 0.01; echo THREE"}, [&result](std::string const& line) { result += line + ' '; }); ASSERT_EQ(result, "ONE TWO THREE "); } @@ -37,7 +37,7 @@ TEST(Popen2Test, ThreePrints) { TEST(Popen2Test, KillsSuccessfully) { bool nope = false; C5T_POPEN2( - {"/usr/bin/bash", "-c", "sleep 10; echo NOPE"}, + {"/bin/bash", "-c", "sleep 10; echo NOPE"}, [&nope](std::string const&) { nope = true; }, [](Popen2Runtime& run) { std::this_thread::sleep_for(std::chrono::milliseconds(5)); @@ -49,7 +49,7 @@ TEST(Popen2Test, KillsSuccessfully) { TEST(Popen2Test, ReadsStdin) { std::string c; C5T_POPEN2( - {"/usr/bin/bash", "-c", "read A; read B; echo $((A+B))"}, + {"/bin/bash", "-c", "read A; read B; echo $((A+B))"}, [&c](std::string const& line) { c = line; }, [](Popen2Runtime& run) { run("1\n2\n"); }); ASSERT_EQ(c, "3"); @@ -58,7 +58,7 @@ TEST(Popen2Test, ReadsStdin) { TEST(Popen2Test, ReadsStdinForever) { std::string result = "result:"; C5T_POPEN2( - {"/usr/bin/bash", + {"/bin/bash", "-c", "while true; do read A; read B; C=$((A+B)); if [ $C == '0' ]; then exit; fi; echo $C; done"}, [&result](std::string const& line) { result += ' ' + line; }, @@ -68,13 +68,13 @@ TEST(Popen2Test, ReadsStdinForever) { TEST(Popen2Test, MultipleOutputLines) { std::string result = "result:"; - C5T_POPEN2({"/usr/bin/bash", "-c", "seq 10"}, [&result](std::string const& line) { result += ' ' + line; }); + C5T_POPEN2({"/bin/bash", "-c", "seq 10"}, [&result](std::string const& line) { result += ' ' + line; }); ASSERT_EQ(result, "result: 1 2 3 4 5 6 7 8 9 10"); } TEST(Popen2Test, MultipleOutputLinesWithMath) { std::string result = "result:"; - C5T_POPEN2({"/usr/bin/bash", "-c", "for i in $(seq 3 7) ; do echo $((i * i)) ; done"}, + C5T_POPEN2({"/bin/bash", "-c", "for i in $(seq 3 7) ; do echo $((i * i)) ; done"}, [&result](std::string const& line) { result += ' ' + line; }); ASSERT_EQ(result, "result: 9 16 25 36 49"); } @@ -88,7 +88,7 @@ TEST(Popen2Test, ReadsStdinAndCanBeKilled) { current::WaitableAtomic ctx; std::thread t([&ctx]() { C5T_POPEN2( - {"/usr/bin/bash", "-c", "while true; do read A; read B; C=$((A+B)); echo $C; done"}, + {"/bin/bash", "-c", "while true; do read A; read B; C=$((A+B)); echo $C; done"}, [&ctx](std::string const& line) { ctx.MutableScopedAccessor()->sums.push_back(current::FromString(line)); }, @@ -123,7 +123,7 @@ TEST(Popen2Test, Stderr) { std::string text_stdout; std::string text_stderr; C5T_POPEN2( - {"/usr/bin/bash", "-c", "echo out; echo err >/dev/stderr"}, + {"/bin/bash", "-c", "echo out; echo err >/dev/stderr"}, [&text_stdout](std::string const& s) { text_stdout = s; }, [](Popen2Runtime&) {}, [&text_stderr](std::string const& s) { text_stderr = s; }); @@ -134,7 +134,7 @@ TEST(Popen2Test, Stderr) { TEST(Popen2Test, Env) { std::string result; C5T_POPEN2( - {"/usr/bin/bash", "-c", "echo $FOO"}, + {"/bin/bash", "-c", "echo $FOO"}, [&result](std::string const& s) { result = s; }, [](Popen2Runtime&) {}, [](std::string const& unused_stderr) { static_cast(unused_stderr); }, diff --git a/times_to_rebuild.sh b/times_to_rebuild.sh index ebf05d3..48e4d22 100755 --- a/times_to_rebuild.sh +++ b/times_to_rebuild.sh @@ -4,8 +4,16 @@ TGT=${1:-release} set -e +if [[ "$OSTYPE" == "darwin"* ]]; then + echo 'NOTE: On MacOS time is only measured down to seconds. TODO(dkorolev): figure out how to use `date +%N` on MacOS.' +fi + function now_ms { - echo $(( $(date +%s%N) / 1000000 )) + if [[ "$OSTYPE" == "darwin"* ]]; then + echo "$(date +%s)000" + else + echo $(( $(date +%s%N) / 1000000 )) + fi } echo 'Running `make '$TGT'` first.' From 73ad987fd1bb913c8872f1f417d7ec1e6d91ea54 Mon Sep 17 00:00:00 2001 From: Dima Korolev Date: Thu, 27 Jun 2024 08:36:44 +0800 Subject: [PATCH 7/9] Made it just `bash`, not `/bin/bash`. --- src/test_c5t_popen2.cc | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/test_c5t_popen2.cc b/src/test_c5t_popen2.cc index c8129e9..10ca829 100644 --- a/src/test_c5t_popen2.cc +++ b/src/test_c5t_popen2.cc @@ -10,26 +10,26 @@ TEST(Popen2Test, Smoke) { std::string result; - C5T_POPEN2({"/bin/bash", "-c", "echo PASS"}, [&result](std::string const& line) { result = line; }); + C5T_POPEN2({"bash", "-c", "echo PASS"}, [&result](std::string const& line) { result = line; }); EXPECT_EQ(result, "PASS"); } TEST(Popen2Test, WithDelay) { std::string result; - C5T_POPEN2({"/bin/bash", "-c", "sleep 0.01; echo PASS2"}, [&result](std::string const& line) { result = line; }); + C5T_POPEN2({"bash", "-c", "sleep 0.01; echo PASS2"}, [&result](std::string const& line) { result = line; }); EXPECT_EQ(result, "PASS2"); } TEST(Popen2Test, InnerBashBecauseParentheses) { std::string result; - C5T_POPEN2({"/bin/bash", "-c", "(sleep 0.01; echo PASS3)"}, + C5T_POPEN2({"bash", "-c", "(sleep 0.01; echo PASS3)"}, [&result](std::string const& line) { result = line; }); EXPECT_EQ(result, "PASS3"); } TEST(Popen2Test, ThreePrints) { std::string result; - C5T_POPEN2({"/bin/bash", "-c", "echo ONE; sleep 0.01; echo TWO; sleep 0.01; echo THREE"}, + C5T_POPEN2({"bash", "-c", "echo ONE; sleep 0.01; echo TWO; sleep 0.01; echo THREE"}, [&result](std::string const& line) { result += line + ' '; }); ASSERT_EQ(result, "ONE TWO THREE "); } @@ -37,7 +37,7 @@ TEST(Popen2Test, ThreePrints) { TEST(Popen2Test, KillsSuccessfully) { bool nope = false; C5T_POPEN2( - {"/bin/bash", "-c", "sleep 10; echo NOPE"}, + {"bash", "-c", "sleep 10; echo NOPE"}, [&nope](std::string const&) { nope = true; }, [](Popen2Runtime& run) { std::this_thread::sleep_for(std::chrono::milliseconds(5)); @@ -49,7 +49,7 @@ TEST(Popen2Test, KillsSuccessfully) { TEST(Popen2Test, ReadsStdin) { std::string c; C5T_POPEN2( - {"/bin/bash", "-c", "read A; read B; echo $((A+B))"}, + {"bash", "-c", "read A; read B; echo $((A+B))"}, [&c](std::string const& line) { c = line; }, [](Popen2Runtime& run) { run("1\n2\n"); }); ASSERT_EQ(c, "3"); @@ -58,7 +58,7 @@ TEST(Popen2Test, ReadsStdin) { TEST(Popen2Test, ReadsStdinForever) { std::string result = "result:"; C5T_POPEN2( - {"/bin/bash", + {"bash", "-c", "while true; do read A; read B; C=$((A+B)); if [ $C == '0' ]; then exit; fi; echo $C; done"}, [&result](std::string const& line) { result += ' ' + line; }, @@ -68,13 +68,13 @@ TEST(Popen2Test, ReadsStdinForever) { TEST(Popen2Test, MultipleOutputLines) { std::string result = "result:"; - C5T_POPEN2({"/bin/bash", "-c", "seq 10"}, [&result](std::string const& line) { result += ' ' + line; }); + C5T_POPEN2({"bash", "-c", "seq 10"}, [&result](std::string const& line) { result += ' ' + line; }); ASSERT_EQ(result, "result: 1 2 3 4 5 6 7 8 9 10"); } TEST(Popen2Test, MultipleOutputLinesWithMath) { std::string result = "result:"; - C5T_POPEN2({"/bin/bash", "-c", "for i in $(seq 3 7) ; do echo $((i * i)) ; done"}, + C5T_POPEN2({"bash", "-c", "for i in $(seq 3 7) ; do echo $((i * i)) ; done"}, [&result](std::string const& line) { result += ' ' + line; }); ASSERT_EQ(result, "result: 9 16 25 36 49"); } @@ -88,7 +88,7 @@ TEST(Popen2Test, ReadsStdinAndCanBeKilled) { current::WaitableAtomic ctx; std::thread t([&ctx]() { C5T_POPEN2( - {"/bin/bash", "-c", "while true; do read A; read B; C=$((A+B)); echo $C; done"}, + {"bash", "-c", "while true; do read A; read B; C=$((A+B)); echo $C; done"}, [&ctx](std::string const& line) { ctx.MutableScopedAccessor()->sums.push_back(current::FromString(line)); }, @@ -123,7 +123,7 @@ TEST(Popen2Test, Stderr) { std::string text_stdout; std::string text_stderr; C5T_POPEN2( - {"/bin/bash", "-c", "echo out; echo err >/dev/stderr"}, + {"bash", "-c", "echo out; echo err >/dev/stderr"}, [&text_stdout](std::string const& s) { text_stdout = s; }, [](Popen2Runtime&) {}, [&text_stderr](std::string const& s) { text_stderr = s; }); @@ -134,7 +134,7 @@ TEST(Popen2Test, Stderr) { TEST(Popen2Test, Env) { std::string result; C5T_POPEN2( - {"/bin/bash", "-c", "echo $FOO"}, + {"bash", "-c", "echo $FOO"}, [&result](std::string const& s) { result = s; }, [](Popen2Runtime&) {}, [](std::string const& unused_stderr) { static_cast(unused_stderr); }, From 3ae14b94a06443b2b3582cc4f3a88f9e3a74764f Mon Sep 17 00:00:00 2001 From: Dima Korolev Date: Thu, 27 Jun 2024 08:46:20 +0800 Subject: [PATCH 8/9] Commented out the questionable part for OS X. --- run.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/run.sh b/run.sh index fc48773..761e5f9 100755 --- a/run.sh +++ b/run.sh @@ -84,6 +84,8 @@ assert_get_eq "/dlib_reload/gitignored" "reloaded" assert_get_eq "/dlib_reload/gitignored" "up to date" assert_get_eq "/dlib/gitignored" "has foo(): injected" +# NOTE(dkorolev): Looks like OS X does not invalidate its own `dlib`-s cache. I intend to look into this later. +if ! [[ "$OSTYPE" == "darwin"* ]]; then cat >src/dlib_ext_gitignored.cc < #include @@ -93,6 +95,7 @@ extern "C" void OnUnload() { std::cout << "re_injected::OnUnload()" << std::endl EOF make assert_get_eq "/dlib/gitignored" "has foo(): re-injected" +fi get "/seq/100" >/dev/null & PID=$1 From 7bd151d1b71672e9a98db4b210a682a8cdb824ab Mon Sep 17 00:00:00 2001 From: Dima Korolev Date: Thu, 27 Jun 2024 08:48:31 +0800 Subject: [PATCH 9/9] Moving back to `CMakeLists.txt` from `C5T/Current/stable`, as https://github.com/C5T/Current/pull/1004 is merged in. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 89b0b33..753fc2e 100644 --- a/Makefile +++ b/Makefile @@ -56,7 +56,7 @@ fmt: ${CLANG_FORMAT} -i src/*.cc src/*.h CMakeLists.txt: - @curl -s https://raw.githubusercontent.com/dimacurrentai/Current/c5t_dlib_symbol/cmake/CMakeLists.txt >$@ + @curl -s https://raw.githubusercontent.com/C5T/Current/stable/cmake/CMakeLists.txt >$@ .gitignore: @touch .gitignore