3 Summary: The GNU Bourne Again shell
7 Url: http://www.gnu.org/software/bash
8 Source0: ftp://ftp.gnu.org/gnu/bash/%{name}-%{version}.tar.gz
11 Patch0: bash41-001.patch
12 Patch1: bash41-002.patch
13 Patch2: bash41-003.patch
14 Patch3: bash41-004.patch
15 Patch4: bash41-005.patch
16 Patch5: deb-bash-config.patch
17 Patch6: privmode.patch
18 Patch7: bash-default-editor.patch
19 Patch8: bash-subst-param-length.patch
20 Patch9: pgrp-pipe.patch
21 Patch10: input-err.patch
22 Patch11: bash-aliases-repeat.patch
23 Patch12: builtins-declare-fix.patch
26 BuildRequires: autoconf
29 The GNU Bourne Again shell (Bash) is a shell or command language
30 interpreter that is compatible with the Bourne shell (sh). Bash
31 incorporates useful features from the Korn shell (ksh) and the C shell
32 (csh). Most sh scripts can be run by bash without modification.
35 Summary: Documentation files for %{name}
36 Group: Development/Languages
37 Requires: %{name} = %{version}-%{release}
40 This package contains documentation files for %{name}.
42 %define pkgdocdir %{_datadir}/doc/%{name}-%{version}
47 %patch0 -p1 -b .bash41-001
48 %patch1 -p1 -b .bash41-002
49 %patch2 -p1 -b .bash41-003
50 %patch3 -p1 -b .bash41-004
51 %patch4 -p1 -b .bash41-005
52 %patch5 -p1 -b .deb-bash-config
53 %patch6 -p1 -b .privmode
54 %patch7 -p1 -b .bash-default-editor
55 %patch8 -p0 -b .bash-subst-param-length
56 %patch9 -p0 -b .pgrp-pipe
57 %patch10 -p0 -b .input-err
58 %patch11 -p0 -b .bash-aliases-repeat
59 %patch12 -p1 -b .builtins-declare-fix
63 %configure --enable-largefile --without-bash-malloc --disable-nls
65 # Recycles pids is neccessary. When bash's last fork's pid was X
66 # and new fork's pid is also X, bash has to wait for this same pid.
67 # Without Recycles pids bash will not wait.
68 make "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS `getconf LFS_CFLAGS`"
73 rm -rf $RPM_BUILD_ROOT
75 if [ -e autoconf ]; then
76 # Yuck. We're using autoconf 2.1x.
81 perl -pi -e 's,bashref\.info,bash.info,' doc/bashref.info
83 make DESTDIR=$RPM_BUILD_ROOT install
85 mkdir -p $RPM_BUILD_ROOT/etc
87 # make manpages for bash builtins as per suggestion in DOC/README
90 /^\.SH NAME/, /\\- bash built-in commands, see \\fBbash\\fR(1)$/{
93 s/\\- bash built-in commands, see \\fBbash\\fR(1)$//
98 ' builtins.1 > man.pages
99 for i in echo pwd test kill; do
100 perl -pi -e "s,$i,,g" man.pages
101 perl -pi -e "s, , ,g" man.pages
104 install -c -m 644 builtins.1 ${RPM_BUILD_ROOT}%{_mandir}/man1/builtins.1
106 for i in `cat man.pages` ; do
107 echo .so man1/builtins.1 > ${RPM_BUILD_ROOT}%{_mandir}/man1/$i.1
108 chmod 0644 ${RPM_BUILD_ROOT}%{_mandir}/man1/$i.1
112 # Link bash man page to sh so that man sh works.
113 ln -s bash.1 ${RPM_BUILD_ROOT}%{_mandir}/man1/sh.1
115 # Not for printf, true and false (conflict with coreutils)
116 rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/printf.1
117 rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/true.1
118 rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/false.1
120 pushd $RPM_BUILD_ROOT
122 mv ./usr/bin/bash ./bin
124 rm -f .%{_infodir}/dir
126 mkdir -p $RPM_BUILD_ROOT/etc/skel
127 #install -c -m644 %SOURCE1 $RPM_BUILD_ROOT/etc/skel/.bashrc
128 #install -c -m644 %SOURCE2 $RPM_BUILD_ROOT/etc/skel/.bash_profile
129 #install -c -m644 %SOURCE3 $RPM_BUILD_ROOT/etc/skel/.bash_logout
130 LONG_BIT=$(getconf LONG_BIT)
131 mv $RPM_BUILD_ROOT%{_bindir}/bashbug \
132 $RPM_BUILD_ROOT%{_bindir}/bashbug-"${LONG_BIT}"
134 # Fix missing sh-bangs in example scripts (bug #225609).
136 examples/scripts/krand.bash \
137 examples/scripts/bcsh.sh \
138 examples/scripts/precedence \
139 examples/scripts/shprompt
141 cp "$script" "$script"-orig
142 echo '#!/bin/bash' > "$script"
143 cat "$script"-orig >> "$script"
147 rm -rf %{buildroot}%{_bindir}/bashbug-*
151 rm -rf $RPM_BUILD_ROOT
153 # ***** bash doesn't use install-info. It's always listed in %{_infodir}/dir
154 # to prevent prereq loops
156 # post is in lua so that we can run it without any external deps. Helps
157 # for bootstrapping a new install.
158 # Jesse Keating 2009-01-29 (code from Ignacio Vazquez-Abrams)
163 f = io.open("/etc/shells", "r");
166 f = io.open("/etc/shells", "w");
182 f = io.open("/etc/shells", "a");
185 f:write("/bin/bash\n")
194 if [ "$1" = 0 ]; then
195 /bin/grep -v '^/bin/bash$' < /etc/shells | \
196 /bin/grep -v '^/bin/sh$' > /etc/shells.new
197 /bin/mv /etc/shells.new /etc/shells