lf- / nix-otel

Nix OpenTelemetry sender plugin
MIT License
57 stars 5 forks source link

Fails to build with nixpkgs `e18dc963075ed115afb3e312b64643bf8fd4b474` #14

Open Strum355 opened 1 year ago

Strum355 commented 1 year ago

Adding lf-/nix-otel as a flake input just plainly like inputs.nix-otel.url = "github:lf-/nix-otel" is at the time of writing using nixpkgs at e18dc963075ed115afb3e312b64643bf8fd4b474, which results in nix-otel failing to build with:

error: failed to run custom build command for `nix-otel-plugin v0.1.0 (/build/lbp1hzd0jkz0yb4vsb5bhh8zpnas9sa4-source/plugin)`

Caused by:
  process didn't exit successfully: `/build/lbp1hzd0jkz0yb4vsb5bhh8zpnas9sa4-source/target/release/build/nix-otel-plugin-255deb3acbf14320/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-changed=plugin.cpp
  cargo:rerun-if-env-changed=NIX_EXPR_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=NIX_EXPR_STATIC
  cargo:rerun-if-env-changed=NIX_EXPR_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=SYSROOT
  cargo:rerun-if-env-changed=NIX_EXPR_STATIC
  cargo:rerun-if-env-changed=NIX_EXPR_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rustc-link-search=native=/nix/store/sb6085v95h0ndaqxfyx3nfny0jsl34nx-nix-2.15.1/lib
  cargo:rustc-link-search=native=/nix/store/40b3c3014a9vfmzhkmcy12q169gj00hj-boehm-gc-8.2.2/lib
  cargo:rustc-link-lib=nixexpr
  cargo:rustc-link-lib=nixstore
  cargo:rustc-link-lib=nixutil
  cargo:rustc-link-lib=gc
  cargo:rustc-link-lib=pthread
  cargo:rustc-link-lib=dl
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=NIX_EXPR_STATIC
  cargo:rerun-if-env-changed=NIX_EXPR_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=NIX_STORE_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=NIX_STORE_STATIC
  cargo:rerun-if-env-changed=NIX_STORE_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=SYSROOT
  cargo:rerun-if-env-changed=NIX_STORE_STATIC
  cargo:rerun-if-env-changed=NIX_STORE_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rustc-link-search=native=/nix/store/sb6085v95h0ndaqxfyx3nfny0jsl34nx-nix-2.15.1/lib
  cargo:rustc-link-lib=nixstore
  cargo:rustc-link-lib=nixutil
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=NIX_STORE_STATIC
  cargo:rerun-if-env-changed=NIX_STORE_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=NIX_MAIN_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=NIX_MAIN_STATIC
  cargo:rerun-if-env-changed=NIX_MAIN_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=SYSROOT
  cargo:rerun-if-env-changed=NIX_MAIN_STATIC
  cargo:rerun-if-env-changed=NIX_MAIN_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rustc-link-search=native=/nix/store/sb6085v95h0ndaqxfyx3nfny0jsl34nx-nix-2.15.1/lib
  cargo:rustc-link-lib=nixmain
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=NIX_MAIN_STATIC
  cargo:rerun-if-env-changed=NIX_MAIN_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rustc-link-lib=static:+whole-archive=nix_otel_plugin
  cargo:rustc-link-search=native=/build/lbp1hzd0jkz0yb4vsb5bhh8zpnas9sa4-source/target/x86_64-unknown-linux-gnu/release/build/nix-otel-plugin-7c50f747a47f816d/out
  running: "/nix/store/8phn3d072kcfvwvf6p5ys8pk8yxh236x-gcc-wrapper-12.3.0/bin/c++" "-O2" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-shared" "-Wall" "-Wextra" "-std=c++17" "-isystem" "/nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix" "-isystem" "/nix/store/9dl9q57qi7283rhsxdli56gy002ndw3r-boehm-gc-8.2.2-dev/include" "-L\"/nix/store/sb6085v95h0ndaqxfyx3nfny0jsl>
  cargo:warning=plugin.cpp:125:33: error: 'FormatOrString' does not name a type
  cargo:warning=  125 |   void log(Verbosity lvl, const FormatOrString &fs) override {
  cargo:warning=      |                                 ^~~~~~~~~~~~~~
  cargo:warning=plugin.cpp:125:8: error: 'void OTelLogger::log(nix::Verbosity, const int&)' marked 'override', but does not override
  cargo:warning=  125 |   void log(Verbosity lvl, const FormatOrString &fs) override {
  cargo:warning=      |        ^~~
  cargo:warning=plugin.cpp: In member function 'void OTelLogger::log(nix::Verbosity, const int&)':
  cargo:warning=plugin.cpp:126:24: error: invalid conversion from 'int' to 'const char*' [-fpermissive]
  cargo:warning=  126 |     upstream->log(lvl, fs);
  cargo:warning=      |                        ^~
  cargo:warning=      |                        |
  cargo:warning=      |                        int
  cargo:warning=In file included from /nix/store/sa3kirarbizwzyz36j8cbac2kgyh28yk-gcc-12.3.0/include/c++/12.3.0/bits/basic_string.h:47,
  cargo:warning=                 from /nix/store/sa3kirarbizwzyz36j8cbac2kgyh28yk-gcc-12.3.0/include/c++/12.3.0/string:53,
  cargo:warning=                 from /nix/store/sa3kirarbizwzyz36j8cbac2kgyh28yk-gcc-12.3.0/include/c++/12.3.0/stdexcept:39,
  cargo:warning=                 from /nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/ref.hh:6,
  cargo:warning=                 from /nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/types.hh:4,
  cargo:warning=                 from /nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/symbol-table.hh:8,
  cargo:warning=                 from /nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/value.hh:6,
  cargo:warning=                 from /nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/nixexpr.hh:7,
  cargo:warning=                 from /nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/attr-set.hh:4,
  cargo:warning=                 from /nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/eval.hh:4,
  cargo:warning=                 from /nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/eval-inline.hh:4,
  cargo:warning=                 from plugin.cpp:4:
  cargo:warning=/nix/store/sa3kirarbizwzyz36j8cbac2kgyh28yk-gcc-12.3.0/include/c++/12.3.0/string_view:133:39: note:   initializing argument 1 of 'constexpr std::basic_string_view<_CharT, _Traits>::basic_string_view(const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>]'
  cargo:warning=  133 |       basic_string_view(const _CharT* __str) noexcept
  cargo:warning=      |                         ~~~~~~~~~~~~~~^~~~~
  cargo:warning=plugin.cpp: In constructor 'PluginInstance::PluginInstance()':
  cargo:warning=plugin.cpp:171:47: error: invalid new-expression of abstract class type 'OTelLogger'
  cargo:warning=  171 |     logger = new OTelLogger(oldLogger, context);
  cargo:warning=      |                                               ^
  cargo:warning=plugin.cpp:111:7: note:   because the following virtual functions are pure within 'OTelLogger':
  cargo:warning=  111 | class OTelLogger : public Logger {
  cargo:warning=      |       ^~~~~~~~~~
  cargo:warning=In file included from /nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/util.hh:6,
  cargo:warning=                 from /nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/value/context.hh:4,
  cargo:warning=                 from /nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/value.hh:7:
  cargo:warning=/nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix/logging.hh:82:18: note:     'virtual void nix::Logger::log(nix::Verbosity, std::string_view)'
  cargo:warning=   82 |     virtual void log(Verbosity lvl, std::string_view s) = 0;
  cargo:warning=      |                  ^~~
  exit status: 1

  --- stderr

  error occurred: Command "/nix/store/8phn3d072kcfvwvf6p5ys8pk8yxh236x-gcc-wrapper-12.3.0/bin/c++" "-O2" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-shared" "-Wall" "-Wextra" "-std=c++17" "-isystem" "/nix/store/mkw78bb1dzqzcw527506bcszv2fnm8pm-nix-2.15.1-dev/include/nix" "-isystem" "/nix/store/9dl9q57qi7283rhsxdli56gy002ndw3r-boehm-gc-8.2.2-dev/include" "-L\"/nix/store/sb6085v95h0nd>
ghuntley commented 1 month ago

FormatOrString was removed circa May 2023 - https://github.com/NixOS/nix/pull/7942/files#diff-582ac9be5f0df2848431cd328c50c3c0475e1636ac2f5d9a88b2fdcedc01cc10R18

Rough changes needed to get nix-otel to compile follow....

--- a/plugin/src/activity.rs
+++ b/plugin/src/activity.rs
@@ -83,7 +83,7 @@ pub unsafe fn unmarshal_string(s: &FfiString) -> String {
 pub unsafe fn unmarshal_field(field: &FfiField) -> Field {
     match field {
         FfiField::String(s) => Field::String(unsafe { unmarshal_string(s) }),
-        FfiField::Num(n) => (Field::Num(*n)),
+        FfiField::Num(n) => Field::Num(*n),
     }
 }
--- a/plugin/plugin.cpp
+++ b/plugin/plugin.cpp
@@ -122,8 +122,8 @@ public:

   bool isVerbose() override { return upstream->isVerbose(); }

-  void log(Verbosity lvl, const FormatOrString &fs) override {
-    upstream->log(lvl, fs);
+  void log(Verbosity lvl, std::string_view s) override {
+    upstream->log(lvl, s);
   }

   void logEI(const ErrorInfo &ei) override { upstream->logEI(ei); }
lf- commented 1 month ago

I should really probably archive this repo. It's a proof of concept mostly, and isn't actively updated to new Nix versions.