On 2/3/26 11:48 AM, Ilya Maximets wrote:
> On 2/3/26 11:07 AM, David Marchand wrote:
>> On Tue, 3 Feb 2026 at 10:56, Ilya Maximets <[email protected]> wrote:
>>>
>>> The library is purely internal and linked into the main libopenvswitch
>>> during the build.  It should not be marked for installation.  Moving
>>> it from 'lib' to 'noinst', so 'make install' doesn't install it to the
>>> system.  With that we also don't need to exclude it from the RPM files.
>>>
>>> Fixes: 352b6c7116cd ("dpif-lookup: add avx512 gather implementation.")
>>> Fixes: 9ecaa5cb71b6 ("rhel: openvswitch-fedora.spec.in: Fix installed but 
>>> not packaged.")
>>> Signed-off-by: Ilya Maximets <[email protected]>
>>
>> Won't it break linking against libopenvswitch.a if the avx512 lib
>> dependency is not shipped too?
>>
>> On a AVX512 system:
>> $ nm build/lib/.libs/libopenvswitch.a | grep U.*avx512
>>                  U dpcls_subtable_avx512_gather_probe__
>>                  U dp_netdev_input_outer_avx512
>>                  U mfex_avx512_dot1q_ip_tcp
>>                  U mfex_avx512_dot1q_ip_udp
>>                  U mfex_avx512_dot1q_ipv6_tcp
>>                  U mfex_avx512_dot1q_ipv6_udp
>>                  U mfex_avx512_ip_nvgre
>>                  U mfex_avx512_ip_tcp
>>                  U mfex_avx512_ip_udp
>>                  U mfex_avx512_ipv6_tcp
>>                  U mfex_avx512_ipv6_udp
>>                  U mfex_avx512_vbmi_dot1q_ip_tcp
>>                  U mfex_avx512_vbmi_dot1q_ip_udp
>>                  U mfex_avx512_vbmi_dot1q_ipv6_tcp
>>                  U mfex_avx512_vbmi_dot1q_ipv6_udp
>>                  U mfex_avx512_vbmi_ip_nvgre
>>                  U mfex_avx512_vbmi_ip_tcp
>>                  U mfex_avx512_vbmi_ip_udp
>>                  U mfex_avx512_vbmi_ipv6_tcp
>>                  U mfex_avx512_vbmi_ipv6_udp
>>                  U action_avx512_init
> Need to re-check if this actually works with static libraries, I didn't try.
> But the library archive itself contains multiple object files and while
> these symbols are undefined in one, they are defined in the other:
> 
> # ar t lib/.libs/libopenvswitch.a | grep avx512
> libopenvswitchavx512_la-dpif-netdev-avx512.o
> libopenvswitchavx512_la-dpif-netdev-extract-avx512.o
> libopenvswitchavx512_la-dpif-netdev-lookup-avx512-gather.o
> libopenvswitchavx512_la-odp-execute-avx512.o
> 
> # nm -A lib/.libs/libopenvswitch.a | grep mfex_avx512_ip_udp
> lib/.libs/libopenvswitch.a:dpif-netdev-private-extract.o:                 U 
> mfex_avx512_ip_udp
> lib/.libs/libopenvswitch.a:libopenvswitchavx512_la-dpif-netdev-extract-avx512.o:00000000000002b0
>  T mfex_avx512_ip_udp

In the build log it looks like libtool extracts the avx512 archive and
then re-packs the content into libopenvswitch.a:

libtool: link: (cd lib/.libs/libopenvswitch.lax/libopenvswitchavx512.a && ar x 
"/root/ovs/lib/.libs/libopenvswitchavx512.a")
libtool: link: ar cru lib/.libs/libopenvswitch.a
  lib/aes128.o
  lib/backtrace.o
  ...
  lib/ovsdb-server-idl.o
  lib/vswitch-idl.o
  
lib/.libs/libopenvswitch.lax/libopenvswitchavx512.a/libopenvswitchavx512_la-dpif-netdev-avx512.o
  
lib/.libs/libopenvswitch.lax/libopenvswitchavx512.a/libopenvswitchavx512_la-dpif-netdev-extract-avx512.o
  
lib/.libs/libopenvswitch.lax/libopenvswitchavx512.a/libopenvswitchavx512_la-dpif-netdev-lookup-avx512-gather.o
  
lib/.libs/libopenvswitch.lax/libopenvswitchavx512.a/libopenvswitchavx512_la-odp-execute-avx512.o

So, we should be good.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to