hc
2023-02-13 e440ec23c5a540cdd3f7464e8779219be6fd3d95
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
################################################################################
#
# iputils
#
################################################################################
 
# The original upstream was forked to the github repository in 2014 to
# pull fixes from other distribution and centralize the changes after
# the upstream seemed to have gone dormant.  The fork contains the
# latest changes including musl support, removing a libsysfs dependency
# and IPv6 updates.
# http://www.spinics.net/lists/netdev/msg279881.html
 
IPUTILS_VERSION = 20210722
IPUTILS_SITE = $(call github,iputils,iputils,$(IPUTILS_VERSION))
IPUTILS_LICENSE = GPL-2.0+, BSD-3-Clause
IPUTILS_LICENSE_FILES = LICENSE Documentation/LICENSE.BSD3 Documentation/LICENSE.GPL2
IPUTILS_CPE_ID_VENDOR = iputils_project
IPUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)
 
# Selectively build binaries
IPUTILS_CONF_OPTS += \
   -DBUILD_CLOCKDIFF=$(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),true,false) \
   -DBUILD_RARPD=$(if $(BR2_PACKAGE_IPUTILS_RARPD),true,false) \
   -DBUILD_RDISC=$(if $(BR2_PACKAGE_IPUTILS_RDISC),true,false) \
   -DENABLE_RDISC_SERVER=$(if $(BR2_PACKAGE_IPUTILS_RDISC_SERVER),true,false) \
   -DBUILD_TRACEPATH=$(if $(BR2_PACKAGE_IPUTILS_TRACEPATH),true,false) \
   -DBUILD_TRACEROUTE6=$(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),true,false) \
   -DBUILD_NINFOD=$(if $(BR2_PACKAGE_IPUTILS_NINFOD),true,false) \
   -DSKIP_TESTS=true
 
# Selectively select the appropriate SELinux refpolicy modules
IPUTILS_SELINUX_MODULES = \
   $(if $(BR2_PACKAGE_IPUTILS_ARPING),netutils) \
   $(if $(BR2_PACKAGE_IPUTILS_PING),netutils) \
   $(if $(BR2_PACKAGE_IPUTILS_TRACEPATH),netutils) \
   $(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),netutils) \
   $(if $(BR2_PACKAGE_IPUTILS_RDISC),rdisc) \
   $(if $(BR2_PACKAGE_IPUTILS_TFTPD),tftp)
 
#
# arping
#
ifeq ($(BR2_PACKAGE_IPUTILS_ARPING),y)
IPUTILS_CONF_OPTS += -DBUILD_ARPING=true
 
# move some binaries to the same location as where Busybox installs
# the corresponding applets, so that we have a single version of the
# tools (from iputils)
define IPUTILS_MOVE_ARPING_BINARY
   mv $(TARGET_DIR)/usr/bin/arping $(TARGET_DIR)/usr/sbin/arping
endef
IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_ARPING_BINARY
 
else
IPUTILS_CONF_OPTS += -DBUILD_ARPING=false
endif
 
#
# ping
#
ifeq ($(BR2_PACKAGE_IPUTILS_PING),y)
IPUTILS_CONF_OPTS += -DBUILD_PING=true
 
# same reason to move the ping binary as for arping
ifeq ($(BR2_ROOTFS_MERGED_USR),)
define IPUTILS_MOVE_PING_BINARY
   mv $(TARGET_DIR)/usr/bin/ping $(TARGET_DIR)/bin/ping
endef
IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_PING_BINARY
endif
 
# upstream requires distros to create symlink
define IPUTILS_CREATE_PING6_SYMLINK
   ln -sf ping $(TARGET_DIR)/bin/ping6
endef
IPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_CREATE_PING6_SYMLINK
 
else
IPUTILS_CONF_OPTS += -DBUILD_PING=false
endif
 
#
# tftpd
#
ifeq ($(BR2_PACKAGE_IPUTILS_TFTPD),y)
IPUTILS_CONF_OPTS += -DBUILD_TFTPD=true
 
else
IPUTILS_CONF_OPTS += -DBUILD_TFTPD=false
endif
 
# Handle libraries
ifeq ($(BR2_PACKAGE_LIBCAP),y)
IPUTILS_CONF_OPTS += -DUSE_CAP=true
IPUTILS_DEPENDENCIES += libcap
else
IPUTILS_CONF_OPTS += -DUSE_CAP=false
endif
 
ifeq ($(BR2_PACKAGE_LIBIDN2),y)
IPUTILS_CONF_OPTS += -DUSE_IDN=true
IPUTILS_DEPENDENCIES += libidn2
else
IPUTILS_CONF_OPTS += -DUSE_IDN=false
endif
 
ifeq ($(BR2_PACKAGE_SYSTEMD),y)
IPUTILS_DEPENDENCIES += systemd
endif
 
ifeq ($(BR2_SYSTEM_ENABLE_NLS),y)
IPUTILS_CONF_OPTS += -DUSE_GETTEXT=true
else
IPUTILS_CONF_OPTS += -DUSE_GETTEXT=false
endif
 
# XSL Stylesheets for DocBook 5 not packaged for buildroot
IPUTILS_CONF_OPTS += -DBUILD_MANS=false -DBUILD_HTML_MANS=false
 
# handle permissions ourselves
IPUTILS_CONF_OPTS += -DNO_SETCAP_OR_SUID=true
ifeq ($(BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES),y)
define IPUTILS_PERMISSIONS
   $(if $(BR2_PACKAGE_IPUTILS_ARPING),\
       /usr/sbin/arping      f 755 0 0 - - - - -,)
   $(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),\
       /usr/bin/clockdiff    f 755 0 0 - - - - -
       |xattr cap_net_raw+p,)
   $(if $(BR2_PACKAGE_IPUTILS_PING),\
       /bin/ping             f 755 0 0 - - - - -
       |xattr cap_net_raw+p,)
   $(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),\
       /usr/bin/traceroute6  f 755 0 0 - - - - -
       |xattr cap_net_raw+p,)
endef
else
define IPUTILS_PERMISSIONS
   $(if $(BR2_PACKAGE_IPUTILS_ARPING),\
       /usr/sbin/arping      f  755 0 0 - - - - -,)
   $(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),\
       /usr/bin/clockdiff    f 4755 0 0 - - - - -,)
   $(if $(BR2_PACKAGE_IPUTILS_PING),\
       /bin/ping             f 4755 0 0 - - - - -,)
   $(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),\
       /usr/bin/traceroute6  f 4755 0 0 - - - - -,)
endef
endif
 
$(eval $(meson-package))