summaryrefslogtreecommitdiffstats
path: root/meta/recipes-extended/bash/bash.inc
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-extended/bash/bash.inc')
-rw-r--r--meta/recipes-extended/bash/bash.inc53
1 files changed, 37 insertions, 16 deletions
diff --git a/meta/recipes-extended/bash/bash.inc b/meta/recipes-extended/bash/bash.inc
index db326660ea..e541161c75 100644
--- a/meta/recipes-extended/bash/bash.inc
+++ b/meta/recipes-extended/bash/bash.inc
@@ -1,5 +1,6 @@
1SUMMARY = "An sh-compatible command language interpreter" 1SUMMARY = "An sh-compatible command language interpreter"
2HOMEPAGE = "http://tiswww.case.edu/php/chet/bash/bashtop.html" 2HOMEPAGE = "http://tiswww.case.edu/php/chet/bash/bashtop.html"
3DESCRIPTION = "Bash is the GNU Project's Bourne Again SHell, a complete implementation of the IEEE POSIX and Open Group shell specification with interactive command line editing, job control on architectures that support it, csh-like features such as history substitution and brace expansion, and a slew of other features."
3SECTION = "base/shell" 4SECTION = "base/shell"
4 5
5DEPENDS = "ncurses bison-native virtual/libiconv" 6DEPENDS = "ncurses bison-native virtual/libiconv"
@@ -21,18 +22,18 @@ CFLAGS += "-DHEREDOC_PIPESIZE=65536"
21# causes a lot of garbage in non-interactive shells 22# causes a lot of garbage in non-interactive shells
22CFLAGS += "-DBRACKETED_PASTE_DEFAULT=0" 23CFLAGS += "-DBRACKETED_PASTE_DEFAULT=0"
23 24
24ALTERNATIVE_${PN} = "bash sh" 25ALTERNATIVE:${PN} = "bash sh"
25ALTERNATIVE_LINK_NAME[bash] = "${base_bindir}/bash" 26ALTERNATIVE_LINK_NAME[bash] = "${base_bindir}/bash"
26ALTERNATIVE_TARGET[bash] = "${base_bindir}/bash" 27ALTERNATIVE_TARGET[bash] = "${base_bindir}/bash"
27ALTERNATIVE_LINK_NAME[sh] = "${base_bindir}/sh" 28ALTERNATIVE_LINK_NAME[sh] = "${base_bindir}/sh"
28ALTERNATIVE_TARGET[sh] = "${base_bindir}/bash.${BPN}" 29ALTERNATIVE_TARGET[sh] = "${base_bindir}/bash.${BPN}"
29ALTERNATIVE_PRIORITY = "100" 30ALTERNATIVE_PRIORITY = "100"
30 31
31RDEPENDS_${PN} += "base-files" 32RDEPENDS:${PN} += "base-files"
32RDEPENDS_${PN}_class-nativesdk = "" 33RDEPENDS:${PN}:class-nativesdk = ""
33RDEPENDS_${PN}-ptest += "make coreutils perl sed shadow util-linux-setpriv" 34RDEPENDS:${PN}-ptest += "make coreutils perl sed shadow util-linux-setpriv"
34 35
35RDEPENDS_${PN}-ptest_append_libc-glibc = " \ 36RDEPENDS:${PN}-ptest:append:libc-glibc = " \
36 glibc-gconv-big5hkscs \ 37 glibc-gconv-big5hkscs \
37 glibc-gconv-iso8859-1 \ 38 glibc-gconv-iso8859-1 \
38 glibc-utils \ 39 glibc-utils \
@@ -45,13 +46,13 @@ RDEPENDS_${PN}-ptest_append_libc-glibc = " \
45 46
46CACHED_CONFIGUREVARS += "headersdir=${includedir}/${PN}" 47CACHED_CONFIGUREVARS += "headersdir=${includedir}/${PN}"
47 48
48do_configure_prepend () { 49do_configure:prepend () {
49 if [ ! -e ${S}/acinclude.m4 ]; then 50 if [ ! -e ${S}/acinclude.m4 ]; then
50 cat ${S}/aclocal.m4 > ${S}/acinclude.m4 51 cat ${S}/aclocal.m4 > ${S}/acinclude.m4
51 fi 52 fi
52} 53}
53 54
54do_compile_prepend() { 55do_compile:prepend() {
55 # Remove any leftover .build files. This ensures that bash always has the 56 # Remove any leftover .build files. This ensures that bash always has the
56 # same version number and keeps builds reproducible 57 # same version number and keeps builds reproducible
57 rm -f ${B}/.build 58 rm -f ${B}/.build
@@ -61,14 +62,20 @@ do_compile_ptest () {
61 oe_runmake buildtest 62 oe_runmake buildtest
62} 63}
63 64
64do_install_append () { 65do_install:prepend () {
66 # Ensure determinism as this counter increases for each make call
67 rm -f ${B}/.build
68}
69
70do_install:append () {
65 # Move /usr/bin/bash to /bin/bash, if need 71 # Move /usr/bin/bash to /bin/bash, if need
66 if [ "${base_bindir}" != "${bindir}" ]; then 72 if [ "${base_bindir}" != "${bindir}" ]; then
67 mkdir -p ${D}${base_bindir} 73 mkdir -p ${D}${base_bindir}
68 mv ${D}${bindir}/bash ${D}${base_bindir} 74 mv ${D}${bindir}/bash ${D}${base_bindir}
69 fi 75 fi
70} 76}
71do_install_append_class-target () { 77
78fix_absolute_paths () {
72 # Clean buildhost references in bashbug 79 # Clean buildhost references in bashbug
73 sed -i -e "s,--sysroot=${STAGING_DIR_TARGET},,g" \ 80 sed -i -e "s,--sysroot=${STAGING_DIR_TARGET},,g" \
74 -e "s,-I${WORKDIR}/\S* ,,g" \ 81 -e "s,-I${WORKDIR}/\S* ,,g" \
@@ -87,12 +94,24 @@ do_install_append_class-target () {
87 ${D}${libdir}/bash/Makefile.inc 94 ${D}${libdir}/bash/Makefile.inc
88} 95}
89 96
97do_install:append:class-target () {
98 fix_absolute_paths
99}
100
101do_install:append:class-nativesdk () {
102 fix_absolute_paths
103}
104
90do_install_ptest () { 105do_install_ptest () {
91 make INSTALL_TEST_DIR=${D}${PTEST_PATH}/tests install-test 106 make INSTALL_TEST_DIR=${D}${PTEST_PATH}/tests install-test
92 cp ${B}/Makefile ${D}${PTEST_PATH} 107 cp ${B}/Makefile ${D}${PTEST_PATH}
108 cp ${B}/config.h ${D}${PTEST_PATH}
109 cp ${B}/version.h ${D}${PTEST_PATH}
110 cp ${S}/y.tab.[ch] ${D}${PTEST_PATH}
93 install -D ${WORKDIR}/run-bash-ptests ${D}${PTEST_PATH}/run-bash-ptests 111 install -D ${WORKDIR}/run-bash-ptests ${D}${PTEST_PATH}/run-bash-ptests
94 sed -i -e 's/^Makefile/_Makefile/' -e "s,--sysroot=${STAGING_DIR_TARGET},,g" \ 112 sed -i -e 's/^Makefile/_Makefile/' -e "s,--sysroot=${STAGING_DIR_TARGET},,g" \
95 -e 's|${DEBUG_PREFIX_MAP}||g' \ 113 -e 's|${DEBUG_PREFIX_MAP}||g' \
114 -e 's|${BUILD_LDFLAGS}||g' \
96 -e "s,${S},,g" -e "s,${B},,g" -e "s,${STAGING_DIR_NATIVE},,g" \ 115 -e "s,${S},,g" -e "s,${B},,g" -e "s,${STAGING_DIR_NATIVE},,g" \
97 -e 's:${HOSTTOOLS_DIR}/::g' \ 116 -e 's:${HOSTTOOLS_DIR}/::g' \
98 -e 's:${UNINATIVE_LOADER}:${base_bindir}/false:g' \ 117 -e 's:${UNINATIVE_LOADER}:${base_bindir}/false:g' \
@@ -103,20 +122,22 @@ do_install_ptest () {
103# hash 122# hash
104do_install_ptest[vardepsexclude] += "UNINATIVE_LOADER" 123do_install_ptest[vardepsexclude] += "UNINATIVE_LOADER"
105 124
106pkg_postinst_${PN} () { 125pkg_postinst:${PN} () {
107 grep -q "^${base_bindir}/bash$" $D${sysconfdir}/shells || echo ${base_bindir}/bash >> $D${sysconfdir}/shells 126 grep -q "^${base_bindir}/bash$" $D${sysconfdir}/shells || echo ${base_bindir}/bash >> $D${sysconfdir}/shells
108} 127}
109 128
110pkg_postrm_${PN} () { 129pkg_postrm:${PN} () {
111 printf "$(grep -v "^${base_bindir}/bash$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells 130 printf "$(grep -v "^${base_bindir}/bash$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells
112} 131}
113 132
114PACKAGES += "${PN}-bashbug" 133PACKAGES += "${PN}-bashbug"
115FILES_${PN} = "${bindir}/bash ${base_bindir}/bash.bash" 134FILES:${PN} = "${bindir}/bash ${base_bindir}/bash.bash"
116FILES_${PN}-bashbug = "${bindir}/bashbug" 135FILES:${PN}-bashbug = "${bindir}/bashbug"
117 136
118PACKAGE_BEFORE_PN += "${PN}-loadable" 137PACKAGE_BEFORE_PN += "${PN}-loadable"
119RDEPENDS_${PN}-loadable += "${PN}" 138RDEPENDS:${PN}-loadable += "${PN}"
120FILES_${PN}-loadable += "${libdir}/bash/*" 139FILES:${PN}-loadable += "${libdir}/bash/*"
121 140
122RPROVIDES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sh /bin/bash', '', d)}" 141# Limit the RPROVIDES here to class target so that if usrmerge is enabled for nativesdk, it does not
142# include host system paths in /bin/
143RPROVIDES:${PN}:append:class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sh /bin/bash', '', d)}"