-#
# TODO:
-# - sparc64 modules support in sparc(32) version
-# - make internal commands work even if busybox is not in /bin/busybox
-#
+# - sparc64 modules support in sparc(32), x86_64 modules support in i386 version
+# - make internal commands work even if busybox is not in /bin/busybox (initrd)
+# or when /proc is not mounted (static / normal)
#
# Conditional build:
# alternative busybox config file (replaces default one) you should
%bcond_with grep_prov # adds grep providing
# Option below is useful, when busybox is built with shell support.
%bcond_with sh_prov # adds /bin/sh providing
-# WARNING! Shell, filetuils and grep providing may depend on config file!
+# WARNING! Shell, fileutils and grep providing may depend on config file!
# Fileutils, grep and shell provided with busybox have not such
# functionality as their GNU countenders.
#
%bcond_without static # don't build static version
%bcond_without initrd # don't build initrd version
-%bcond_with dietlibc # build dietlibc-based initrd version
+#%%bcond_with dietlibc # build dietlibc-based initrd version
%bcond_with glibc # build glibc-based initrd version
#
-%ifnarch %{ix86}
+%ifnarch %{ix86} %{x8664} ppc sparc64
%define with_glibc 1
%endif
+%ifarch ppc
+%undefine with_dietlibc
+%endif
Summary: Set of common unix utils for embeded systems
-Summary(pl): Zestaw narzêdzi uniksowych dla systemów wbudowanych
-Summary(pt_BR): BusyBox é um conjunto de utilitários UNIX em um único binário
+Summary(pl.UTF-8): Zestaw narzędzi uniksowych dla systemów wbudowanych
+Summary(pt_BR.UTF-8): BusyBox é um conjunto de utilitários UNIX em um único binário
Name: busybox
-Version: 1.00
-%define pre rc3
-Release: 0.%{pre}.2
+Version: 1.5.1
+Release: 1
License: GPL
Group: Applications
-Source0: http://www.busybox.net/downloads/%{name}-%{version}-%{pre}.tar.bz2
-# Source0-md5: cb28b670a20a4670827e4a9472d22f01
+Source0: http://www.busybox.net/downloads/%{name}-%{version}.tar.bz2
+# Source0-md5: 30df6f796b350fd126c07cff7c33b538
Source1: %{name}.config
Source2: %{name}-initrd.config
%{?with_altconfig:Source3: %{cfgfile}}
-Patch0: %{name}-logconsole.patch
-Patch1: %{name}-printf-gettext.patch
-Patch2: %{name}-loadfont.patch
-Patch3: %{name}-pivot_root.patch
-Patch4: %{name}-raid_start.patch
-Patch5: %{name}-force-dietlibc.patch
-Patch6: %{name}-ash_exec.patch
-Patch7: %{name}-kernel_headers.patch
-Patch8: %{name}-insmod-morearchs.patch
-Patch9: %{name}-dhcp.patch
-Patch10: %{name}-switchroot.patch
+Patch1: %{name}-logconsole.patch
+Patch2: %{name}-printf-gettext.patch
+Patch3: %{name}-loadfont.patch
+Patch4: %{name}-ash_exec.patch
+Patch5: %{name}-kernel_headers.patch
+Patch6: %{name}-insmod-morearchs.patch
+Patch7: %{name}-dhcp.patch
+Patch8: %{name}-fix_64_archs.patch
URL: http://www.busybox.net/
BuildRequires: gcc >= 3.2
+BuildRequires: perl-tools-pod
+BuildRequires: rpmbuild(macros) >= 1.333
%{?with_static:BuildRequires: glibc-static}
%if %{with initrd}
%if %{with dietlibc}
%if %{with glibc}
BuildRequires: glibc-static
%else
-BuildRequires: uClibc-static >= 0.9.21
+%if "%{_target_base_arch}" != "%{_arch}"
+BuildRequires: cross%{_target_base_arch}-uClibc-static
+%else
+ %ifarch ppc %{x8664}
+BuildRequires: uClibc-static >= 2:0.9.29
+ %else
+BuildRequires: uClibc-static >= 2:0.9.21
+ %endif
+%endif
%endif
%endif
%endif
%{?with_sh_prov:Provides: /bin/sh}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-
%define _bindir /bin
%define _initrd_bindir /bin
+%if "%{_target_base_arch}" != "%{_arch}"
+ %define CrossOpts CROSS="%{_target_cpu}-pld-linux-"
+%else
+ %define CrossOpts %{nil}
+%endif
+
%description
BusyBox combines tiny versions of many common UNIX utilities into a
single small executable. It provides minimalist replacements for most
a kernel, a shell (such as ash), and an editor (such as elvis-tiny or
ae).
-%description -l pl
-BusyBox sk³ada ma³e wersje wielu narzêdzi uniksowych w jeden ma³y plik
-wykonywalny. Zapewnia minimalne zastêpniki wiêkszo¶ci narzêdzi
+%description -l pl.UTF-8
+BusyBox składa małe wersje wielu narzędzi uniksowych w jeden mały plik
+wykonywalny. Zapewnia minimalne zastępniki większości narzędzi
zawartych w pakietach fileutils, shellutils, findutils, grep, gzip,
-tar itp. BusyBox daje w miarê kompletne ¶rodowisko POSIX dla ma³ych
-lub wbudowanych systemów. Narzêdzia maj± mniej opcji ni¿ ich pe³ne
-odpowiedniki GNU, ale maj± podstawow± funkcjonalno¶æ. Do dzia³aj±cego
+tar itp. BusyBox daje w miarę kompletne środowisko POSIX dla małych
+lub wbudowanych systemów. Narzędzia mają mniej opcji niż ich pełne
+odpowiedniki GNU, ale mają podstawową funkcjonalność. Do działającego
systemu potrzeba jeszcze tylko kernela, shella (np. ash) oraz edytora
(np. elvis-tiny albo ae).
-%description -l pt_BR
-BusyBox combina versões reduzidas de muitos utilitários UNIX num único
-executável, fornecendo substitutos minimalistas para muitos dos
-executáveis encontrados em pacotes como fileutils, shellutils,
-findutils, textutils, grep, gzip, tar, etc. Os utilitários do BusyBox
-em geral têm menos opções que os utilitários GNU, mas as opções
+%description -l pt_BR.UTF-8
+BusyBox combina versões reduzidas de muitos utilitários UNIX num único
+executável, fornecendo substitutos minimalistas para muitos dos
+executáveis encontrados em pacotes como fileutils, shellutils,
+findutils, textutils, grep, gzip, tar, etc. Os utilitários do BusyBox
+em geral têm menos opções que os utilitários GNU, mas as opções
implementadas comportam-se de maneira similar aos equivalentes GNU.
%package static
Summary: Static busybox
-Summary(pl): Statycznie skonsolidowany busybox
+Summary(pl.UTF-8): Statycznie skonsolidowany busybox
Group: Applications
%description static
Static busybox.
-%description static -l pl
+%description static -l pl.UTF-8
Statycznie skonsolidowany busybox.
%package initrd
Summary: Static busybox for initrd
-Summary(pl): Statycznie skonsolidowany busybox dla initrd
+Summary(pl.UTF-8): Statycznie skonsolidowany busybox dla initrd
Group: Applications
Conflicts: geninitrd < 3075
%description initrd
Static busybox for initrd.
-%description initrd -l pl
+%description initrd -l pl.UTF-8
Statycznie skonsolidowany busybox dla initrd.
%prep
-%setup -q -n %{name}-%{version}-%{pre}
-%patch0 -p1
+%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
-%patch9 -p1
-%patch10 -p1
%build
-install %{SOURCE1} .config
-
+install -d built
%if %{with initrd}
install %{SOURCE2} .config
%{__make} oldconfig
%{__make} \
- CFLAGS_EXTRA="%{rpmcflags} -D_BSD_SOURCE" \
- LDFLAGS="%{rpmldflags} -static" \
+ CROSS_CFLAGS="%{rpmcflags} -Os -D_BSD_SOURCE" \
+ LDFLAGS="%{ld_rpmldflags} -static" \
%if %{with dietlibc}
LIBRARIES="-lrpc" \
CC="diet gcc"
%else
%if %{with glibc}
+ %{CrossOpts} \
CC="%{__cc}"
%else
+ %if "%{_target_base_arch}" != "%{_arch}"
+ CROSS="%{_target_cpu}-uclibc-" \
+ %endif
CC="%{_target_cpu}-uclibc-gcc"
%endif
%endif
-mv -f busybox busybox.initrd
+mv -f busybox built/busybox.initrd
%{__make} clean
-install %{SOURCE1} .config
%endif
+
%if %{with altconfig}
install %{SOURCE3} .config
+%else
+install %{SOURCE1} .config
%endif
%if %{with static}
%{__make} oldconfig
%{__make} \
+ %{CrossOpts} \
CFLAGS_EXTRA="%{rpmcflags}" \
- LDFLAGS="%{rpmldflags} -static" \
+ LDFLAGS="%{ld_rpmldflags} -static" \
CC="%{__cc}"
-mv -f busybox busybox.static
+mv -f busybox built/busybox.static
%{__make} clean
%endif
%{__make} oldconfig
%{__make} \
+ %{CrossOpts} \
CFLAGS_EXTRA="%{rpmcflags}" \
- LDFLAGS="%{rpmldflags}" \
+ LDFLAGS="%{ld_rpmldflags}" \
CC="%{__cc}"
+%{__make} busybox.links docs/BusyBox.1
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{%{_initrd_bindir},%{_bindir},%{_mandir}/man1,%{_libdir}/busybox}
-%{?with_static:install busybox.static $RPM_BUILD_ROOT%{_bindir}}
-%{?with_initrd:install busybox.initrd $RPM_BUILD_ROOT%{_initrd_bindir}/initrd-busybox}
+%{?with_static:install built/busybox.static $RPM_BUILD_ROOT%{_bindir}}
+%{?with_initrd:install built/busybox.initrd $RPM_BUILD_ROOT%{_initrd_bindir}/initrd-busybox}
install busybox.links $RPM_BUILD_ROOT%{_libdir}/busybox
install docs/BusyBox.1 $RPM_BUILD_ROOT%{_mandir}/man1
%files
%defattr(644,root,root,755)
-%doc AUTHORS Changelog README .config
+%doc AUTHORS README .config
%if %{with linkfl}
%attr(755,root,root) /bin/*