You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This pull request adds support for Ubuntu 22.04 in BESS. Fixes#1056. Overview of the changes made:
Fixed g++-11 (default in Ubuntu 22.04) warnings in core/modules/l2_forward.cc (-Werror=maybe-uninitialized), core/utils/exact_match_table.h (-Werror=nonnull).
Updated DPDK 19.11 for newer kernels (Ubuntu 22.04 uses either 5.15 or 6.8 by default):
deps/linux_5_9.patch: Kernel v5.9 removed the task_struct pointer from get_user_pages_remote. Updated kernel/linux/kni/kni_dev.h with newer get_user_pages_remote and fixed a fallthrough warning (-Wimplicit-fallthrough) in kernel/linux/igb/igb_uio.c.
build.py: Now checking for version greater than or equal to 5.9 and applying the above patch. These changes depend on the packaging module in python3.
Upgraded to python3 (default in Ubuntu 22.04):
bessctl/sugar.py: parser module is not present in python v3.10. Made changes to use the ast module instead.
Updated core/Makefile: Now linking libpcap, and libgrpc++ dynamically. Statically linking them results in issues due to change in dependencies in Ubuntu 22.04. libpcap depends on libdbus and libsystemd. libsystemd does not have a static library as part of its package. Linking libgrpc++ statically results in unresolved libssl symbols, potentially due to a version mismatch in Ubuntu 22.04's libssl and the one libgrpc++ was written with.
Modified core/kmod/sn_ethtool.c to include ethtool.h for struct ethtool_drvinfo. While the code compiles successfully on older kernel versions (Ubuntu 18.04) without this include, Ubuntu 22.04 reports 'invalid use of undefined type struct ethtool_drvinfo'. Now including ethtool.h explicitly rather than relying on transitive includes.
I was trying to install BESS using your repo on Ubuntu 22.04 with gcc-11. I am guessing its a kernel and gcc version mismatch. If you could let me know any specific setting that I need to use, would be of great help.
No special configurations, I tested it on Ubuntu 22.04, kernel version 5.15 and gcc 11.4.0. The -ftrivial-auto-var-init flag was introduced in gcc-12 so it makes sense that gcc-11 does not recognize it in your case. Here are the flags being added in my case while compiling igb_uio.c in DPDK 19.11 (ftrivial-auto-var-init is not there):
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request adds support for Ubuntu 22.04 in BESS. Fixes #1056. Overview of the changes made:
get_user_pages_remote. Updated kernel/linux/kni/kni_dev.h with newerget_user_pages_remoteand fixed a fallthrough warning (-Wimplicit-fallthrough) in kernel/linux/igb/igb_uio.c.struct ethtool_drvinfo. While the code compiles successfully on older kernel versions (Ubuntu 18.04) without this include, Ubuntu 22.04 reports 'invalid use of undefined type struct ethtool_drvinfo'. Now including ethtool.h explicitly rather than relying on transitive includes.