summaryrefslogtreecommitdiffhomepage
path: root/auto
diff options
context:
space:
mode:
authorAva Hahn <a.hahn@f5.com>2024-11-07 14:14:28 -0800
committerAva Hahn <110854134+avahahn@users.noreply.github.com>2024-11-12 09:50:02 -0800
commit9d3dcb800aba0c036b032ccd00197712c3f5d0d9 (patch)
tree60492891a92e91e5a83040fd43a0513c0e093270 /auto
parent8b697101818d8d2257a5421d21020c02e0802907 (diff)
downloadunit-9d3dcb800aba0c036b032ccd00197712c3f5d0d9.tar.gz
unit-9d3dcb800aba0c036b032ccd00197712c3f5d0d9.tar.bz2
otel: add build tooling to include otel code
Adds the --otel flag to the configure command and the various build time variables and checks that are needed in this flow. It also includes the nxt_otel.c and nxt_otel.h files that are needed for the rest of Unit to talk to the compiled static library that's generated from the rust crate. Signed-off-by: Ava Hahn <a.hahn@f5.com> Co-authored-by: Gabor Javorszky <g.javorszky@f5.com> Signed-off-by: Gabor Javorszky <g.javorszky@f5.com>
Diffstat (limited to 'auto')
-rw-r--r--auto/help2
-rw-r--r--auto/make54
-rw-r--r--auto/options2
-rw-r--r--auto/otel54
-rw-r--r--auto/sources4
-rw-r--r--auto/summary1
6 files changed, 106 insertions, 11 deletions
diff --git a/auto/help b/auto/help
index 6a6aee19..94854762 100644
--- a/auto/help
+++ b/auto/help
@@ -52,6 +52,8 @@ cat << END
--njs enable njs library usage
+ --otel enable otel library usage
+
--debug enable debug logging
--fuzz=ENGINE enable fuzz testing
diff --git a/auto/make b/auto/make
index f21a2dfc..183e95c7 100644
--- a/auto/make
+++ b/auto/make
@@ -7,7 +7,6 @@
$echo "creating $NXT_MAKEFILE"
-
cat << END > $NXT_MAKEFILE
# Pretty print compiler etc actions...
@@ -22,6 +21,8 @@ AR = $AR
EXTRA_CFLAGS =
CFLAGS = $NXT_CFLAGS $NXT_CC_OPT $CFLAGS \$(EXTRA_CFLAGS)
+RUST_FLAGS =
+NXT_OTEL_LIB_LOC =
NXT_EXEC_LINK = $NXT_EXEC_LINK $NXT_LD_OPT
NXT_SHARED_LOCAL_LINK = $NXT_SHARED_LOCAL_LINK $NXT_LD_OPT
@@ -62,6 +63,9 @@ D := 0
ifeq (\$D,1)
CFLAGS += -O0
+ RUST_FLAGS += --debug
+else
+ RUST_FLAGS += --release
endif
# Optionally disable -Werror with
@@ -76,6 +80,18 @@ END
fi
+# potentially set otel lib location
+if [ $NXT_OTEL = YES ]; then
+cat << END >> $NXT_MAKEFILE
+
+ifeq (\$D,1)
+ NXT_OTEL_LIB_LOC = $NXT_OTEL_LIB_DIR/target/debug/libotel.a
+else
+ NXT_OTEL_LIB_LOC = $NXT_OTEL_LIB_DIR/target/release/libotel.a
+endif
+
+END
+fi
# The include paths list.
@@ -138,14 +154,14 @@ cat << END >> $NXT_MAKEFILE
libnxt: $NXT_BUILD_DIR/lib/$NXT_LIB_SHARED $NXT_BUILD_DIR/lib/$NXT_LIB_STATIC
-$NXT_BUILD_DIR/lib/$NXT_LIB_SHARED: \$(NXT_LIB_OBJS)
+$NXT_BUILD_DIR/lib/$NXT_LIB_SHARED: \$(NXT_LIB_OBJS) \$(NXT_OTEL_LIB_LOC)
\$(PP_LD) \$@
\$(v)\$(NXT_SHARED_LOCAL_LINK) -o \$@ \$(NXT_LIB_OBJS) \\
- $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
+ $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS \$(NXT_OTEL_LIB_LOC)
-$NXT_BUILD_DIR/lib/$NXT_LIB_STATIC: \$(NXT_LIB_OBJS)
+$NXT_BUILD_DIR/lib/$NXT_LIB_STATIC: \$(NXT_LIB_OBJS) \$(NXT_OTEL_LIB_LOC)
\$(PP_AR) \$@
- \$(v)$NXT_STATIC_LINK \$@ \$(NXT_LIB_OBJS)
+ \$(v)$NXT_STATIC_LINK \$@ \$(NXT_LIB_OBJS) \$(NXT_OTEL_LIB_LOC)
$NXT_BUILD_DIR/lib/$NXT_LIB_UNIT_STATIC: \$(NXT_LIB_UNIT_OBJS) \\
$NXT_BUILD_DIR/share/pkgconfig/unit.pc \\
@@ -359,11 +375,11 @@ $echo >> $NXT_MAKEFILE
cat << END >> $NXT_MAKEFILE
$NXT_BUILD_DIR/sbin/$NXT_DAEMON: $NXT_BUILD_DIR/lib/$NXT_LIB_STATIC \\
- \$(NXT_OBJS)
+ \$(NXT_OBJS) \$(NXT_OTEL_LIB_LOC)
\$(PP_LD) \$@
\$(v)\$(NXT_EXEC_LINK) -o \$@ \$(CFLAGS) \\
\$(NXT_OBJS) $NXT_BUILD_DIR/lib/$NXT_LIB_STATIC \\
- $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS
+ $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS \$(NXT_OTEL_LIB_LOC)
END
@@ -535,10 +551,6 @@ cat << END > Makefile
include $NXT_MAKEFILE
-.PHONY: clean
-clean:
- rm -rf $NXT_BUILD_DIR *.dSYM Makefile
-
.PHONY: help
help:
@echo "Variables to control make/build behaviour:"
@@ -551,4 +563,24 @@ help:
@echo
@echo " Variables can be combined."
+.PHONY: clean
+clean:
+ rm -rf $NXT_BUILD_DIR *.dSYM Makefile
+END
+
+if [ $NXT_OTEL = YES ]; then
+ cat << END >> Makefile
+ cd "$NXT_OTEL_LIB_DIR" && cargo clean
END
+
+NXT_OTEL_DEPS=" \
+ build/src/nxt_otel.o \
+ src/otel/src/lib.rs \
+"
+
+ cat << END >> $NXT_MAKEFILE
+
+\$(NXT_OTEL_LIB_LOC): $NXT_OTEL_DEPS
+ cargo build \$(RUST_FLAGS) --manifest-path $NXT_OTEL_LIB_DIR/Cargo.toml
+END
+fi
diff --git a/auto/options b/auto/options
index 5be1ebe1..7aa7a73a 100644
--- a/auto/options
+++ b/auto/options
@@ -27,6 +27,7 @@ NXT_CYASSL=NO
NXT_POLARSSL=NO
NXT_NJS=NO
+NXT_OTEL=NO
NXT_TEST_BUILD_EPOLL=NO
NXT_TEST_BUILD_EVENTPORT=NO
@@ -112,6 +113,7 @@ do
--polarssl) NXT_POLARSSL=YES ;;
--njs) NXT_NJS=YES ;;
+ --otel) NXT_OTEL=YES ;;
--test-build-epoll) NXT_TEST_BUILD_EPOLL=YES ;;
--test-build-eventport) NXT_TEST_BUILD_EVENTPORT=YES ;;
diff --git a/auto/otel b/auto/otel
new file mode 100644
index 00000000..654c45ec
--- /dev/null
+++ b/auto/otel
@@ -0,0 +1,54 @@
+
+# Copyright (C) NGINX, Inc.
+
+if [ $NXT_OTEL = YES ]; then
+
+ $echo "checking for OTEL requirements:"
+
+ $echo -n " - checking for rust compiler ... "
+ if [ -z $(which rustc 2>/dev/null) ]; then
+ $echo "not found"
+ exit 1;
+ fi
+ $echo "found"
+
+ $echo -n " - checking for cargo ... "
+ if [ -z $(which cargo 2>/dev/null) ]; then
+ $echo "not found."
+ exit 1;
+ fi
+ $echo "found"
+
+ $echo -n " - "
+
+ nxt_feature="OpenSSL library"
+ nxt_feature_run=yes
+ nxt_feature_incs=
+ nxt_feature_libs="-lssl -lcrypto"
+ nxt_feature_test="#include <openssl/ssl.h>
+
+ int main(void) {
+ SSL_library_init();
+ return 0;
+ }"
+ . auto/feature
+
+ if [ ! $nxt_found = yes ]; then
+ $echo
+ $echo $0: error: OpenTelemetry support requires OpenSSL.
+ $echo
+ exit 1;
+ fi
+
+ NXT_OTEL_LIBS="-lssl -lcrypto"
+ if [ $(which pkg-config) ]; then
+ NXT_OTEL_LIBS="$(pkg-config openssl --cflags --libs)"
+ fi
+ cat << END >> $NXT_AUTO_CONFIG_H
+
+#ifndef NXT_HAVE_OTEL
+#define NXT_HAVE_OTEL 1
+#endif
+
+END
+fi
diff --git a/auto/sources b/auto/sources
index dfabf7cf..02740397 100644
--- a/auto/sources
+++ b/auto/sources
@@ -127,6 +127,10 @@ if [ "$NXT_NJS" != "NO" ]; then
NXT_LIB_SRCS="$NXT_LIB_SRCS src/nxt_js.c src/nxt_http_js.c src/nxt_script.c"
fi
+if [ "$NXT_OTEL" != "NO" ]; then
+ NXT_LIB_SRCS="$NXT_LIB_SRCS src/nxt_otel.c"
+fi
+
NXT_LIB_EPOLL_SRCS="src/nxt_epoll_engine.c"
NXT_LIB_KQUEUE_SRCS="src/nxt_kqueue_engine.c"
NXT_LIB_EVENTPORT_SRCS="src/nxt_eventport_engine.c"
diff --git a/auto/summary b/auto/summary
index b6caee6c..eba88be4 100644
--- a/auto/summary
+++ b/auto/summary
@@ -30,6 +30,7 @@ Unit configuration summary:
TLS support: ............... $NXT_OPENSSL
Regex support: ............. $NXT_REGEX
njs support: ............... $NXT_NJS
+ otel support: .............. $NXT_OTEL
process isolation: ......... $NXT_ISOLATION
cgroupv2: .................. $NXT_HAVE_CGROUP