buildroot/package/pppd/pppd.mk
Maksim Salau 1bb454bcb1 pppd: Add an option to not to overwrite /etc/resolv.conf
By default pppd built by buildroot writes the list of nameservers to
/etc/resolv.conf instead of /etc/ppp/resolv.conf
This is not the default behavior of pppd and breaks name resolution
if several network interfaces are used. The change makes this optional
and enabled by default, to be backward compatible and to add a possibility
to turn this behavior off, if required.

Signed-off-by: Maksim Salau <msalau@iotecha.com>
[Arnout: extend the help text to explain that it won't work on readonly
 rootfs]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2017-10-21 16:59:49 +02:00

113 lines
4.3 KiB
Makefile

################################################################################
#
# pppd
#
################################################################################
PPPD_VERSION = 2.4.7
PPPD_SOURCE = ppp-$(PPPD_VERSION).tar.gz
PPPD_SITE = https://download.samba.org/pub/ppp
PPPD_LICENSE = LGPL-2.0+, LGPL, BSD-4-Clause, BSD-3-Clause, GPL-2.0+
PPPD_LICENSE_FILES = \
pppd/tdb.c pppd/plugins/pppoatm/COPYING \
pppdump/bsd-comp.c pppd/ccp.c pppd/plugins/passprompt.c
PPPD_MAKE_OPTS = HAVE_INET6=y
PPPD_INSTALL_STAGING = YES
PPPD_TARGET_BINS = chat pppd pppdump pppstats
PPPD_RADIUS_CONF = \
dictionary dictionary.ascend dictionary.compat \
dictionary.merit dictionary.microsoft \
issue port-id-map realms servers radiusclient.conf
ifeq ($(BR2_PACKAGE_PPPD_FILTER),y)
PPPD_DEPENDENCIES += libpcap
PPPD_MAKE_OPTS += FILTER=y
endif
# pppd bundles some but not all of the needed kernel headers. The embedded
# if_pppol2tp.h is unfortunately not compatible with kernel headers > 2.6.34,
# and has been part of the kernel headers since 2.6.23, so drop it
define PPPD_DROP_INTERNAL_IF_PPOL2TP_H
$(RM) $(@D)/include/linux/if_pppol2tp.h
endef
PPPD_POST_EXTRACT_HOOKS += PPPD_DROP_INTERNAL_IF_PPOL2TP_H
# pppd defaults to /etc/ppp/resolv.conf, which not be writable and is
# definitely not useful since the C library only uses
# /etc/resolv.conf. Therefore, we change pppd to use /etc/resolv.conf
# instead.
define PPPD_SET_RESOLV_CONF
$(SED) 's,ppp/resolv.conf,resolv.conf,' $(@D)/pppd/pathnames.h
endef
ifeq ($(BR2_PACKAGE_PPPD_OVERWRITE_RESOLV_CONF),y)
PPPD_POST_EXTRACT_HOOKS += PPPD_SET_RESOLV_CONF
endif
define PPPD_CONFIGURE_CMDS
$(SED) 's/FILTER=y/#FILTER=y/' $(PPPD_DIR)/pppd/Makefile.linux
$(SED) 's/ifneq ($$(wildcard \/usr\/include\/pcap-bpf.h),)/ifdef FILTER/' $(PPPD_DIR)/*/Makefile.linux
( cd $(@D); $(TARGET_MAKE_ENV) ./configure --prefix=/usr )
endef
define PPPD_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" COPTS="$(TARGET_CFLAGS)" \
-C $(@D) $(PPPD_MAKE_OPTS)
endef
ifeq ($(BR2_PACKAGE_PPPD_RADIUS),y)
define PPPD_INSTALL_RADIUS
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/radius/radattr.so \
$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/radattr.so
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/radius/radius.so \
$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/radius.so
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/radius/radrealms.so \
$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/radrealms.so
for m in $(PPPD_RADIUS_CONF); do \
$(INSTALL) -m 644 -D $(PPPD_DIR)/pppd/plugins/radius/etc/$$m \
$(TARGET_DIR)/etc/ppp/radius/$$m; \
done
$(SED) 's:/usr/local/etc:/etc:' \
$(TARGET_DIR)/etc/ppp/radius/radiusclient.conf
$(SED) 's:/usr/local/sbin:/usr/sbin:' \
$(TARGET_DIR)/etc/ppp/radius/radiusclient.conf
$(SED) 's:/etc/radiusclient:/etc/ppp/radius:g' \
$(TARGET_DIR)/etc/ppp/radius/*
endef
endif
define PPPD_INSTALL_TARGET_CMDS
for sbin in $(PPPD_TARGET_BINS); do \
$(INSTALL) -D $(PPPD_DIR)/$$sbin/$$sbin \
$(TARGET_DIR)/usr/sbin/$$sbin; \
done
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/minconn.so \
$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/minconn.so
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/passprompt.so \
$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/passprompt.so
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/passwordfd.so \
$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/passwordfd.so
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/pppoatm/pppoatm.so \
$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/pppoatm.so
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/rp-pppoe/rp-pppoe.so \
$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/rp-pppoe.so
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/rp-pppoe/pppoe-discovery \
$(TARGET_DIR)/usr/sbin/pppoe-discovery
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/winbind.so \
$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/winbind.so
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/pppol2tp/openl2tp.so \
$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/openl2tp.so
$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/pppol2tp/pppol2tp.so \
$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/pppol2tp.so
$(INSTALL) -D -m 0755 $(PPPD_DIR)/scripts/pon $(TARGET_DIR)/usr/bin/pon
$(INSTALL) -D -m 0755 $(PPPD_DIR)/scripts/poff $(TARGET_DIR)/usr/bin/poff
$(PPPD_INSTALL_RADIUS)
endef
define PPPD_INSTALL_STAGING_CMDS
$(TARGET_MAKE_ENV) $(MAKE) INSTROOT=$(STAGING_DIR)/ -C $(@D) $(PPPD_MAKE_OPTS) install-devel
endef
$(eval $(generic-package))