Message ID | 20200225025850.17209-3-vadim4j@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | add frr package | expand |
Hi Vadim and all, Am Di., 25. Feb. 2020 um 03:59 Uhr schrieb Vadim Kochan <vadim4j@gmail.com>: > > FRR is free software that implements and manages various IPv4 and IPv6 > routing protocols. It runs on nearly all distributions of Linux and BSD > as well as Solaris and supports all modern CPU architectures. > > FRR currently supports the following protocols: > > BGP > OSPFv2 > OSPFv3 > RIPv1 > RIPv2 > RIPng > IS-IS > PIM-SM/MSDP > LDP > BFD > Babel > PBR > OpenFabric > VRRP > EIGRP (alpha) > NHRP (alpha) > > Some not-needed features were disabled to minimize package dependencies: > > - POSIX capabilities > - RPKi > > Signed-off-by: Vadim Kochan <vadim4j@gmail.com> > --- > DEVELOPERS | 1 + > package/Config.in | 1 + > package/frr/Config.in | 25 +++++++++++++++ > package/frr/S50frr | 46 ++++++++++++++++++++++++++ > package/frr/frr.hash | 2 ++ > package/frr/frr.mk | 75 +++++++++++++++++++++++++++++++++++++++++++ > 6 files changed, 150 insertions(+) > create mode 100644 package/frr/Config.in > create mode 100644 package/frr/S50frr > create mode 100644 package/frr/frr.hash > create mode 100644 package/frr/frr.mk > [SNIP] > diff --git a/package/frr/frr.mk b/package/frr/frr.mk > new file mode 100644 > index 0000000000..448aa56690 > --- /dev/null > +++ b/package/frr/frr.mk > @@ -0,0 +1,75 @@ > +################################################################################ > +# > +# frr > +# > +################################################################################ > + > +FRR_VERSION = 7.3 > +FRR_SOURCE = frr-$(FRR_VERSION).tar.gz You can remove FRR_SOURCE because it is not needed. Buildroot will automatically set this to "frr-$(FRR_VERSION).tar.gz". > +FRR_SITE = https://github.com/FRRouting/frr/archive > +FRR_LICENSE = GPL-2.0 > +FRR_LICENSE_FILES = COPYING > +FRR_AUTORECONF = YES > + > +FRR_DEPENDENCIES = host-frr readline json-c \ > + libyang libnl c-ares > + > +HOST_FRR_DEPENDENCIES = host-flex host-bison host-python > + > +FRR_CONF_OPTS = --with-clippy=$(HOST_DIR)/bin/clippy \ > + --sysconfdir=/etc/frr \ > + --localstatedir=/var/run/frr \ > + --with-moduledir=/usr/lib/frr/modules \ > + --enable-configfile-mask=0640 \ > + --enable-logfile-mask=0640 \ > + --enable-multipath=256 \ > + --disable-ospfclient \ > + --enable-shell-access \ > + --enable-user=frr \ > + --enable-group=frr \ > + --enable-vty-group=frrvty \ > + --disable-exampledir \ > + --disable-capabilities \ > + --enable-fpm > + > +HOST_FRR_CONF_OPTS = --enable-clippy-only > + > +define FRR_RUN_BOOTSTRAP > + (cd $(@D) && PATH=$(BR_PATH) ./bootstrap.sh) > +endef > +FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP > +HOST_FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP Do we realy need to call the bootstrap.sh? The only thing done here is to call "autoreconf -i". This is automatically called by buildroot when setting "FRR_AUTORECONF = YES". @@ -34,12 +33,6 @@ FRR_CONF_OPTS = --with-clippy=$(HOST_DIR)/bin/clippy \ HOST_FRR_CONF_OPTS = --enable-clippy-only -define FRR_RUN_BOOTSTRAP - (cd $(@D) && PATH=$(BR_PATH) ./bootstrap.sh) -endef -FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP -HOST_FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP - define HOST_FRR_INSTALL_CMDS $(INSTALL) -D -m 0755 $(@D)/lib/clippy $(HOST_DIR)/bin/clippy endef > + > +define HOST_FRR_INSTALL_CMDS > + $(INSTALL) -D -m 0755 $(@D)/lib/clippy $(HOST_DIR)/bin/clippy > +endef > + > +define FRR_INSTALL_CONFIG_FILES > + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/frr > + > + $(foreach f,daemons daemons.conf frr.conf vtysh.conf support_bundle_commands.conf,\ > + $(INSTALL) -D -m 0640 $(@D)/tools/etc/frr/$(f) \ > + $(TARGET_DIR)/etc/frr/$(f) > + ) > +endef > +FRR_POST_INSTALL_TARGET_HOOKS += FRR_INSTALL_CONFIG_FILES > + > +define FRR_PERMISSIONS > + /etc/frr/daemons f 640 frr frr - - - - - > + /etc/frr/daemons.conf f 640 frr frr - - - - - > + /etc/frr/frr.conf f 640 frr frr - - - - - > + /etc/frr/vtysh.conf f 640 frr frrvty - - - - - > + /etc/frr/support_bundle_commands.conf f 640 frr frr > +endef > + > +define FRR_USERS > + frr -1 frr -1 * /var/run/frr - frrvty FRR user priv > +endef > + > +define FRR_INSTALL_INIT_SYSV > + $(INSTALL) -D -m 755 $(FRR_PKGDIR)/S50frr \ > + $(TARGET_DIR)/etc/init.d/S50frr > +endef > + > +$(eval $(autotools-package)) > +$(eval $(host-autotools-package)) > -- > 2.17.1 > Also some warnings from "utils/check-package package/frr/*": package/frr/Config.in:16: help text: <tab><2 spaces><62 chars> (http://nightly.buildroot.org/#writing-rules-config-in) package/frr/frr.mk:8: remove default value of _SOURCE variable (http://nightly.buildroot.org/#generic-package-reference) 102 lines processed 2 warnings generated BR -- Heiko
Hi Vadim and all, Am Di., 25. Feb. 2020 um 03:59 Uhr schrieb Vadim Kochan <vadim4j@gmail.com>: > > FRR is free software that implements and manages various IPv4 and IPv6 > routing protocols. It runs on nearly all distributions of Linux and BSD > as well as Solaris and supports all modern CPU architectures. > > FRR currently supports the following protocols: > > BGP > OSPFv2 > OSPFv3 > RIPv1 > RIPv2 > RIPng > IS-IS > PIM-SM/MSDP > LDP > BFD > Babel > PBR > OpenFabric > VRRP > EIGRP (alpha) > NHRP (alpha) > > Some not-needed features were disabled to minimize package dependencies: > > - POSIX capabilities > - RPKi > > Signed-off-by: Vadim Kochan <vadim4j@gmail.com> > --- [SNIP] > diff --git a/package/frr/frr.mk b/package/frr/frr.mk > new file mode 100644 > index 0000000000..448aa56690 > --- /dev/null > +++ b/package/frr/frr.mk > @@ -0,0 +1,75 @@ > +################################################################################ > +# > +# frr > +# > +################################################################################ > + > +FRR_VERSION = 7.3 > +FRR_SOURCE = frr-$(FRR_VERSION).tar.gz > +FRR_SITE = https://github.com/FRRouting/frr/archive > +FRR_LICENSE = GPL-2.0 > +FRR_LICENSE_FILES = COPYING > +FRR_AUTORECONF = YES > + > +FRR_DEPENDENCIES = host-frr readline json-c \ > + libyang libnl c-ares > + > +HOST_FRR_DEPENDENCIES = host-flex host-bison host-python > + > +FRR_CONF_OPTS = --with-clippy=$(HOST_DIR)/bin/clippy \ > + --sysconfdir=/etc/frr \ > + --localstatedir=/var/run/frr \ > + --with-moduledir=/usr/lib/frr/modules \ > + --enable-configfile-mask=0640 \ > + --enable-logfile-mask=0640 \ > + --enable-multipath=256 \ > + --disable-ospfclient \ > + --enable-shell-access \ > + --enable-user=frr \ > + --enable-group=frr \ > + --enable-vty-group=frrvty \ > + --disable-exampledir \ > + --disable-capabilities \ > + --enable-fpm > + > +HOST_FRR_CONF_OPTS = --enable-clippy-only > + > +define FRR_RUN_BOOTSTRAP > + (cd $(@D) && PATH=$(BR_PATH) ./bootstrap.sh) > +endef > +FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP > +HOST_FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP > + > +define HOST_FRR_INSTALL_CMDS > + $(INSTALL) -D -m 0755 $(@D)/lib/clippy $(HOST_DIR)/bin/clippy > +endef > + > +define FRR_INSTALL_CONFIG_FILES > + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/frr > + > + $(foreach f,daemons daemons.conf frr.conf vtysh.conf support_bundle_commands.conf,\ > + $(INSTALL) -D -m 0640 $(@D)/tools/etc/frr/$(f) \ > + $(TARGET_DIR)/etc/frr/$(f) > + ) > +endef > +FRR_POST_INSTALL_TARGET_HOOKS += FRR_INSTALL_CONFIG_FILES > + > +define FRR_PERMISSIONS > + /etc/frr/daemons f 640 frr frr - - - - - > + /etc/frr/daemons.conf f 640 frr frr - - - - - > + /etc/frr/frr.conf f 640 frr frr - - - - - > + /etc/frr/vtysh.conf f 640 frr frrvty - - - - - > + /etc/frr/support_bundle_commands.conf f 640 frr frr > +endef > + > +define FRR_USERS > + frr -1 frr -1 * /var/run/frr - frrvty FRR user priv > +endef > + > +define FRR_INSTALL_INIT_SYSV > + $(INSTALL) -D -m 755 $(FRR_PKGDIR)/S50frr \ > + $(TARGET_DIR)/etc/init.d/S50frr > +endef > + > +$(eval $(autotools-package)) > +$(eval $(host-autotools-package)) > -- > 2.17.1 > I see that thei install step installs examples in a directory where (I think) it never should install stuff! It is the targetno directory. /usr/bin/install -c -m 644 zebra/zebra.conf.sample bgpd/bgpd.conf.sample bgpd/bgpd.conf.sample2 bgpd/bgpd.conf.vnc.sample ripd/ripd.conf.sample ripngd/ripngd.conf.sample ospfd/ospfd.conf.sample ospf6d/ospf6d.conf.sample isisd/isisd.conf.sample isisd/fabricd.conf.sample ldpd/ldpd.conf.sample babeld/babeld.conf.sample eigrpd/eigrpd.conf.sample pimd/pimd.conf.sample pbrd/pbrd.conf.sample staticd/staticd.conf.sample bfdd/bfdd.conf.sample vtysh/vtysh.conf.sample '/home/hthiery/sources/mainline/buildroot/output/targetno' I cannot see how it is possible to properly disable the install of examples. I see that you already have set the option --disable-exampledir. But this seems not to be enought, or it is broken. -- Heiko
Hi Heiko, On Tue, Feb 25, 2020 at 12:13 PM Heiko Thiery <heiko.thiery@gmail.com> wrote: > > Hi Vadim and all, > > Am Di., 25. Feb. 2020 um 03:59 Uhr schrieb Vadim Kochan <vadim4j@gmail.com>: > > > > FRR is free software that implements and manages various IPv4 and IPv6 > > routing protocols. It runs on nearly all distributions of Linux and BSD > > as well as Solaris and supports all modern CPU architectures. > > > > FRR currently supports the following protocols: > > > > BGP > > OSPFv2 > > OSPFv3 > > RIPv1 > > RIPv2 > > RIPng > > IS-IS > > PIM-SM/MSDP > > LDP > > BFD > > Babel > > PBR > > OpenFabric > > VRRP > > EIGRP (alpha) > > NHRP (alpha) > > > > Some not-needed features were disabled to minimize package dependencies: > > > > - POSIX capabilities > > - RPKi > > > > Signed-off-by: Vadim Kochan <vadim4j@gmail.com> > > --- > > [SNIP] > > > diff --git a/package/frr/frr.mk b/package/frr/frr.mk > > new file mode 100644 > > index 0000000000..448aa56690 > > --- /dev/null > > +++ b/package/frr/frr.mk > > @@ -0,0 +1,75 @@ > > +################################################################################ > > +# > > +# frr > > +# > > +################################################################################ > > + > > +FRR_VERSION = 7.3 > > +FRR_SOURCE = frr-$(FRR_VERSION).tar.gz > > +FRR_SITE = https://github.com/FRRouting/frr/archive > > +FRR_LICENSE = GPL-2.0 > > +FRR_LICENSE_FILES = COPYING > > +FRR_AUTORECONF = YES > > + > > +FRR_DEPENDENCIES = host-frr readline json-c \ > > + libyang libnl c-ares > > + > > +HOST_FRR_DEPENDENCIES = host-flex host-bison host-python > > + > > +FRR_CONF_OPTS = --with-clippy=$(HOST_DIR)/bin/clippy \ > > + --sysconfdir=/etc/frr \ > > + --localstatedir=/var/run/frr \ > > + --with-moduledir=/usr/lib/frr/modules \ > > + --enable-configfile-mask=0640 \ > > + --enable-logfile-mask=0640 \ > > + --enable-multipath=256 \ > > + --disable-ospfclient \ > > + --enable-shell-access \ > > + --enable-user=frr \ > > + --enable-group=frr \ > > + --enable-vty-group=frrvty \ > > + --disable-exampledir \ > > + --disable-capabilities \ > > + --enable-fpm > > + > > +HOST_FRR_CONF_OPTS = --enable-clippy-only > > + > > +define FRR_RUN_BOOTSTRAP > > + (cd $(@D) && PATH=$(BR_PATH) ./bootstrap.sh) > > +endef > > +FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP > > +HOST_FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP > > + > > +define HOST_FRR_INSTALL_CMDS > > + $(INSTALL) -D -m 0755 $(@D)/lib/clippy $(HOST_DIR)/bin/clippy > > +endef > > + > > +define FRR_INSTALL_CONFIG_FILES > > + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/frr > > + > > + $(foreach f,daemons daemons.conf frr.conf vtysh.conf support_bundle_commands.conf,\ > > + $(INSTALL) -D -m 0640 $(@D)/tools/etc/frr/$(f) \ > > + $(TARGET_DIR)/etc/frr/$(f) > > + ) > > +endef > > +FRR_POST_INSTALL_TARGET_HOOKS += FRR_INSTALL_CONFIG_FILES > > + > > +define FRR_PERMISSIONS > > + /etc/frr/daemons f 640 frr frr - - - - - > > + /etc/frr/daemons.conf f 640 frr frr - - - - - > > + /etc/frr/frr.conf f 640 frr frr - - - - - > > + /etc/frr/vtysh.conf f 640 frr frrvty - - - - - > > + /etc/frr/support_bundle_commands.conf f 640 frr frr > > +endef > > + > > +define FRR_USERS > > + frr -1 frr -1 * /var/run/frr - frrvty FRR user priv > > +endef > > + > > +define FRR_INSTALL_INIT_SYSV > > + $(INSTALL) -D -m 755 $(FRR_PKGDIR)/S50frr \ > > + $(TARGET_DIR)/etc/init.d/S50frr > > +endef > > + > > +$(eval $(autotools-package)) > > +$(eval $(host-autotools-package)) > > -- > > 2.17.1 > > > > I see that thei install step installs examples in a directory where (I > think) it never should install stuff! It is the targetno directory. > > /usr/bin/install -c -m 644 zebra/zebra.conf.sample > bgpd/bgpd.conf.sample bgpd/bgpd.conf.sample2 bgpd/bgpd.conf.vnc.sample > ripd/ripd.conf.sample ripngd/ripngd.conf.sample > ospfd/ospfd.conf.sample ospf6d/ospf6d.conf.sample > isisd/isisd.conf.sample isisd/fabricd.conf.sample > ldpd/ldpd.conf.sample babeld/babeld.conf.sample > eigrpd/eigrpd.conf.sample pimd/pimd.conf.sample pbrd/pbrd.conf.sample > staticd/staticd.conf.sample bfdd/bfdd.conf.sample > vtysh/vtysh.conf.sample > '/home/hthiery/sources/mainline/buildroot/output/targetno' > > > I cannot see how it is possible to properly disable the install of > examples. I see that you already have set the option > --disable-exampledir. But this seems not to be enought, or it is > broken. Wow! Nice catch, I did not realize this, so there are like at least 2 options ? 1) remove it in hook 2) patch the frr build scripts (which looks like more safer?)
On Tue, Feb 25, 2020 at 10:26 AM Heiko Thiery <heiko.thiery@gmail.com> wrote: > > Hi Vadim and all, > > Am Di., 25. Feb. 2020 um 03:59 Uhr schrieb Vadim Kochan <vadim4j@gmail.com>: > > > > FRR is free software that implements and manages various IPv4 and IPv6 > > routing protocols. It runs on nearly all distributions of Linux and BSD > > as well as Solaris and supports all modern CPU architectures. > > > > FRR currently supports the following protocols: > > > > BGP > > OSPFv2 > > OSPFv3 > > RIPv1 > > RIPv2 > > RIPng > > IS-IS > > PIM-SM/MSDP > > LDP > > BFD > > Babel > > PBR > > OpenFabric > > VRRP > > EIGRP (alpha) > > NHRP (alpha) > > > > Some not-needed features were disabled to minimize package dependencies: > > > > - POSIX capabilities > > - RPKi > > > > Signed-off-by: Vadim Kochan <vadim4j@gmail.com> > > --- > > DEVELOPERS | 1 + > > package/Config.in | 1 + > > package/frr/Config.in | 25 +++++++++++++++ > > package/frr/S50frr | 46 ++++++++++++++++++++++++++ > > package/frr/frr.hash | 2 ++ > > package/frr/frr.mk | 75 +++++++++++++++++++++++++++++++++++++++++++ > > 6 files changed, 150 insertions(+) > > create mode 100644 package/frr/Config.in > > create mode 100644 package/frr/S50frr > > create mode 100644 package/frr/frr.hash > > create mode 100644 package/frr/frr.mk > > > > [SNIP] > > > diff --git a/package/frr/frr.mk b/package/frr/frr.mk > > new file mode 100644 > > index 0000000000..448aa56690 > > --- /dev/null > > +++ b/package/frr/frr.mk > > @@ -0,0 +1,75 @@ > > +################################################################################ > > +# > > +# frr > > +# > > +################################################################################ > > + > > +FRR_VERSION = 7.3 > > +FRR_SOURCE = frr-$(FRR_VERSION).tar.gz > > You can remove FRR_SOURCE because it is not needed. Buildroot will > automatically set this to "frr-$(FRR_VERSION).tar.gz". > > > +FRR_SITE = https://github.com/FRRouting/frr/archive > > +FRR_LICENSE = GPL-2.0 > > +FRR_LICENSE_FILES = COPYING > > +FRR_AUTORECONF = YES > > + > > +FRR_DEPENDENCIES = host-frr readline json-c \ > > + libyang libnl c-ares > > + > > +HOST_FRR_DEPENDENCIES = host-flex host-bison host-python > > + > > +FRR_CONF_OPTS = --with-clippy=$(HOST_DIR)/bin/clippy \ > > + --sysconfdir=/etc/frr \ > > + --localstatedir=/var/run/frr \ > > + --with-moduledir=/usr/lib/frr/modules \ > > + --enable-configfile-mask=0640 \ > > + --enable-logfile-mask=0640 \ > > + --enable-multipath=256 \ > > + --disable-ospfclient \ > > + --enable-shell-access \ > > + --enable-user=frr \ > > + --enable-group=frr \ > > + --enable-vty-group=frrvty \ > > + --disable-exampledir \ > > + --disable-capabilities \ > > + --enable-fpm > > + > > +HOST_FRR_CONF_OPTS = --enable-clippy-only > > + > > +define FRR_RUN_BOOTSTRAP > > + (cd $(@D) && PATH=$(BR_PATH) ./bootstrap.sh) > > +endef > > +FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP > > +HOST_FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP > > Do we realy need to call the bootstrap.sh? The only thing done here is > to call "autoreconf -i". This is automatically called by buildroot > when setting "FRR_AUTORECONF = YES". > > @@ -34,12 +33,6 @@ FRR_CONF_OPTS = --with-clippy=$(HOST_DIR)/bin/clippy \ > > HOST_FRR_CONF_OPTS = --enable-clippy-only > > -define FRR_RUN_BOOTSTRAP > - (cd $(@D) && PATH=$(BR_PATH) ./bootstrap.sh) > -endef > -FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP > -HOST_FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP > - > define HOST_FRR_INSTALL_CMDS > $(INSTALL) -D -m 0755 $(@D)/lib/clippy $(HOST_DIR)/bin/clippy > endef > > [SNIP] ... Thanks! all your suggestions works! ... [SNIP] > > + > > +$(eval $(autotools-package)) > > +$(eval $(host-autotools-package)) > > -- > > 2.17.1 > > > > Also some warnings from "utils/check-package package/frr/*": > > package/frr/Config.in:16: help text: <tab><2 spaces><62 chars> > (http://nightly.buildroot.org/#writing-rules-config-in) > package/frr/frr.mk:8: remove default value of _SOURCE variable > (http://nightly.buildroot.org/#generic-package-reference) > 102 lines processed > 2 warnings generated > > BR > -- > Heiko
Hi Vadim and all, > > > > I see that thei install step installs examples in a directory where (I > > think) it never should install stuff! It is the targetno directory. > > > > /usr/bin/install -c -m 644 zebra/zebra.conf.sample > > bgpd/bgpd.conf.sample bgpd/bgpd.conf.sample2 bgpd/bgpd.conf.vnc.sample > > ripd/ripd.conf.sample ripngd/ripngd.conf.sample > > ospfd/ospfd.conf.sample ospf6d/ospf6d.conf.sample > > isisd/isisd.conf.sample isisd/fabricd.conf.sample > > ldpd/ldpd.conf.sample babeld/babeld.conf.sample > > eigrpd/eigrpd.conf.sample pimd/pimd.conf.sample pbrd/pbrd.conf.sample > > staticd/staticd.conf.sample bfdd/bfdd.conf.sample > > vtysh/vtysh.conf.sample > > '/home/hthiery/sources/mainline/buildroot/output/targetno' > > > > > > I cannot see how it is possible to properly disable the install of > > examples. I see that you already have set the option > > --disable-exampledir. But this seems not to be enought, or it is > > broken. > > Wow! Nice catch, I did not realize this, so there are like at least 2 options ? > 1) remove it in hook > 2) patch the frr build scripts (which looks like more safer?) I think reporting that upstream and patching would be the best solution. -- Heiko
On Tue, Feb 25, 2020 at 2:39 PM Heiko Thiery <heiko.thiery@gmail.com> wrote: > > Hi Vadim and all, > > > > > > > I see that thei install step installs examples in a directory where (I > > > think) it never should install stuff! It is the targetno directory. > > > > > > /usr/bin/install -c -m 644 zebra/zebra.conf.sample > > > bgpd/bgpd.conf.sample bgpd/bgpd.conf.sample2 bgpd/bgpd.conf.vnc.sample > > > ripd/ripd.conf.sample ripngd/ripngd.conf.sample > > > ospfd/ospfd.conf.sample ospf6d/ospf6d.conf.sample > > > isisd/isisd.conf.sample isisd/fabricd.conf.sample > > > ldpd/ldpd.conf.sample babeld/babeld.conf.sample > > > eigrpd/eigrpd.conf.sample pimd/pimd.conf.sample pbrd/pbrd.conf.sample > > > staticd/staticd.conf.sample bfdd/bfdd.conf.sample > > > vtysh/vtysh.conf.sample > > > '/home/hthiery/sources/mainline/buildroot/output/targetno' > > > > > > > > > I cannot see how it is possible to properly disable the install of > > > examples. I see that you already have set the option > > > --disable-exampledir. But this seems not to be enought, or it is > > > broken. > > > > Wow! Nice catch, I did not realize this, so there are like at least 2 options ? > > 1) remove it in hook > > 2) patch the frr build scripts (which looks like more safer?) > > I think reporting that upstream and patching would be the best solution. > Hm, problem is that this --enable-exampledir is used as bool option to specify alternative path for installing config samples, and because I set it to "--disable-exampledir" then this value is set to "no" and eventually is appended to DESTDIR which is $(TARGET_DIR), which is evaluated to .../targetno. But is this a problem if config samples will be installed to $(TARGET_DIR)/etc/frr (which is default if to remove --disable-exampledir) ?
On Tue, Feb 25, 2020 at 5:37 PM Vadim Kochan <vadim4j@gmail.com> wrote: > > On Tue, Feb 25, 2020 at 2:39 PM Heiko Thiery <heiko.thiery@gmail.com> wrote: > > > > Hi Vadim and all, > > > > > > > > > > I see that thei install step installs examples in a directory where (I > > > > think) it never should install stuff! It is the targetno directory. > > > > > > > > /usr/bin/install -c -m 644 zebra/zebra.conf.sample > > > > bgpd/bgpd.conf.sample bgpd/bgpd.conf.sample2 bgpd/bgpd.conf.vnc.sample > > > > ripd/ripd.conf.sample ripngd/ripngd.conf.sample > > > > ospfd/ospfd.conf.sample ospf6d/ospf6d.conf.sample > > > > isisd/isisd.conf.sample isisd/fabricd.conf.sample > > > > ldpd/ldpd.conf.sample babeld/babeld.conf.sample > > > > eigrpd/eigrpd.conf.sample pimd/pimd.conf.sample pbrd/pbrd.conf.sample > > > > staticd/staticd.conf.sample bfdd/bfdd.conf.sample > > > > vtysh/vtysh.conf.sample > > > > '/home/hthiery/sources/mainline/buildroot/output/targetno' > > > > > > > > > > > > I cannot see how it is possible to properly disable the install of > > > > examples. I see that you already have set the option > > > > --disable-exampledir. But this seems not to be enought, or it is > > > > broken. > > > > > > Wow! Nice catch, I did not realize this, so there are like at least 2 options ? > > > 1) remove it in hook > > > 2) patch the frr build scripts (which looks like more safer?) > > > > I think reporting that upstream and patching would be the best solution. > > > Hm, problem is that this --enable-exampledir is used as bool option to specify > alternative path for installing config samples, and because I set it > to "--disable-exampledir" > then this value is set to "no" and eventually is appended to DESTDIR > which is $(TARGET_DIR), > which is evaluated to .../targetno. > > But is this a problem if config samples will be installed to > $(TARGET_DIR)/etc/frr (which is default > if to remove --disable-exampledir) ? Actually I can remove them in POST_INSTALL hook )
diff --git a/DEVELOPERS b/DEVELOPERS index 7d3d1ca11a..95ea2254de 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2477,6 +2477,7 @@ F: package/tstools/ N: Vadim Kochan <vadim4j@gmail.com> F: package/brcm-patchram-plus/ +F: package/frr/ F: package/gettext-tiny/ F: package/tinyssh/ diff --git a/package/Config.in b/package/Config.in index dfa3f34b9d..3e6b51a745 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1998,6 +1998,7 @@ menu "Networking applications" source "package/fping/Config.in" source "package/freeswitch/Config.in" source "package/freeswitch-mod-bcg729/Config.in" + source "package/frr/Config.in" source "package/gerbera/Config.in" source "package/gesftpserver/Config.in" source "package/glorytun/Config.in" diff --git a/package/frr/Config.in b/package/frr/Config.in new file mode 100644 index 0000000000..c0c3bdd693 --- /dev/null +++ b/package/frr/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_FRR + bool "frr" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # libyang + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BASH # init + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + select BR2_PACKAGE_C_ARES + select BR2_PACKAGE_LIBYANG + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_JSON_C + help + The FRRouting Protocol Suite. + + FRR is free software that implements and manages various IPv4 and + IPv6 routing protocols. + + https://frrouting.org + +comment "frr needs BASH, threads, dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_BASH || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/package/frr/S50frr b/package/frr/S50frr new file mode 100644 index 0000000000..0c128353e9 --- /dev/null +++ b/package/frr/S50frr @@ -0,0 +1,46 @@ +#!/bin/sh + +DAEMON="frr" + +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + install -m 755 -o frr -g frr -d /var/run/frr + install -m 755 -o frr -g frr -d /var/log/frr + + printf 'Starting %s: ' "$DAEMON" + /usr/sbin/frrinit.sh start + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + /usr/sbin/frrinit.sh stop + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start|stop|restart) + "$1";; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/package/frr/frr.hash b/package/frr/frr.hash new file mode 100644 index 0000000000..7d9ff7ea04 --- /dev/null +++ b/package/frr/frr.hash @@ -0,0 +1,2 @@ +sha256 c209ed66a0331221649b8c21dc8c6704ce1696e2017ef4d48f8c2ac6b1fa01b7 frr-7.3.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/frr/frr.mk b/package/frr/frr.mk new file mode 100644 index 0000000000..448aa56690 --- /dev/null +++ b/package/frr/frr.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# frr +# +################################################################################ + +FRR_VERSION = 7.3 +FRR_SOURCE = frr-$(FRR_VERSION).tar.gz +FRR_SITE = https://github.com/FRRouting/frr/archive +FRR_LICENSE = GPL-2.0 +FRR_LICENSE_FILES = COPYING +FRR_AUTORECONF = YES + +FRR_DEPENDENCIES = host-frr readline json-c \ + libyang libnl c-ares + +HOST_FRR_DEPENDENCIES = host-flex host-bison host-python + +FRR_CONF_OPTS = --with-clippy=$(HOST_DIR)/bin/clippy \ + --sysconfdir=/etc/frr \ + --localstatedir=/var/run/frr \ + --with-moduledir=/usr/lib/frr/modules \ + --enable-configfile-mask=0640 \ + --enable-logfile-mask=0640 \ + --enable-multipath=256 \ + --disable-ospfclient \ + --enable-shell-access \ + --enable-user=frr \ + --enable-group=frr \ + --enable-vty-group=frrvty \ + --disable-exampledir \ + --disable-capabilities \ + --enable-fpm + +HOST_FRR_CONF_OPTS = --enable-clippy-only + +define FRR_RUN_BOOTSTRAP + (cd $(@D) && PATH=$(BR_PATH) ./bootstrap.sh) +endef +FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP +HOST_FRR_PRE_CONFIGURE_HOOKS += FRR_RUN_BOOTSTRAP + +define HOST_FRR_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/lib/clippy $(HOST_DIR)/bin/clippy +endef + +define FRR_INSTALL_CONFIG_FILES + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/frr + + $(foreach f,daemons daemons.conf frr.conf vtysh.conf support_bundle_commands.conf,\ + $(INSTALL) -D -m 0640 $(@D)/tools/etc/frr/$(f) \ + $(TARGET_DIR)/etc/frr/$(f) + ) +endef +FRR_POST_INSTALL_TARGET_HOOKS += FRR_INSTALL_CONFIG_FILES + +define FRR_PERMISSIONS + /etc/frr/daemons f 640 frr frr - - - - - + /etc/frr/daemons.conf f 640 frr frr - - - - - + /etc/frr/frr.conf f 640 frr frr - - - - - + /etc/frr/vtysh.conf f 640 frr frrvty - - - - - + /etc/frr/support_bundle_commands.conf f 640 frr frr +endef + +define FRR_USERS + frr -1 frr -1 * /var/run/frr - frrvty FRR user priv +endef + +define FRR_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 $(FRR_PKGDIR)/S50frr \ + $(TARGET_DIR)/etc/init.d/S50frr +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package))
FRR is free software that implements and manages various IPv4 and IPv6 routing protocols. It runs on nearly all distributions of Linux and BSD as well as Solaris and supports all modern CPU architectures. FRR currently supports the following protocols: BGP OSPFv2 OSPFv3 RIPv1 RIPv2 RIPng IS-IS PIM-SM/MSDP LDP BFD Babel PBR OpenFabric VRRP EIGRP (alpha) NHRP (alpha) Some not-needed features were disabled to minimize package dependencies: - POSIX capabilities - RPKi Signed-off-by: Vadim Kochan <vadim4j@gmail.com> --- DEVELOPERS | 1 + package/Config.in | 1 + package/frr/Config.in | 25 +++++++++++++++ package/frr/S50frr | 46 ++++++++++++++++++++++++++ package/frr/frr.hash | 2 ++ package/frr/frr.mk | 75 +++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 150 insertions(+) create mode 100644 package/frr/Config.in create mode 100644 package/frr/S50frr create mode 100644 package/frr/frr.hash create mode 100644 package/frr/frr.mk