mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 14:23:38 +00:00
bpftools: update to standalone bpftools + libbpf, use the latest version
This commit is contained in:
parent
a8c7197cf1
commit
fabfc44859
@ -56,7 +56,6 @@ KERNEL_MAKE := \
|
|||||||
LLVM=1 CC="$(CLANG)" LD="$(TARGET_CROSS)ld" \
|
LLVM=1 CC="$(CLANG)" LD="$(TARGET_CROSS)ld" \
|
||||||
HOSTCC="$(HOSTCC)" \
|
HOSTCC="$(HOSTCC)" \
|
||||||
HOSTCXX="$(HOSTCXX)" \
|
HOSTCXX="$(HOSTCXX)" \
|
||||||
HOST_LOADLIBES="-L$(STAGING_DIR_HOST)/lib" \
|
|
||||||
KBUILD_HOSTLDLIBS="-L$(STAGING_DIR_HOST)/lib" \
|
KBUILD_HOSTLDLIBS="-L$(STAGING_DIR_HOST)/lib" \
|
||||||
CONFIG_SHELL="$(BASH)" \
|
CONFIG_SHELL="$(BASH)" \
|
||||||
INSTALL_HDR_PATH="$(PKG_BUILD_DIR)/user_headers"
|
INSTALL_HDR_PATH="$(PKG_BUILD_DIR)/user_headers"
|
||||||
|
76
package/network/config/qosify/Makefile
Normal file
76
package/network/config/qosify/Makefile
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2021 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
|
PKG_NAME:=qosify
|
||||||
|
PKG_SOURCE_URL=$(PROJECT_GIT)/project/qosify.git
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_SOURCE_DATE:=2022-04-08
|
||||||
|
PKG_SOURCE_VERSION:=ef82defaae26619e5b2ebddfdd86e9de61c399f1
|
||||||
|
PKG_MIRROR_HASH:=8e4ca65d23a85aad774af51dc62cfaa4615111ffd2c7922258ac8f026a62b013
|
||||||
|
PKG_RELEASE:=$(AUTORELEASE)
|
||||||
|
|
||||||
|
PKG_LICENSE:=GPL-2.0
|
||||||
|
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
|
PKG_BUILD_DEPENDS:=bpf-headers
|
||||||
|
PKG_FLAGS:=nonshared
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
include $(INCLUDE_DIR)/cmake.mk
|
||||||
|
include $(INCLUDE_DIR)/bpf.mk
|
||||||
|
include $(INCLUDE_DIR)/nls.mk
|
||||||
|
|
||||||
|
define Package/qosify
|
||||||
|
SECTION:=utils
|
||||||
|
CATEGORY:=Base system
|
||||||
|
TITLE:=A simple QoS solution based eBPF + CAKE
|
||||||
|
DEPENDS:=+libbpf +libubox +libubus +libnl-tiny +kmod-sched-cake +kmod-sched-bpf +kmod-ifb +tc $(BPF_DEPENDS)
|
||||||
|
endef
|
||||||
|
|
||||||
|
TARGET_CFLAGS += \
|
||||||
|
-Wno-error=deprecated-declarations \
|
||||||
|
-I$(STAGING_DIR)/usr/include/libnl-tiny \
|
||||||
|
-I$(STAGING_DIR)/usr/include
|
||||||
|
|
||||||
|
CMAKE_OPTIONS += \
|
||||||
|
-DLIBNL_LIBS=-lnl-tiny
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
$(call CompileBPF,$(PKG_BUILD_DIR)/qosify-bpf.c)
|
||||||
|
$(Build/Compile/Default)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/qosify/conffiles
|
||||||
|
/etc/config/qosify
|
||||||
|
/etc/qosify/00-defaults.conf
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/qosify/install
|
||||||
|
$(INSTALL_DIR) \
|
||||||
|
$(1)/lib/bpf \
|
||||||
|
$(1)/usr/sbin \
|
||||||
|
$(1)/etc/init.d \
|
||||||
|
$(1)/etc/config \
|
||||||
|
$(1)/etc/qosify \
|
||||||
|
$(1)/etc/hotplug.d/net \
|
||||||
|
$(1)/etc/hotplug.d/iface
|
||||||
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/qosify-bpf.o $(1)/lib/bpf
|
||||||
|
$(INSTALL_BIN) \
|
||||||
|
$(PKG_INSTALL_DIR)/usr/bin/qosify \
|
||||||
|
./files/qosify-status \
|
||||||
|
$(1)/usr/sbin/
|
||||||
|
$(INSTALL_BIN) ./files/qosify.init $(1)/etc/init.d/qosify
|
||||||
|
$(INSTALL_DATA) ./files/qosify-defaults.conf $(1)/etc/qosify/00-defaults.conf
|
||||||
|
$(INSTALL_DATA) ./files/qosify.conf $(1)/etc/config/qosify
|
||||||
|
$(INSTALL_DATA) ./files/qosify.hotplug $(1)/etc/hotplug.d/net/10-qosify
|
||||||
|
$(INSTALL_DATA) ./files/qosify.hotplug $(1)/etc/hotplug.d/iface/10-qosify
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,qosify))
|
17
package/network/config/qosify/files/qosify-defaults.conf
Normal file
17
package/network/config/qosify/files/qosify-defaults.conf
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# DNS
|
||||||
|
tcp:53 voice
|
||||||
|
tcp:5353 voice
|
||||||
|
udp:53 voice
|
||||||
|
udp:5353 voice
|
||||||
|
|
||||||
|
# NTP
|
||||||
|
udp:123 voice
|
||||||
|
|
||||||
|
# SSH
|
||||||
|
tcp:22 +video
|
||||||
|
|
||||||
|
# HTTP/QUIC
|
||||||
|
tcp:80 +besteffort
|
||||||
|
tcp:443 +besteffort
|
||||||
|
udp:80 +besteffort
|
||||||
|
udp:443 +besteffort
|
70
package/network/config/qosify/files/qosify-status
Normal file
70
package/network/config/qosify/files/qosify-status
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
. /usr/share/libubox/jshn.sh
|
||||||
|
|
||||||
|
dev_status() {
|
||||||
|
tc -s qdisc sh dev "$1" root
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
common_status() {
|
||||||
|
json_get_vars ifname ingress egress
|
||||||
|
|
||||||
|
[ -n "$ifname" ] || return
|
||||||
|
|
||||||
|
[ "$egress" -gt 0 ] && {
|
||||||
|
echo "egress status:"
|
||||||
|
dev_status "$ifname"
|
||||||
|
}
|
||||||
|
[ "$ingress" -gt 0 ] && {
|
||||||
|
echo "ingress status:"
|
||||||
|
dev_status "$(printf %.16s "ifb-$ifname")"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
is_active() {
|
||||||
|
json_get_vars active
|
||||||
|
|
||||||
|
[ "${active:-0}" -gt 0 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
device_status() {
|
||||||
|
local name="$2"
|
||||||
|
|
||||||
|
json_select "$name"
|
||||||
|
|
||||||
|
if is_active; then
|
||||||
|
status="active"
|
||||||
|
else
|
||||||
|
status="not found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "===== device $name: $status ====="
|
||||||
|
|
||||||
|
is_active && common_status
|
||||||
|
|
||||||
|
json_select ..
|
||||||
|
}
|
||||||
|
|
||||||
|
interface_status() {
|
||||||
|
local name="$2"
|
||||||
|
|
||||||
|
json_select "$name"
|
||||||
|
|
||||||
|
if is_active; then
|
||||||
|
status="active"
|
||||||
|
elif ubus -S -t 0 wait_for "network.interface.$name"; then
|
||||||
|
status="down"
|
||||||
|
else
|
||||||
|
status="not found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "===== interface $name: $status ====="
|
||||||
|
|
||||||
|
is_active && common_status
|
||||||
|
|
||||||
|
json_select ..
|
||||||
|
}
|
||||||
|
|
||||||
|
json_load "$(ubus call qosify status)"
|
||||||
|
json_for_each_item device_status devices
|
||||||
|
json_for_each_item interface_status interfaces
|
48
package/network/config/qosify/files/qosify.conf
Normal file
48
package/network/config/qosify/files/qosify.conf
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
config defaults
|
||||||
|
list defaults /etc/qosify/*.conf
|
||||||
|
option dscp_prio video
|
||||||
|
option dscp_icmp +besteffort
|
||||||
|
option dscp_default_udp besteffort
|
||||||
|
option prio_max_avg_pkt_len 500
|
||||||
|
|
||||||
|
config class besteffort
|
||||||
|
option ingress CS0
|
||||||
|
option egress CS0
|
||||||
|
|
||||||
|
config class bulk
|
||||||
|
option ingress LE
|
||||||
|
option egress LE
|
||||||
|
|
||||||
|
config class video
|
||||||
|
option ingress AF41
|
||||||
|
option egress AF41
|
||||||
|
|
||||||
|
config class voice
|
||||||
|
option ingress CS6
|
||||||
|
option egress CS6
|
||||||
|
option bulk_trigger_pps 100
|
||||||
|
option bulk_trigger_timeout 5
|
||||||
|
option dscp_bulk CS0
|
||||||
|
|
||||||
|
config interface wan
|
||||||
|
option name wan
|
||||||
|
option disabled 1
|
||||||
|
option bandwidth_up 100mbit
|
||||||
|
option bandwidth_down 100mbit
|
||||||
|
option overhead_type none
|
||||||
|
# defaults:
|
||||||
|
option ingress 1
|
||||||
|
option egress 1
|
||||||
|
option mode diffserv4
|
||||||
|
option nat 1
|
||||||
|
option host_isolate 1
|
||||||
|
option autorate_ingress 0
|
||||||
|
option ingress_options ""
|
||||||
|
option egress_options ""
|
||||||
|
option options ""
|
||||||
|
|
||||||
|
config device wandev
|
||||||
|
option disabled 1
|
||||||
|
option name wan
|
||||||
|
option bandwidth 100mbit
|
||||||
|
|
2
package/network/config/qosify/files/qosify.hotplug
Normal file
2
package/network/config/qosify/files/qosify.hotplug
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
ubus call qosify check_devices
|
171
package/network/config/qosify/files/qosify.init
Normal file
171
package/network/config/qosify/files/qosify.init
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
# Copyright (c) 2021 OpenWrt.org
|
||||||
|
|
||||||
|
START=19
|
||||||
|
|
||||||
|
USE_PROCD=1
|
||||||
|
PROG=/usr/sbin/qosify
|
||||||
|
|
||||||
|
add_option() {
|
||||||
|
local type="$1"
|
||||||
|
local name="$2"
|
||||||
|
|
||||||
|
config_get val "$cfg" "$name"
|
||||||
|
|
||||||
|
[ -n "$val" ] && json_add_$type "$name" "$val"
|
||||||
|
}
|
||||||
|
|
||||||
|
add_flow_config() {
|
||||||
|
local cfg="$1"
|
||||||
|
|
||||||
|
add_option string dscp_prio
|
||||||
|
add_option string dscp_bulk
|
||||||
|
add_option int bulk_trigger_timeout
|
||||||
|
add_option int bulk_trigger_pps
|
||||||
|
add_option int prio_max_avg_pkt_len
|
||||||
|
}
|
||||||
|
|
||||||
|
add_defaults() {
|
||||||
|
cfg="$1"
|
||||||
|
|
||||||
|
json_add_boolean reset 1
|
||||||
|
|
||||||
|
config_get files "$cfg" defaults
|
||||||
|
json_add_array files
|
||||||
|
for i in $files; do
|
||||||
|
json_add_string "" "$i"
|
||||||
|
done
|
||||||
|
json_close_array
|
||||||
|
|
||||||
|
add_flow_config "$cfg"
|
||||||
|
add_option int timeout
|
||||||
|
add_option string dscp_icmp
|
||||||
|
add_option string dscp_default_udp
|
||||||
|
add_option string dscp_default_tcp
|
||||||
|
}
|
||||||
|
|
||||||
|
add_interface() {
|
||||||
|
local cfg="$1"
|
||||||
|
|
||||||
|
config_get_bool disabled "$cfg" disabled 0
|
||||||
|
[ "$disabled" -gt 0 ] && return
|
||||||
|
|
||||||
|
config_get name "$cfg" name
|
||||||
|
json_add_object "$name"
|
||||||
|
|
||||||
|
config_get bw "$cfg" bandwidth
|
||||||
|
|
||||||
|
config_get bw_up "$cfg" bandwidth_up
|
||||||
|
bw_up="${bw_up:-$bw}"
|
||||||
|
[ -n "$bw_up" ] && json_add_string bandwidth_up "$bw_up"
|
||||||
|
|
||||||
|
config_get bw_down "$cfg" bandwidth_down
|
||||||
|
bw_down="${bw_down:-$bw}"
|
||||||
|
[ -n "$bw_down" ] && json_add_string bandwidth_down "$bw_down"
|
||||||
|
|
||||||
|
add_option string bandwidth
|
||||||
|
add_option boolean ingress
|
||||||
|
add_option boolean egress
|
||||||
|
add_option string mode
|
||||||
|
add_option boolean nat
|
||||||
|
add_option boolean host_isolate
|
||||||
|
add_option boolean autorate_ingress
|
||||||
|
add_option string ingress_options
|
||||||
|
add_option string egress_options
|
||||||
|
|
||||||
|
config_get user_options "$cfg" options
|
||||||
|
|
||||||
|
config_get otype "$cfg" overhead_type
|
||||||
|
options=
|
||||||
|
case "$otype" in
|
||||||
|
none);;
|
||||||
|
manual)
|
||||||
|
config_get overhead "$cfg" overhead
|
||||||
|
[ -n "$overhead" ] && append options "overhead $overhead"
|
||||||
|
|
||||||
|
config_get encap "$cfg" overhead_encap
|
||||||
|
[ -n "$encap" ] && append options "$encap"
|
||||||
|
;;
|
||||||
|
conservative|\
|
||||||
|
pppoa-vcmux|\
|
||||||
|
pppoa-llc|\
|
||||||
|
pppoe-vcmux|\
|
||||||
|
pppoe-llcsnap|\
|
||||||
|
bridged-vcmux|\
|
||||||
|
bridged-llcsnap|\
|
||||||
|
ipoa-vcmux|\
|
||||||
|
ipoa-llcsnap|\
|
||||||
|
pppoe-ptm|\
|
||||||
|
bridged-ptm|\
|
||||||
|
docsis|\
|
||||||
|
ethernet)
|
||||||
|
append options "$otype"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
config_get mpu "$cfg" overhead_mpu
|
||||||
|
[ -n "$mpu" ] && append options "mpu $mpu"
|
||||||
|
|
||||||
|
config_get ovlan "$cfg" overhead_vlan
|
||||||
|
[ "${ovlan:-0}" -ge 2 ] && append options "ether-vlan"
|
||||||
|
[ "${ovlan:-0}" -ge 1 ] && append options "ether-vlan"
|
||||||
|
|
||||||
|
[ -n "$user_options" ] && append options "$user_options"
|
||||||
|
[ -n "$options" ] && json_add_string options "$options"
|
||||||
|
|
||||||
|
json_close_object
|
||||||
|
}
|
||||||
|
|
||||||
|
add_class() {
|
||||||
|
local cfg="$1"
|
||||||
|
|
||||||
|
config_get value "$cfg" value
|
||||||
|
config_get ingress "$cfg" ingress
|
||||||
|
config_get egress "$cfg" egress
|
||||||
|
|
||||||
|
json_add_object "$cfg"
|
||||||
|
json_add_string ingress "${ingress:-$value}"
|
||||||
|
json_add_string egress "${egress:-$value}"
|
||||||
|
add_flow_config "$cfg"
|
||||||
|
json_close_object
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
reload_service() {
|
||||||
|
json_init
|
||||||
|
|
||||||
|
config_load qosify
|
||||||
|
|
||||||
|
config_foreach add_defaults defaults
|
||||||
|
|
||||||
|
json_add_object interfaces
|
||||||
|
config_foreach add_interface interface
|
||||||
|
json_close_object
|
||||||
|
|
||||||
|
json_add_object classes
|
||||||
|
config_foreach add_class class
|
||||||
|
config_foreach add_class alias
|
||||||
|
json_close_object
|
||||||
|
|
||||||
|
json_add_object devices
|
||||||
|
config_foreach add_interface device
|
||||||
|
json_close_object
|
||||||
|
|
||||||
|
ubus call qosify config "$(json_dump)"
|
||||||
|
}
|
||||||
|
|
||||||
|
service_triggers() {
|
||||||
|
procd_add_reload_trigger qosify
|
||||||
|
}
|
||||||
|
|
||||||
|
start_service() {
|
||||||
|
procd_open_instance
|
||||||
|
procd_set_param command "$PROG"
|
||||||
|
procd_set_param respawn
|
||||||
|
procd_close_instance
|
||||||
|
}
|
||||||
|
|
||||||
|
service_started() {
|
||||||
|
ubus -t 10 wait_for qosify
|
||||||
|
[ $? = 0 ] && reload_service
|
||||||
|
}
|
@ -8,12 +8,14 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=bpftools
|
PKG_NAME:=bpftools
|
||||||
PKG_VERSION:=5.11.16
|
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=linux-$(PKG_VERSION).tar.xz
|
PKG_SOURCE_URL:=https://github.com/libbpf/bpftool
|
||||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/v5.x
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_HASH:=21163681d130cbce5a6be39019e2c69e44f284855ddd70b1a3bd039249540f43
|
PKG_SOURCE_DATE:=2022-03-08
|
||||||
|
PKG_SOURCE_VERSION:=04c465fd1f561f67796dc68bbfe1aa7cfa956c3c
|
||||||
|
PKG_MIRROR_HASH:=e22a954cd186f43228a96586bbdc120b11e6c87360ab88ae96ba37afb9c7cb58
|
||||||
|
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
|
||||||
|
|
||||||
PKG_MAINTAINER:=Tony Ambardar <itugrok@yahoo.com>
|
PKG_MAINTAINER:=Tony Ambardar <itugrok@yahoo.com>
|
||||||
|
|
||||||
@ -21,16 +23,6 @@ PKG_USE_MIPS16:=0
|
|||||||
PKG_BUILD_PARALLEL:=1
|
PKG_BUILD_PARALLEL:=1
|
||||||
PKG_INSTALL:=1
|
PKG_INSTALL:=1
|
||||||
|
|
||||||
LINUX_VERSION:=$(PKG_VERSION)
|
|
||||||
LINUX_TLD:=linux-$(LINUX_VERSION)
|
|
||||||
|
|
||||||
BPF_FILES:= \
|
|
||||||
kernel/bpf scripts tools/Makefile tools/bpf tools/perf/perf-sys.h \
|
|
||||||
tools/arch tools/build tools/include tools/lib tools/scripts
|
|
||||||
TAR_OPTIONS+= \
|
|
||||||
--transform="s;$(LINUX_TLD)/;$(PKG_NAME)-$(PKG_VERSION)/;" \
|
|
||||||
$(addprefix $(LINUX_TLD)/,$(BPF_FILES))
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
include $(INCLUDE_DIR)/nls.mk
|
include $(INCLUDE_DIR)/nls.mk
|
||||||
|
|
||||||
@ -77,7 +69,7 @@ define Package/libbpf
|
|||||||
TITLE:=libbpf - eBPF helper library
|
TITLE:=libbpf - eBPF helper library
|
||||||
VARIANT:=lib
|
VARIANT:=lib
|
||||||
LICENSE:=LGPL-2.1 OR BSD-2-Clause
|
LICENSE:=LGPL-2.1 OR BSD-2-Clause
|
||||||
ABI_VERSION:=0
|
ABI_VERSION:=$(PKG_ABI_VERSION)
|
||||||
URL:=http://www.kernel.org
|
URL:=http://www.kernel.org
|
||||||
DEPENDS:=+libelf
|
DEPENDS:=+libelf
|
||||||
endef
|
endef
|
||||||
@ -93,55 +85,43 @@ ifneq ($(BUILD_VARIANT),lib)
|
|||||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(BUILD_VARIANT),full)
|
||||||
|
full:=1
|
||||||
|
else
|
||||||
|
full:=0
|
||||||
|
endif
|
||||||
|
|
||||||
MAKE_VARS = \
|
MAKE_VARS = \
|
||||||
EXTRA_CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
|
EXTRA_CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
|
||||||
LDFLAGS="$(TARGET_LDFLAGS)"
|
LDFLAGS="$(TARGET_LDFLAGS)"
|
||||||
|
|
||||||
MAKE_FLAGS += \
|
MAKE_FLAGS += \
|
||||||
BPFTOOL_VERSION="$(LINUX_VERSION)" \
|
|
||||||
FEATURES_DUMP="$(PKG_BUILD_DIR)/FEATURE-DUMP.openwrt" \
|
|
||||||
OUTPUT="$(PKG_BUILD_DIR)/" \
|
OUTPUT="$(PKG_BUILD_DIR)/" \
|
||||||
prefix="/usr" \
|
prefix="/usr" \
|
||||||
$(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='')
|
$(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \
|
||||||
|
LIBSUBDIR=lib \
|
||||||
|
check_feat=0 \
|
||||||
|
feature-clang-bpf-co-re=0 \
|
||||||
|
feature-reallocarray=1 \
|
||||||
|
feature-zlib=1 \
|
||||||
|
feature-libbfd=$(full) \
|
||||||
|
feature-libcap=0 \
|
||||||
|
feature-disassembler-four-args=$(full)
|
||||||
|
|
||||||
ifeq ($(BUILD_VARIANT),full)
|
ifeq ($(BUILD_VARIANT),lib)
|
||||||
HAVE_LIBBFD:=1
|
MAKE_PATH = libbpf/src
|
||||||
HAVE_LIBCAP:=0
|
else
|
||||||
HAVE_CLANG:=0
|
MAKE_PATH = src
|
||||||
MAKE_PATH:=tools/bpf/bpftool
|
|
||||||
else ifeq ($(BUILD_VARIANT),minimal)
|
|
||||||
HAVE_LIBBFD:=0
|
|
||||||
HAVE_LIBCAP:=0
|
|
||||||
HAVE_CLANG:=0
|
|
||||||
MAKE_PATH:=tools/bpf/bpftool
|
|
||||||
else ifeq ($(BUILD_VARIANT),lib)
|
|
||||||
HAVE_LIBBFD:=0
|
|
||||||
HAVE_LIBCAP:=0
|
|
||||||
HAVE_CLANG:=0
|
|
||||||
MAKE_PATH:=tools/lib/bpf
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Perform a "throw-away" make to create a FEATURE-DUMP.* file to edit later.
|
|
||||||
# The "//" in the make target is actually needed, very unPOSIXly.
|
|
||||||
define Build/Configure
|
|
||||||
+$(MAKE_VARS) $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/tools/bpf/bpftool \
|
|
||||||
$(MAKE_FLAGS) FEATURES_DUMP= $(PKG_BUILD_DIR)//libbpf/libbpf.a
|
|
||||||
(cd $(PKG_BUILD_DIR); cat FEATURE-DUMP.bpftool libbpf/FEATURE-DUMP.libbpf \
|
|
||||||
| sort | uniq > FEATURE-DUMP.openwrt)
|
|
||||||
$(SED) 's/feature-libbfd=1/feature-libbfd=$(HAVE_LIBBFD)/' \
|
|
||||||
-e 's/feature-libcap=1/feature-libcap=$(HAVE_LIBCAP)/' \
|
|
||||||
-e 's/feature-clang-bpf-co-re=1/feature-clang-bpf-co-re=$(HAVE_CLANG)/' \
|
|
||||||
$(PKG_BUILD_DIR)/FEATURE-DUMP.openwrt
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Build/InstallDev/libbpf
|
define Build/InstallDev/libbpf
|
||||||
$(INSTALL_DIR) $(1)/usr/include/bpf
|
$(INSTALL_DIR) $(1)/usr/include/bpf
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/include/bpf/*.h $(1)/usr/include/bpf/
|
$(CP) $(PKG_INSTALL_DIR)/usr/include/bpf/*.h $(1)/usr/include/bpf/
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib$(LIB_SUFFIX)/libbpf.{a,so*} \
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libbpf.{a,so*} \
|
||||||
$(1)/usr/lib/
|
$(1)/usr/lib/
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib$(LIB_SUFFIX)/pkgconfig/libbpf.pc \
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libbpf.pc \
|
||||||
$(1)/usr/lib/pkgconfig/
|
$(1)/usr/lib/pkgconfig/
|
||||||
$(SED) 's,/usr/include,$$$${prefix}/include,g' \
|
$(SED) 's,/usr/include,$$$${prefix}/include,g' \
|
||||||
$(1)/usr/lib/pkgconfig/libbpf.pc
|
$(1)/usr/lib/pkgconfig/libbpf.pc
|
||||||
@ -161,7 +141,7 @@ endef
|
|||||||
|
|
||||||
define Package/libbpf/install
|
define Package/libbpf/install
|
||||||
$(INSTALL_DIR) $(1)/usr/lib
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib$(LIB_SUFFIX)/libbpf.so.* $(1)/usr/lib/
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libbpf.so.* $(1)/usr/lib/
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,libbpf))
|
$(eval $(call BuildPackage,libbpf))
|
||||||
|
10
package/network/utils/bpftools/patches/001-cflags.patch
Normal file
10
package/network/utils/bpftools/patches/001-cflags.patch
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
--- a/libbpf/src/Makefile
|
||||||
|
+++ b/libbpf/src/Makefile
|
||||||
|
@@ -25,6 +25,7 @@ ALL_CFLAGS := $(INCLUDES)
|
||||||
|
|
||||||
|
SHARED_CFLAGS += -fPIC -fvisibility=hidden -DSHARED
|
||||||
|
|
||||||
|
+CFLAGS = $(EXTRA_CFLAGS)
|
||||||
|
CFLAGS ?= -g -O2 -Werror -Wall -std=gnu89
|
||||||
|
ALL_CFLAGS += $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
|
||||||
|
ALL_LDFLAGS += $(LDFLAGS)
|
26
package/network/utils/bpftools/patches/002-includes.patch
Normal file
26
package/network/utils/bpftools/patches/002-includes.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
--- a/libbpf/include/linux/list.h
|
||||||
|
+++ b/libbpf/include/linux/list.h
|
||||||
|
@@ -3,6 +3,8 @@
|
||||||
|
#ifndef __LINUX_LIST_H
|
||||||
|
#define __LINUX_LIST_H
|
||||||
|
|
||||||
|
+#include <linux/types.h>
|
||||||
|
+
|
||||||
|
#define LIST_HEAD_INIT(name) { &(name), &(name) }
|
||||||
|
#define LIST_HEAD(name) \
|
||||||
|
struct list_head name = LIST_HEAD_INIT(name)
|
||||||
|
--- a/src/Makefile
|
||||||
|
+++ b/src/Makefile
|
||||||
|
@@ -73,10 +73,10 @@ CFLAGS += -W -Wall -Wextra -Wno-unused-p
|
||||||
|
CFLAGS += $(filter-out -Wswitch-enum -Wnested-externs,$(EXTRA_WARNINGS))
|
||||||
|
CFLAGS += -DPACKAGE='"bpftool"' -D__EXPORTED_HEADERS__ \
|
||||||
|
-I$(if $(OUTPUT),$(OUTPUT),.) \
|
||||||
|
- -I$(LIBBPF_INCLUDE) \
|
||||||
|
-I$(srctree)/src/kernel/bpf/ \
|
||||||
|
-I$(srctree)/include \
|
||||||
|
- -I$(srctree)/include/uapi
|
||||||
|
+ -I$(srctree)/include/uapi \
|
||||||
|
+ -I$(LIBBPF_INCLUDE)
|
||||||
|
ifneq ($(BPFTOOL_VERSION),)
|
||||||
|
CFLAGS += -DBPFTOOL_VERSION='"$(BPFTOOL_VERSION)"'
|
||||||
|
endif
|
@ -1,51 +0,0 @@
|
|||||||
From afe3f4c765b17ced23811fe652c7f7adf7a0c0cf Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tony Ambardar <Tony.Ambardar@gmail.com>
|
|
||||||
Date: Mon, 14 Sep 2020 23:05:26 -0700
|
|
||||||
Subject: [PATCH] tools/arch/powerpc: fix EDEADLOCK redefinition errors in
|
|
||||||
errno.h
|
|
||||||
|
|
||||||
A few archs like powerpc have different errno.h values for macros
|
|
||||||
EDEADLOCK and EDEADLK. In code including both libc and linux versions of
|
|
||||||
errno.h, this can result in multiple definitions of EDEADLOCK in the
|
|
||||||
include chain. Definitions to the same value (e.g. seen with mips) do
|
|
||||||
not raise warnings, but on powerpc there are redefinitions changing the
|
|
||||||
value, which raise warnings and errors (with "-Werror").
|
|
||||||
|
|
||||||
Guard against these redefinitions to avoid build errors like the following,
|
|
||||||
first seen cross-compiling libbpf v5.8.9 for powerpc using GCC 8.4.0 with
|
|
||||||
musl 1.1.24:
|
|
||||||
|
|
||||||
In file included from ../../arch/powerpc/include/uapi/asm/errno.h:5,
|
|
||||||
from ../../include/linux/err.h:8,
|
|
||||||
from libbpf.c:29:
|
|
||||||
../../include/uapi/asm-generic/errno.h:40: error: "EDEADLOCK" redefined [-Werror]
|
|
||||||
#define EDEADLOCK EDEADLK
|
|
||||||
|
|
||||||
In file included from toolchain-powerpc_8540_gcc-8.4.0_musl/include/errno.h:10,
|
|
||||||
from libbpf.c:26:
|
|
||||||
toolchain-powerpc_8540_gcc-8.4.0_musl/include/bits/errno.h:58: note: this is the location of the previous definition
|
|
||||||
#define EDEADLOCK 58
|
|
||||||
|
|
||||||
cc1: all warnings being treated as errors
|
|
||||||
make[5]: *** [target-powerpc_8540_musl/bpftools-5.8.9/tools/build/Makefile.build:97: /home/kodidev/openwrt-project/build_dir/target-powerpc_8540_musl/bpftools-minimal/bpftools-5.8.9//libbpf/staticobjs/libbpf.o] Error 1
|
|
||||||
|
|
||||||
Fixes: 95f28190aa01 ("tools include arch: Grab a copy of errno.h for arch's
|
|
||||||
supported by perf")
|
|
||||||
Fixes: c3617f72036c ("UAPI: (Scripted) Disintegrate arch/powerpc/include/asm")
|
|
||||||
|
|
||||||
Reported-by: Rosen Penev <rosenp@gmail.com>
|
|
||||||
Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
|
|
||||||
---
|
|
||||||
tools/arch/powerpc/include/uapi/asm/errno.h | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
--- a/tools/arch/powerpc/include/uapi/asm/errno.h
|
|
||||||
+++ b/tools/arch/powerpc/include/uapi/asm/errno.h
|
|
||||||
@@ -2,6 +2,7 @@
|
|
||||||
#ifndef _ASM_POWERPC_ERRNO_H
|
|
||||||
#define _ASM_POWERPC_ERRNO_H
|
|
||||||
|
|
||||||
+#undef EDEADLOCK
|
|
||||||
#include <asm-generic/errno.h>
|
|
||||||
|
|
||||||
#undef EDEADLOCK
|
|
Loading…
Reference in New Issue
Block a user