mbox series

[0/7] Improve core EAL musl compatibility

Message ID cover.1535543250.git.anatoly.burakov@intel.com (mailing list archive)
Headers
Series Improve core EAL musl compatibility |

Message

Burakov, Anatoly Aug. 29, 2018, 11:56 a.m. UTC
  This patchset fixes numerous issues with musl compatibility
in the core EAL libraries. It does not fix anything beyond
core EAL (so, PCI driver is still broken, so are a few other
drivers), but it's a good start.

Tested on container with Alpine Linux. Alpine dependencies:

build-base bsd-compat-headers libexecinfo-dev linux-headers numactl-dev

For numactl-dev, testing repository needs to be enabled:

echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories

If successful (using a very broad definition of "success"),
the build should fail somewhere in PCI bus driver in UIO.

Anatoly Burakov (7):
  linuxapp: build with _GNU_SOURCE defined by default
  pci/vfio: improve musl compatibility
  fbarray: improve musl compatibility
  eal/hugepage_info: improve musl compatibility
  mem: improve musl compatibility
  string_fns: improve musl compatibility
  eal: improve musl compatibility

 app/meson.build                                 |  9 ++++++++-
 drivers/bus/pci/linux/Makefile                  |  2 --
 drivers/bus/pci/linux/pci_vfio.c                |  8 ++++----
 drivers/meson.build                             |  6 ++++++
 drivers/net/softnic/conn.c                      |  1 -
 examples/meson.build                            |  6 ++++++
 lib/librte_eal/common/eal_common_fbarray.c      |  1 +
 lib/librte_eal/common/eal_common_memory.c       |  1 +
 lib/librte_eal/common/include/rte_string_fns.h  |  1 +
 lib/librte_eal/linuxapp/eal/Makefile            | 16 ----------------
 lib/librte_eal/linuxapp/eal/eal.c               |  5 +++--
 lib/librte_eal/linuxapp/eal/eal_hugepage_info.c |  1 +
 lib/librte_eal/linuxapp/eal/eal_memory.c        |  1 +
 lib/librte_eal/linuxapp/eal/eal_thread.c        |  5 +++--
 lib/meson.build                                 |  6 ++++++
 mk/exec-env/linuxapp/rte.vars.mk                |  2 ++
 test/test/meson.build                           |  5 +++++
 17 files changed, 48 insertions(+), 28 deletions(-)
  

Comments

Bruce Richardson Sept. 28, 2018, 3:25 p.m. UTC | #1
On Wed, Aug 29, 2018 at 12:56:14PM +0100, Anatoly Burakov wrote:
> This patchset fixes numerous issues with musl compatibility
> in the core EAL libraries. It does not fix anything beyond
> core EAL (so, PCI driver is still broken, so are a few other
> drivers), but it's a good start.
> 
> Tested on container with Alpine Linux. Alpine dependencies:
> 
> build-base bsd-compat-headers libexecinfo-dev linux-headers numactl-dev
> 
> For numactl-dev, testing repository needs to be enabled:
> 
> echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
> 
> If successful (using a very broad definition of "success"),
> the build should fail somewhere in PCI bus driver in UIO.
> 

Disabling the kernel drivers, I get a build of EAL and the other libraries
to compile as static libraries. However, shared library builds - and
therefore meson builds fail due to missing backtrace function when linking.
There is still work to do here, but this does fix a number of build errors
on alpine.

Acked-by: Bruce Richardson <bruce.richardson@intel.com>
  
Thomas Monjalon Oct. 3, 2018, 10:56 p.m. UTC | #2
28/09/2018 17:25, Bruce Richardson:
> On Wed, Aug 29, 2018 at 12:56:14PM +0100, Anatoly Burakov wrote:
> > This patchset fixes numerous issues with musl compatibility
> > in the core EAL libraries. It does not fix anything beyond
> > core EAL (so, PCI driver is still broken, so are a few other
> > drivers), but it's a good start.
> > 
> > Tested on container with Alpine Linux. Alpine dependencies:
> > 
> > build-base bsd-compat-headers libexecinfo-dev linux-headers numactl-dev
> > 
> > For numactl-dev, testing repository needs to be enabled:
> > 
> > echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
> > 
> > If successful (using a very broad definition of "success"),
> > the build should fail somewhere in PCI bus driver in UIO.
> > 
> 
> Disabling the kernel drivers, I get a build of EAL and the other libraries
> to compile as static libraries. However, shared library builds - and
> therefore meson builds fail due to missing backtrace function when linking.
> There is still work to do here, but this does fix a number of build errors
> on alpine.
> 
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>

I see this error with meson GCC-8.2 static:
	examples/ip_pipeline/conn.c:11: error: "__USE_GNU" redefined
  
Burakov, Anatoly Oct. 4, 2018, 9:15 a.m. UTC | #3
On 03-Oct-18 11:56 PM, Thomas Monjalon wrote:
> 28/09/2018 17:25, Bruce Richardson:
>> On Wed, Aug 29, 2018 at 12:56:14PM +0100, Anatoly Burakov wrote:
>>> This patchset fixes numerous issues with musl compatibility
>>> in the core EAL libraries. It does not fix anything beyond
>>> core EAL (so, PCI driver is still broken, so are a few other
>>> drivers), but it's a good start.
>>>
>>> Tested on container with Alpine Linux. Alpine dependencies:
>>>
>>> build-base bsd-compat-headers libexecinfo-dev linux-headers numactl-dev
>>>
>>> For numactl-dev, testing repository needs to be enabled:
>>>
>>> echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
>>>
>>> If successful (using a very broad definition of "success"),
>>> the build should fail somewhere in PCI bus driver in UIO.
>>>
>>
>> Disabling the kernel drivers, I get a build of EAL and the other libraries
>> to compile as static libraries. However, shared library builds - and
>> therefore meson builds fail due to missing backtrace function when linking.
>> There is still work to do here, but this does fix a number of build errors
>> on alpine.
>>
>> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> 
> I see this error with meson GCC-8.2 static:
> 	examples/ip_pipeline/conn.c:11: error: "__USE_GNU" redefined
> 

Why are we defining these? __USE_GNU is defined by <features.h> and 
isn't supposed to be defined/undefined by the user in the first place.