hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
################################################################################
#
# bash
#
################################################################################
 
BASH_VERSION = 5.1.16
BASH_SITE = $(BR2_GNU_MIRROR)/bash
BASH_DEPENDENCIES = ncurses readline host-bison
BASH_LICENSE = GPL-3.0+
BASH_LICENSE_FILES = COPYING
BASH_CPE_ID_VENDOR = gnu
 
# We want the bash binary in /bin
BASH_CONF_OPTS = \
   --bindir=/bin \
   --with-installed-readline \
   --without-bash-malloc
 
BASH_CONF_ENV += \
   ac_cv_rl_prefix="$(STAGING_DIR)" \
   ac_cv_rl_version="$(READLINE_VERSION)" \
   bash_cv_getcwd_malloc=yes \
   bash_cv_job_control_missing=present \
   bash_cv_sys_named_pipes=present \
   bash_cv_func_sigsetjmp=present \
   bash_cv_printf_a_format=yes
 
# The static build needs some trickery
ifeq ($(BR2_STATIC_LIBS),y)
BASH_CONF_OPTS += --enable-static-link
# bash wants to redefine the getenv() function. To check whether this is
# possible, AC_TRY_RUN is used which is not possible in
# cross-compilation.
# On uClibc, redefining getenv is not possible; on glibc and musl it is.
# Related:
# http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html
ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)
BASH_CONF_ENV += bash_cv_getenv_redef=no
else
BASH_CONF_ENV += bash_cv_getenv_redef=yes
endif
endif
 
define BASH_REMOVE_UNUSED_FILES
   rm -f $(TARGET_DIR)/bin/bashbug
endef
BASH_POST_INSTALL_TARGET_HOOKS += BASH_REMOVE_UNUSED_FILES
 
ifeq ($(BR2_PACKAGE_BASH_LOADABLE_EXAMPLES),y)
define BASH_REMOVE_LOADABLE_UNUSED_FILES
   rm -f $(TARGET_DIR)/usr/lib/bash/Makefile.inc
   rm -f $(TARGET_DIR)/usr/lib/bash/loadables.h
endef
BASH_POST_INSTALL_TARGET_HOOKS += BASH_REMOVE_LOADABLE_UNUSED_FILES
else
define BASH_REMOVE_LOADABLE_EXAMPLES
   rm -rf $(TARGET_DIR)/usr/lib/bash
endef
BASH_POST_INSTALL_TARGET_HOOKS += BASH_REMOVE_LOADABLE_EXAMPLES
endif
 
# Add /bin/bash to /etc/shells otherwise some login tools like dropbear
# can reject the user connection. See man shells.
define BASH_ADD_MKSH_TO_SHELLS
   grep -qsE '^/bin/bash$$' $(TARGET_DIR)/etc/shells \
       || echo "/bin/bash" >> $(TARGET_DIR)/etc/shells
endef
BASH_TARGET_FINALIZE_HOOKS += BASH_ADD_MKSH_TO_SHELLS
 
define BASH_INSTALL_TARGET_ENV
   $(INSTALL) -D -m 0644 $(BASH_PKGDIR)/bash.bashrc \
       $(TARGET_DIR)/etc/bash.bashrc
endef
BASH_POST_INSTALL_TARGET_HOOKS += BASH_INSTALL_TARGET_ENV
 
$(eval $(autotools-package))