1################################################################################
2#
3# iputils
4#
5################################################################################
6
7IPUTILS_VERSION = 20240117
8IPUTILS_SITE = https://github.com/iputils/iputils/releases/download/$(IPUTILS_VERSION)
9IPUTILS_LICENSE = GPL-2.0+, BSD-3-Clause
10IPUTILS_LICENSE_FILES = LICENSE Documentation/LICENSE.BSD3 Documentation/LICENSE.GPL2
11IPUTILS_CPE_ID_VALID = YES
12IPUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)
13
14# Selectively build binaries
15IPUTILS_CONF_OPTS += \
16	-DBUILD_CLOCKDIFF=$(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),true,false) \
17	-DBUILD_TRACEPATH=$(if $(BR2_PACKAGE_IPUTILS_TRACEPATH),true,false) \
18	-DSKIP_TESTS=true
19
20# Selectively select the appropriate SELinux refpolicy modules
21IPUTILS_SELINUX_MODULES = \
22	$(if $(BR2_PACKAGE_IPUTILS_ARPING),netutils) \
23	$(if $(BR2_PACKAGE_IPUTILS_PING),netutils) \
24	$(if $(BR2_PACKAGE_IPUTILS_TRACEPATH),netutils)
25
26#
27# arping
28#
29ifeq ($(BR2_PACKAGE_IPUTILS_ARPING),y)
30IPUTILS_CONF_OPTS += -DBUILD_ARPING=true
31
32# move some binaries to the same location as where Busybox installs
33# the corresponding applets, so that we have a single version of the
34# tools (from iputils)
35define IPUTILS_MOVE_ARPING_BINARY
36	mv $(TARGET_DIR)/usr/bin/arping $(TARGET_DIR)/usr/sbin/arping
37endef
38IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_ARPING_BINARY
39
40else
41IPUTILS_CONF_OPTS += -DBUILD_ARPING=false
42endif
43
44#
45# ping
46#
47ifeq ($(BR2_PACKAGE_IPUTILS_PING),y)
48IPUTILS_CONF_OPTS += -DBUILD_PING=true
49
50# same reason to move the ping binary as for arping
51ifeq ($(BR2_ROOTFS_MERGED_USR),)
52define IPUTILS_MOVE_PING_BINARY
53	mv $(TARGET_DIR)/usr/bin/ping $(TARGET_DIR)/bin/ping
54endef
55IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_PING_BINARY
56endif
57
58# upstream requires distros to create symlink
59define IPUTILS_CREATE_PING6_SYMLINK
60	ln -sf ping $(TARGET_DIR)/bin/ping6
61endef
62IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_CREATE_PING6_SYMLINK
63
64else
65IPUTILS_CONF_OPTS += -DBUILD_PING=false
66endif
67
68# Handle libraries
69ifeq ($(BR2_PACKAGE_LIBCAP),y)
70IPUTILS_CONF_OPTS += -DUSE_CAP=true
71IPUTILS_DEPENDENCIES += libcap
72else
73IPUTILS_CONF_OPTS += -DUSE_CAP=false
74endif
75
76ifeq ($(BR2_PACKAGE_LIBIDN2),y)
77IPUTILS_CONF_OPTS += -DUSE_IDN=true
78IPUTILS_DEPENDENCIES += libidn2
79else
80IPUTILS_CONF_OPTS += -DUSE_IDN=false
81endif
82
83ifeq ($(BR2_PACKAGE_SYSTEMD),y)
84IPUTILS_DEPENDENCIES += systemd
85endif
86
87ifeq ($(BR2_SYSTEM_ENABLE_NLS),y)
88IPUTILS_CONF_OPTS += -DUSE_GETTEXT=true
89else
90IPUTILS_CONF_OPTS += -DUSE_GETTEXT=false
91endif
92
93# XSL Stylesheets for DocBook 5 not packaged for buildroot
94IPUTILS_CONF_OPTS += -DBUILD_MANS=false -DBUILD_HTML_MANS=false
95
96# handle permissions ourselves
97IPUTILS_CONF_OPTS += -DNO_SETCAP_OR_SUID=true
98ifeq ($(BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES),y)
99define IPUTILS_PERMISSIONS
100	$(if $(BR2_PACKAGE_IPUTILS_ARPING),\
101		/usr/sbin/arping      f 755 0 0 - - - - -,)
102	$(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),\
103		/usr/bin/clockdiff    f 755 0 0 - - - - -
104		|xattr cap_net_raw+p,)
105	$(if $(BR2_PACKAGE_IPUTILS_PING),\
106		/bin/ping             f 755 0 0 - - - - -
107		|xattr cap_net_raw+p,)
108endef
109else
110define IPUTILS_PERMISSIONS
111	$(if $(BR2_PACKAGE_IPUTILS_ARPING),\
112		/usr/sbin/arping      f  755 0 0 - - - - -,)
113	$(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),\
114		/usr/bin/clockdiff    f 4755 0 0 - - - - -,)
115	$(if $(BR2_PACKAGE_IPUTILS_PING),\
116		/bin/ping             f 4755 0 0 - - - - -,)
117endef
118endif
119
120$(eval $(meson-package))
121