############################################################################### # IPFire.org - An Open Source Firewall Solution # # Copyright (C) - IPFire Development Team # ############################################################################### name = bash version = 5.2.15 release = 2 groups = System/Tools url = https://www.gnu.org/software/bash/ license = GPLv2+ summary = Bash is short for born again shell. description Bash is the shell, or command language interpreter, that will appear in the GNU operating system. Bash is an sh-compatible shell that incorporates useful features from the Korn shell (ksh) and C shell (csh). It is intended to conform to the IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools standard. end source_dl = https://ftp.gnu.org/gnu/bash/ build requires autoconf automake bison filesystem >= 002 ncurses-devel readline-devel >= 8.0 texinfo end prepare_cmds # Bash uses the RTLD_LAZY option when loading libraries. We want to use # RTLD_NOW (it is defined from : sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \ -i builtins/enable.def end CPPFLAGS += -D_GNU_SOURCE %(getconf LFS_CFLAGS) CPPFLAGS += -DNON_INTERACTIVE_LOGIN_SHELLS CPPFLAGS += -DSSH_SOURCE_BASHRC # 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. CPPFLAGS += -DRECYCLES_PIDS CPPFLAGS += \ -DDEFAULT_PATH_VALUE='\"/usr/local/bin:/usr/bin\"' \ -DSTANDARD_UTILS_PATH='\"/bin:/usr/bin:/sbin:/usr/sbin\"' \ -DSYS_BASH_LOGOUT='\"/etc/bash.bash_logout\"' configure_options += \ --with-installed-readline \ --with-afs \ --with-bash-malloc=no make_build_targets += CPPFLAGS="%{CPPFLAGS}" test make tests end install_cmds mkdir -pv %{BUILDROOT}%{sysconfdir}/{profile.d,skel} install -v -m 700 -d %{BUILDROOT}/root # Bash startup files cp -vf %{DIR_SOURCE}/dot_bash_logout %{BUILDROOT}%{sysconfdir}/skel/.bash_logout cp -vf %{DIR_SOURCE}/dot_bash_profile %{BUILDROOT}%{sysconfdir}/skel/.bash_profile cp -vf %{DIR_SOURCE}/dot_bashrc %{BUILDROOT}%{sysconfdir}/skel/.bashrc cp -vf %{DIR_SOURCE}/dot_bash_logout %{BUILDROOT}/root/.bash_logout cp -vf %{DIR_SOURCE}/dot_bash_profile %{BUILDROOT}/root/.bash_profile cp -vf %{DIR_SOURCE}/dot_bashrc %{BUILDROOT}/root/.bashrc # /etc/profile.d cp -vf %{DIR_SOURCE}/profile.d/* %{BUILDROOT}/etc/profile.d ln -svf bash %{BUILDROOT}%{bindir}/sh # https://bugzilla.redhat.com/show_bug.cgi?id=820192 # bug #820192, need to add execable alternatives for regular built-ins for f in alias bg cd command fc fg getopts jobs read umask unalias wait; do ( echo "#!/bin/sh" echo "builtin \"${f}\" \"\$@\"" ) > "%{BUILDROOT}/%{bindir}/${f}" chmod +x "%{BUILDROOT}%{bindir}/${f}" done # Set correct permissions for binaries. find %{BUILDROOT}%{bindir} -type f -executable -exec chmod 755 {} \; end end packages package %{name} groups += Base Build requires coreutils /etc/bashrc /etc/profile end provides /bin/bash /bin/sh end recommends bash-completion end conflicts filesystem < 002 end script posttransin # Create /etc/shells, if it does not exist. [ -f "/etc/shells" ] || touch /etc/shells found_sh=0 found_bash=0 while read line; do if [ "/bin/bash" = "${line}" ]; then found_bash=1 elif [ "/bin/sh" = "${line}" ]; then found_sh=1 fi done < /etc/shells if [ "${found_bash}" = "0" ]; then echo "/bin/bash" >> /etc/shells fi if [ "${found_sh}" = "0" ]; then echo "/bin/sh" >> /etc/shells fi end script postun [ -e "/etc/shells" ] || exit 0 # Remove /bin/bash and /bin/sh from /etc/shells. while read line; do if [ "/bin/bash" = "${line}" ]; then continue elif [ "/bin/sh" = "${line}" ]; then continue fi echo "${line}" done < /etc/shells > /etc/shells.$$ mv -f /etc/shells{.$$,} end end package %{name}-debuginfo template DEBUGINFO end end