diff --git a/Makefile.am b/Makefile.am index 0ce716e345c7..a7002e839246 100644 --- a/Makefile.am +++ b/Makefile.am @@ -140,7 +140,9 @@ noinst_LIBRARIES = nodist_noinst_DATA = lib_LTLIBRARIES = module_LTLIBRARIES = -pkginclude_HEADERS = +pkginclude_HEADERS = config.h +nobase_pkginclude_HEADERS = +nobase_nodist_pkginclude_HEADERS = nodist_pkginclude_HEADERS = dist_yangmodels_DATA = man_MANS = diff --git a/debian/control b/debian/control index a6289b2752b9..fd03cc00ed8f 100644 --- a/debian/control +++ b/debian/control @@ -151,3 +151,10 @@ Description: FRRouting suite - GRPC interface This provides the GRPC interface to the daemons. Build-Profiles: +Package: frr-dev +Architecture: any +Section: libdevel +Depends: ${misc:Depends}, frr (= ${binary:Version}) +Description: Development files for FRRouting + This package contains the development files (headers and static libraries) + necessary to build software that links against FRR internals. diff --git a/debian/frr-dev.install b/debian/frr-dev.install new file mode 100644 index 000000000000..fc326c4eaf6a --- /dev/null +++ b/debian/frr-dev.install @@ -0,0 +1,3 @@ +usr/include/frr/*.h +usr/include/frr/*/*.h +usr/lib/*/frr/*.so diff --git a/debian/frr-snmp.install b/debian/frr-snmp.install index 5517ca7eec9a..1c7bcfb14656 100644 --- a/debian/frr-snmp.install +++ b/debian/frr-snmp.install @@ -1,2 +1,2 @@ -usr/lib/*/frr/libfrrsnmp.* +usr/lib/*/frr/libfrrsnmp.so.* usr/lib/*/frr/modules/*_snmp.so diff --git a/debian/frr.install b/debian/frr.install index d4b904b6e3f0..695d4719513f 100644 --- a/debian/frr.install +++ b/debian/frr.install @@ -5,10 +5,10 @@ tools/etc/logrotate.d/frr etc/logrotate.d/ tools/frr-reload usr/lib/frr/ usr/bin/mtracebis usr/bin/vtysh -usr/lib/*/frr/libfrr.* -usr/lib/*/frr/libfrrcares.* -usr/lib/*/frr/libfrrospfapiclient.* -usr/lib/*/frr/libmgmt_be_nb.* +usr/lib/*/frr/libfrr.so.* +usr/lib/*/frr/libfrrcares.so.* +usr/lib/*/frr/libfrrospfapiclient.so.* +usr/lib/*/frr/libmgmt_be_nb.so.* usr/lib/*/frr/modules/bgpd_bmp.so usr/lib/*/frr/modules/dplane_fpm_nl.so usr/lib/*/frr/modules/zebra_cumulus_mlag.so diff --git a/debian/rules b/debian/rules index 74573c9a0e5d..ac542e433182 100755 --- a/debian/rules +++ b/debian/rules @@ -96,9 +96,8 @@ override_dh_auto_install: cp -r tools/etc/* debian/tmp/etc/ -rm debian/tmp/etc/frr/daemons.conf -# drop dev-only files - find debian/tmp -name '*.la' -o -name '*.a' -o -name 'lib*.so' | xargs rm -f - rm -rf debian/tmp/usr/include +# drop static libraries and ssd + find debian/tmp -name '*.la' -o -name '*.a' | xargs rm -f -rm debian/tmp/usr/lib/frr/ssd override_dh_auto_build: diff --git a/docker/centos-8/Dockerfile b/docker/centos-8/Dockerfile index edcb04ed5ddf..14e68e6610d3 100644 --- a/docker/centos-8/Dockerfile +++ b/docker/centos-8/Dockerfile @@ -10,8 +10,8 @@ RUN dnf install --enablerepo=powertools -y rpm-build git autoconf pcre-devel \ groff pkgconfig json-c-devel pam-devel bison flex python3-pytest \ c-ares-devel python3-devel python3-sphinx libcap-devel platform-python-devel \ protobuf-c-devel \ - https://ci1.netdef.org/artifact/LIBYANG-LIBYANG2/shared/build-00181/RedHat-8-x86_64-Packages/libyang-2.1.80-1.el8.x86_64.rpm \ - https://ci1.netdef.org/artifact/LIBYANG-LIBYANG2/shared/build-00181/RedHat-8-x86_64-Packages/libyang-devel-2.1.80-1.el8.x86_64.rpm \ + https://ci1.netdef.org/artifact/LIBYANG-LIBYANG2/shared/build-00184/RedHat-8-x86_64-Packages/libyang-2.1.128.83.gfc4dbd92-1.el8.x86_64.rpm \ + https://ci1.netdef.org/artifact/LIBYANG-LIBYANG2/shared/build-00184/RedHat-8-x86_64-Packages/libyang-devel-2.1.128.83.gfc4dbd92-1.el8.x86_64.rpm \ https://ci1.netdef.org/artifact/RPKI-RTRLIB/shared/build-00146/CentOS-7-x86_64-Packages/librtr-0.8.0-1.el7.x86_64.rpm \ https://ci1.netdef.org/artifact/RPKI-RTRLIB/shared/build-00146/CentOS-7-x86_64-Packages/librtr-devel-0.8.0-1.el7.x86_64.rpm @@ -43,7 +43,7 @@ RUN sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* \ && sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-* RUN mkdir -p /pkgs/rpm \ - && yum install -y https://ci1.netdef.org/artifact/LIBYANG-LIBYANG2/shared/build-00181/RedHat-8-x86_64-Packages/libyang-2.1.80-1.el8.x86_64.rpm \ + && yum install -y https://ci1.netdef.org/artifact/LIBYANG-LIBYANG2/shared/build-00184/RedHat-8-x86_64-Packages/libyang-2.1.128.83.gfc4dbd92-1.el8.x86_64.rpm \ https://ci1.netdef.org/artifact/RPKI-RTRLIB/shared/build-00146/CentOS-7-x86_64-Packages/librtr-0.8.0-1.el7.x86_64.rpm COPY --from=centos-8-builder /rpmbuild/RPMS/ /pkgs/rpm/ diff --git a/lib/subdir.am b/lib/subdir.am index b5a1e486f0d8..18bf1cb54f6c 100644 --- a/lib/subdir.am +++ b/lib/subdir.am @@ -205,7 +205,7 @@ clippy_scan += \ lib/zlog_5424_cli.c \ # end -pkginclude_HEADERS += \ +nobase_pkginclude_HEADERS += \ lib/admin_group.h \ lib/affinitymap.h \ lib/agg_table.h \ @@ -346,7 +346,7 @@ pkginclude_HEADERS += \ # end -nodist_pkginclude_HEADERS += \ +nobase_nodist_pkginclude_HEADERS += \ lib/route_types.h \ lib/version.h \ # end @@ -390,7 +390,7 @@ lib_libfrrsnmp_la_SOURCES = \ # if CARES lib_LTLIBRARIES += lib/libfrrcares.la -pkginclude_HEADERS += lib/resolver.h +nobase_pkginclude_HEADERS += lib/resolver.h endif lib_libfrrcares_la_CFLAGS = $(AM_CFLAGS) $(CARES_CFLAGS) @@ -405,7 +405,7 @@ lib_libfrrcares_la_SOURCES = \ # if ZEROMQ lib_LTLIBRARIES += lib/libfrrzmq.la -pkginclude_HEADERS += lib/frr_zmq.h +nobase_pkginclude_HEADERS += lib/frr_zmq.h endif lib_libfrrzmq_la_CFLAGS = $(AM_CFLAGS) $(ZEROMQ_CFLAGS) diff --git a/redhat/frr.spec.in b/redhat/frr.spec.in index b5a7a383c838..eea4063fb70a 100644 --- a/redhat/frr.spec.in +++ b/redhat/frr.spec.in @@ -285,13 +285,15 @@ Contributed python 2.7 tools which may be of use with frr. %package devel -Summary: Header and object files for frr development +Summary: Development files for building applications or plugins using FRR Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} %description devel -The frr-devel package contains the header and object files necessary for -developing OSPF-API and frr applications. +The frr-devel package contains header files and configuration needed for +developing out-of-tree applications or plugins that interface with FRR, such +as dplane modules, monitoring tools, and routing integrations. This includes +headers from FRR's core libraries, zebra, and optional daemons. %if %{with_rpki} @@ -854,7 +856,16 @@ sed -i 's/ -M rpki//' %{_sysconfdir}/frr/daemons %files devel %{_libdir}/lib*.so %dir %{_includedir}/%{name} -%{_includedir}/%{name}/*.h +# Core config header +%{_includedir}/%{name}/config.h +# Core library headers +%dir %{_includedir}/%{name}/lib +%{_includedir}/%{name}/lib/*.h +%{_includedir}/%{name}/lib/*/*.h +# Zebra headers +%dir %{_includedir}/%{name}/zebra +%{_includedir}/%{name}/zebra/*.h +# Optional daemon headers (still under frr/) %dir %{_includedir}/%{name}/ospfd %{_includedir}/%{name}/ospfd/*.h %if %{with_bfdd} diff --git a/zebra/subdir.am b/zebra/subdir.am index f7674473661c..be99ecf4e7ec 100644 --- a/zebra/subdir.am +++ b/zebra/subdir.am @@ -135,7 +135,7 @@ clippy_scan += \ zebra/zebra_cli.c \ # end -noinst_HEADERS += \ +nobase_pkginclude_HEADERS += \ zebra/connected.h \ zebra/debug.h \ zebra/if_netlink.h \ @@ -200,6 +200,9 @@ noinst_HEADERS += \ zebra/zebra_l2_bridge_if.h \ zebra/zebra_vxlan_if.h \ zebra/zserv.h \ + # end + +noinst_HEADERS += \ zebra/dpdk/zebra_dplane_dpdk.h \ zebra/dpdk/zebra_dplane_dpdk_private.h \ # end