X-Git-Url: http://git.pld-linux.org/gitweb.cgi?a=blobdiff_plain;f=dietlibc.spec;h=cee5767d8fab7e858eaaadfed24084ba43949336;hb=c9ef365954d380c2b1a262a27f0b8508f7c150f8;hp=ec12300cc9a4b7fc191b20e2f6726ec54bfd79bc;hpb=4cb74223a8bbefbe02fa9665a9c6a7a3b2107b3a;p=packages%2Fdietlibc.git diff --git a/dietlibc.spec b/dietlibc.spec index ec12300..cee5767 100644 --- a/dietlibc.spec +++ b/dietlibc.spec @@ -1,93 +1,153 @@ -%bcond_with pp # disable stack protector 'coz dietlibc will not work with it! +# +# Conditional build: +%bcond_without ssp # stack-smashing protector +%bcond_without dynamic # dynamic lib support + +%ifnarch %{ix86} %{x8664} arm +%undefine with_dynamic +%endif Summary: C library optimized for size -Summary(pl): Biblioteka standardowa C zoptymalizowana na rozmiar -Summary(pt_BR): libc pequena otimizada para tamanho +Summary(pl.UTF-8): Biblioteka standardowa C zoptymalizowana na rozmiar +Summary(pt_BR.UTF-8): libc pequena otimizada para tamanho Name: dietlibc -Version: 0.24 -Release: 4 +Version: 0.33 +Release: 1 Epoch: 2 License: GPL v2 Group: Development/Libraries -Source0: http://www.kernel.org/pub/linux/libs/dietlibc/%{name}-%{version}.tar.bz2 -# Source0-md5: 1dc54e022c2b31fa99a512225ed36150 -Source1: %{name}-divrem.m4 +Source0: http://www.fefe.de/dietlibc/%{name}-%{version}.tar.bz2 +# Source0-md5: 9d541b9a6623b04ec12e5248b82db7c0 Patch0: %{name}-ppc.patch Patch1: %{name}-opt.patch -Patch2: %{name}-athlon.patch -Patch3: %{name}-amd64.patch +Patch2: %{name}-platform.patch +# workaround for http://gcc.gnu.org/PR26374 +Patch3: %{name}-gcc4.patch +Patch4: %{name}-guard.patch +Patch5: %{name}-arm.patch +Patch6: %{name}-diet-m.patch +Patch7: %{name}-nice.patch +Patch8: %{name}-nostrip.patch +Patch9: %{name}-stackgap-instead-of-ssp.patch +Patch10: %{name}-fflush-null.patch +Patch11: %{name}-_syscall-no-arch.patch +Patch12: %{name}-dynamic.patch +Patch13: %{name}-strcoll.patch +Patch14: umount-arch.patch +Patch15: %{name}-memalign.patch +Patch16: %{name}-getsubopt.patch +Patch17: %{name}-devmacros.patch +Patch19: %{name}-notify.patch URL: http://www.fefe.de/dietlibc/ -%ifarch sparc -BuildRequires: m4 -BuildRequires: perl-base +BuildRequires: rpmbuild(macros) >= 1.566 +BuildRequires: sed >= 4.0 +%ifarch sparc sparcv9 +BuildRequires: sparc32 %endif BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) -%define dietprefix %{_prefix}/%{_target_cpu}-linux-dietlibc +%define dietprefix %{_prefix}/lib/dietlibc # for some reason known only to rpm there must be "\\|" not "\|" here -%define libarch %(echo %{_target_cpu} | sed -e 's/i.86\\|athlon/i386/;s/amd64/x86_64/') +%define libarch %(echo %{_target_cpu} | sed -e 's/i.86\\|pentium.\\|athlon/i386/;s/amd64/x86_64/;s/armv.*/arm/;s/sparcv.*/sparc/') %description -Small libc for building embedded applications. +The diet libc is a libc that is optimized for small size. It can be +used to create small statically linked binaries for Linux on alpha, +arm, hppa, ia64, i386, mips, s390, sparc, sparc64, ppc and x86_64. + +%description -l pl.UTF-8 +diet libc to biblioteka libc zoptymalizowana pod kątem rozmiaru. +Może być używana do tworzenia małych, statycznie zlinkowanych +binariów dla Linuksa na architekturach alpha, arm, hppa, ia64, i386, +mips, s390, sparc, sparc64, ppc i x86_64. + +%description -l pt_BR.UTF-8 +A diet libc e' uma libc otimizada para criar pequenos binários +estaticamente linkados para Linux. -%description -l pl -Niewielka libc do budowania aplikacji wbudowanych. +%package libs +Summary: Shared dietlibc libraries +Summary(pl.UTF-8): Biblioteki współdzielone dietlibc +Group: Libraries -%description -l pt_BR -A diet libc e' uma libc otimizada para criar pequenos binários -estaticamente linkados para Linux. +%description libs +This package contains the shared dietlibc libraries. + +%description libs -l pl.UTF-8 +Ten pakiet zawiera biblioteki współdzielone dietlibc. %package devel Summary: Development files for dietlibc -Summary(pl): Pliki dla programistów u¿ywaj±cych dietlibc -Summary(pt_BR): libc pequena otimizada para tamanho +Summary(pl.UTF-8): Pliki dla programistów używających dietlibc +Summary(pt_BR.UTF-8): libc pequena otimizada para tamanho Group: Development/Libraries -Requires: %{name} = %{epoch}:%{version} +Requires: %{name} = %{epoch}:%{version}-%{release} %description devel Small libc for building embedded applications - development files. -%description devel -l pl +%description devel -l pl.UTF-8 Niewielka libc do budowania aplikacji wbudowanych - pliki dla -programistów. +programistów. %package static Summary: Static libraries for dietlibc -Summary(pl): Biblioteki statyczne dla dietlibc +Summary(pl.UTF-8): Biblioteki statyczne dla dietlibc Group: Development/Libraries -Requires: %{name}-devel = %{epoch}:%{version} +Requires: %{name}-devel = %{epoch}:%{version}-%{release} %description static Small libc for building embedded applications - static libraries. -%description static -l pl +%description static -l pl.UTF-8 Niewielka libc do budowania aplikacji wbudowanych - biblioteki statyczne. %prep %setup -q +%undos arm/md5asm.S %patch0 -p1 %patch1 -p1 %patch2 -p1 %patch3 -p1 - -%ifarch sparc -# generate missing functions -(echo "define(NAME,\`.div')define(OP,\`div')define(S,\`true')"; cat %{SOURCE1}) \ - | m4 > sparc/sdiv.S -(echo "define(NAME,\`.rem')define(OP,\`rem')define(S,\`true')"; cat %{SOURCE1}) \ - | m4 > sparc/srem.S -%{__perl} -pi -e 's@(^LIBOBJ.*$)@$1 \$(OBJDIR)/sdiv.o \$(OBJDIR)/srem.o@' sparc/Makefile.add +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%{!?with_ssp:%patch9 -p1} +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch19 -p1 + +%if "%{cc_version}" < "3.4" +%{__sed} -i -e '/CFLAGS/ s/-Wextra//' Makefile %endif +# there is unconditional nice.c already; __nice.c breaks x86_64 build +%{__rm} lib/__nice.c + %build -OPTFLAGS="%{rpmcflags} %{?with_pp:-fno-stack-protector}"; export OPTFLAGS +export OPTFLAGS="%{rpmcflags}%{?with_ssp: -fno-stack-protector} -fno-strict-aliasing -Wa,--noexecstack" +CC="%{__cc}" %ifarch sparc sparcv9 sparc32 \ %endif -%{__make} prefix=%{dietprefix} all -%ifarch %{ix86} -%{__make} prefix=%{dietprefix} dyn +%{__make} -j1 all \ + prefix=%{dietprefix} \ + CC="${CC#*ccache }" + +%if %{with dynamic} +# 'dyn' target is not SMP safe +%{__make} -j1 dyn \ + prefix=%{dietprefix} \ + CC="${CC}" %endif %install @@ -105,33 +165,37 @@ mv $RPM_BUILD_ROOT%{dietprefix}/bin/* $RPM_BUILD_ROOT%{_bindir} mv $RPM_BUILD_ROOT%{dietprefix}/man/man1/* $RPM_BUILD_ROOT%{_mandir}/man1 rm -rf $RPM_BUILD_ROOT%{dietprefix}/{bin,man} rm -f $RPM_BUILD_ROOT%{_bindir}/diet-dyn +rm -f $RPM_BUILD_ROOT%{_bindir}/dnsd -cat > $RPM_BUILD_ROOT%{_bindir}/%{_target_cpu}-dietlibc-gcc < $RPM_BUILD_ROOT%{_bindir}/%{_target_cpu}-dietlibc-gcc <<'EOF' #!/bin/sh -exec %{_bindir}/diet gcc "\$@" +exec %{_bindir}/diet gcc "$@" EOF -rm -rf $RPM_BUILD_ROOT%{dietprefix}/include/{asm,linux} - %clean rm -rf $RPM_BUILD_ROOT %files %defattr(644,root,root,755) -%doc TODO README THANKS CAVEAT CHANGES FAQ BUGS AUTHOR +%doc AUTHOR BUGS CAVEAT CHANGES FAQ README THANKS TODO %dir %{dietprefix} %dir %{dietprefix}/lib-%{libarch} -%ifarch %{ix86} + +%if %{with dynamic} +%files libs +%defattr(644,root,root,755) %attr(755,root,root) %{dietprefix}/lib-%{libarch}/*.so -%{_sysconfdir}/* +%{_sysconfdir}/diet.ld.conf %endif %files devel %defattr(644,root,root,755) -%attr(755,root,root) %{_bindir}/* +%attr(755,root,root) %{_bindir}/*-dietlibc-gcc +%attr(755,root,root) %{_bindir}/diet +%attr(755,root,root) %{_bindir}/elftrunc +%{dietprefix}/lib-%{libarch}/*.o %{dietprefix}/include -%attr(755,root,root) %{dietprefix}/lib-%{libarch}/*.o -%{_mandir}/man*/* +%{_mandir}/man1/diet.1* %files static %defattr(644,root,root,755)