]> git.pld-linux.org Git - packages/busybox.git/blob - busybox.spec
cde17d55c9300df894a1e0c6eb65530eb16cb7c3
[packages/busybox.git] / busybox.spec
1 # TODO:
2 # - review patch 3. Updated to 1.17.3, but the code changed so much it's unclear
3 #   if it still serves a purpose
4 # - sparc64 modules support in sparc(32), x86_64 modules support in i386 version
5 # - make internal commands work even if busybox is not in /bin/busybox (initrd)
6 #   or when /proc is not mounted (static / normal)
7 #
8 # Conditional build:
9 # alternative busybox config file (replaces default one) you should
10 # define cfgfile macro, i.e.
11 #
12 #       rpm --rebuild busybox.*.src.rpm --with altconfig --define "cfgfile bb-emb-config.h"
13 #
14 %bcond_with     altconfig       # use alternative config (defined by cfgfile)
15 %bcond_with     linkfl          # creates links to busybox binary and puts them into file list
16 %bcond_without  dynamic         # don't build dynamic (base) version
17 %bcond_without  static          # don't build static version
18 %bcond_without  initrd          # don't build initrd version
19 %bcond_with     musl            # build musl-based initrd and static versions
20 %bcond_with     glibc           # build glibc-based initrd and static versions
21 %bcond_without  verbose         # verbose build
22 # Options below are useful, when you want fileutils and grep providing.
23 # For example, ash package requires fileutils and grep.
24 %bcond_with     fileutl_prov    # adds fileutils providing
25 %bcond_with     grep_prov       # adds grep providing
26 # Option below is useful, when busybox is built with shell support.
27 %bcond_with     sh_prov         # adds /bin/sh providing
28 # WARNING! Shell, fileutils and grep providing may depend on config file!
29 # Fileutils, grep and shell provided with busybox have not such
30 # functionality as their GNU countenders.
31 #
32 %ifnarch %{ix86} %{x8664} ppc
33 %define         with_musl       1
34 %endif
35 Summary:        Set of common Unix utilities for embeded systems
36 Summary(pl.UTF-8):      Zestaw narzędzi uniksowych dla systemów wbudowanych
37 Summary(pt_BR.UTF-8):   BusyBox é um conjunto de utilitários UNIX em um único binário
38 Name:           busybox
39 # stable line only
40 Version:        1.35.0
41 Release:        6
42 License:        GPL v2
43 Group:          Applications
44 Source0:        http://www.busybox.net/downloads/%{name}-%{version}.tar.bz2
45 # Source0-md5:  585949b1dd4292b604b7d199866e9913
46 Source1:        %{name}.config
47 Source2:        %{name}-initrd.config
48 %{?with_altconfig:Source3:      %{cfgfile}}
49 Patch0:         x32.patch
50 Patch1:         %{name}-logconsole.patch
51 Patch2:         %{name}-printf-gettext.patch
52 Patch4:         %{name}-kernel_headers.patch
53 Patch5:         %{name}-insmod-morearchs.patch
54 Patch6:         %{name}-dhcp.patch
55 Patch7:         %{name}-fix_64_archs.patch
56 Patch8:         busybox-1.31.1-stime-fix.patch
57 Patch9:         %{name}-ash-export-PATH.patch
58 Patch10:        0001-modutils-check-ELF-header-before-calling-finit_module.patch
59 Patch11:        strip-quotes.patch
60 URL:            http://www.busybox.net/
61 BuildRequires:  gcc >= 3.2
62 BuildRequires:  perl-tools-pod
63 BuildRequires:  rpmbuild(macros) >= 1.652
64 %if %{with glibc} || %{with dynamic}
65 BuildRequires:  libtirpc-devel
66 BuildRequires:  pkgconfig
67 %endif
68 %if %{with initrd} || %{with static}
69         %if %{with musl}
70 BuildRequires:  linux-musl-headers
71 BuildRequires:  musl-devel
72 BuildRequires:  libtirpc-musl-devel
73         %else
74                 %if %{with glibc}
75 BuildRequires:  glibc-static
76 BuildRequires:  libcom_err-static
77 BuildRequires:  libtirpc-static
78 BuildRequires:  openssl-static
79 BuildRequires:  sqlite3-static
80                 %else
81 %if "%{_target_base_arch}" != "%{_host_base_arch}"
82 BuildRequires:  cross%{_target_base_arch}-uClibc-static
83 %else
84         %ifarch ppc %{x8664}
85 BuildRequires:  uClibc-static >= 3:0.9.30.1
86         %else
87 BuildRequires:  uClibc-static >= 3:0.9.30.1
88         %endif
89 %endif
90                 %endif
91         %endif
92 %endif
93 %{?with_sh_prov:Provides:       /bin/sh}
94 %{?with_fileutl_prov:Provides:  fileutils}
95 %{?with_grep_prov:Provides:     grep}
96 Provides:       busybox-implementation = %{version}-%{release}
97 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
98
99 %define         _enable_debug_packages  0
100
101 %define         _bindir         /bin
102
103 %if "%{_target_base_arch}" != "%{_host_base_arch}"
104         %define CrossOpts CROSS="%{_target_cpu}-pld-linux-"
105 %else
106         %define CrossOpts %{nil}
107 %endif
108
109 %define         filterout_ld    -Wl,-z,(combreloc|relro)
110
111 %if %{with dynamic}
112 %define         tirpcdcflags    %(pkg-config --cflags libtirpc)
113 %endif
114 %if %{with initrd} || %{with static}
115 %if %{with musl}
116 %define         tirpcscflags    -I%{_includedir}/musl/tirpc
117 %endif
118 %if %{with glibc}
119 %define         tirpcscflags    %(pkg-config --cflags libtirpc)
120 %endif
121 %endif
122 %if %{with glibc}
123 %if %{with initrd} || %{with static}
124 %define         tirpcslibs      %(pkg-config --libs --static libtirpc krb5 krb5-gssapi openssl sqlite3|sed 's/-l//g')
125 %endif
126 %endif
127
128 %if %{with dynamic}
129 %define         tirpcdlibs      %(pkg-config --libs libtirpc|sed s/-l//g)
130 %endif
131
132 %if %{with musl}
133 %define         tirpcslibs      tirpc
134 %endif
135
136 %description
137 BusyBox combines tiny versions of many common UNIX utilities into a
138 single small executable. It provides minimalist replacements for most
139 of the utilities you usually find in fileutils, shellutils, findutils,
140 textutils, grep, gzip, tar, etc. BusyBox provides a fairly complete
141 POSIX environment for any small or embedded system. The utilities in
142 BusyBox generally have fewer options than their full-featured GNU
143 cousins; however, the options that are included provide the expected
144 functionality and behave very much like their GNU counterparts.
145
146 BusyBox has been written with size-optimization and limited resources
147 in mind. It is also extremely modular so you can easily include or
148 exclude commands (or features) at compile time. This makes it easy to
149 customize your embedded systems. To create a working system, just add
150 a kernel, a shell (such as ash), and an editor (such as elvis-tiny or
151 ae).
152
153 %description -l pl.UTF-8
154 BusyBox składa małe wersje wielu narzędzi uniksowych w jeden mały plik
155 wykonywalny. Zapewnia minimalne zastępniki większości narzędzi
156 zawartych w pakietach fileutils, shellutils, findutils, grep, gzip,
157 tar itp. BusyBox daje w miarę kompletne środowisko POSIX dla małych
158 lub wbudowanych systemów. Narzędzia mają mniej opcji niż ich pełne
159 odpowiedniki GNU, ale mają podstawową funkcjonalność. Do działającego
160 systemu potrzeba jeszcze tylko kernela, shella (np. ash) oraz edytora
161 (np. elvis-tiny albo ae).
162
163 %description -l pt_BR.UTF-8
164 BusyBox combina versões reduzidas de muitos utilitários UNIX num único
165 executável, fornecendo substitutos minimalistas para muitos dos
166 executáveis encontrados em pacotes como fileutils, shellutils,
167 findutils, textutils, grep, gzip, tar, etc. Os utilitários do BusyBox
168 em geral têm menos opções que os utilitários GNU, mas as opções
169 implementadas comportam-se de maneira similar aos equivalentes GNU.
170
171 %package static
172 Summary:        Static busybox
173 Summary(pl.UTF-8):      Statycznie skonsolidowany busybox
174 Group:          Applications
175
176 %description static
177 Static busybox.
178
179 %description static -l pl.UTF-8
180 Statycznie skonsolidowany busybox.
181
182 %package initrd
183 Summary:        Static busybox for initrd
184 Summary(pl.UTF-8):      Statycznie skonsolidowany busybox dla initrd
185 Group:          Base
186 Conflicts:      geninitrd < 10000.20
187 Provides:       busybox-implementation = %{version}-%{release}
188
189 %description initrd
190 Static busybox for initrd.
191
192 %description initrd -l pl.UTF-8
193 Statycznie skonsolidowany busybox dla initrd.
194
195 %prep
196 %setup -q
197 %patch0 -p1
198 %patch1 -p1
199 %patch2 -p1
200 %patch4 -p1
201 %patch5 -p1
202 %patch6 -p1
203 %patch7 -p1
204 %patch8 -p1
205 %patch9 -p1
206 %patch10 -p1
207 %patch11 -p1
208
209 %build
210 install -d built
211 %if %{with initrd}
212 install %{SOURCE2} .config
213 %if %{with musl}
214 sed -i -e 's|CONFIG_FEATURE_VI_REGEX_SEARCH=y|# CONFIG_FEATURE_VI_REGEX_SEARCH is not set|g' .config
215 %endif
216 echo 'CONFIG_EXTRA_LDLIBS="%{?with_glibc:%{tirpcslibs}} %{?with_musl:%{tirpcslibs}}"' >> .config
217 %{__make} oldconfig
218 %{__make} \
219         %{?with_verbose:V=1} \
220         EXTRA_CFLAGS="%{rpmcflags} %{?tirpcscflags} -Os -D_GNU_SOURCE %{?with_musl:-I%{_includedir}/musl} %{!?with_glibc:-fno-stack-protector}" \
221         EXTRA_LDFLAGS="%{rpmldflags} -static -Wl,-z,noexecstack %{?with_musl:-L%{_libdir}/musl}" \
222 %if %{with musl}
223         CC="musl-gcc"
224 %else
225 %if %{with glibc}
226         %{CrossOpts} \
227         CC="%{__cc}"
228 %else
229         %if "%{_target_base_arch}" != "%{_host_base_arch}"
230         CROSS="%{_target_cpu}-uclibc-" \
231         %endif
232         CC="%{_target_cpu}-uclibc-gcc"
233 %endif
234 %endif
235
236 mv -f busybox built/busybox.initrd
237 %{__make} clean
238 %endif
239
240 %if %{with static}
241 %if %{with altconfig}
242 install %{SOURCE3} .config
243 %else
244 install %{SOURCE1} .config
245 echo 'CONFIG_EXTRA_LDLIBS="%{?with_glibc:%{tirpcslibs}} %{?with_musl:%{tirpcslibs}}""' >> .config
246 %endif
247 %if %{with musl}
248 sed -i -e 's|CONFIG_FEATURE_VI_REGEX_SEARCH=y|# CONFIG_FEATURE_VI_REGEX_SEARCH is not set|g' .config
249 sed -i -e 's|CONFIG_EXTRA_COMPAT=y|# CONFIG_EXTRA_COMPAT is not set|g' .config
250 %endif
251 %{__make} oldconfig
252 %{__make} \
253         %{?with_verbose:V=1} \
254         EXTRA_CFLAGS="%{rpmcflags} %{?tirpcscflags} -Os -D_GNU_SOURCE %{?with_musl:-I%{_includedir}/musl} %{!?with_glibc:-fno-stack-protector}" \
255         EXTRA_LDFLAGS="%{rpmldflags} -static -Wl,-z,noexecstack %{?with_musl:-L%{_libdir}/musl}" \
256 %if %{with musl}
257         CC="musl-gcc"
258 %else
259 %if %{with glibc}
260         %{CrossOpts} \
261         CC="%{__cc}"
262 %else
263         %if "%{_target_base_arch}" != "%{_host_base_arch}"
264         CROSS="%{_target_cpu}-uclibc-" \
265         %endif
266         CC="%{_target_cpu}-uclibc-gcc"
267 %endif
268 %endif
269
270 mv -f busybox built/busybox.static
271 %{__make} clean
272 %endif
273
274 %if %{with dynamic}
275 %if %{with altconfig}
276 install %{SOURCE3} .config
277 %else
278 install %{SOURCE1} .config
279 echo 'CONFIG_EXTRA_LDLIBS="%{tirpcdlibs}"' >> .config
280 %endif
281 %{__make} oldconfig
282 %{__make} \
283         %{?with_verbose:V=1} \
284         %{CrossOpts} \
285         EXTRA_CFLAGS="%{rpmcflags} %{tirpcdcflags} %{!?with_glibc:-fno-stack-protector}" \
286         EXTRA_LDFLAGS="%{rpmldflags} -Wl,-z,noexecstack" \
287         CC="%{__cc}"
288 %{__make} busybox.links docs/busybox.1
289 %endif
290
291 %install
292 rm -rf $RPM_BUILD_ROOT
293
294 %if %{with static}
295 install -d $RPM_BUILD_ROOT%{_bindir}
296 install built/busybox.static $RPM_BUILD_ROOT%{_bindir}
297 %endif
298
299 %if %{with initrd}
300 install -d $RPM_BUILD_ROOT%{_libdir}/initrd
301 install built/busybox.initrd $RPM_BUILD_ROOT%{_libdir}/initrd/busybox
302 %endif
303
304 %if %{with dynamic}
305 install -d $RPM_BUILD_ROOT{%{_bindir},%{_mandir}/man1,%{_libdir}/busybox}
306 install busybox.links $RPM_BUILD_ROOT%{_libdir}/busybox
307 install docs/busybox.1 $RPM_BUILD_ROOT%{_mandir}/man1
308
309 # install links to busybox binary, when linkfl is defined
310 %if %{with linkfl}
311 %{__make} install \
312         PREFIX=$RPM_BUILD_ROOT
313 %else
314 install busybox $RPM_BUILD_ROOT%{_bindir}
315 %endif
316 %endif
317
318 %clean
319 rm -rf $RPM_BUILD_ROOT
320
321 %if %{with dynamic}
322 %files
323 %defattr(644,root,root,755)
324 %doc AUTHORS README .config
325
326 %if %{with linkfl}
327 %attr(755,root,root) /bin/*
328 %attr(755,root,root) /sbin/*
329 %attr(755,root,root) %{_bindir}/*
330 %attr(755,root,root) %{_sbindir}/*
331 %else
332 %attr(755,root,root) %{_bindir}/busybox
333 %endif
334
335 %{_libdir}/busybox
336 %{_mandir}/man1/busybox.1*
337 %endif
338
339 %if %{with static}
340 %files static
341 %defattr(644,root,root,755)
342 %attr(755,root,root) %{_bindir}/busybox.static
343 %endif
344
345 %if %{with initrd}
346 %files initrd
347 %defattr(644,root,root,755)
348 %attr(755,root,root) %{_libdir}/initrd/busybox
349 %endif
This page took 0.092797 seconds and 3 git commands to generate.