From 0657113337373fe64e6d0826bce4247fda713fbc Mon Sep 17 00:00:00 2001 From: Brian O'Connor Date: Wed, 5 Jan 2022 15:37:24 -0500 Subject: [PATCH 1/2] Add depends to p4rt debian package libswsscommon is actually linked statically, so not technically a dependency, but it is installed anyway by the build system so there's no harm either. libswsscommon pulls in transitive libraries we do need: libhiredis, libnl*, libc, libgcc, libstdc++ libgmpxx4ldbl required for p4_symbolic --- p4rt_app/BUILD.bazel | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/p4rt_app/BUILD.bazel b/p4rt_app/BUILD.bazel index 7dcd4d7bc..97c5fa36a 100644 --- a/p4rt_app/BUILD.bazel +++ b/p4rt_app/BUILD.bazel @@ -68,6 +68,17 @@ pkg_tar( visibility = ["//visibility:private"], ) +# Here's how to generate the list of Debian packages that contain the shared +# libraries that the p4rt binary depends on. It's probably better to manually +# manage the "depends" list in p4rt_deb, but this can help in debugging when +# a dependency (or transitive dependency) changes. +# +# ldd bazel-out/k8-fastbuild/bin/p4rt_app/p4rt | \ +# sed "s/^[[:space:]]*\([^ ]*\.so[^ ]*\).*$/\1/" | \ +# xargs -n1 -I{} bash -c "dpkg -S {} 2>/dev/null || true" | \ +# cut -d: -f1 | \ +# sort -u +# pkg_deb( name = "p4rt_deb", architecture = "amd64", @@ -82,6 +93,10 @@ pkg_deb( name = "p4rt_dbg_deb", architecture = "amd64", data = ":p4rt_debug", + depends = [ + "libswsscommon", + "libgmpxx4ldbl", + ], description = "P4RT service debug symbols", maintainer = p4rt_maintainer, package = "sonic-p4rt-dbgsym", From 7c3080eb2c9960aa575fd5c437a8ec4b62b8008a Mon Sep 17 00:00:00 2001 From: Brian O'Connor Date: Wed, 5 Jan 2022 15:40:46 -0500 Subject: [PATCH 2/2] fixup --- p4rt_app/BUILD.bazel | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/p4rt_app/BUILD.bazel b/p4rt_app/BUILD.bazel index 97c5fa36a..d3689eae7 100644 --- a/p4rt_app/BUILD.bazel +++ b/p4rt_app/BUILD.bazel @@ -83,6 +83,10 @@ pkg_deb( name = "p4rt_deb", architecture = "amd64", data = ":p4rt_binaries", + depends = [ + "libswsscommon", + "libgmpxx4ldbl", + ], description = "P4RT service", maintainer = p4rt_maintainer, package = "sonic-p4rt", @@ -94,8 +98,7 @@ pkg_deb( architecture = "amd64", data = ":p4rt_debug", depends = [ - "libswsscommon", - "libgmpxx4ldbl", + "sonic-p4rt", ], description = "P4RT service debug symbols", maintainer = p4rt_maintainer,