%define baseversion 5.2.21
%define bashversion %(echo %{baseversion} | cut -d. -f1-2)
%define patchlevel 26

Summary:      The GNU Bourne Again shell (bash).
Summary(ja):  GNU Bourne Again シェル (bash).
Name:         bash
Version:      %{bashversion}.%{patchlevel}
Release:      1%{?_dist_release}
Group:        system
Vendor:       Project Vine
Distribution: Vine Linux
Packager:     daisuke

License:      GPLv3+
Source0:      https://ftp.gnu.org/pub/gnu/bash/bash-%{baseversion}.tar.gz
Source10:     bashrc-vine

# Official upstream patches
Patch22: https://ftp.gnu.org/gnu/bash/bash-%{bashversion}-patches/bash52-022
Patch23: https://ftp.gnu.org/gnu/bash/bash-%{bashversion}-patches/bash52-023
Patch24: https://ftp.gnu.org/gnu/bash/bash-%{bashversion}-patches/bash52-024
Patch25: https://ftp.gnu.org/gnu/bash/bash-%{bashversion}-patches/bash52-025
Patch26: https://ftp.gnu.org/gnu/bash/bash-%{bashversion}-patches/bash52-026

# We don't want to add '/etc:/usr/etc' in standard utils path.
Patch101: bash-2.03-paths.patch
# Non-interactive shells beginning with argv[0][0] == '-' should run the startup files when not in posix mode.
Patch102: bash-2.03-profile.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=60870
Patch103: bash-2.05a-interpreter.patch
# Generate info for debuginfo files.
Patch104: bash-2.05b-debuginfo.patch
# Pid passed to setpgrp() can not be pid of a zombie process.
Patch105: bash-2.05b-pgrp_sync.patch
# Enable audit logs
Patch106: bash-3.2-audit.patch
# Source bashrc file when bash is run under ssh.
Patch107: bash-3.2-ssh_source_bash.patch
# Use makeinfo to generate .texi file
# Patch108: bash-infotags.patch
# Try to pick up latest `--rpm-requires` patch from http://git.altlinux.org/gears/b/bash4.git
Patch109: bash-requires.patch
Patch110: bash-setlocale.patch
# Disable tty tests while doing bash builds
Patch111: bash-tty-tests.patch

# 484809, check if interp section is NOBITS
Patch116: bash-4.0-nobits.patch

# Do the same CFLAGS in generated Makefile in examples
Patch117: bash-4.1-examples.patch

# Builtins like echo and printf won't report errors
# when output does not succeed due to EPIPE
Patch118: bash-4.1-broken_pipe.patch

# Enable system-wide .bash_logout for login shells
Patch119: bash-4.2-rc2-logout.patch

# Static analyzis shows some issues in bash-2.05a-interpreter.patch
Patch120: bash-4.2-coverity.patch

# 799958, updated info about trap
# This patch should be upstreamed.
Patch122: bash-4.2-manpage_trap.patch

# https://www.securecoding.cert.org/confluence/display/seccode/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow
# This patch should be upstreamed.
Patch123: bash-4.2-size_type.patch

# 1112710 - mention ulimit -c and -f POSIX block size
# This patch should be upstreamed.
Patch124: bash-4.3-man-ulimit.patch

# 1102815 - fix double echoes in vi visual mode
Patch125: bash-4.3-noecho.patch

#1241533,1224855 - bash leaks memory when LC_ALL set
Patch126: bash-4.3-memleak-lc_all.patch

# bash-4.4 builds loadable builtin examples by default
# this patch disables it
Patch127: bash-4.4-no-loadable-builtins.patch

# 2020528 - Add a runtime option to enable history logging to syslog
# This option is undocumented in upstream and is documented by this patch
Patch128: bash-5.0-syslog-history.patch

Buildroot:    %{_tmppath}/%{name}-%{version}-root
BuildRequires: texinfo, bison, ncurses-devel, autoconf, gettext
Obsoletes:    bash <= 1.14.7
Obsoletes:    bash2

%description
Bash is a GNU project sh-compatible shell or command language
interpreter. Bash (Bourne Again shell) incorporates useful features
from the Korn shell (ksh) and the C shell (csh). Most sh scripts
can be run by bash without modification.

Bash offers several improvements over sh, including command line
editing, unlimited size command history, job control, shell
functions and aliases, indexed arrays of unlimited size and 
integer arithmetic in any base from two to 64. Bash is ultimately
intended to conform to the IEEE POSIX P1003.2/ISO 9945.2 Shell and
Tools standard.


%package doc
Summary:  Documentation for the GNU Bourne Again shell (bash).
Summary(ja):  GNU Bourne Again シェル向けドキュメント
Group:    documentation
Requires: %{name} = %{version}-%{release}

Obsoletes: bash2-doc

%description doc
This is a separate documentation package for the GNU Bourne
Again shell.


%debug_package


%prep
%setup -q -n %{name}-%{baseversion}
%autopatch -p0 -m1 -M99
%autopatch -p1 -m100

echo %{version} > _distribution
echo %{release} |sed 's/vl.*//' > _patchlevel


%build
autoconf
%configure --with-bash-malloc=no

# Recycles pids is neccessary. When bash's last fork's pid was X
# and new fork's pid is also X, bash has to wait for this same pid.
# Without Recycles pids bash will not wait.
MFLAGS="CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS `getconf LFS_CFLAGS` -DSYSLOG_HISTORY -DSYSLOG_SHOPT=0"

# work around missing deps in Makefiles
make "$MFLAGS" version.h
make "$MFLAGS" %{?_smp_mflags} -C builtins
make "$MFLAGS" %{?_smp_mflags}


%install
if [ -e autoconf ]; then
  # Yuck. We're using autoconf 2.1x.
  export PATH=.:$PATH
fi

# Fix bug #83776
perl -pi -e 's,bashref\.info,bash.info,' doc/bashref.info

make DESTDIR=$RPM_BUILD_ROOT install

mkdir -p %{buildroot}/%{_sysconfdir}

pushd $RPM_BUILD_ROOT
 mkdir ./bin
 mv ./usr/bin/bash ./bin/bash
 ln -s bash ./bin/sh
 rm -f .%{_infodir}/dir
popd

ln -s bash.1 %{buildroot}%{_mandir}/man1/sh.1

# make manpages for bash builtins as per suggestion in DOC/README
pushd doc
sed -e '
/^\.SH NAME/, /\\- bash built-in commands, see \\fBbash\\fR(1)$/{
/^\.SH NAME/d
s/^bash, //
s/\\- bash built-in commands, see \\fBbash\\fR(1)$//
s/,//g
b
}
d
' builtins.1 > man.pages
for i in echo pwd test kill; do
  perl -pi -e "s,$i,,g" man.pages
  perl -pi -e "s,  , ,g" man.pages
done

install -c -m 644 builtins.1 %{buildroot}%{_mandir}/man1/builtins.1

for i in `cat man.pages` ; do
  echo .so man1/builtins.1 > %{buildroot}%{_mandir}/man1/$i.1
  chmod 0644 ${RPM_BUILD_ROOT}%{_mandir}/man1/$i.1
done

mkdir -p $RPM_BUILD_ROOT/etc/profile.d/
install -m 644 %{SOURCE10} $RPM_BUILD_ROOT/etc/bashrc

# Not for printf, false and true (conflict with coreutils)
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/printf.1
rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/true.1
rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/false.1

popd

%find_lang %{name}

rm -rf $RPM_BUILD_ROOT/%{_docdir}/bash


%clean
rm -rf %{buildroot}

# ***** bash doesn't use install-info. It's always listed in %{_infodir}/dir
# to prevent prereq loops

# post is in lua so that we can run it without any external deps.  Helps
# for bootstrapping a new install.
# Jesse Keating 2009-01-29 (code from Ignacio Vazquez-Abrams)
%post -p <lua>
bashfound = false;
shfound = false;
 
f = io.open("/etc/shells", "r");
if f == nil
then
  f = io.open("/etc/shells", "w");
else
  repeat
    t = f:read();
    if t == "/bin/bash"
    then
      bashfound = true;
    end
    if t == "/bin/sh"
    then
      shfound = true;
    end
  until t == nil;
end
f:close()
 
f = io.open("/etc/shells", "a");
if not bashfound
then
  f:write("/bin/bash\n")
end
if not shfound
then
  f:write("/bin/sh\n")
end
f:close()

%files -f %{name}.lang
%defattr(-,root,root)
%license COPYING
%doc CHANGES
%doc examples
%config(noreplace) /etc/bashrc
/bin/bash
/bin/sh
%{_infodir}/bash.info*
%{_mandir}/*/*
%{_mandir}/*/..1*
%{_bindir}/bashbug

%files doc
%defattr(-,root,root)
%doc COMPAT NEWS NOTES POSIX RBASH
%doc examples/functions/ examples/misc/
%doc examples/scripts*/
%doc examples/startup-files/ examples/complete/ examples/loadables/
%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
%doc doc/FAQ doc/INTRO doc/article.ms doc/README


%changelog
* Mon Jun 17 2024 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.2.26-1
- updated to 5.2 patch level 26.

* Thu Jan 12 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.2.15-1
- updated to 5.2 patch level 15.

* Sun Nov 06 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.2.2-1
- updated to 5.2 patch level 2.

* Fri Jan 14 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.1.16-1
- updated to 5.1 patch level 16.

* Wed Dec 15 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.1.12-1
- updated to 5.1 patch level 12.

* Thu Sep 02 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.1.8-1
- updated to 5.1 patch level 8.
- updated patches.

* Sat Sep 12 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.0.18-1
- updated to 5.0 patch level 18.

* Sat Feb 15 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.0.16-1
- updated to 5.0 patch level 16.

* Thu Sep 12 2019 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.0.11-1
- updated to 5.0 patch level 11.

* Thu Aug 29 2019 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.0.9-1
- updated to 5.0 patch level 9.
- dropped Patch101, 106, 108, 109, 112, 122, 134, 137 and 139.
- imported Patch140 from rawhide.

* Tue Jul  5 2016 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 4.3.46-1
- updated to 4.3 patch level 46.

* Sat Sep 26 2015 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 4.3.42-1
- updated to 4.3 patch level 42.
- imported patch 128-139 from RawHide.

* Fri Oct  3 2014 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 4.3.29-1
- updated to 4.3 patch level 29.
- removed patch1000 (included in 4.3.26).

* Thu Sep 25 2014 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 4.3.25-2
- added patch1000 to fix CVE-2014-7169.

* Thu Sep 25 2014 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 4.3.25-1
- updated to 4.3 patch level 25.

* Tue Jun 10 2014 Daisuke SUZUKI <daisuke@linux.or.jp> 4.3.18-1
- update to 4.3 patch level 18

* Wed May 14 2014 Daisuke SUZUKI <daisuke@linux.or.jp> 4.3.11-1
- update to 4.3 patch level 11

* Mon Mar 18 2013 Daisuke SUZUKI <daisuke@linux.or.jp> 4.2.45-1
- update to 4.2 patch level 45
- import some patch from fedora package (122-127)
  - patch122: Don't call malloc in signal handler
  - patch123: #799958, updated info about trap
  - patch124: #695656, block the signal and unblock it after the
    new handler is installed
  - patch125: Use unsigned type for size
    https://www.securecoding.cert.org/confluence/display/seccode/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow
  - patch126: #903833, Fix missing close(), fixes fd leaks

* Sat Oct  6 2012 Satoshi IWAMOTO <satoshi.iwamoto@nifty.ne.jp> 4.2.37-2
- remove postun lua script because bash will be never uninstalled

* Mon Sep 17 2012 Daisuke SUZUKI <daisuke@linux.or.jp> 4.2.37-1
- update to 4.2 patch level 37

* Fri Feb 17 2012 Daisuke SUZUKI <daisuke@linux.or.jp> 4.2.20-1
- update to 4.2 patch level 20

* Tue Apr 12 2011 Daisuke SUZUKI <daisuke@linux.or.jp> 4.2.8-1
- update to 4.2 patch level 8
- use lua script in post/postun
- update patches from fedora

* Fri Sep 03 2010 Daisuke SUZUKI <daisuke@linux.or.jp> 4.1-1
- update to 4.1 patch level 7

* Fri Mar  5 2010 MATSUBAYASHI Kohji <shaolin@vinelinux.org> - 3.2-9
- check if /bin/grep exists on %%post script

* Fri Feb 12 2010 MATSUBAYASHI Kohji <shaolin@vinelinux.org> - 3.2-8
- rebuilt with gcc-4.4.3-3 on ppc

* Tue Feb  2 2010 MATSUBAYASHI Kohji <shaolin@vinelinux.org> - 3.2-7
- rebuilt with new toolchain

* Fri Dec  4 2009 MATSUBAYASHI Kohji <shaolin@vinelinux.org> - 3.2-6
- revert changes on 3.2-5 (avoid a nasty dependency loop on bootstrapping)

* Fri Dec  4 2009 MATSUBAYASHI Kohji <shaolin@vinelinux.org> - 3.2-5
- add Requires(post): grep

* Sat Oct 24 2009 MATSUBAYASHI Kohji <shaolin@vinelinux.org> - 3.2-4
- remove obsolete /bin/bash2 entry from /etc/shells

* Mon Apr 27 2009 Daisuke SUZUKI <daisuke@linux.or.jp> 3.2-3
- add Requires(post): ncurses (should be added by find-requires..)

* Sun Mar 29 2009 Daisuke SUZUKI <daisuke@linux.or.jp> 3.2-2
- add upstream patch (from 040 to 048)
- build against ncurses-devel (libtinfo)
- spec in utf-8

* Mon May 12 2008 Ryoichi INAGAKI <ryo1@bc.wakwak.com> 3.2-1vl5
- added upstream patch (from 026 to 039)
- added Japanese summary
- applied new versioning policy

* Fri Jan 18 2008 Shu KONNO <owa@bg.wakwak.com> 3.2-0vl2
- rebuilt with libtermcap-devel

* Fri Oct 26 2007 Daisuke SUZUKI <daisuke@linux.or.jp> 3.2-0vl1
- new upstream release
- add upstream patch (from 001 to 025)
- remove Provides: bash2

* Wed May 09 2007 MATSUBAYASHI Kohji <shaolin@vinelinux.org> 2.05b-0vl4
- rebuilt with new toolchain

* Mon Sep 11 2006 Kazutaka HARADA <kazutaka@dc4.so-net.ne.jp> 2.05b-0vl3
- change doc Group to Applications/Documentation. <BTS:VineLinux:163>
- quote CPPFLAGS to avoid configure error. <BTS:VineLinux:173>

* Mon Jun 28 2004 NISHIMURA Daisuke <nishi@graco.c.u-tokyo.ac.jp> 2.05b-0vl2
- Don't read /etc/profile.d/*.sh in /etc/bashrc; done in /etc/profile

* Wed Mar 10 2004 Ryoichi INAGAKI <ryo1@bc.wakwak.com> 2.05b-0vl1
- update to 2.05b
- rebuild with new toolchains
- add make check
- add %postun script based on Fedora development
- README file moved doc package
- update Patch5 and Patch8 from Fedora development
- change Patch6 
- remove Patch2 and Patch100 (bash-2.05b supports multibyte string)
- add Patch11--39 from Fedora development 2.05b-36
  * Tim Waugh <twaugh@redhat.com> 
  - Fix parameter expansion in multibyte locales (bug #112657).
  - Speed up UTF-8 command-line redrawing in the common case (bug #102353,
    bug #110777).
  - Apply upstream patches (bug #109269 among others).
  - Fix bash.info (bug #83776).
  - Add bash205b-007 patch to fix bug #106876.
  - Avoid crashing on multibyte input when locale is set incorrectly
    (bug #74266).
  - LFS support (bug #103627).
  - Fix completion display when multibyte or control characters are to be
    shown (bug #90201).
  - Fix a warning message (bug #79629).
  - Don't build with AFS support (bug #86514).
  - Don't explicitly strip binaries (bug #85995).
  - Really fix bug #83331 for good.
  - Fix builtins.1.
  - Actually apply the patch (bug #83331).
  - Fix history/UTF-8 bug (bug #83331).
  - More tab-completion fixing (bug #72512).
  - Force pgrp synchronization (bug #81653).
  - Prevent prompt overwriting output (bug #74383).
  - Fix '-rbash' (bug #78455).
  - Add readline-init patch (bug #74925).
  - Add the (4) patches from ftp.gnu.org (bug #75888, bug #72512).
  - Ship '.' man page, which doesn't get picked up by glob.
  - Locale shell variables fix (bug #74701).
  * Elliot Lee <sopwith@redhat.com>
  - (patch26) Don't call 'size' in makefile. Pointless, and interferes with 
    cross compiles.

* Wed Oct  9 2002 NISHIMURA Daisuke <nishi@graco.c.u-tokyo.ac.jp> 2.05-0vl1
- update to 2.05
- add README.jpatch to %doc
- remove patch4 (bash2): revert command name in man pages to "bash"
  - fix perl command to remove man pages conflict with sh-utils
- remove section of config.h.in from patch0 to prevent remake of configure
- change patch9: define in config-top.h to avoid conflict with patch100
- remove patches 7, 10 & 101

* Mon Apr  8 2002 NISHIMURA Daisuke <nishi@graco.c.u-tokyo.ac.jp> 2.04-1vl14
- made a link for man sh

* Thu Nov 15 2001 MATSUBAYASHI Kohji <shaolin@vinelinux.org> 2.04-1vl13
- added missing %%post and %%triggerpostun section

* Sun Jul 15 2001 MATSUBAYASHI 'Shaolin' Kohji <shaolin@vinelinux.org>
- 2.04-1vl12
- now bash2 is finally bash

* Sun Jul 15 2001 Daisuke SUZUKI <daisuke@linux.or.jp> 2.04-1vl11
- build for Playstation2

* Mon Jun 11 2001 MATSUBAYASHI 'Shaolin' Kohji <shaolin@vinelinux.org>
- 2.04-1vl10
- Provides: bash = %%{version}

* Thu Jun 07 2001 Satoshi MACHINO  <machino@vinelinux.org> 2.04-1vl9
- added Provides: bash

* Thu Jun 07 2001 Satoshi MACHINO  <machino@vinelinux.org> 2.04-1vl8
- Obsoletes: bash
- changed Copyright to License

* Fri Dec 29 2000 Lisa Sagami <czs14350@mb.infoweb.ne.jp>
- 2.04-1vl7
- deleted: /etc/profile.d/alias.sh (which we have in /etc/skel/.bashrc)
- corrected: bashrc-vine -> bashrc

* Sat Dec 16 2000 Satoshi MACHINO  <machino@vinelinux.org> 2.04-1vl6
- combined bash-1.x and bash-2.x packages
- added some patches from bash-2.04-13mdk

* Sun Dec 10 2000 Jun Nishii <jun@vinelinux.org> 2.04-1vl5
- fix spec macros
- added tests

* Sun Nov 19 2000 Satoshi MACHINO <machino@vinelinux.org> 2.04-1vl5
- build with gcc-2.95.3
- partially used rpmmacros

* Fri Sep  8 2000 Jun Nishii <jun@vinelinux.org>
- minor bug fix in spec file

* Sun Aug 27 2000 MATSUBAYASHI 'Shaolin' Kohji <shaolin@rhythmaning.org>
- 2.04-1vl3
- modified %install and %files section to handle compressed man page(s)

* Thu Mar 23 2000 Yasuyuki Furukawa <furukawa@vinelinux.org>
- added pcomplete patch to fix complete if the candidate list is NULL.

* Wed Mar 22 2000 Yasuyuki Furukawa <furukawa@vinelinux.org>
- updated to 2.04

* Tue Sep 14 1999 Dale Lovelace <dale@redhat.com>
- Remove annoying ^H's from documentation

* Fri Jul 16 1999 Ken Estes <kestes@staff.mail.com>
- patch to detect what executables are required by a script.

* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com> 
- auto rebuild in the new build environment (release 4)

* Fri Mar 19 1999 Jeff Johnson <jbj@redhat.com>
- strip binaries.
- include bash-doc correctly.

* Thu Mar 18 1999 Preston Brown <pbrown@redhat.com>
- fixed post/postun /etc/shells work.

* Thu Mar 18 1999 Cristian Gafton <gafton@redhat.com>
- updated again text in the spec file

* Mon Feb 22 1999 Jeff Johnson <jbj@redhat.com>
- updated text in spec file.
- update to 2.03.

* Fri Feb 12 1999 Cristian Gafton <gafton@redhat.com>
- build it as bash2 instead of bash

* Tue Feb  9 1999 Bill Nottingham <notting@redhat.com>
- set 'NON_INTERACTIVE_LOGIN_SHELLS' so profile gets read

* Thu Jan 14 1999 Jeff Johnson <jbj@redhat.com>
- rename man pages in bash-doc to avoid packaging conflicts (#606).

* Wed Dec 02 1998 Cristian Gafton <gafton@redhat.com>
- patch for the arm
- use $RPM_ARCH-redhat-linux as the build target

* Tue Oct  6 1998 Bill Nottingham <notting@redhat.com>
- rewrite %pre, axe %postun (to avoid prereq loops)

* Wed Aug 19 1998 Jeff Johnson <jbj@redhat.com>
- resurrect for RH 6.0.

* Sun Jul 26 1998 Jeff Johnson <jbj@redhat.com>
- update to 2.02.1

* Thu Jun 11 1998 Jeff Johnson <jbj@redhat.com>
- Package for 5.2.

* Mon Apr 20 1998 Ian Macdonald <ianmacd@xs4all.nl>
- added POSIX.NOTES doc file
- some extraneous doc files removed
- minor .spec file changes

* Sun Apr 19 1998 Ian Macdonald <ianmacd@xs4all.nl>
- upgraded to version 2.02
- Alpha, MIPS & Sparc patches removed due to lack of test platforms
- glibc & signal patches no longer required
- added documentation subpackage (doc)

* Fri Nov 07 1997 Donnie Barnes <djb@redhat.com>
- added signal handling patch from Dean Gaudet <dgaudet@arctic.org> that
  is based on a change made in bash 2.0.  Should fix some early exit
  problems with suspends and fg.

* Mon Oct 20 1997 Donnie Barnes <djb@redhat.com>
- added %clean

* Mon Oct 20 1997 Erik Troan <ewt@redhat.com>
- added comment explaining why install-info isn't used
- added mips patch 

* Fri Oct 17 1997 Donnie Barnes <djb@redhat.com>
- added BuildRoot

* Tue Jun 03 1997 Erik Troan <ewt@redhat.com>
- built against glibc
