]> git.ipfire.org Git - people/stevee/ipfire-3.x.git/blob - bash/bash.nm
0ca9d15607df77075d840c32a626589e500c1d9e
[people/stevee/ipfire-3.x.git] / bash / bash.nm
1 ###############################################################################
2 # IPFire.org - An Open Source Firewall Solution #
3 # Copyright (C) - IPFire Development Team <info@ipfire.org> #
4 ###############################################################################
5
6 name = bash
7 version = 4.4
8 release = 1
9
10 groups = System/Tools
11 url = http://www.gnu.org/software/bash/
12 license = GPLv2+
13 summary = Bash is short for born again shell.
14
15 description
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
19 to conform to the IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools standard.
20 end
21
22 source_dl = http://ftp.gnu.org/gnu/bash/
23
24 build
25 requires
26 autoconf
27 automake
28 bison
29 filesystem >= 002
30 ncurses-devel
31 readline-devel >= 7.0
32 texinfo
33 end
34
35 # Disable parallel build
36 MAKETUNING =
37
38 prepare_cmds
39 # Bash uses the RTLD_LAZY option when loading libraries. We want to use
40 # RTLD_NOW (it is defined from <dlfcn.h>:
41 sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \
42 -i builtins/enable.def
43 end
44
45 CPPFLAGS += -D_GNU_SOURCE %(getconf LFS_CFLAGS)
46
47 CPPFLAGS += -DNON_INTERACTIVE_LOGIN_SHELLS
48 CPPFLAGS += -DSSH_SOURCE_BASHRC
49
50 # Recycles pids is neccessary. When bash's last fork's pid was X
51 # and new fork's pid is also X, bash has to wait for this same pid.
52 # Without Recycles pids bash will not wait.
53 CPPFLAGS += -DRECYCLES_PIDS
54
55 CPPFLAGS += \
56 -DDEFAULT_PATH_VALUE='\"/usr/local/bin:/usr/bin\"' \
57 -DSTANDARD_UTILS_PATH='\"/bin:/usr/bin:/sbin:/usr/sbin\"' \
58 -DSYS_BASH_LOGOUT='\"/etc/bash.bash_logout\"'
59
60 configure_options += \
61 --with-installed-readline \
62 --with-afs \
63 --with-bash-malloc=no
64
65 make_build_targets += CPPFLAGS="%{CPPFLAGS}"
66
67 test
68 make tests
69 end
70
71 install_cmds
72 mkdir -pv %{BUILDROOT}%{sysconfdir}/{profile.d,skel}
73 mkdir -pv %{BUILDROOT}/root
74
75 # Bash startup files
76 cp -vf %{DIR_SOURCE}/dot_bash_logout %{BUILDROOT}%{sysconfdir}/skel/.bash_logout
77 cp -vf %{DIR_SOURCE}/dot_bash_profile %{BUILDROOT}%{sysconfdir}/skel/.bash_profile
78 cp -vf %{DIR_SOURCE}/dot_bashrc %{BUILDROOT}%{sysconfdir}/skel/.bashrc
79
80 cp -vf %{DIR_SOURCE}/dot_bash_logout %{BUILDROOT}/root/.bash_logout
81 cp -vf %{DIR_SOURCE}/dot_bash_profile %{BUILDROOT}/root/.bash_profile
82 cp -vf %{DIR_SOURCE}/dot_bashrc %{BUILDROOT}/root/.bashrc
83
84 # /etc/profile.d
85 cp -vf %{DIR_SOURCE}/profile.d/* %{BUILDROOT}/etc/profile.d
86
87 ln -svf bash %{BUILDROOT}%{bindir}/sh
88
89 # https://bugzilla.redhat.com/show_bug.cgi?id=820192
90 # bug #820192, need to add execable alternatives for regular built-ins
91 for f in alias bg cd command fc fg getopts jobs read umask unalias wait; do
92 (
93 echo "#!/bin/sh"
94 echo "builtin \"${f}\" \"\$@\""
95 ) > "%{BUILDROOT}/%{bindir}/${f}"
96 chmod +x "%{BUILDROOT}%{bindir}/${f}"
97 done
98 end
99 end
100
101 packages
102 package %{name}
103 groups += Base Build
104
105 requires
106 coreutils
107 /etc/bashrc
108 /etc/profile
109 end
110
111 provides
112 /bin/bash
113 /bin/sh
114 end
115
116 conflicts
117 filesystem < 002
118 end
119
120 script posttransin
121 # Create /etc/shells, if it does not exist.
122 [ -f "/etc/shells" ] || touch /etc/shells
123
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
135 echo "/bin/bash" >> /etc/shells
136 fi
137
138 if [ "${found_sh}" = "0" ]; then
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
148 if [ "/bin/bash" = "${line}" ]; then
149 continue
150 elif [ "/bin/sh" = "${line}" ]; then
151 continue
152 fi
153
154 echo "${line}"
155 done < /etc/shells > /etc/shells.$$
156
157 mv -f /etc/shells{.$$,}
158 end
159 end
160
161 package %{name}-debuginfo
162 template DEBUGINFO
163 end
164 end