From: Edwin Chiu <ec...@vmware.com>

Compile and package ovs shared libraries and create new header
package for debian (openvswitch-dev) and rhel (openvswitch-devel).

VMware-BZ: #1556299
Signed-off-by: Edwin Chiu <ec...@vmware.com>
Co-authored-by: Harold Lim <haro...@vmware.com>
---
 debian/automake.mk                |    1 +
 debian/control                    |   16 ++++++++++++++++
 debian/openvswitch-common.install |    1 +
 debian/openvswitch-dev.install    |   11 +++++++++++
 debian/rules                      |    4 +++-
 lib/libopenvswitch.pc.in          |    2 +-
 lib/libsflow.pc.in                |    2 +-
 ofproto/libofproto.pc.in          |    2 +-
 ovsdb/libovsdb.pc.in              |    2 +-
 rhel/openvswitch.spec.in          |   37 +++++++++++++++++++++++++++++++++++--
 10 files changed, 71 insertions(+), 7 deletions(-)
 create mode 100644 debian/openvswitch-dev.install

diff --git a/debian/automake.mk b/debian/automake.mk
index de2350c..7b5b3aa 100644
--- a/debian/automake.mk
+++ b/debian/automake.mk
@@ -18,6 +18,7 @@ EXTRA_DIST += \
        debian/openvswitch-datapath-source.copyright \
        debian/openvswitch-datapath-source.dirs \
        debian/openvswitch-datapath-source.install \
+       debian/openvswitch-dev.install \
        debian/openvswitch-ipsec.dirs \
        debian/openvswitch-ipsec.init \
        debian/openvswitch-ipsec.install \
diff --git a/debian/control b/debian/control
index 2918d06..2c07a73 100644
--- a/debian/control
+++ b/debian/control
@@ -288,3 +288,19 @@ Description: Open vSwitch VTEP utilities
  .
  This package provides utilities that are useful to interact with a
  VTEP-configured database and a VTEP emulator.
+
+Package: openvswitch-dev
+Architecture: linux-any
+Depends:
+ openvswitch-common (>= ${binary:Version}),
+ ${misc:Depends}
+Description: Open vSwitch development package
+ Open vSwitch is a production quality, multilayer, software-based, Ethernet
+ virtual switch. It is designed to enable massive network automation through
+ programmatic extension, while still supporting standard management interfaces
+ and protocols (e.g. NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In
+ addition, it is designed to support distribution across multiple physical
+ servers similar to VMware's vNetwork distributed vswitch or Cisco's Nexus
+ 1000V.
+ .
+ This package provides openvswitch headers and libopenvswitch for developers.
diff --git a/debian/openvswitch-common.install 
b/debian/openvswitch-common.install
index 3264ea5..ebb7d5c 100644
--- a/debian/openvswitch-common.install
+++ b/debian/openvswitch-common.install
@@ -9,3 +9,4 @@ usr/sbin/ovs-bugtool
 usr/share/openvswitch/bugtool-plugins
 usr/share/openvswitch/scripts/ovs-bugtool-*
 usr/share/openvswitch/scripts/ovs-lib
+usr/lib/lib*.so.*
diff --git a/debian/openvswitch-dev.install b/debian/openvswitch-dev.install
new file mode 100644
index 0000000..11791e4
--- /dev/null
+++ b/debian/openvswitch-dev.install
@@ -0,0 +1,11 @@
+usr/lib/lib*.so
+usr/lib/lib*.a
+usr/lib/pkgconfig
+include/*.h usr/include/openvswitch
+include/openflow/*.h usr/include/openvswitch/openflow
+include/openvswitch/*.h usr/include/openvswitch/openvswitch
+include/sparse/*.h usr/include/openvswitch/sparse
+include/sparse/arpa/*.h usr/include/openvswitch/sparse/arpa
+include/sparse/netinet/*.h usr/include/openvswitch/sparse/netinet
+include/sparse/sys/*.h usr/include/openvswitch/sparse/sys
+lib/*.h usr/include/openvswitch/lib
diff --git a/debian/rules b/debian/rules
index 7110851..4c34b07 100755
--- a/debian/rules
+++ b/debian/rules
@@ -30,7 +30,7 @@ override_dh_autoreconf:
        dh_autoreconf $(DH_AS_NEEDED)
 
 override_dh_auto_configure:
-       dh_auto_configure -- --enable-ssl $(DATAPATH_CONFIGURE_OPTS)
+       dh_auto_configure -- --enable-ssl --enable-shared 
$(DATAPATH_CONFIGURE_OPTS)
 
 override_dh_auto_test:
 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
@@ -91,3 +91,5 @@ override_dh_installinit:
 
 override_dh_strip:
        dh_strip --dbg-package=openvswitch-dbg
+
+override_dh_usrlocal:
diff --git a/lib/libopenvswitch.pc.in b/lib/libopenvswitch.pc.in
index 4c40a4c..2a3f2ca 100644
--- a/lib/libopenvswitch.pc.in
+++ b/lib/libopenvswitch.pc.in
@@ -8,4 +8,4 @@ Description: Open vSwitch library
 Version: @VERSION@
 Libs: -L${libdir} -lopenvswitch
 Libs.private: @LIBS@
-Cflags: -I${includedir}
+Cflags: -I${includedir}/openvswitch
diff --git a/lib/libsflow.pc.in b/lib/libsflow.pc.in
index 34bb7e3..e70a2b7 100644
--- a/lib/libsflow.pc.in
+++ b/lib/libsflow.pc.in
@@ -8,4 +8,4 @@ Description: sFlow library of Open vSwitch
 Version: @VERSION@
 Libs: -L${libdir} -lsflow
 Libs.private: @LIBS@
-Cflags: -I${includedir}
+Cflags: -I${includedir}/openvswitch
diff --git a/ofproto/libofproto.pc.in b/ofproto/libofproto.pc.in
index 49894fb..2740712 100644
--- a/ofproto/libofproto.pc.in
+++ b/ofproto/libofproto.pc.in
@@ -8,4 +8,4 @@ Description: OpenFlow library of Open vSwitch
 Version: @VERSION@
 Libs: -L${libdir} -lofproto
 Libs.private: @LIBS@
-Cflags: -I${includedir}
+Cflags: -I${includedir}/openvswitch
diff --git a/ovsdb/libovsdb.pc.in b/ovsdb/libovsdb.pc.in
index 54c9039..fe367ea 100644
--- a/ovsdb/libovsdb.pc.in
+++ b/ovsdb/libovsdb.pc.in
@@ -8,4 +8,4 @@ Description: OVSDB library of Open vSwitch
 Version: @VERSION@
 Libs: -L${libdir} -lovsdb
 Libs.private: @LIBS@
-Cflags: -I${includedir}
+Cflags: -I${includedir}/openvswitch
diff --git a/rhel/openvswitch.spec.in b/rhel/openvswitch.spec.in
index b86f5db..b1e9fd0 100644
--- a/rhel/openvswitch.spec.in
+++ b/rhel/openvswitch.spec.in
@@ -32,11 +32,19 @@ Open vSwitch provides standard network bridging functions 
and
 support for the OpenFlow protocol for remote per-flow control of
 traffic.
 
+%package devel
+Summary:        Open vSwitch development package
+Group:          Development/Libraries
+
+%description devel
+This package provides openvswitch headers and libopenvswitch for developers.
+
 %prep
 %setup -q
 
 %build
-./configure --prefix=/usr --sysconfdir=/etc --localstatedir=%{_localstatedir} 
--enable-ssl
+./configure --prefix=/usr --sysconfdir=/etc --localstatedir=%{_localstatedir} \
+    --libdir=%{_libdir} --enable-ssl --enable-shared
 make %{_smp_mflags}
 
 %install
@@ -69,11 +77,29 @@ rm \
     $RPM_BUILD_ROOT/usr/share/man/man?/ovn-* \
     $RPM_BUILD_ROOT/usr/share/openvswitch/ovn-* \
     $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/ovn-*
-(cd "$RPM_BUILD_ROOT" && rm -rf usr/lib)
+(cd "$RPM_BUILD_ROOT" && rm -rf usr/%{_lib}/*.la)
 (cd "$RPM_BUILD_ROOT" && rm -rf usr/include)
 
 install -d -m 755 $RPM_BUILD_ROOT/var/lib/openvswitch
 
+copy_headers() {
+    src=$1
+    dst=$RPM_BUILD_ROOT/$2
+    install -d -m 0755 $dst
+    install -m 0644 $src/*.h $dst
+}
+copy_headers include %{_includedir}/openvswitch
+copy_headers include/openflow %{_includedir}/openvswitch/openflow
+copy_headers include/openvswitch %{_includedir}/openvswitch/openvswitch
+copy_headers include/sparse %{_includedir}/openvswitch/sparse
+copy_headers include/sparse/arpa %{_includedir}/openvswitch/sparse/arpa
+copy_headers include/sparse/netinet %{_includedir}/openvswitch/sparse/netinet
+copy_headers include/sparse/sys %{_includedir}/openvswitch/sparse/sys
+copy_headers lib %{_includedir}/openvswitch/lib
+
+install -D -m 0644 lib/.libs/libopenvswitch.a \
+    $RPM_BUILD_ROOT/%{_libdir}/libopenvswitch.a
+
 %check
 %if %{with check}
     if make check TESTSUITEFLAGS='%{_smp_mflags}' RECHECK=yes; then :;
@@ -144,6 +170,7 @@ exit 0
 /usr/bin/ovsdb-client
 /usr/bin/ovsdb-tool
 /usr/bin/vtep-ctl
+%{_libdir}/lib*.so.*
 /usr/sbin/ovs-bugtool
 /usr/sbin/ovs-vswitchd
 /usr/sbin/ovsdb-server
@@ -181,3 +208,9 @@ exit 0
 %doc INSTALL.DPDK.md rhel/README.RHEL README-native-tunneling.md
 /var/lib/openvswitch
 /var/log/openvswitch
+
+%files devel
+%{_libdir}/lib*.so
+%{_libdir}/lib*.a
+%{_libdir}/pkgconfig
+%{_includedir}/openvswitch/*
-- 
1.7.9.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to