# # spec file for package bash (Version 4.0) # # Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # Name: bash BuildRequires: bison fdupes ncurses-devel License: GPLv2+ Group: System/Shells %define bash_vers 4.0 %define rl_vers 6.0 Recommends: bash-doc = %bash_vers Recommends: bash-lang = %bash_vers Suggests: command-not-found AutoReqProv: on Version: 4.0 Release: 18 Summary: The GNU Bourne-Again Shell Url: http://www.gnu.org/software/bash/bash.html Source0: ftp://ftp.gnu.org/gnu/bash/bash-%{bash_vers}.tar.bz2 Source1: ftp://ftp.gnu.org/gnu/readline/readline-%{rl_vers}.tar.bz2 Source2: bash-%{bash_vers}-patches.tar.bz2 Source3: readline-%{rl_vers}-patches.tar.bz2 Source4: run-tests Source5: dot.bashrc Source6: dot.profile Source7: bash-rpmlintrc Source8: baselibs.conf Patch0: bash-%{bash_vers}.dif Patch1: bash-2.03-manual.patch Patch2: bash-4.0-security.patch Patch3: bash-3.2-2.4.4.patch Patch4: bash-3.0-evalexp.patch Patch5: bash-3.0-warn-locale.patch Patch6: bash-3.0-nfs_redir.patch Patch7: bash-3.0-decl.patch Patch8: bash-4.0-async-bnc523667.dif Patch9: bash-4.0-extended_quote.patch Patch10: bash-3.2-printf.patch Patch11: bash-4.0-loadables.dif Patch14: bash-3.2-sigrestart.patch Patch15: bash-3.2-longjmp.dif Patch16: bash-4.0-setlocale.dif Patch17: bash-4.0-headers.dif Patch20: readline-%{rl_vers}.dif Patch21: readline-4.3-input.dif Patch22: readline-6.0-wrap.patch Patch23: readline-5.2-conf.patch Patch24: readline-6.0-metamode.patch Patch30: readline-6.0-destdir.patch Patch40: bash-4.0.10-typo.patch Patch42: bash-4.0.24-acl.dif BuildRoot: %{_tmppath}/%{name}-%{version}-build %global _sysconfdir /etc %global _incdir %{_includedir} %global _ldldir /%{_lib}/bash %global _minsh 0 %{expand: %%global rl_major %(echo %{rl_vers} | sed -r 's/.[0-9]+//g')} %description Bash is an sh-compatible command interpreter that executes commands read from standard input or from a file. Bash incorporates useful features from the Korn and C shells (ksh and csh). Bash is intended to be a conformant implementation of the IEEE Posix Shell and Tools specification (IEEE Working Group 1003.2). Authors: -------- Brian Fox Chet Ramey %package -n bash-doc License: GPLv2+ Summary: Documentation how to Use the GNU Bourne-Again Shell Group: Documentation/Man Provides: bash:%{_infodir}/bash.info.gz PreReq: %install_info_prereq Version: 4.0 Release: 18 AutoReqProv: on %description -n bash-doc This package contains the documentation for using the bourne shell interpreter Bash. Authors: -------- Brian Fox Chet Ramey %lang_package(bash) %package -n bash-devel License: GPLv2+ Summary: Include Files mandatory for Development of bash loadable builtins Group: Development/Languages/C and C++ Version: 4.0 Release: 7 AutoReqProv: on %description -n bash-devel This package contains the C header files for writing loadable new builtins for the interpreter Bash. Use -I /usr/include/bash/ on the compilers command line. Authors: -------- Brian Fox Chet Ramey %package -n bash-loadables License: GPLv2+ Summary: Loadable bash builtins Group: System/Shells Version: 4.0 Release: 7 AutoReqProv: on %description -n bash-loadables This package contains the examples for the ready-to-dynamic-load builtins found in the source tar ball of the bash: basename Return non-directory portion of pathname. cut cut(1) replacement. dirname Return directory portion of pathname. finfo Print file info. getconf POSIX.2 getconf utility. head Copy first part of files. id POSIX.2 user identity. ln Make links. logname Print login name of current user. mkdir Make directories. pathchk Check pathnames for validity and portability. print Loadable ksh-93 style print builtin. printenv Minimal builtin clone of BSD printenv(1). push Anyone remember TOPS-20? realpath Canonicalize pathnames, resolving symlinks. rmdir Remove directory. sleep sleep for fractions of a second. strftime Loadable builtin interface to strftime(3). sync Sync the disks by forcing pending filesystem writes to complete. tee Duplicate standard input. tty Return terminal name. uname Print system information. unlink Remove a directory entry. whoami Print out username of current user. Authors: -------- Brian Fox Chet Ramey %package -n libreadline6 License: GPLv2+ Summary: The Readline Library Group: System/Libraries Provides: bash:/%{_lib}/libreadline.so.%{rl_major} Version: 6.0 Release: 18 Recommends: readline-doc = %{version} # bug437293 %ifarch ppc64 Obsoletes: readline-64bit %endif # Provides: readline = 6.0 Obsoletes: readline <= 6.0 AutoReqProv: on %description -n libreadline6 The readline library is used by the Bourne Again Shell (bash, the standard command interpreter) for easy editing of command lines. This includes history and search functionality. Authors: -------- Brian Fox Chet Ramey %package -n readline-devel License: GPLv2+ Summary: Include Files and Libraries mandatory for Development Group: Development/Libraries/C and C++ Provides: bash:%{_libdir}/libreadline.a Version: 6.0 Release: 18 Requires: libreadline6 = %{version} Requires: ncurses-devel Recommends: readline-doc = %{version} AutoReqProv: on # bug437293 %ifarch ppc64 Obsoletes: readline-devel-64bit %endif # %description -n readline-devel This package contains all necessary include files and libraries needed to develop applications that require these. Authors: -------- Brian Fox Chet Ramey %package -n readline-doc License: GPLv2+ Summary: Documentation how to Use and Program with the Readline Library Group: System/Libraries Provides: readline:%{_infodir}/readline.info.gz PreReq: %install_info_prereq Version: 6.0 Release: 18 AutoReqProv: on %description -n readline-doc This package contains the documentation for using the readline library as well as programming with the interface of the readline library. Authors: -------- Brian Fox Chet Ramey %prep %setup -q -n bash-%{bash_vers} -b1 -b2 -b3 for p in ../bash-%{bash_vers}-patches/*; do test -e $p || break echo Patch $p patch -s -p0 < $p done unset p %patch1 -p0 -b .manual %patch2 -p0 -b .security %patch3 -p0 -b .2.4.4 %patch4 -p0 -b .evalexp %patch5 -p0 -b .warnlc %patch6 -p0 -b .nfs_redir %patch7 -p0 -b .decl %patch8 -p0 -b .async %patch9 -p0 -b .extended_quote %patch10 -p0 -b .printf %patch11 -p0 -b .plugins %patch14 -p0 -b .sigrestart %patch15 -p0 -b .longjmp %patch16 -p0 -b .setlocale %patch17 -p0 -b .headers %patch21 -p0 -b .zerotty %patch22 -p0 -b .wrap %patch23 -p0 -b .conf %patch24 -p0 -b .metamode %patch40 -p0 -b .typo %patch42 -p0 -b .acl %patch0 -p0 cd ../readline-%{rl_vers} for p in ../readline-%{rl_vers}-patches/*; do test -e $p || break echo Patch $p patch -s -p0 < $p done %patch21 -p2 -b .zerotty %patch22 -p2 -b .wrap %patch23 -p2 -b .conf %patch24 -p2 -b .metamode %patch30 -p0 -b .destdir %patch20 -p0 %build LANG=POSIX LC_ALL=$LANG unset LC_CTYPE CPU=$(uname -m 2> /dev/null) HOSTTYPE=${CPU} MACHTYPE=${CPU}-suse-linux export LANG LC_ALL HOSTTYPE MACHTYPE cd ../readline-%{rl_vers} %{?suse_update_config:%{suse_update_config -f support}} autoconf cflags () { local flag=$1; shift case "${RPM_OPT_FLAGS}" in *${flag}*) return esac if test -n "$1" && gcc -Werror $flag -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then local var=$1; shift eval $var=\${$var:+\$$var\ }$flag fi } echo 'int main () { return !(sizeof(void*) >= 8); }' | gcc -x c -o test64 - if ./test64 ; then LARGEFILE="" else LARGEFILE="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" fi rm -f ./test64 CFLAGS="$RPM_OPT_FLAGS $LARGEFILE -D_GNU_SOURCE -DRECYCLES_PIDS -Wall -g" LDFLAGS="" cflags -std=gnu89 CFLAGS cflags -Wuninitialized CFLAGS cflags -Wextra CFLAGS cflags -Wno-unprototyped-calls CFLAGS cflags -Wno-switch-enum CFLAGS cflags -Wno-unused-variable CFLAGS cflags -Wno-unused-parameter CFLAGS cflags -ftree-loop-linear CFLAGS cflags -pipe CFLAGS cflags -Wl,--as-needed LDFLAGS cflags -Wl,-O2 LDFLAGS cflags -Wl,--hash-size=16699 LDFLAGS cflags -Wl,-rpath,%{_ldldir}/%{bash_vers} LDFLAGS CC=gcc CC_FOR_BUILD="$CC" CFLAGS_FOR_BUILD="$CFLAGS" LDFLAGS_FOR_BUILD="$LDFLAGS" export CC_FOR_BUILD CFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD CFLAGS LDFLAGS CC ./configure --build=%{_target_cpu}-suse-linux \ --prefix=%{_prefix} \ --with-curses \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --libdir=%{_libdir} make make documentation ln -sf shlib/libreadline.so.%{rl_vers} libreadline.so ln -sf shlib/libreadline.so.%{rl_vers} libreadline.so.%{rl_major} ln -sf shlib/libhistory.so.%{rl_vers} libhistory.so ln -sf shlib/libhistory.so.%{rl_vers} libhistory.so.%{rl_major} cd ../bash-%{bash_vers} # /proc is required for correct configuration test -d /dev/fd || { echo "/proc is not mounted!" >&2; exit 1; } ln -sf ../readline-%{rl_vers} readline export LD_LIBRARY_PATH=$PWD/../readline-%{rl_vers} CC="gcc -I$PWD -L$PWD/../readline-%{rl_vers}" %if %_minsh cflags -Os CFLAGS # cflags -U_FORTIFY_SOURCE CFLAGS # cflags -funswitch-loops CFLAGS # cflags -ftree-loop-im CFLAGS # cflags -ftree-loop-ivcanon CFLAGS # cflags -fprefetch-loop-arrays CFLAGS # cflags -fno-stack-protector CFLAGS # cflags -fno-unwind-tables CFLAGS # cflags -fno-asynchronous-unwind-tables CFLAGS %endif CC_FOR_BUILD="$CC" CFLAGS_FOR_BUILD="$CFLAGS" export CC_FOR_BUILD CFLAGS_FOR_BUILD CFLAGS LDFLAGS CC %{?suse_update_config:%{suse_update_config -f support}} autoconf # # We have a malloc with our glibc # SYSMALLOC=" --without-gnu-malloc --without-bash-malloc " # # System readline library (comment out it not to be used) # READLINE=" --with-installed-readline " bash support/mkconffiles -v %if %_minsh ./configure --build=%{_target_cpu}-suse-linux \ --prefix=%{_prefix} \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --libdir=%{_libdir} \ --with-curses \ --with-afs \ $SYSMALLOC \ --enable-minimal-config \ --enable-arith-for-command \ --enable-array-variables \ --enable-brace-expansion \ --enable-casemod-attributes \ --enable-casemod-expansion \ --enable-command-timing \ --enable-cond-command \ --enable-cond-regexp \ --enable-coprocesses \ --enable-directory-stack \ --enable-dparen-arithmetic \ --enable-extended-glob \ --enable-job-control \ --enable-net-redirections \ --enable-process-substitution \ --disable-strict-posix-default \ --enable-separate-helpfiles=%{_datadir}/bash/helpfiles \ $READLINE make Program=sh sh make distclean %endif ./configure --build=%{_target_cpu}-suse-linux \ --prefix=%{_prefix} \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --libdir=%{_libdir} \ --with-curses \ --with-afs \ $SYSMALLOC \ --enable-job-control \ --enable-alias \ --enable-readline \ --enable-history \ --enable-bang-history \ --enable-directory-stack \ --enable-process-substitution \ --enable-prompt-string-decoding \ --enable-select \ --enable-help-builtin \ --enable-array-variables \ --enable-brace-expansion \ --enable-command-timing \ --enable-disabled-builtins \ --disable-strict-posix-default \ --enable-separate-helpfiles=%{_datadir}/bash/helpfiles \ $READLINE make %{?do_profiling:CFLAGS="$CFLAGS %cflags_profile_generate"} \ all printenv recho zecho xcase env -i HOME=$PWD TERM=$TERM LD_LIBRARY_PATH=$LD_LIBRARY_PATH make TESTSCRIPT=%{SOURCE4} check make %{?do_profiling:CFLAGS="$CFLAGS %cflags_profile_feedback" clean} all make -C examples/loadables/ make documentation %install cd ../readline-%{rl_vers} make install htmldir=%{_defaultdocdir}/readline \ installdir=%{_defaultdocdir}/readline/examples DESTDIR=%{buildroot} make install-shared libdir=/%{_lib} linkagedir=%{_libdir} DESTDIR=%{buildroot} rm -rf %{buildroot}%{_defaultdocdir}/bash mkdir -p %{buildroot}%{_defaultdocdir}/bash chmod 0755 %{buildroot}/%{_lib}/libhistory.so.%{rl_vers} chmod 0755 %{buildroot}/%{_lib}/libreadline.so.%{rl_vers} rm -vf %{buildroot}/%{_lib}/libhistory.so.%{rl_vers}*old rm -vf %{buildroot}/%{_lib}/libreadline.so.%{rl_vers}*old rm -vf %{buildroot}/%{_lib}/libhistory.so rm -vf %{buildroot}/%{_lib}/libreadline.so ln -sf /%{_lib}/libhistory.so.%{rl_vers} %{buildroot}/%{_libdir}/libhistory.so ln -sf /%{_lib}/libreadline.so.%{rl_vers} %{buildroot}/%{_libdir}/libreadline.so cd ../bash-%{bash_vers} make install DESTDIR=%{buildroot} make -C examples/loadables/ install-plugins DESTDIR=%{buildroot} libdir=/%{_lib} make -C examples/loadables/ install-headers DESTDIR=%{buildroot} mkdir -p %{buildroot}/bin mv %{buildroot}%{_bindir}/bash %{buildroot}/bin/ %if %_minsh install sh %{buildroot}/bin/sh ln -sf ../../bin/sh %{buildroot}%{_bindir}/sh %else ln -sf bash %{buildroot}/bin/sh ln -sf ../../bin/bash %{buildroot}%{_bindir}/sh %endif ln -sf ../../bin/bash %{buildroot}%{_bindir}/rbash install -m 644 COMPAT NEWS %{buildroot}%{_defaultdocdir}/bash/ install -m 644 COPYING %{buildroot}%{_defaultdocdir}/bash/ install -m 644 doc/FAQ %{buildroot}%{_defaultdocdir}/bash/ install -m 644 doc/INTRO %{buildroot}%{_defaultdocdir}/bash/ install -m 644 doc/*.html %{buildroot}%{_defaultdocdir}/bash/ install -m 644 doc/builtins.1 %{buildroot}%{_mandir}/man1/bashbuiltins.1 install -m 644 doc/rbash.1 %{buildroot}%{_mandir}/man1/rbash.1 gzip -9f %{buildroot}%{_infodir}/*.inf*[^z] || true mkdir -p %{buildroot}%{_sysconfdir}/bash_completion.d sed 's/^|//' > %{buildroot}%{_defaultdocdir}/bash/BUGS <<\EOF Known problems -------------- | This version of bash/readline supports multi byte handling that is e.g. wide character support for UTF-8. This causes problems in geting the current cursor position within the readline runtime library: | bash-%{bash_vers}> LANG=ja_JP bash-%{bash_vers}> echo -n "Hello" bash-%{bash_vers}> | In other words the prompt overwrites the output of the echo comand. The boolean variable byte-oriented set in %{_sysconfdir}/inputrc or $HOME/.inputrc avoids this but disables multi byte handling. EOF # remove unpackaged files rm -fv %{buildroot}%{_libdir}/libhistory.so.* rm -fv %{buildroot}%{_libdir}/libreadline.so.* rm -fv %{buildroot}%{_infodir}/rluserman.info.gz rm -fv %{buildroot}%{_mandir}/man3/history.3* mkdir -p %{buildroot}%{_sysconfdir}/skel install -m 644 %{S:5} %{buildroot}%{_sysconfdir}/skel/.bashrc install -m 644 %{S:6} %{buildroot}%{_sysconfdir}/skel/.profile touch -t 199605181720.50 %{buildroot}%{_sysconfdir}/skel/.bash_history chmod 600 %{buildroot}%{_sysconfdir}/skel/.bash_history %find_lang bash %fdupes -s %{buildroot}%{_datadir}/bash/helpfiles %post -n bash-doc %install_info --info-dir=%{_infodir} %{_infodir}/bash.info.gz %postun -n bash-doc %install_info_delete --info-dir=%{_infodir} %{_infodir}/bash.info.gz %post -n libreadline6 -p /sbin/ldconfig %postun -n libreadline6 -p /sbin/ldconfig %post -n readline-doc %install_info --info-dir=%{_infodir} %{_infodir}/history.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/readline.info.gz %postun -n readline-doc %install_info_delete --info-dir=%{_infodir} %{_infodir}/history.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/readline.info.gz %clean ldd -u -r %{buildroot}/bin/bash || true ldd -u -r %{buildroot}%{_libdir}/libreadline.so || true %{?buildroot: %{__rm} -rf %{buildroot}} %files %defattr(-,root,root) %config %attr(600,root,root) %{_sysconfdir}/skel/.bash_history %config %attr(644,root,root) %{_sysconfdir}/skel/.bashrc %config %attr(644,root,root) %{_sysconfdir}/skel/.profile /bin/bash /bin/sh %dir %{_sysconfdir}/bash_completion.d %{_bindir}/bashbug %{_bindir}/rbash %{_bindir}/sh %dir %{_datadir}/bash %dir %{_datadir}/bash/helpfiles %{_datadir}/bash/helpfiles/* %files -n bash-lang -f bash.lang %defattr(-,root,root) %files -n bash-doc %defattr(-,root,root) %doc %{_infodir}/bash.info.gz %doc %{_mandir}/man1/bash.1.gz %doc %{_mandir}/man1/bashbuiltins.1.gz %doc %{_mandir}/man1/bashbug.1.gz %doc %{_mandir}/man1/rbash.1.gz %doc %{_defaultdocdir}/bash/ %files -n bash-devel %defattr(-,root,root) %dir /%{_includedir}/bash/ %dir /%{_includedir}/bash/%{bash_vers}/ %dir /%{_includedir}/bash/%{bash_vers}/builtins/ /%{_incdir}/bash/%{bash_vers}/*.h /%{_incdir}/bash/%{bash_vers}/builtins/*.h %files -n bash-loadables %defattr(-,root,root) %dir %{_ldldir}/ %dir %{_ldldir}/%{bash_vers}/ %{_ldldir}/%{bash_vers}/* %files -n libreadline6 %defattr(-,root,root) /%{_lib}/libhistory.so.%{rl_major} /%{_lib}/libhistory.so.%{rl_vers} /%{_lib}/libreadline.so.%{rl_major} /%{_lib}/libreadline.so.%{rl_vers} %files -n readline-devel %defattr(-,root,root) %{_incdir}/readline/ %{_libdir}/libhistory.a %{_libdir}/libhistory.so %{_libdir}/libreadline.a %{_libdir}/libreadline.so %doc %{_mandir}/man3/readline.3.gz %files -n readline-doc %defattr(-,root,root) %doc %{_infodir}/history.info.gz %doc %{_infodir}/readline.info.gz %doc %{_defaultdocdir}/readline/ %changelog