-
Notifications
You must be signed in to change notification settings - Fork 171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(cmake): improve shared libs and pkg config files #1842
fix(cmake): improve shared libs and pkg config files #1842
Conversation
Welcome @Apteryks! It looks like this is your first PR to falcosecurity/libs 🎉 |
192681c
to
816a718
Compare
I've now successfully built sysdig against a shared library falcosecurity-libs distinct package with this series, on GNU Guix. |
Hi! Thanks for this PR! cc @federico-sysdig @geraldcombs EDIT: i will edit the PR title and body to follow our template (as per our commit convention: https://github.com/falcosecurity/.github/blob/main/CONTRIBUTING.md#commit-convention) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's an interesting PR and there's excellent work on the corrections for the generated pkgconfig files.
I do believe that something else is desirable for the management of the dependent libraries other than the proposed generator expressions.
I'm curious; I have tried to implement the ability to integrate falcosecurity/libs
in a client project through find_package
, which is a better, more CMake-oriented, way to use a library. This is not to say that pkgconfig should be left behind, just another option. What are your thoughts on that?
I'll get to these in a bit.
My immediate thought on this is that a |
Of course, I wasn't suggesting to change the scope of this PR. |
The "build-shared-libs-macos-amd64" job is failing because CFlags in libscap.pc no longer includes
|
816a718
to
5b0dea2
Compare
The Cflags of the libscap.pc file shouldn't have changed; I've only added two new entries to them. For example, on my machine, the old copy (master) looks like:
With this change it now reads:
Probably this header was found via libsinsp.pc, which was capturing a lot of build-specific, non-installed directories, which I think shouldn't be baked in the generated .pc file. Previously, it looked like:
Now, it looks like:
|
ugh. format code. I thought I had cmake-format'ed everything already. |
d7f10d4
to
507b8f5
Compare
OK, I've run |
/cc @geraldcombs PTAL thanks! |
Hi; there was a single test error, apparently because it was cancelled: https://github.com/falcosecurity/libs/actions/runs/13001896582/job/36273360103 Could it please be retried? |
Done! |
The single test failure looks like:
That only happens on ARM; any ideas what is going on here? |
Never seen that; @therealbobo perhaps can help us? |
Never seen that, I'll build locally to see if the error pops up |
I was able to test this with Stratoshark on macOS, and everything built and ran fine with no modifications required for the .pc files. |
Thanks Gerald! |
This is to so that includes work whether using e.g. #include <scap.h> or #include <libscap/scap.h>, and likewise for libsinp. * userspace/libsinsp/libsinsp.pc.in (Cflags): Add include directive for falcosecurity/driver. * userspace/libscap/libscap.pc.in: Likewise. Also add include directive for uthash. Signed-off-by: Maxim Cournoyer <[email protected]>
* userspace/libpman/libpman.pc.in: New file. * userspace/libpman/CMakeLists.txt: Configure and install it along the libpman header. Signed-off-by: Maxim Cournoyer <[email protected]>
The generated pkg-config files of libscap and libsinsp now makes use of pkg-config Requires and Requires.static fields, which should reduce over-linking when linking to shared libraries. * cmake/modules/BuildPkgConfigDependencies.cmake (add_pkgconfig_library): Add debug messages and fix an issue where IN_LIST had no effect. * cmake/modules/libscap.cmake: Move pkgconfig dependency computation to, pkg-config file configuration to... * userspace/libscap/CMakeLists.txt: ... here, conditionally accumulating Requires and Requires.private values. * userspace/libscap/libscap.pc.in (prefix): Set directly to CMAKE_INSTALL_PREFIX. (Requires, Requires.private): New fields. * userspace/libsinsp/CMakeLists.txt: Separate libraries into pkg-config Requires and Requires.private lists. Add the pkg-config requirements to the ignored link dependencies, since these are now recorded as Requires in the pkg-config file. * userspace/libsinsp/libsinsp.pc.in (Requires): Add @LIBSINSP_REQUIRES@. (Requires.private): New field. (Libs): Remove -lsinsp, automatically computed in SINSP_PKG_CONFIG_LIBS. Signed-off-by: Maxim Cournoyer <[email protected]>
* driver/CMakeLists.txt (DRIVER_SOURCES): Add missing headers. * userspace/libsinsp/test/CMakeLists.txt (unit-test-libsinsp): Link to libgrpc++ to avoid a missing DSO error. * userspace/libscap/CMakeLists.txt: Do not hardcode STATIC type for scap_event_schema and scap_platform libraries, so as to install them (they are referenced in the pkg-config files). Fixes: falcosecurity#1820 Signed-off-by: Maxim Cournoyer <[email protected]>
507b8f5
to
7096eed
Compare
Done! |
@geraldcombs: changing LGTM is restricted to collaborators In response to this: Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/approve
LGTM label has been added. Git tree hash: 041b2a198f1e9774e2b4b16227a4e9654672524f
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: Apteryks, FedeDP The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
What type of PR is this?
/kind bug
Any specific area of the project related to this PR?
/area build
/area libscap-engine-gvisor
/area libpman
/area libsinsp
What this PR does / why we need it:
It sanitizes the generated pkg-config files of libscap.pc and libsinsp.pc, and add missing includes needed to build as shared libraries.
Which issue(s) this PR fixes:
Fixes #1820
Special notes for your reviewer:
Also see #1825, which is not addressed by this PR but can be easily worked around.
Does this PR introduce a user-facing change?: