%bcond_without dynamic # don't build dynamic (base) version
%bcond_without static # don't build static version
%bcond_without initrd # don't build initrd version
-%bcond_with dietlibc # build dietlibc-based initrd and static versions
+%bcond_with musl # build musl-based initrd and static versions
%bcond_with glibc # build glibc-based initrd and static versions
-%bcond_with verbose # verbose build
+%bcond_without verbose # verbose build
# Options below are useful, when you want fileutils and grep providing.
# For example, ash package requires fileutils and grep.
%bcond_with fileutl_prov # adds fileutils providing
# functionality as their GNU countenders.
#
%ifnarch %{ix86} %{x8664} ppc
-%define with_glibc 1
+%define with_musl 1
%endif
Summary: Set of common Unix utilities for embeded systems
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
# stable line only
-Version: 1.19.2
-Release: 1
+Version: 1.35.0
+Release: 2
License: GPL v2
Group: Applications
Source0: http://www.busybox.net/downloads/%{name}-%{version}.tar.bz2
-# Source0-md5: 50267054345f1a0b77fe65f6e0e5ba29
+# Source0-md5: 585949b1dd4292b604b7d199866e9913
Source1: %{name}.config
Source2: %{name}-initrd.config
%{?with_altconfig:Source3: %{cfgfile}}
-Patch100: busybox-1.19.2-android.patch
-Patch101: busybox-1.19.2-buildsys.patch
-Patch102: busybox-1.19.2-chpasswd.patch
-Patch103: busybox-1.19.2-crond.patch
-Patch104: busybox-1.19.2-inetd.patch
-Patch105: busybox-1.19.2-syslogd.patch
-Patch106: busybox-1.19.2-tail.patch
-Patch107: busybox-1.19.2-tftp.patch
+Patch0: x32.patch
Patch1: %{name}-logconsole.patch
Patch2: %{name}-printf-gettext.patch
Patch3: %{name}-loadfont.patch
Patch5: %{name}-insmod-morearchs.patch
Patch6: %{name}-dhcp.patch
Patch7: %{name}-fix_64_archs.patch
+Patch8: busybox-1.31.1-stime-fix.patch
Patch9: %{name}-ash-export-PATH.patch
-Patch10: %{name}-toolongcmd.patch
+Patch10: 0001-modutils-check-ELF-header-before-calling-finit_module.patch
+Patch11: strip-quotes.patch
URL: http://www.busybox.net/
BuildRequires: gcc >= 3.2
BuildRequires: perl-tools-pod
-BuildRequires: rpmbuild(macros) >= 1.333
+BuildRequires: rpmbuild(macros) >= 1.652
+%if %{with glibc} || %{with dynamic}
+BuildRequires: libtirpc-devel
+BuildRequires: pkgconfig
+%endif
%if %{with initrd} || %{with static}
- %if %{with dietlibc}
-BuildRequires: dietlibc-static
+ %if %{with musl}
+BuildRequires: linux-musl-headers
+BuildRequires: musl-devel
+BuildRequires: libtirpc-musl-devel
%else
%if %{with glibc}
BuildRequires: glibc-static
+BuildRequires: libcom_err-static
+BuildRequires: libtirpc-static
+BuildRequires: openssl-static
+BuildRequires: sqlite3-static
%else
-%if "%{_target_base_arch}" != "%{_arch}"
+%if "%{_target_base_arch}" != "%{_host_base_arch}"
BuildRequires: cross%{_target_base_arch}-uClibc-static
%else
%ifarch ppc %{x8664}
%{?with_sh_prov:Provides: /bin/sh}
%{?with_fileutl_prov:Provides: fileutils}
%{?with_grep_prov:Provides: grep}
+Provides: busybox-implementation = %{version}-%{release}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+%define _enable_debug_packages 0
+
%define _bindir /bin
-%if "%{_target_base_arch}" != "%{_arch}"
+%if "%{_target_base_arch}" != "%{_host_base_arch}"
%define CrossOpts CROSS="%{_target_cpu}-pld-linux-"
%else
%define CrossOpts %{nil}
%define filterout_ld -Wl,-z,(combreloc|relro)
+%define tirpccflags %(pkg-config --cflags libtirpc)
+%if %{with glibc}
+%if %{with initrd} || %{with static}
+%define tirpcslibs %(pkg-config --libs --static libtirpc krb5 krb5-gssapi openssl sqlite3|sed 's/-l//g')
+%endif
+%endif
+
+%if %{with dynamic}
+%define tirpcdlibs %(pkg-config --libs libtirpc|sed s/-l//g)
+%endif
+
+%if %{with musl}
+%define tirpcslibs %(pkg-config --libs libtirpc|sed s/-l//g)
+%endif
+
%description
BusyBox combines tiny versions of many common UNIX utilities into a
single small executable. It provides minimalist replacements for most
Summary(pl.UTF-8): Statycznie skonsolidowany busybox dla initrd
Group: Base
Conflicts: geninitrd < 10000.20
+Provides: busybox-implementation = %{version}-%{release}
%description initrd
Static busybox for initrd.
%prep
%setup -q
-%patch100 -p1
-%patch101 -p1
-%patch102 -p1
-%patch103 -p1
-%patch104 -p1
-%patch105 -p1
-%patch106 -p1
-%patch107 -p1
-
+%patch0 -p1
%patch1 -p1
%patch2 -p1
#%patch3 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
+%patch8 -p1
%patch9 -p1
%patch10 -p1
+%patch11 -p1
%build
install -d built
%if %{with initrd}
install %{SOURCE2} .config
+%if %{with musl}
+sed -i -e 's|CONFIG_FEATURE_VI_REGEX_SEARCH=y|# CONFIG_FEATURE_VI_REGEX_SEARCH is not set|g' .config
+%endif
+echo 'CONFIG_EXTRA_LDLIBS="%{?with_glibc:%{tirpcslibs}} %{?with_musl:%{tirpcslibs}}"' >> .config
%{__make} oldconfig
%{__make} \
%{?with_verbose:V=1} \
- CROSS_CFLAGS="%{rpmcflags} -Os -D_BSD_SOURCE" \
- LDFLAGS="%{rpmldflags} -static" \
-%if %{with dietlibc}
- LIBRARIES="-lrpc" \
- CC="diet %{__cc}"
+ EXTRA_CFLAGS="%{rpmcflags} %{tirpccflags} -Os -D_GNU_SOURCE %{?with_musl:-I%{_includedir}/musl} %{!?with_glibc:-fno-stack-protector}" \
+ EXTRA_LDFLAGS="%{rpmldflags} -static -Wl,-z,noexecstack %{?with_musl:-L%{_libdir}/musl}" \
+%if %{with musl}
+ CC="musl-gcc"
%else
%if %{with glibc}
%{CrossOpts} \
CC="%{__cc}"
%else
- %if "%{_target_base_arch}" != "%{_arch}"
+ %if "%{_target_base_arch}" != "%{_host_base_arch}"
CROSS="%{_target_cpu}-uclibc-" \
%endif
CC="%{_target_cpu}-uclibc-gcc"
%{__make} clean
%endif
+%if %{with static}
%if %{with altconfig}
install %{SOURCE3} .config
%else
install %{SOURCE1} .config
+echo 'CONFIG_EXTRA_LDLIBS="%{?with_glibc:%{tirpcslibs}} %{?with_musl:%{tirpcslibs}}""' >> .config
+%endif
+%if %{with musl}
+sed -i -e 's|CONFIG_FEATURE_VI_REGEX_SEARCH=y|# CONFIG_FEATURE_VI_REGEX_SEARCH is not set|g' .config
+sed -i -e 's|CONFIG_EXTRA_COMPAT=y|# CONFIG_EXTRA_COMPAT is not set|g' .config
%endif
-
-%if %{with static}
%{__make} oldconfig
%{__make} \
%{?with_verbose:V=1} \
- CROSS_CFLAGS="%{rpmcflags} -Os -D_BSD_SOURCE" \
- LDFLAGS="%{rpmldflags} -static" \
-%if %{with dietlibc}
- LIBRARIES="-lrpc" \
- CC="diet %{__cc}"
+ EXTRA_CFLAGS="%{rpmcflags} %{tirpccflags} -Os -D_GNU_SOURCE %{?with_musl:-I%{_includedir}/musl} %{!?with_glibc:-fno-stack-protector}" \
+ EXTRA_LDFLAGS="%{rpmldflags} -static -Wl,-z,noexecstack %{?with_musl:-L%{_libdir}/musl}" \
+%if %{with musl}
+ CC="musl-gcc"
%else
%if %{with glibc}
%{CrossOpts} \
CC="%{__cc}"
%else
- %if "%{_target_base_arch}" != "%{_arch}"
+ %if "%{_target_base_arch}" != "%{_host_base_arch}"
CROSS="%{_target_cpu}-uclibc-" \
%endif
CC="%{_target_cpu}-uclibc-gcc"
%endif
%if %{with dynamic}
+%if %{with altconfig}
+install %{SOURCE3} .config
+%else
+install %{SOURCE1} .config
+echo 'CONFIG_EXTRA_LDLIBS="%{tirpcdlibs}"' >> .config
+%endif
%{__make} oldconfig
%{__make} \
%{?with_verbose:V=1} \
%{CrossOpts} \
- CFLAGS_EXTRA="%{rpmcflags}" \
- LDFLAGS="%{rpmldflags}" \
+ EXTRA_CFLAGS="%{rpmcflags} %{tirpccflags} %{!?with_glibc:-fno-stack-protector}" \
+ EXTRA_LDFLAGS="%{rpmldflags} -Wl,-z,noexecstack" \
CC="%{__cc}"
%{__make} busybox.links docs/busybox.1
%endif
%doc AUTHORS README .config
%if %{with linkfl}
-%attr(755,root,root) %{_bindir}/*
+%attr(755,root,root) /bin/*
%attr(755,root,root) /sbin/*
%attr(755,root,root) %{_bindir}/*
%attr(755,root,root) %{_sbindir}/*
%endif
%{_libdir}/busybox
-%{_mandir}/man1/*
+%{_mandir}/man1/busybox.1*
%endif
%if %{with static}