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)
9 # alternative busybox config file (replaces default one) you should
10 # define cfgfile macro, i.e.
12 # rpm --rebuild busybox.*.src.rpm --with altconfig --define "cfgfile bb-emb-config.h"
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.
32 %ifnarch %{ix86} %{x8664} ppc
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
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}}
50 Patch1: %{name}-logconsole.patch
51 Patch2: %{name}-printf-gettext.patch
52 Patch3: %{name}-loadfont.patch
53 Patch4: %{name}-kernel_headers.patch
54 Patch5: %{name}-insmod-morearchs.patch
55 Patch6: %{name}-dhcp.patch
56 Patch7: %{name}-fix_64_archs.patch
57 Patch8: busybox-1.31.1-stime-fix.patch
58 Patch9: %{name}-ash-export-PATH.patch
59 Patch10: 0001-modutils-check-ELF-header-before-calling-finit_module.patch
60 Patch11: strip-quotes.patch
61 URL: http://www.busybox.net/
62 BuildRequires: gcc >= 3.2
63 BuildRequires: perl-tools-pod
64 BuildRequires: rpmbuild(macros) >= 1.652
66 BuildRequires: libtirpc-devel
67 BuildRequires: pkgconfig
69 %if %{with initrd} || %{with static}
71 BuildRequires: linux-musl-headers
72 BuildRequires: musl-devel
73 BuildRequires: libtirpc-musl-devel
76 BuildRequires: glibc-static
77 BuildRequires: libcom_err-static
78 BuildRequires: libtirpc-static
79 BuildRequires: openssl-static
80 BuildRequires: sqlite3-static
82 %if "%{_target_base_arch}" != "%{_host_base_arch}"
83 BuildRequires: cross%{_target_base_arch}-uClibc-static
86 BuildRequires: uClibc-static >= 3:0.9.30.1
88 BuildRequires: uClibc-static >= 3:0.9.30.1
94 %{?with_sh_prov:Provides: /bin/sh}
95 %{?with_fileutl_prov:Provides: fileutils}
96 %{?with_grep_prov:Provides: grep}
97 Provides: busybox-implementation = %{version}-%{release}
98 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
100 %define _enable_debug_packages 0
104 %if "%{_target_base_arch}" != "%{_host_base_arch}"
105 %define CrossOpts CROSS="%{_target_cpu}-pld-linux-"
107 %define CrossOpts %{nil}
110 %define filterout_ld -Wl,-z,(combreloc|relro)
112 %define tirpccflags %(pkg-config --cflags libtirpc)
114 %if %{with initrd} || %{with static}
115 %define tirpcslibs %(pkg-config --libs --static libtirpc krb5 krb5-gssapi openssl sqlite3|sed 's/-l//g')
120 %define tirpcdlibs %(pkg-config --libs libtirpc|sed s/-l//g)
124 %define tirpcslibs %(pkg-config --libs libtirpc|sed s/-l//g)
128 BusyBox combines tiny versions of many common UNIX utilities into a
129 single small executable. It provides minimalist replacements for most
130 of the utilities you usually find in fileutils, shellutils, findutils,
131 textutils, grep, gzip, tar, etc. BusyBox provides a fairly complete
132 POSIX environment for any small or embedded system. The utilities in
133 BusyBox generally have fewer options than their full-featured GNU
134 cousins; however, the options that are included provide the expected
135 functionality and behave very much like their GNU counterparts.
137 BusyBox has been written with size-optimization and limited resources
138 in mind. It is also extremely modular so you can easily include or
139 exclude commands (or features) at compile time. This makes it easy to
140 customize your embedded systems. To create a working system, just add
141 a kernel, a shell (such as ash), and an editor (such as elvis-tiny or
144 %description -l pl.UTF-8
145 BusyBox składa małe wersje wielu narzędzi uniksowych w jeden mały plik
146 wykonywalny. Zapewnia minimalne zastępniki większości narzędzi
147 zawartych w pakietach fileutils, shellutils, findutils, grep, gzip,
148 tar itp. BusyBox daje w miarę kompletne środowisko POSIX dla małych
149 lub wbudowanych systemów. Narzędzia mają mniej opcji niż ich pełne
150 odpowiedniki GNU, ale mają podstawową funkcjonalność. Do działającego
151 systemu potrzeba jeszcze tylko kernela, shella (np. ash) oraz edytora
152 (np. elvis-tiny albo ae).
154 %description -l pt_BR.UTF-8
155 BusyBox combina versões reduzidas de muitos utilitários UNIX num único
156 executável, fornecendo substitutos minimalistas para muitos dos
157 executáveis encontrados em pacotes como fileutils, shellutils,
158 findutils, textutils, grep, gzip, tar, etc. Os utilitários do BusyBox
159 em geral têm menos opções que os utilitários GNU, mas as opções
160 implementadas comportam-se de maneira similar aos equivalentes GNU.
163 Summary: Static busybox
164 Summary(pl.UTF-8): Statycznie skonsolidowany busybox
170 %description static -l pl.UTF-8
171 Statycznie skonsolidowany busybox.
174 Summary: Static busybox for initrd
175 Summary(pl.UTF-8): Statycznie skonsolidowany busybox dla initrd
177 Conflicts: geninitrd < 10000.20
178 Provides: busybox-implementation = %{version}-%{release}
181 Static busybox for initrd.
183 %description initrd -l pl.UTF-8
184 Statycznie skonsolidowany busybox dla initrd.
204 install %{SOURCE2} .config
206 sed -i -e 's|CONFIG_FEATURE_VI_REGEX_SEARCH=y|# CONFIG_FEATURE_VI_REGEX_SEARCH is not set|g' .config
208 echo 'CONFIG_EXTRA_LDLIBS="%{?with_glibc:%{tirpcslibs}} %{?with_musl:%{tirpcslibs}}"' >> .config
211 %{?with_verbose:V=1} \
212 EXTRA_CFLAGS="%{rpmcflags} %{tirpccflags} -Os -D_GNU_SOURCE %{?with_musl:-I%{_includedir}/musl} %{!?with_glibc:-fno-stack-protector}" \
213 EXTRA_LDFLAGS="%{rpmldflags} -static -Wl,-z,noexecstack %{?with_musl:-L%{_libdir}/musl}" \
221 %if "%{_target_base_arch}" != "%{_host_base_arch}"
222 CROSS="%{_target_cpu}-uclibc-" \
224 CC="%{_target_cpu}-uclibc-gcc"
228 mv -f busybox built/busybox.initrd
233 %if %{with altconfig}
234 install %{SOURCE3} .config
236 install %{SOURCE1} .config
237 echo 'CONFIG_EXTRA_LDLIBS="%{?with_glibc:%{tirpcslibs}} %{?with_musl:%{tirpcslibs}}""' >> .config
240 sed -i -e 's|CONFIG_FEATURE_VI_REGEX_SEARCH=y|# CONFIG_FEATURE_VI_REGEX_SEARCH is not set|g' .config
241 sed -i -e 's|CONFIG_EXTRA_COMPAT=y|# CONFIG_EXTRA_COMPAT is not set|g' .config
245 %{?with_verbose:V=1} \
246 EXTRA_CFLAGS="%{rpmcflags} %{tirpccflags} -Os -D_GNU_SOURCE %{?with_musl:-I%{_includedir}/musl} %{!?with_glibc:-fno-stack-protector}" \
247 EXTRA_LDFLAGS="%{rpmldflags} -static -Wl,-z,noexecstack %{?with_musl:-L%{_libdir}/musl}" \
255 %if "%{_target_base_arch}" != "%{_host_base_arch}"
256 CROSS="%{_target_cpu}-uclibc-" \
258 CC="%{_target_cpu}-uclibc-gcc"
262 mv -f busybox built/busybox.static
267 %if %{with altconfig}
268 install %{SOURCE3} .config
270 install %{SOURCE1} .config
271 echo 'CONFIG_EXTRA_LDLIBS="%{tirpcdlibs}"' >> .config
275 %{?with_verbose:V=1} \
277 EXTRA_CFLAGS="%{rpmcflags} %{tirpccflags} %{!?with_glibc:-fno-stack-protector}" \
278 EXTRA_LDFLAGS="%{rpmldflags} -Wl,-z,noexecstack" \
280 %{__make} busybox.links docs/busybox.1
284 rm -rf $RPM_BUILD_ROOT
287 install -d $RPM_BUILD_ROOT%{_bindir}
288 install built/busybox.static $RPM_BUILD_ROOT%{_bindir}
292 install -d $RPM_BUILD_ROOT%{_libdir}/initrd
293 install built/busybox.initrd $RPM_BUILD_ROOT%{_libdir}/initrd/busybox
297 install -d $RPM_BUILD_ROOT{%{_bindir},%{_mandir}/man1,%{_libdir}/busybox}
298 install busybox.links $RPM_BUILD_ROOT%{_libdir}/busybox
299 install docs/busybox.1 $RPM_BUILD_ROOT%{_mandir}/man1
301 # install links to busybox binary, when linkfl is defined
304 PREFIX=$RPM_BUILD_ROOT
306 install busybox $RPM_BUILD_ROOT%{_bindir}
311 rm -rf $RPM_BUILD_ROOT
315 %defattr(644,root,root,755)
316 %doc AUTHORS README .config
319 %attr(755,root,root) /bin/*
320 %attr(755,root,root) /sbin/*
321 %attr(755,root,root) %{_bindir}/*
322 %attr(755,root,root) %{_sbindir}/*
324 %attr(755,root,root) %{_bindir}/busybox
328 %{_mandir}/man1/busybox.1*
333 %defattr(644,root,root,755)
334 %attr(755,root,root) %{_bindir}/busybox.static
339 %defattr(644,root,root,755)
340 %attr(755,root,root) %{_libdir}/initrd/busybox