]> git.ipfire.org Git - ipfire-3.x.git/blame - bash/bash.nm
Get rid of HTTP URLs as best as possible, take one
[ipfire-3.x.git] / bash / bash.nm
CommitLineData
166a6c21 1###############################################################################
802ea3af
MT
2# IPFire.org - An Open Source Firewall Solution #
3# Copyright (C) - IPFire Development Team <info@ipfire.org> #
166a6c21
MT
4###############################################################################
5
802ea3af 6name = bash
1f700a53 7version = 5.2.9
6de61f74 8release = 2
166a6c21 9
cd711c7b 10groups = System/Tools
e14a82a1 11url = https://www.gnu.org/software/bash/
802ea3af
MT
12license = GPLv2+
13summary = Bash is short for born again shell.
166a6c21 14
802ea3af 15description
7a5553dc
SS
16 Bash is the shell, or command language interpreter, that will appear in
17 the GNU operating system. Bash is an sh-compatible shell that incorporates
18 useful features from the Korn shell (ksh) and C shell (csh). It is intended
166a6c21 19 to conform to the IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools standard.
802ea3af
MT
20end
21
1f700a53 22source_dl = https://ftp.gnu.org/gnu/bash/
802ea3af
MT
23
24build
25 requires
26 autoconf
27 automake
28 bison
9118c7ca 29 filesystem >= 002
802ea3af 30 ncurses-devel
1f700a53 31 readline-devel >= 8.0
daf84637 32 texinfo
802ea3af
MT
33 end
34
35 prepare_cmds
36 # Bash uses the RTLD_LAZY option when loading libraries. We want to use
37 # RTLD_NOW (it is defined from <dlfcn.h>:
38 sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \
39 -i builtins/enable.def
802ea3af
MT
40 end
41
f4587ad0
MT
42 CPPFLAGS += -D_GNU_SOURCE %(getconf LFS_CFLAGS)
43
44 CPPFLAGS += -DNON_INTERACTIVE_LOGIN_SHELLS
45 CPPFLAGS += -DSSH_SOURCE_BASHRC
56ba7d19
MT
46
47 # Recycles pids is neccessary. When bash's last fork's pid was X
48 # and new fork's pid is also X, bash has to wait for this same pid.
49 # Without Recycles pids bash will not wait.
f4587ad0
MT
50 CPPFLAGS += -DRECYCLES_PIDS
51
52 CPPFLAGS += \
53 -DDEFAULT_PATH_VALUE='\"/usr/local/bin:/usr/bin\"' \
54 -DSTANDARD_UTILS_PATH='\"/bin:/usr/bin:/sbin:/usr/sbin\"' \
55 -DSYS_BASH_LOGOUT='\"/etc/bash.bash_logout\"'
56
57 configure_options += \
58 --with-installed-readline \
59 --with-afs \
60 --with-bash-malloc=no
61
62 make_build_targets += CPPFLAGS="%{CPPFLAGS}"
802ea3af 63
56ba7d19
MT
64 test
65 make tests
66 end
802ea3af
MT
67
68 install_cmds
7a5553dc 69 mkdir -pv %{BUILDROOT}%{sysconfdir}/{profile.d,skel}
6de61f74 70 install -v -m 700 -d %{BUILDROOT}/root
802ea3af
MT
71
72 # Bash startup files
7a5553dc
SS
73 cp -vf %{DIR_SOURCE}/dot_bash_logout %{BUILDROOT}%{sysconfdir}/skel/.bash_logout
74 cp -vf %{DIR_SOURCE}/dot_bash_profile %{BUILDROOT}%{sysconfdir}/skel/.bash_profile
75 cp -vf %{DIR_SOURCE}/dot_bashrc %{BUILDROOT}%{sysconfdir}/skel/.bashrc
76
802ea3af
MT
77 cp -vf %{DIR_SOURCE}/dot_bash_logout %{BUILDROOT}/root/.bash_logout
78 cp -vf %{DIR_SOURCE}/dot_bash_profile %{BUILDROOT}/root/.bash_profile
79 cp -vf %{DIR_SOURCE}/dot_bashrc %{BUILDROOT}/root/.bashrc
80
81 # /etc/profile.d
82 cp -vf %{DIR_SOURCE}/profile.d/* %{BUILDROOT}/etc/profile.d
83
9118c7ca 84 ln -svf bash %{BUILDROOT}%{bindir}/sh
56ba7d19
MT
85
86 # https://bugzilla.redhat.com/show_bug.cgi?id=820192
87 # bug #820192, need to add execable alternatives for regular built-ins
88 for f in alias bg cd command fc fg getopts jobs read umask unalias wait; do
89 (
90 echo "#!/bin/sh"
91 echo "builtin \"${f}\" \"\$@\""
92 ) > "%{BUILDROOT}/%{bindir}/${f}"
93 chmod +x "%{BUILDROOT}%{bindir}/${f}"
94 done
6de61f74
SS
95
96 # Set correct permissions for binaries.
97 find %{BUILDROOT}%{bindir} -type f -executable -exec chmod 755 {} \;
802ea3af
MT
98 end
99end
100
101packages
102 package %{name}
cd711c7b
MT
103 groups += Base Build
104
774bad77 105 requires
57b0ba3a 106 coreutils
774bad77
MT
107 /etc/bashrc
108 /etc/profile
109 end
84292e3e 110
9118c7ca
MT
111 provides
112 /bin/bash
113 /bin/sh
114 end
115
116 conflicts
117 filesystem < 002
118 end
119
0e13ce8c 120 script posttransin
84292e3e
MT
121 # Create /etc/shells, if it does not exist.
122 [ -f "/etc/shells" ] || touch /etc/shells
123
c84c1f1a
MT
124 found_sh=0
125 found_bash=0
126 while read line; do
127 if [ "/bin/bash" = "${line}" ]; then
128 found_bash=1
129 elif [ "/bin/sh" = "${line}" ]; then
130 found_sh=1
131 fi
132 done < /etc/shells
133
134 if [ "${found_bash}" = "0" ]; then
84292e3e
MT
135 echo "/bin/bash" >> /etc/shells
136 fi
137
c84c1f1a 138 if [ "${found_sh}" = "0" ]; then
84292e3e
MT
139 echo "/bin/sh" >> /etc/shells
140 fi
141 end
142
143 script postun
144 [ -e "/etc/shells" ] || exit 0
145
146 # Remove /bin/bash and /bin/sh from /etc/shells.
147 while read line; do
c84c1f1a 148 if [ "/bin/bash" = "${line}" ]; then
84292e3e 149 continue
c84c1f1a 150 elif [ "/bin/sh" = "${line}" ]; then
84292e3e
MT
151 continue
152 fi
153
154 echo "${line}"
155 done < /etc/shells > /etc/shells.$$
156
157 mv -f /etc/shells{.$$,}
158 end
802ea3af 159 end
1f9bc2f0
MT
160
161 package %{name}-debuginfo
162 template DEBUGINFO
163 end
802ea3af 164end