OBS-URL: https://build.opensuse.org/package/show/Base:System/bash?expand=0&rev=406
		
			
				
	
	
		
			672 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			RPMSpec
		
	
	
	
	
	
			
		
		
	
	
			672 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			RPMSpec
		
	
	
	
	
	
| #
 | |
| # spec file for package bash
 | |
| #
 | |
| # Copyright (c) 2025 SUSE LLC
 | |
| #
 | |
| # 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 https://bugs.opensuse.org/
 | |
| #
 | |
| 
 | |
| 
 | |
| %define _buildshell /bin/bash
 | |
| %if 0%{?suse_version} > 1500
 | |
| %bcond_with alternatives
 | |
| %else
 | |
| %bcond_without alternatives
 | |
| %endif
 | |
| # Unicode tests do alloc to much memory
 | |
| %bcond_with altarray
 | |
| %define rl_major 8
 | |
| %define rl_version 8.3
 | |
| 
 | |
| %define         bextend %{nil}
 | |
| %define         bversion 5.3
 | |
| %define         bpatchlvl %(bash %{_sourcedir}/get_version_number.sh %{_sourcedir})
 | |
| %global         _incdir     %{_includedir}
 | |
| %global         _ldldir     %{_libdir}/bash
 | |
| %global         _minsh      0
 | |
| %bcond_with     import_function
 | |
| %bcond_with     sjis
 | |
| Name:           bash
 | |
| Version:        %{bversion}.%{bpatchlvl}
 | |
| Release:        0
 | |
| Summary:        The GNU Bourne-Again Shell
 | |
| # The package bash-completion is a source of
 | |
| # bugs which will hit at most this package
 | |
| #Recommends:	bash-completion
 | |
| License:        GPL-3.0-or-later
 | |
| Group:          System/Shells
 | |
| URL:            https://www.gnu.org/software/bash/bash.html
 | |
| # Git:          https://git.savannah.gnu.org/cgit/bash.git
 | |
| Source0:        https://ftp.gnu.org/gnu/bash/bash-%{bversion}%{bextend}.tar.gz
 | |
| Source1:        bash-%{bversion}-patches.tar.bz2
 | |
| Source2:        get_version_number.sh
 | |
| Source4:        run-tests
 | |
| Source5:        dot.bashrc
 | |
| Source6:        dot.profile
 | |
| Source7:        bash-rpmlintrc
 | |
| Source8:        baselibs.conf
 | |
| # Remember unsafe method, compare with
 | |
| # https://lists.gnu.org/archive/html/bug-bash/2011-03/msg00070.html
 | |
| # https://lists.gnu.org/archive/html/bug-bash/2011-03/msg00071.html
 | |
| # https://lists.gnu.org/archive/html/bug-bash/2011-03/msg00073.html
 | |
| Source9:        bash-4.2-history-myown.dif.bz2
 | |
| Source10:       https://ftp.gnu.org/gnu/bash/bash-%{bversion}%{bextend}.tar.gz.sig
 | |
| # GPG key 7C0135FB088AAF6C66C650B9BB5869F064EA74AB Chet Ramey
 | |
| Source11:       bash.keyring
 | |
| Patch0:         bash-%{bversion}.dif
 | |
| Patch1:         bash-2.03-manual.patch
 | |
| Patch3:         bash-4.3-2.4.4.patch
 | |
| Patch4:         bash-3.0-evalexp.patch
 | |
| Patch5:         bash-3.0-warn-locale.patch
 | |
| Patch9:         bash-4.3-include-unistd.dif
 | |
| Patch10:        bash-3.2-printf.patch
 | |
| Patch11:        bash-4.3-loadables.dif
 | |
| Patch12:        bash-4.1-completion.dif
 | |
| Patch13:        bash-4.2-nscdunmap.dif
 | |
| Patch14:        bash-4.3-sigrestart.patch
 | |
| # PATCH-FIX-UPSTREAM bnc#382214 -- disabled due bnc#806628 by -DBNC382214=0
 | |
| Patch16:        bash-4.0-setlocale.dif
 | |
| Patch40:        bash-4.1-bash.bashrc.dif
 | |
| # PATCH-FIX-SUSE For bsc#1065158 add support for broken Japanese locale Shift JIS
 | |
| Patch42:        bash-4.3-SJIS.patch
 | |
| Patch46:        man2html-no-timestamp.patch
 | |
| # PATCH-FIX-SUSE
 | |
| Patch48:        bash-4.3-extra-import-func.patch
 | |
| # PATCH-EXTEND-SUSE Allow root to clean file system if filled up
 | |
| Patch49:        bash-4.3-pathtemp.patch
 | |
| # PATCH-FIX-SUSE
 | |
| Patch50:        quotes-man2html.patch
 | |
| BuildRequires:  autoconf
 | |
| # latest bash uses with patch 18 the tag YYEOF
 | |
| BuildRequires:  bison
 | |
| BuildRequires:  fdupes
 | |
| BuildRequires:  glibc-locale
 | |
| BuildRequires:  glibc-locale-base
 | |
| BuildRequires:  makeinfo
 | |
| BuildRequires:  patchutils
 | |
| BuildRequires:  pkgconfig
 | |
| BuildRequires:  screen
 | |
| BuildRequires:  sed
 | |
| %if %{with alternatives}
 | |
| BuildRequires:  update-alternatives
 | |
| %endif
 | |
| BuildRequires:  pkgconfig(audit)
 | |
| BuildRequires:  pkgconfig(ncurses)
 | |
| # This has to be always the same version as included in the bash its self
 | |
| BuildRequires:  pkgconfig(readline) >= %{rl_version}
 | |
| %if %{with alternatives}
 | |
| Requires(post): update-alternatives
 | |
| Requires(post): libreadline%{rl_major} >= %{rl_version}
 | |
| Requires(preun): update-alternatives
 | |
| %endif
 | |
| Requires:       libreadline%{rl_major} >= %{rl_version}
 | |
| Suggests:       bash-doc = %{version}
 | |
| Suggests:       command-not-found
 | |
| Provides:       /bin/bash
 | |
| %if %{with alternatives}
 | |
| Provides:       /bin/sh
 | |
| %else
 | |
| Suggests:       bash-sh
 | |
| %endif
 | |
| 
 | |
| %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).
 | |
| 
 | |
| %package doc
 | |
| Summary:        Documentation how to Use the GNU Bourne-Again Shell
 | |
| Group:          Documentation/HTML
 | |
| Supplements:    (bash and patterns-base-documentation)
 | |
| Provides:       bash:%{_infodir}/bash.info.gz
 | |
| BuildArch:      noarch
 | |
| 
 | |
| %description doc
 | |
| This package contains the documentation for using the bourne shell
 | |
| interpreter Bash.
 | |
| 
 | |
| %lang_package
 | |
| 
 | |
| %if %{without alternatives}
 | |
| %package sh
 | |
| Summary:        Handle behaviour of /bin/sh
 | |
| Group:          System/Shells
 | |
| Provides:       alternative(sh)
 | |
| Conflicts:      alternative(sh)
 | |
| Provides:       bash:%{_bindir}/sh
 | |
| PreReq:         bash
 | |
| BuildArch:      noarch
 | |
| 
 | |
| %description sh
 | |
| Use bash as /bin/sh implementation.
 | |
| %endif
 | |
| 
 | |
| %package devel
 | |
| Summary:        Include Files mandatory for Development of bash loadable builtins
 | |
| Group:          Development/Languages/C and C++
 | |
| 
 | |
| %description devel
 | |
| This package contains the C header files for writing loadable new
 | |
| builtins for the interpreter Bash. Use the output of the command
 | |
| `pkg-config bash --cflags' on the compilers command line.
 | |
| 
 | |
| %package loadables
 | |
| Summary:        Loadable bash builtins
 | |
| Group:          System/Shells
 | |
| 
 | |
| %description 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.
 | |
| 
 | |
| %if 0%{?suse_version} >= 1550
 | |
| %package legacybin
 | |
| Summary:        Legacy usrmove helper files
 | |
| Group:          System/Shells
 | |
| Requires:       bash = %{version}-%{release}
 | |
| Requires:       this-is-only-for-build-envs
 | |
| Conflicts:      rpmlib(X-CheckUnifiedSystemdir)
 | |
| BuildArch:      noarch
 | |
| 
 | |
| %description legacybin
 | |
| Legacy usrmove helper files for the build system. Do not install.
 | |
| %endif
 | |
| 
 | |
| %prep
 | |
| %if %{with sjis}
 | |
| %{warn:Shift JIS support is enabled}
 | |
| %else
 | |
| %{echo:Shift JIS support is DISABLED}
 | |
| %endif
 | |
| %if %{with alternatives}
 | |
| %{echo:alternatives is enabled}
 | |
| %else
 | |
| %{echo:alternatives is DISABLED}
 | |
| %endif
 | |
| %setup -q -n bash-%{bversion}%{bextend} -b1
 | |
| typeset -i level
 | |
| set +x
 | |
| for patch in ../bash-%{bversion}-patches/*-*[0-9]; do
 | |
|     test -e $patch || break
 | |
| 
 | |
|     let level=0 || true
 | |
|     file=$(lsdiff --files=1 $patch)
 | |
|     if test ! -e $file ; then
 | |
| 	file=${file#*/}
 | |
| 	let level++ || true
 | |
|     fi
 | |
|     test -e $file || exit 1
 | |
|     sed -ri '/^\*\*\* \.\./{ s@\.\./bash-%{bversion}[^/]*/@@ }' $patch
 | |
|     echo Patch $patch
 | |
|     patch -s -p$level < $patch
 | |
| done
 | |
| set -x
 | |
| %patch -P1   -b .manual
 | |
| %patch -P3   -b .2.4.4
 | |
| %patch -P4   -b .evalexp
 | |
| %patch -P5   -b .warnlc
 | |
| %patch -P9   -b .unistd
 | |
| %patch -P10  -b .printf
 | |
| %patch -P11  -b .plugins
 | |
| %patch -P12  -b .completion
 | |
| %patch -P13  -b .nscdunmap
 | |
| %patch -P14  -b .sigrestart
 | |
| %patch -P16  -b .setlocale
 | |
| %patch -P40  -b .bashrc
 | |
| %if %{with sjis}
 | |
| %patch -P42  -b .sjis
 | |
| %endif
 | |
| %patch -P46  -b .notimestamp
 | |
| %if %{with import_function}
 | |
| %patch -P48 -b .eif
 | |
| %endif
 | |
| %patch -P49  -b .pthtmp
 | |
| %patch -P50  -b .qd
 | |
| %patch -P0   -b .p0
 | |
| 
 | |
| # This has to be always the same version as included in the bash its self
 | |
| rl1=($(sed -rn '/RL_READLINE_VERSION/p' lib/readline/readline.h))
 | |
| rl2=($(sed -rn '/RL_READLINE_VERSION/p' %{_includedir}/readline/readline.h))
 | |
| test ${rl1[2]} = ${rl2[2]} || exit 1
 | |
| 
 | |
| # Sometimes we face major ABI change(s) but only a minor version change
 | |
| rl1=($(sed -rn '/RL_VERSION_MAJOR/p' lib/readline/readline.h))
 | |
| test ${rl1[2]} = %{rl_major} || exit 1
 | |
| rl2=($(sed -rn '/RL_VERSION_MINOR/p' lib/readline/readline.h))
 | |
| test ${rl1[2]}.${rl2[2]} = %{rl_version} || exit 1
 | |
| 
 | |
| %if 0%{?qemu_user_space_build}
 | |
| # Something in qemu clobbers the signal mask to block SIGALRM during the
 | |
| # execution of this test, causing it to hang.  Skip it.
 | |
| echo exit 0 > tests/read7.sub
 | |
| %endif
 | |
| 
 | |
| %build
 | |
|   LANG=POSIX
 | |
|   LC_ALL=$LANG
 | |
|   unset LC_CTYPE
 | |
|   SCREENDIR=$(mktemp -d ${PWD}/screen.XXXXXX) || exit 1
 | |
|   SCREENRC=${SCREENDIR}/bash
 | |
|   export SCREENRC SCREENDIR
 | |
|   exec 0< /dev/null
 | |
|   SCREENLOG=${SCREENDIR}/log
 | |
|   cat > $SCREENRC<<-EOF
 | |
| 	deflogin off
 | |
| 	deflog on
 | |
| 	logfile $SCREENLOG
 | |
| 	logfile flush 1
 | |
| 	logtstamp off
 | |
| 	log on
 | |
| 	setsid on
 | |
| 	scrollback 0
 | |
| 	silence on
 | |
| 	utf8 on
 | |
| 	EOF
 | |
|   HOSTTYPE=%{_target_cpu}
 | |
|   VENDOR=%{_target_vendor}
 | |
|   OSTYPE=%{_target_os}
 | |
|   MACHTYPE=${HOSTTYPE}-${VENDOR}-${OSTYPE}
 | |
|   export LANG LC_ALL HOSTTYPE VENDOR OSTYPE MACHTYPE
 | |
|   cflags ()
 | |
|   {
 | |
|       local flag=$1; shift
 | |
|       local var=$1; shift
 | |
|       test -n "${flag}" -a -n "${var}" || return
 | |
|       case "${!var}" in
 | |
|       *${flag}*) return
 | |
|       esac
 | |
|       set -o noclobber
 | |
|       case "$flag" in
 | |
|       -Wl,*)
 | |
| 	  if echo 'int main () { return 0; }' | \
 | |
| 	     ${CC:-gcc} -Werror $flag -o /dev/null -xc - > /dev/null 2>&1 ; then
 | |
| 	      eval $var=\${$var:+\$$var\ }$flag
 | |
| 	  fi
 | |
| 	  ;;
 | |
|       *)
 | |
| 	  if ${CC:-gcc} -Werror ${flag/#-Wno-/-W} -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then
 | |
| 	      eval $var=\${$var:+\$$var\ }$flag
 | |
| 	  fi
 | |
| 	  if ${CXX:-g++} -Werror ${flag/#-Wno-/-W} -S -o /dev/null -xc++ /dev/null > /dev/null 2>&1 ; then
 | |
| 	      eval $var=\${$var:+\$$var\ }$flag
 | |
| 	  fi
 | |
|       esac
 | |
|       set +o noclobber
 | |
|   }
 | |
|   LARGEFILE="$(getconf LFS_CFLAGS)"
 | |
|   CFLAGS="%{optflags} $LARGEFILE -D_GNU_SOURCE -DRECYCLES_PIDS -Wall -g"
 | |
|   LDFLAGS=""
 | |
|   #
 | |
|   # Never ever put -DMUST_UNBLOCK_CHLD herein as this breaks bash
 | |
|   #
 | |
|   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 -Wno-parentheses        CFLAGS
 | |
|   cflags -ftree-loop-linear      CFLAGS
 | |
|   cflags -pipe                   CFLAGS
 | |
|   cflags -DBNC382214=0           CFLAGS
 | |
|   cflags -DIMPORT_FUNCTIONS_DEF=0 CFLAGS
 | |
|   cflags -Wl,--as-needed         LDFLAGS
 | |
|   cflags -Wl,-O2                 LDFLAGS
 | |
|   cflags -Wl,-rpath,%{_ldldir}		      LDFLAGS
 | |
|   # /proc is required for correct configuration
 | |
|   test -d /dev/fd || { echo "/proc is not mounted!" >&2; exit 1; }
 | |
|   CC=gcc
 | |
| %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
 | |
|   CFLAGS="$CFLAGS -DDEFAULT_LOADABLE_BUILTINS_PATH='\"%{_libdir}/%{name}\"'"
 | |
|   CC_FOR_BUILD="$CC"
 | |
|   CFLAGS_FOR_BUILD="$CFLAGS"
 | |
|   export CC_FOR_BUILD CFLAGS_FOR_BUILD CFLAGS LDFLAGS CC
 | |
|   autoconf
 | |
|   #
 | |
|   # We have a malloc with our glibc
 | |
|   #
 | |
|   SYSMALLOC="
 | |
| 	--without-gnu-malloc
 | |
| 	--without-bash-malloc
 | |
| 	--enable-mem-scramble
 | |
|   "
 | |
|   #
 | |
|   # 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			\
 | |
| 	--with-gnu-ld			\
 | |
| 	$SYSMALLOC			\
 | |
| 	--enable-minimal-config		\
 | |
| 	--enable-arith-for-command	\
 | |
| 	--enable-array-variables	\
 | |
| 	--disable-alt-array-implementation \
 | |
| 	--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	\
 | |
| 	--enable-glob-asciiranges-default \
 | |
| 	--disable-strict-posix-default	\
 | |
| 	--enable-separate-helpfiles=%{_datadir}/bash/helpfiles \
 | |
| 	$READLINE
 | |
|   %make_build Program=sh sh
 | |
|   %make_build distclean
 | |
| %endif
 | |
|   ./configure --build=%{_target_cpu}-suse-linux	\
 | |
| 	--prefix=%{_prefix}		\
 | |
| 	--mandir=%{_mandir}		\
 | |
| 	--infodir=%{_infodir}		\
 | |
| 	--libdir=%{_libdir}		\
 | |
| 	--docdir=%{_docdir}/%{name}	\
 | |
| 	--with-curses			\
 | |
| 	--with-afs			\
 | |
| 	--with-gnu-ld			\
 | |
| 	$SYSMALLOC			\
 | |
| 	--enable-threads=posix		\
 | |
| 	--enable-job-control		\
 | |
| 	--enable-net-redirections	\
 | |
| 	--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-separate-helpfiles	\
 | |
| 	--enable-array-variables	\
 | |
| %if %{with altarray}
 | |
| 	--enable-alt-array-implementation \
 | |
| %else
 | |
| 	--disable-alt-array-implementation \
 | |
| %endif
 | |
| 	--enable-brace-expansion	\
 | |
| 	--enable-command-timing		\
 | |
| 	--enable-disabled-builtins	\
 | |
| 	--enable-glob-asciiranges-default \
 | |
| 	--enable-translatable-strings	\
 | |
| 	--disable-strict-posix-default	\
 | |
| 	--enable-multibyte		\
 | |
| 	--enable-separate-helpfiles=%{_datadir}/bash/helpfiles \
 | |
| 	$READLINE
 | |
|   sed -rn '/Configuration feature settings controllable by autoconf/,/End of configuration settings controllable by autoconf/p' <  config.h
 | |
|   profilecflags=CFLAGS="$CFLAGS"
 | |
| %if 0%{?do_profiling} && !0%{?want_reproducible_builds}
 | |
|   profilecflags=CFLAGS="$CFLAGS %{cflags_profile_generate}"
 | |
| %endif
 | |
|   ulimit -Hv unlimited
 | |
|   ulimit -v unlimited
 | |
|   makeopts="Machine=${HOSTTYPE} OS=${OSTYPE} VENDOR=${VENDOR} MACHTYPE=${MACHTYPE}"
 | |
|   %make_build $makeopts "$profilecflags" \
 | |
| 	all printenv recho zecho xcase
 | |
|   TMPDIR=$(mktemp -d /tmp/bash.XXXXXXXXXX) || exit 1
 | |
|   > $SCREENLOG
 | |
|   tail -q -s 0.5 -f $SCREENLOG & pid=$!
 | |
|   env -i HOME=$PWD TERM=$TERM LD_LIBRARY_PATH=$LD_RUN_PATH TMPDIR=$TMPDIR \
 | |
| 	SCREENRC=$SCREENRC SCREENDIR=$SCREENDIR \
 | |
| 	screen -D -m %make_build -j1 TESTSCRIPT=%{SOURCE4} check
 | |
|   kill -TERM $pid
 | |
| %if 0%{?do_profiling} && !0%{?want_reproducible_builds}
 | |
|   rm -f jobs.gcda
 | |
|   profilecflags=CFLAGS="$CFLAGS %{cflags_profile_feedback} -fprofile-correction"
 | |
|   %make_build $makeopts "$profilecflags" clean
 | |
| %endif
 | |
|   %make_build $makeopts "$profilecflags" all
 | |
|   %make_build $makeopts -C examples/loadables/
 | |
|   %make_build $makeopts documentation
 | |
|   grep -F '$'\' doc/bash.html %{nil:test for boo#1203091}
 | |
| 
 | |
| %check
 | |
|   rm -vf tests/*.p0
 | |
|   SCREENDIR=$(mktemp -d ${PWD}/screen.XXXXXXXXXX) || exit 1
 | |
|   SCREENRC=${SCREENDIR}/tcsh
 | |
|   TMPDIR=$(mktemp -d /tmp/bash.XXXXXXXXXX) || exit 1
 | |
|   export SCREENRC SCREENDIR TMPDIR
 | |
|   exec 0< /dev/null
 | |
|   SCREENLOG=${SCREENDIR}/log
 | |
|   cat > $SCREENRC<<-EOF
 | |
| 	deflogin off
 | |
| 	deflog on
 | |
| 	logfile $SCREENLOG
 | |
| 	logfile flush 1
 | |
| 	logtstamp off
 | |
| 	log on
 | |
| 	setsid on
 | |
| 	scrollback 0
 | |
| 	silence on
 | |
| 	utf8 on
 | |
| 	EOF
 | |
|   > $SCREENLOG
 | |
|   tail -q -s 0.5 -f $SCREENLOG & pid=$!
 | |
|   env -i HOME=$HOME TERM=$TERM TMPDIR=$TMPDIR PATH=$PATH \
 | |
| 	SCREENRC=$SCREENRC SCREENDIR=$SCREENDIR \
 | |
| 	screen -D -m %make_build -j1 check
 | |
|   sleep 1
 | |
|   kill -TERM $pid
 | |
| 
 | |
| %install
 | |
|   %make_install
 | |
|   make -C examples/loadables/ install-supported DESTDIR=%{buildroot} libdir=%{_libdir}
 | |
|   mv -vf %{buildroot}%{_ldldir}/*.h   %{buildroot}%{_includedir}/bash/
 | |
|   mv -vf %{buildroot}%{_ldldir}/*.inc %{buildroot}%{_datadir}/bash
 | |
|   rm -rf %{buildroot}/%{_lib}/pkgconfig
 | |
|   sed -ri '/CC = gcc/s@(CC = gcc).*@\1@' %{buildroot}%{_libdir}/pkgconfig/bash.pc
 | |
| %if %{with alternatives}
 | |
|   mkdir -p %{buildroot}%{_sysconfdir}/alternatives
 | |
| %endif
 | |
| #
 | |
| # It should be noted that the move of /bin/bash to /usr/bin/bash
 | |
| # had NOT done by me at 2019/02/08. Now only a symbolic link
 | |
| # remains here :(
 | |
| # The same had happen for the system POSIX shell /bin/sh
 | |
| #
 | |
|   mkdir -p %{buildroot}/bin
 | |
|   ln -sf %{_bindir}/bash %{buildroot}/bin/bash
 | |
|   ln -sf %{_bindir}/sh   %{buildroot}/bin/sh
 | |
|   ln -sf bash            %{buildroot}%{_bindir}/rbash
 | |
| %if %{with alternatives}
 | |
|   ln -sf %{_sysconfdir}/alternatives/sh %{buildroot}%{_bindir}/sh
 | |
| %else
 | |
|   ln -sf %{_bindir}/bash %{buildroot}%{_bindir}/sh
 | |
| %endif
 | |
|   install -m 644 COMPAT NEWS    %{buildroot}%{_docdir}/%{name}
 | |
|   install -m 644 doc/FAQ        %{buildroot}%{_docdir}/%{name}
 | |
|   install -m 644 doc/INTRO      %{buildroot}%{_docdir}/%{name}
 | |
|   install -m 644 doc/*.html     %{buildroot}%{_docdir}/%{name}
 | |
|   install -m 644 doc/builtins.1 %{buildroot}%{_mandir}/man1/bash_builtins.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}%{_docdir}/%{name}/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-%{bversion}> LANG=ja_JP
 | |
| bash-%{bversion}> echo -n "Hello"
 | |
| bash-%{bversion}>
 | |
| |
 | |
| 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
 | |
|   mkdir -p %{buildroot}%{_prefix}%{_sysconfdir}/skel
 | |
|   install -m 640 %{SOURCE5} %{buildroot}%{_prefix}%{_sysconfdir}/skel/.bashrc
 | |
|   install -m 640 %{SOURCE6} %{buildroot}%{_prefix}%{_sysconfdir}/skel/.profile
 | |
|   %find_lang bash
 | |
|   %fdupes -s %{buildroot}%{_datadir}/bash/helpfiles
 | |
|   sed -ri '1{ s@/bin/sh@/bin/bash@ }' %{buildroot}%{_bindir}/bashbug
 | |
| 
 | |
| %if %{with alternatives}
 | |
| %post -p %{_bindir}/bash
 | |
| %{_sbindir}/update-alternatives --quiet --force \
 | |
| 	--install %{_bindir}/sh sh %{_bindir}/bash 10100
 | |
| 
 | |
| %preun -p %{_bindir}/bash
 | |
| if test "$1" = 0; then
 | |
|         %{_sbindir}/update-alternatives --quiet --remove sh %{_bindir}/bash
 | |
| fi
 | |
| %endif
 | |
| 
 | |
| %files
 | |
| %license COPYING
 | |
| %if 0%{?suse_version} < 1550
 | |
| %dir %{_prefix}%{_sysconfdir}/
 | |
| %dir %{_prefix}%{_sysconfdir}/skel/
 | |
| %endif
 | |
| %{_prefix}%{_sysconfdir}/skel/.bashrc
 | |
| %{_prefix}%{_sysconfdir}/skel/.profile
 | |
| %if %{with alternatives}
 | |
| %ghost %config %{_sysconfdir}/alternatives/sh
 | |
| %endif
 | |
| %dir %{_sysconfdir}/bash_completion.d
 | |
| %if 0%{?suse_version} < 1550
 | |
| /bin/bash
 | |
| %if %{with alternatives}
 | |
| /bin/sh
 | |
| %endif
 | |
| %endif
 | |
| %{_bindir}/bash
 | |
| %{_bindir}/bashbug
 | |
| %{_bindir}/rbash
 | |
| %if %{with alternatives}
 | |
| %{_bindir}/sh
 | |
| %endif
 | |
| %dir %{_datadir}/bash
 | |
| %dir %{_datadir}/bash/helpfiles
 | |
| %{_datadir}/bash/helpfiles/*
 | |
| %{_mandir}/man1/bash.1%{?ext_man}
 | |
| %{_mandir}/man1/bash_builtins.1%{?ext_man}
 | |
| %{_mandir}/man1/bashbug.1%{?ext_man}
 | |
| %{_mandir}/man1/rbash.1%{?ext_man}
 | |
| 
 | |
| %if %{without alternatives}
 | |
| %files sh
 | |
| %if 0%{?suse_version} < 1550
 | |
| /bin/sh
 | |
| %endif
 | |
| %{_bindir}/sh
 | |
| %endif
 | |
| 
 | |
| %files lang -f bash.lang
 | |
| 
 | |
| %files doc
 | |
| %{_infodir}/bash.info%{?ext_info}
 | |
| %doc %{_docdir}/%{name}
 | |
| 
 | |
| %files devel
 | |
| %dir %{_includedir}/bash/
 | |
| %dir %{_includedir}/bash/builtins/
 | |
| %dir %{_includedir}/bash/include/
 | |
| %{_incdir}/bash/*.h
 | |
| %{_incdir}/bash/builtins/*.h
 | |
| %{_incdir}/bash/include/*.h
 | |
| %{_libdir}/pkgconfig/bash.pc
 | |
| %{_datadir}/bash/*.inc
 | |
| 
 | |
| %files loadables
 | |
| %{_ldldir}
 | |
| 
 | |
| %if 0%{?suse_version} >= 1550
 | |
| %files legacybin
 | |
| /bin/bash
 | |
| /bin/sh
 | |
| %endif
 | |
| 
 | |
| %changelog
 |