Add buildroot 2018-02

This commit is contained in:
Pascal Vizeli
2018-03-17 23:47:00 +00:00
parent 3776c47f83
commit 67742041ad
10007 changed files with 405098 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
From b5f1895aae096836d6e8e155ee289e1b10fcabcb Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 10 Oct 2015 23:17:44 +0200
Subject: [PATCH] configure.ac: use link instead of compile for gcc flags test
The logic that tests whether gcc supports or not certain flags uses
AC_COMPILE_IFELSE(). However, when checking for stack smashing
protection support, an AC_LINK_IFELSE() test is needed, since the
build might work but not the link stage if certain libraries are
missing for proper stack smashing protection support.
Therefore, this commit switches to use AC_LINK_IFELSE().
[Upstream commit: https://github.com/rpm-software-management/rpm/commit/b5f1895aae096836d6e8e155ee289e1b10fcabcb]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: James Knight <james.d.knight@live.com>
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 6ece8c9fd..822294c3f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -43,7 +43,7 @@ if test "$GCC" = yes; then
echo
for flag in $cflags_to_try; do
CFLAGS="$CFLAGS $flag -Werror"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
echo " $flag"
RPMCFLAGS="$RPMCFLAGS $flag"
],[])

View File

@@ -0,0 +1,45 @@
From c810a0aca3f1148d2072d44b91b8cc9caeb4cf19 Mon Sep 17 00:00:00 2001
From: James Knight <james.knight@rockwellcollins.com>
Date: Wed, 16 Nov 2016 15:54:46 -0500
Subject: [PATCH] configure.ac: correct stack protector check
If a used toolchain accepts the `-fstack-protector` option but does not
provide a stack smashing protector implementation (ex. libssp), linking
will fail:
.libs/rpmio.o: In function `Fdescr':
rpmio.c:(.text+0x672): undefined reference to `__stack_chk_fail_local'
.libs/rpmio.o: In function `Fdopen':
rpmio.c:(.text+0xce9): undefined reference to `__stack_chk_fail_local'
.libs/rpmio.o: In function `ufdCopy':
rpmio.c:(.text+0x10f7): undefined reference to `__stack_chk_fail_local'
...
This is a result of testing for `-fstack-protector` support using a main
that GCC does not inject guards. GCC's manual notes that stack protector
code is only added when "[functions] that call alloca, and functions
with buffers larger than 8 bytes" [1]. This commit adjusts the stack
protector check to allocate memory on the stack (via `alloca`).
[1]: https://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Optimize-Options.html
Signed-off-by: James Knight <james.knight@rockwellcollins.com>
[Upstream commit: https://github.com/rpm-software-management/rpm/commit/c810a0aca3f1148d2072d44b91b8cc9caeb4cf19]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index a9730d3bc..b4b3fe8fb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -43,7 +43,7 @@ if test "$GCC" = yes; then
echo
for flag in $cflags_to_try; do
CFLAGS="$CFLAGS $flag -Werror"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[alloca(100);]])],[
echo " $flag"
RPMCFLAGS="$RPMCFLAGS $flag"
],[])

View File

@@ -0,0 +1,55 @@
From edadcf67980764c104c25c7c1a0ba91257b89698 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Thu, 8 Dec 2016 23:33:30 +0100
Subject: [PATCH 1/2] Detect bfd.h to enable/disable sepdebugcrcfix building
tools/sepdebugcrcfix includes <bfd.h>, but this header from binutils
is not checked in the configure script. Due to this, sepdebugcrcfix is
attempted to be built even when <bfd.h> is not available. This commit
addresses that by adding the appropriate configure check.
This fixes the following build error:
tools/sepdebugcrcfix.c:31:17: fatal error: bfd.h: No such file or directory
compilation terminated.
make[3]: *** [tools/sepdebugcrcfix.o] Error 1
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Makefile.am | 2 ++
configure.ac | 3 +++
2 files changed, 5 insertions(+)
diff --git a/Makefile.am b/Makefile.am
index 863138c..d8a68f0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -168,9 +168,11 @@ elfdeps_SOURCES = tools/elfdeps.c
elfdeps_LDADD = rpmio/librpmio.la
elfdeps_LDADD += @WITH_LIBELF_LIB@ @WITH_POPT_LIB@
+if HAS_BFD_H
rpmlibexec_PROGRAMS += sepdebugcrcfix
sepdebugcrcfix_SOURCES = tools/sepdebugcrcfix.c
sepdebugcrcfix_LDADD = @WITH_LIBELF_LIB@
+endif # HAS_BFD_H
endif
endif
diff --git a/configure.ac b/configure.ac
index c5ae701..b99ecb8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -242,6 +242,9 @@ AC_CHECK_HEADERS([dwarf.h], [
])
AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
+AC_CHECK_HEADERS([bfd.h])
+AM_CONDITIONAL(HAS_BFD_H, [test "${ac_cv_header_bfd_h}" = "yes"])
+
#=================
# Check for beecrypt library if requested.
AC_ARG_WITH(beecrypt, [ --with-beecrypt build with beecrypt support ],,[with_beecrypt=no])
--
2.7.4

View File

@@ -0,0 +1,43 @@
From 65afab91444d4996a8e61d1e2d27d52e18417ef5 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Thu, 8 Dec 2016 23:45:55 +0100
Subject: [PATCH 2/2] tools/sepdebugcrcfix.c: fix build with recent binutils
Moderately recent binutils versions install a <bfd.h> header that
checks if config.h is included. While this makes sense in binutils
itself, it does not outside. So the binutils developers have added a
check: if PACKAGE or PACKAGE_VERSION are defined, they assume you're
re-using bfd.h outside of binutils, and therefore including it without
including config.h is legit.
So we take the same approch as numerous users of bfd.h: fake a PACKAGE
definition. See for example tools/perf/util/srcline.c in the Linux
kernel source tree.
This fixes the following build error:
In file included from tools/sepdebugcrcfix.c:31:0:
/home/test/autobuild/run/instance-0/output/host/usr/arc-buildroot-linux-uclibc/sysroot/usr/include/bfd.h:35:2: error: #error config.h must be included before this header
#error config.h must be included before this header
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
tools/sepdebugcrcfix.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/sepdebugcrcfix.c b/tools/sepdebugcrcfix.c
index cd7fa02..e7b480f 100644
--- a/tools/sepdebugcrcfix.c
+++ b/tools/sepdebugcrcfix.c
@@ -28,6 +28,8 @@
#include <error.h>
#include <libelf.h>
#include <gelf.h>
+/* Needed to please <bfd.h> */
+#define PACKAGE "rpm"
#include <bfd.h>
#define _(x) x
--
2.7.4

View File

@@ -0,0 +1,20 @@
comment "rpm needs a toolchain w/ dynamic library and threads"
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
depends on BR2_USE_MMU
config BR2_PACKAGE_RPM
bool "rpm"
depends on !BR2_STATIC_LIBS # dlfcn.h
depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
depends on BR2_TOOLCHAIN_HAS_THREADS # beecrypt
depends on BR2_USE_MMU # fork()
select BR2_PACKAGE_BEECRYPT if !BR2_PACKAGE_LIBNSS
select BR2_PACKAGE_BERKELEYDB
select BR2_PACKAGE_FILE
select BR2_PACKAGE_POPT
select BR2_PACKAGE_ZLIB
help
The RPM Package Manager (RPM).
http://www.rpm.org/

View File

@@ -0,0 +1,2 @@
# From http://rpm.org/wiki/Releases/4.13.0.1
sha1 9566f95f38fcb214e439c552f378c2f64ba0aff9 rpm-4.13.0.1.tar.bz2

View File

@@ -0,0 +1,81 @@
################################################################################
#
# rpm
#
################################################################################
RPM_VERSION_MAJOR = 4.13
RPM_VERSION = $(RPM_VERSION_MAJOR).0.1
RPM_SOURCE = rpm-$(RPM_VERSION).tar.bz2
RPM_SITE = http://ftp.rpm.org/releases/rpm-$(RPM_VERSION_MAJOR).x
RPM_DEPENDENCIES = host-pkgconf berkeleydb file popt zlib
RPM_LICENSE = GPL-2.0 or LGPL-2.0 (library only)
RPM_LICENSE_FILES = COPYING
RPM_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)
# 0001-configure-ac-use-link-instead-of-compile-for-gcc-flags-test.patch
# 0002-configure-ac-correct-stack-protector-check.patch
RPM_AUTORECONF = YES
RPM_CONF_OPTS = \
--disable-python \
--disable-rpath \
--with-external-db \
--with-gnu-ld \
--without-cap \
--without-hackingdocs \
--without-lua
ifeq ($(BR2_PACKAGE_ACL),y)
RPM_DEPENDENCIES += acl
RPM_CONF_OPTS += --with-acl
else
RPM_CONF_OPTS += --without-acl
endif
ifeq ($(BR2_PACKAGE_LIBNSS),y)
RPM_DEPENDENCIES += libnss
RPM_CONF_OPTS += --without-beecrypt
RPM_CFLAGS += -I$(STAGING_DIR)/usr/include/nss -I$(STAGING_DIR)/usr/include/nspr
else
RPM_DEPENDENCIES += beecrypt
RPM_CONF_OPTS += --with-beecrypt
RPM_CFLAGS += -I$(STAGING_DIR)/usr/include/beecrypt
endif
ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y)
RPM_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr
else
RPM_CONF_OPTS += --without-libintl-prefix
endif
ifeq ($(BR2_PACKAGE_LIBARCHIVE),y)
RPM_DEPENDENCIES += libarchive
RPM_CONF_OPTS += --with-archive
else
RPM_CONF_OPTS += --without-archive
endif
ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
RPM_DEPENDENCIES += libselinux
RPM_CONF_OPTS += --with-selinux
else
RPM_CONF_OPTS += --without-selinux
endif
# For the elfutils and binutils dependencies, there are no
# configuration options to explicitly enable/disable them.
ifeq ($(BR2_PACKAGE_ELFUTILS),y)
RPM_DEPENDENCIES += elfutils
endif
ifeq ($(BR2_PACKAGE_BINUTILS),y)
RPM_DEPENDENCIES += binutils
endif
# ac_cv_prog_cc_c99: RPM uses non-standard GCC extensions (ex. `asm`).
RPM_CONF_ENV = \
ac_cv_prog_cc_c99='-std=gnu99' \
CFLAGS="$(TARGET_CFLAGS) $(RPM_CFLAGS)"
$(eval $(autotools-package))