Commit fa647372 authored by Sergio Prado's avatar Sergio Prado Committed by Thomas Petazzoni
Browse files

musl: add a sys/queue.h implementation

Musl does not provide a 'sys/queue.h' implementation, and this has been
a problem for packages that depend on it.

So lets create a package called netbsd-queue that will install a
'sys/queue.h' in the staging directory when enabled, based on the
NetBSD implementation.

Musl toolchain and external toolchain packages will depend on this
package, so that 'sys/queue.h' will be always installed when compiling
with a musl based toolchain.

Tested on ARM and x86 in the following cases:
  - Buildroot musl toolchain.
  - External musl toolchain without 'sys/queue.h'.
  - External musl toolchain with 'sys/queue.h'.

Fixes:
http://autobuild.buildroot.net/results/24bad2d06ab40024dacf136bee722072d587f84e



And possibly many others.

Signed-off-by: default avatarSergio Prado <sergio.prado@e-labworks.com>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent 1a886a9a
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -13,6 +13,11 @@ MUSL_LICENSE_FILES = COPYRIGHT
# cross-compiler and the kernel headers
MUSL_DEPENDENCIES = host-gcc-initial linux-headers

# musl does not provide a sys/queue.h implementation, so add the
# netbsd-queue package that will install a sys/queue.h file in the
# staging directory based on the NetBSD implementation.
MUSL_DEPENDENCIES += netbsd-queue

# musl is part of the toolchain so disable the toolchain dependency
MUSL_ADD_TOOLCHAIN_DEPENDENCY = NO

+2 −0
Original line number Diff line number Diff line
# Locally calculated
sha256 c13407edd0e33be73cae72514cb234f8612e1c0e54401c9448daffd3a240158b  queue.h?rev=1.70
+23 −0
Original line number Diff line number Diff line
################################################################################
#
# netbsd-queue
#
################################################################################

NETBSD_QUEUE_VERSION = 1.70
NETBSD_QUEUE_SITE = http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys
NETBSD_QUEUE_SOURCE = queue.h?rev=$(NETBSD_QUEUE_VERSION)
NETBSD_QUEUE_LICENSE = BSD-3c

NETBSD_QUEUE_INSTALL_STAGING = YES

define NETBSD_QUEUE_EXTRACT_CMDS
	cp $(DL_DIR)/$(NETBSD_QUEUE_SOURCE) $(@D)/queue.h
endef

define NETBSD_QUEUE_INSTALL_STAGING_CMDS
	$(INSTALL) -D -m 0644 $(@D)/queue.h \
		$(STAGING_DIR)/usr/include/sys/queue.h
endef

$(eval $(generic-package))
+7 −0
Original line number Diff line number Diff line
@@ -237,6 +237,13 @@ TOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_SOFTFLOAT=1
endif

# musl does not provide a sys/queue.h implementation, so add the
# netbsd-queue package that will install a sys/queue.h file in the
# staging directory based on the NetBSD implementation.
ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
TOOLCHAIN_EXTERNAL_DEPENDENCIES += netbsd-queue
endif

# The Linaro ARMhf toolchain expects the libraries in
# {/usr,}/lib/arm-linux-gnueabihf, but Buildroot copies them to
# {/usr,}/lib, so we need to create a symbolic link.